OSDN Git Service

Merge branch 'skinnable-master' master
authorsakamocchi <o-takashi@sakamocchi.jp>
Mon, 17 Sep 2012 11:10:23 +0000 (20:10 +0900)
committersakamocchi <o-takashi@sakamocchi.jp>
Mon, 17 Sep 2012 11:10:23 +0000 (20:10 +0900)
Conflicts:
action.php
index.php
install/index.php
nucleus/bookmarklet.php
nucleus/convert/functions.inc.php
nucleus/convert/wordpress.php
nucleus/index.php
nucleus/libs/ACTION.php
nucleus/libs/ACTIONLOG.php
nucleus/libs/ACTIONS.php
nucleus/libs/ADMIN.php
nucleus/libs/BAN.php
nucleus/libs/BLOG.php
nucleus/libs/BODYACTIONS.php
nucleus/libs/BaseActions.php
nucleus/libs/COMMENT.php
nucleus/libs/COMMENTACTIONS.php
nucleus/libs/COMMENTS.php
nucleus/libs/ITEM.php
nucleus/libs/ITEMACTIONS.php
nucleus/libs/KARMA.php
nucleus/libs/MANAGER.php
nucleus/libs/MEDIA.php
nucleus/libs/MEMBER.php
nucleus/libs/NOTIFICATION.php
nucleus/libs/PAGEFACTORY.php
nucleus/libs/PARSER.php
nucleus/libs/PLUGIN.php
nucleus/libs/PLUGINADMIN.php
nucleus/libs/SEARCH.php
nucleus/libs/SKIN.php
nucleus/libs/TEMPLATE.php
nucleus/libs/backup.php
nucleus/libs/globalfunctions.php
nucleus/libs/i18n.php
nucleus/libs/include/admin-add.template
nucleus/libs/include/admin-edit.template
nucleus/libs/include/bookmarklet-add.template
nucleus/libs/include/bookmarklet-edit.template
nucleus/libs/showlist.php
nucleus/libs/skinie.php
nucleus/libs/sql/DB.php
nucleus/libs/sql/MYSQLPDO.php
nucleus/libs/sql/sql.php
nucleus/locales/bg_Cyrl_BG.ISO-8859-5.php
nucleus/locales/bg_Cyrl_BG.UTF-8.php
nucleus/locales/ca_Latn_ES.ISO-8859-1.php
nucleus/locales/ca_Latn_ES.UTF-8.php
nucleus/locales/cs_Latn_CZ.UTF-8.php
nucleus/locales/cs_Latn_CZ.WINDOWS-1250.php
nucleus/locales/de_Latn_DE.ISO-8859-1.php
nucleus/locales/de_Latn_DE.UTF-8.php
nucleus/locales/en_Latn_US.ISO-8859-1.php
nucleus/locales/en_Latn_US.UTF-8.php
nucleus/locales/es_Latn_ES.ISO-8859-1.php
nucleus/locales/es_Latn_ES.UTF-8.php
nucleus/locales/fa_Arab_IR.UTF-8.php
nucleus/locales/fi_Latn_FI.ISO-8859-1.php
nucleus/locales/fi_Latn_FI.UTF-8.php
nucleus/locales/fr_Latn_FR.ISO-8859-15.php
nucleus/locales/fr_Latn_FR.UTF-8.php
nucleus/locales/gl_Latn_ES.ISO-8859-1.php
nucleus/locales/gl_Latn_ES.UTF-8.php
nucleus/locales/hr_Latn_HR.UTF-8.php
nucleus/locales/hr_Latn_HR.WINDOWS-1250.php
nucleus/locales/hu_Latn_HU.ISO-8859-2.php
nucleus/locales/hu_Latn_HU.UTF-8.php
nucleus/locales/id_Latn_ID.ISO-8859-1.php
nucleus/locales/id_Latn_ID.UTF-8.php
nucleus/locales/it_Latn_IT.ISO-8859-1.php
nucleus/locales/it_Latn_IT.UTF-8.php
nucleus/locales/ja_Jpan_JP.EUC-JP.php
nucleus/locales/ja_Jpan_JP.UTF-8.php
nucleus/locales/ko_Kore_KR.EUC-KR.php
nucleus/locales/ko_Kore_KR.UTF-8.php
nucleus/locales/ku_Arab_TR.UTF-8.php
nucleus/locales/lv_Latn_LV.ISO-8859-13.php
nucleus/locales/lv_Latn_LV.UTF-8.php
nucleus/locales/nl_Latn_NL.ISO-8859-15.php
nucleus/locales/nl_Latn_NL.UTF-8.php
nucleus/locales/pl_Latn_PL.UTF-8.php
nucleus/locales/pt_Latn_BR.ISO-8859-1.php
nucleus/locales/pt_Latn_BR.UTF-8.php
nucleus/locales/ro_Latn_RO.ISO-8859-1.php
nucleus/locales/ro_Latn_RO.UTF-8.php
nucleus/locales/ru_Cyrl_RU.UTF-8.php
nucleus/locales/ru_Cyrl_RU.WINDOWS-1251.php
nucleus/locales/sk_Latn_SK.ISO-8859-2.php
nucleus/locales/sk_Latn_SK.UTF-8.php
nucleus/locales/sr_Cyrl_RS.UTF-8.php
nucleus/locales/ur_Arab_PK.UTF-8.php
nucleus/locales/vi_Latn_VN.UTF-8.php
nucleus/locales/zh_Hans_CN.GB2312.php
nucleus/locales/zh_Hans_CN.UTF-8.php
nucleus/locales/zh_Hant_TW.UTF-8.php
nucleus/media.php
nucleus/plugins/NP_SecurityEnforcer.php
nucleus/plugins/NP_SkinFiles.php
nucleus/upgrades/upgrade.functions.php
nucleus/upgrades/upgrade4.0.php
nucleus/xmlrpc/server.php
skins/admin/bookmarklet/styles/addedit.css
skins/default/nicetitle.js

236 files changed:
.buildpath [new file with mode: 0644]
.project [new file with mode: 0644]
.settings/org.eclipse.core.resources.prefs [new file with mode: 0644]
.settings/org.eclipse.php.core.prefs [new file with mode: 0644]
action.php
atom.php
build/build.xml
build/testcases/NP_ImageCreateThumbnail.php
build/testcases/NP_ImageLimitSize.php
createaccount.html [deleted file]
createaccount.php
extra/skins/readme.txt
index.php
install/index.php
install/install.sql
install/locales/en_Latn_US.UTF-8.php
install/locales/ja_Jpan_JP.UTF-8.php
install/styles/inst.css
license.txt
nucleus/bookmarklet.php
nucleus/convert/blogger.php
nucleus/convert/bloggercaif.php
nucleus/convert/functions.inc.php
nucleus/convert/genericImport.php
nucleus/convert/greymatter.php
nucleus/convert/index.html
nucleus/convert/livejournal.php
nucleus/convert/wordpress.php
nucleus/documentation/devdocs/plugins.html
nucleus/documentation/devdocs/sqltables.html
nucleus/documentation/help.html
nucleus/documentation/history.html
nucleus/documentation/index.html
nucleus/forgotpassword.html [deleted file]
nucleus/forgotpassword.php [new file with mode: 0644]
nucleus/forms/additemform.template
nucleus/index.php
nucleus/libs/.htaccess
nucleus/libs/ACTION.php
nucleus/libs/ACTIONLOG.php
nucleus/libs/ACTIONS.php
nucleus/libs/ADMIN.php
nucleus/libs/AdminActions.php [new file with mode: 0644]
nucleus/libs/BAN.php
nucleus/libs/BLOG.php
nucleus/libs/BODYACTIONS.php
nucleus/libs/BaseActions.php
nucleus/libs/COMMENT.php
nucleus/libs/COMMENTACTIONS.php
nucleus/libs/COMMENTS.php
nucleus/libs/ENCAPSULATE.php [deleted file]
nucleus/libs/ENTITY.php
nucleus/libs/ITEM.php
nucleus/libs/ITEMACTIONS.php
nucleus/libs/KARMA.php
nucleus/libs/LINK.php
nucleus/libs/MANAGER.php
nucleus/libs/MEDIA.php
nucleus/libs/MEMBER.php
nucleus/libs/NOTIFICATION.php
nucleus/libs/PARSER.php
nucleus/libs/PLUGIN.php
nucleus/libs/PLUGINADMIN.php
nucleus/libs/SEARCH.php
nucleus/libs/SKIN.php
nucleus/libs/TEMPLATE.php
nucleus/libs/backup.php
nucleus/libs/globalfunctions.php
nucleus/libs/i18n.php
nucleus/libs/include/readme.txt [deleted file]
nucleus/libs/index.html
nucleus/libs/showlist.php
nucleus/libs/skinie.php
nucleus/libs/sql/DB.php
nucleus/libs/sql/MYSQLPDO.php
nucleus/libs/sql/sql.php
nucleus/libs/vars4.1.0.php
nucleus/libs/xmlrpc.inc.php
nucleus/libs/xmlrpcs.inc.php
nucleus/locales/adminskinTypes.php [new file with mode: 0644]
nucleus/locales/bg_Cyrl_BG.ISO-8859-5.php
nucleus/locales/bg_Cyrl_BG.UTF-8.php
nucleus/locales/ca_Latn_ES.ISO-8859-1.php
nucleus/locales/ca_Latn_ES.UTF-8.php
nucleus/locales/cs_Latn_CZ.UTF-8.php
nucleus/locales/cs_Latn_CZ.WINDOWS-1250.php
nucleus/locales/de_Latn_DE.ISO-8859-1.php
nucleus/locales/de_Latn_DE.UTF-8.php
nucleus/locales/el_Grek_GR.UTF-8.php [new file with mode: 0644]
nucleus/locales/el_Grek_GR.WINDOWS-1253.php [new file with mode: 0644]
nucleus/locales/en_Latn_US.ISO-8859-1.php
nucleus/locales/en_Latn_US.UTF-8.php
nucleus/locales/es_Latn_ES.ISO-8859-1.php
nucleus/locales/es_Latn_ES.UTF-8.php
nucleus/locales/fa_Arab_IR.UTF-8.php
nucleus/locales/fi_Latn_FI.ISO-8859-1.php
nucleus/locales/fi_Latn_FI.UTF-8.php
nucleus/locales/fr_Latn_FR.ISO-8859-15.php
nucleus/locales/fr_Latn_FR.UTF-8.php
nucleus/locales/gl_Latn_ES.ISO-8859-1.php
nucleus/locales/gl_Latn_ES.UTF-8.php
nucleus/locales/hr_Latn_HR.UTF-8.php
nucleus/locales/hr_Latn_HR.WINDOWS-1250.php
nucleus/locales/hu_Latn_HU.ISO-8859-2.php
nucleus/locales/hu_Latn_HU.UTF-8.php
nucleus/locales/id_Latn_ID.ISO-8859-1.php
nucleus/locales/id_Latn_ID.UTF-8.php
nucleus/locales/it_Latn_IT.ISO-8859-1.php
nucleus/locales/it_Latn_IT.UTF-8.php
nucleus/locales/ja_Jpan_JP.EUC-JP.php
nucleus/locales/ja_Jpan_JP.UTF-8.php
nucleus/locales/ko_Kore_KR.EUC-KR.php
nucleus/locales/ko_Kore_KR.UTF-8.php
nucleus/locales/ku_Arab_TR.UTF-8.php
nucleus/locales/lv_Latn_LV.ISO-8859-13.php
nucleus/locales/lv_Latn_LV.UTF-8.php
nucleus/locales/nl_Latn_NL.ISO-8859-15.php
nucleus/locales/nl_Latn_NL.UTF-8.php
nucleus/locales/pl_Latn_PL.UTF-8.php
nucleus/locales/pt_Latn_BR.ISO-8859-1.php
nucleus/locales/pt_Latn_BR.UTF-8.php
nucleus/locales/ro_Latn_RO.ISO-8859-1.php
nucleus/locales/ro_Latn_RO.UTF-8.php
nucleus/locales/ru_Cyrl_RU.UTF-8.php
nucleus/locales/ru_Cyrl_RU.WINDOWS-1251.php
nucleus/locales/sk_Latn_SK.ISO-8859-2.php
nucleus/locales/sk_Latn_SK.UTF-8.php
nucleus/locales/sr_Cyrl_RS.UTF-8.php
nucleus/locales/ur_Arab_PK.UTF-8.php
nucleus/locales/vi_Latn_VN.UTF-8.php
nucleus/locales/zh_Hans_CN.GB2312.php
nucleus/locales/zh_Hans_CN.UTF-8.php
nucleus/locales/zh_Hant_TW.UTF-8.php
nucleus/plugins/NP_Medium.php [new file with mode: 0644]
nucleus/plugins/NP_Ping.php
nucleus/plugins/NP_SecurityEnforcer.php
nucleus/plugins/NP_SkinFiles.php
nucleus/plugins/medium/MediumActions.php [new file with mode: 0644]
nucleus/plugins/medium/locales/en_Latn_US.UTF-8.php [new file with mode: 0644]
nucleus/plugins/medium/locales/ja_Jpan_JP.UTF-8.php [new file with mode: 0644]
nucleus/plugins/medium/scripts/medium.js [new file with mode: 0644]
nucleus/plugins/medium/skins/choose.skn [new file with mode: 0644]
nucleus/plugins/medium/skins/error.skn [new file with mode: 0644]
nucleus/plugins/medium/skins/login.skn [new file with mode: 0644]
nucleus/plugins/medium/skins/pagefoot.skn [new file with mode: 0644]
nucleus/plugins/medium/skins/pagehead.skn [new file with mode: 0644]
nucleus/plugins/medium/skins/select.skn [new file with mode: 0644]
nucleus/plugins/medium/styles/medium.css [new file with mode: 0644]
nucleus/plugins/skinfiles/index.php
nucleus/upgrades/index.html
nucleus/upgrades/index.php
nucleus/upgrades/upgrade.functions.php
nucleus/upgrades/upgrade0.96.php
nucleus/upgrades/upgrade1.0.php
nucleus/upgrades/upgrade1.1.php
nucleus/upgrades/upgrade1.5.php
nucleus/upgrades/upgrade2.0.php
nucleus/upgrades/upgrade2.5.php
nucleus/upgrades/upgrade3.2.php
nucleus/upgrades/upgrade3.3.php
nucleus/upgrades/upgrade3.4.php
nucleus/upgrades/upgrade3.5.php
nucleus/upgrades/upgrade3.6.php
nucleus/upgrades/upgrade4.0.php
nucleus/xmlrpc/api_blogger.inc.php
nucleus/xmlrpc/api_metaweblog.inc.php
nucleus/xmlrpc/api_mt.inc.php
nucleus/xmlrpc/api_nucleus.inc.php
nucleus/xmlrpc/server.php
readme.html
robots.txt
rsd.php
skins/admin/bookmarklet/images/button-aligncenter.gif [moved from nucleus/images/button-aligncenter.gif with 100% similarity]
skins/admin/bookmarklet/images/button-alignleft.gif [moved from nucleus/images/button-alignleft.gif with 100% similarity]
skins/admin/bookmarklet/images/button-alignright.gif [moved from nucleus/images/button-alignright.gif with 100% similarity]
skins/admin/bookmarklet/images/button-bold.gif [moved from nucleus/images/button-bold.gif with 100% similarity]
skins/admin/bookmarklet/images/button-copy.gif [moved from nucleus/images/button-copy.gif with 100% similarity]
skins/admin/bookmarklet/images/button-cut.gif [moved from nucleus/images/button-cut.gif with 100% similarity]
skins/admin/bookmarklet/images/button-italic.gif [moved from nucleus/images/button-italic.gif with 100% similarity]
skins/admin/bookmarklet/images/button-left.gif [moved from nucleus/images/button-left.gif with 100% similarity]
skins/admin/bookmarklet/images/button-link.gif [moved from nucleus/images/button-link.gif with 100% similarity]
skins/admin/bookmarklet/images/button-media.gif [moved from nucleus/images/button-media.gif with 100% similarity]
skins/admin/bookmarklet/images/button-paste.gif [moved from nucleus/images/button-paste.gif with 100% similarity]
skins/admin/bookmarklet/images/button-preview.gif [moved from nucleus/images/button-preview.gif with 100% similarity]
skins/admin/bookmarklet/images/button-right.gif [moved from nucleus/images/button-right.gif with 100% similarity]
skins/admin/bookmarklet/javascripts/bookmarklet.js [moved from nucleus/javascript/bookmarklet.js with 100% similarity]
skins/admin/bookmarklet/javascripts/edit.js [moved from nucleus/javascript/edit.js with 97% similarity]
skins/admin/bookmarklet/javascripts/index.html [moved from nucleus/javascript/index.html with 100% similarity]
skins/admin/bookmarklet/javascripts/numbercheck.js [moved from nucleus/javascript/numbercheck.js with 100% similarity]
skins/admin/bookmarklet/javascripts/xmlhttprequest.js [moved from nucleus/javascript/xmlhttprequest.js with 100% similarity]
skins/admin/bookmarklet/skinbackup.xml [new file with mode: 0644]
skins/admin/bookmarklet/styles/addedit.css [new file with mode: 0644]
skins/admin/bookmarklet/styles/bookmarklet.css [new file with mode: 0644]
skins/admin/default/images/button-aligncenter.gif [new file with mode: 0644]
skins/admin/default/images/button-alignleft.gif [new file with mode: 0644]
skins/admin/default/images/button-alignright.gif [new file with mode: 0644]
skins/admin/default/images/button-bold.gif [new file with mode: 0644]
skins/admin/default/images/button-copy.gif [new file with mode: 0644]
skins/admin/default/images/button-cut.gif [new file with mode: 0644]
skins/admin/default/images/button-italic.gif [new file with mode: 0644]
skins/admin/default/images/button-left.gif [new file with mode: 0644]
skins/admin/default/images/button-link.gif [new file with mode: 0644]
skins/admin/default/images/button-media.gif [new file with mode: 0644]
skins/admin/default/images/button-paste.gif [new file with mode: 0644]
skins/admin/default/images/button-preview.gif [new file with mode: 0644]
skins/admin/default/images/button-right.gif [new file with mode: 0644]
skins/admin/default/images/globe.gif [moved from nucleus/images/globe.gif with 100% similarity]
skins/admin/default/javascripts/admin.js [moved from nucleus/javascript/admin.js with 94% similarity]
skins/admin/default/javascripts/bookmarklet.js [new file with mode: 0644]
skins/admin/default/javascripts/compatibility.js [moved from nucleus/javascript/compatibility.js with 90% similarity]
skins/admin/default/javascripts/edit.js [new file with mode: 0644]
skins/admin/default/javascripts/index.html [moved from nucleus/libs/include/index.html with 50% similarity]
skins/admin/default/javascripts/numbercheck.js [new file with mode: 0644]
skins/admin/default/javascripts/opennew.js [moved from nucleus/javascript/opennew.js with 95% similarity]
skins/admin/default/javascripts/templateEdit.js [moved from nucleus/javascript/templateEdit.js with 92% similarity]
skins/admin/default/javascripts/xmlhttprequest.js [new file with mode: 0644]
skins/admin/default/skinbackup.xml [new file with mode: 0644]
skins/admin/default/styles/addedit.css [moved from nucleus/styles/addedit.css with 84% similarity]
skins/admin/default/styles/admin_contemporary.css [moved from nucleus/styles/admin_contemporary.css with 98% similarity]
skins/admin/default/styles/admin_original.css [moved from nucleus/styles/admin_original.css with 99% similarity]
skins/admin/default/styles/background.png [moved from nucleus/styles/contemporary/background.png with 100% similarity]
skins/admin/default/styles/bookmarklet.css [moved from nucleus/styles/bookmarklet.css with 97% similarity]
skins/admin/default/styles/bullet.gif [new file with mode: 0644]
skins/admin/default/styles/contemporary/background.png [new file with mode: 0644]
skins/admin/default/styles/logo.gif [moved from nucleus/styles/logo.gif with 100% similarity]
skins/admin/default/styles/manual.css [moved from nucleus/styles/manual.css with 96% similarity]
skins/admin/default/styles/popups.css [moved from nucleus/styles/popups.css with 95% similarity]
skins/admin/default/styles/quickb-hover.jpg [moved from nucleus/styles/quickb-hover.jpg with 100% similarity]
skins/admin/default/styles/quickb.jpg [moved from nucleus/styles/quickb.jpg with 100% similarity]
skins/admin/defaultimporter.skn [new file with mode: 0644]
skins/admin/showlogin.skn [new file with mode: 0644]
skins/default/footer.inc
skins/default/nicetitle.js
skins/default/skinbackup.xml
skins/grey/skinbackup.xml
xml-rss2.php [changed mode: 0644->0755]

diff --git a/.buildpath b/.buildpath
new file mode 100644 (file)
index 0000000..8bcb4b5
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<buildpath>
+       <buildpathentry kind="src" path=""/>
+       <buildpathentry kind="con" path="org.eclipse.php.core.LANGUAGE"/>
+</buildpath>
diff --git a/.project b/.project
new file mode 100644 (file)
index 0000000..7e1a46c
--- /dev/null
+++ b/.project
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+       <name>nucleus-next</name>
+       <comment></comment>
+       <projects>
+       </projects>
+       <buildSpec>
+               <buildCommand>
+                       <name>org.eclipse.wst.validation.validationbuilder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+               <buildCommand>
+                       <name>org.eclipse.dltk.core.scriptbuilder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+       </buildSpec>
+       <natures>
+               <nature>org.eclipse.php.core.PHPNature</nature>
+       </natures>
+</projectDescription>
diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs
new file mode 100644 (file)
index 0000000..730e5d2
--- /dev/null
@@ -0,0 +1,24 @@
+eclipse.preferences.version=1
+encoding//nucleus/locales/bg_Cyrl_BG.ISO-8859-5.php=ISO-8859-5
+encoding//nucleus/locales/ca_Latn_ES.ISO-8859-1.php=ISO-8859-1
+encoding//nucleus/locales/cs_Latn_CZ.WINDOWS-1250.php=WINDOWS-1250
+encoding//nucleus/locales/de_Latn_DE.ISO-8859-1.php=ISO-8859-1
+encoding//nucleus/locales/el_Grek_GR.WINDOWS-1253.php=WINDOWS-1253
+encoding//nucleus/locales/en_Latn_US.ISO-8859-1.php=ISO-8859-1
+encoding//nucleus/locales/es_Latn_ES.ISO-8859-1.php=ISO-8859-1
+encoding//nucleus/locales/fi_Latn_FI.ISO-8859-1.php=ISO-8859-1
+encoding//nucleus/locales/fr_Latn_FR.ISO-8859-15.php=ISO-8859-15
+encoding//nucleus/locales/gl_Latn_ES.ISO-8859-1.php=ISO-8859-1
+encoding//nucleus/locales/hr_Latn_HR.WINDOWS-1250.php=WINDOWS-1250
+encoding//nucleus/locales/hu_Latn_HU.ISO-8859-2.php=ISO-8859-2
+encoding//nucleus/locales/id_Latn_ID.ISO-8859-1.php=ISO-8859-1
+encoding//nucleus/locales/it_Latn_IT.ISO-8859-1.php=ISO-8859-1
+encoding//nucleus/locales/ja_Jpan_JP.EUC-JP.php=EUC-JP
+encoding//nucleus/locales/ko_Kore_KR.EUC-KR.php=EUC-KR
+encoding//nucleus/locales/lv_Latn_LV.ISO-8859-13.php=ISO-8859-13
+encoding//nucleus/locales/nl_Latn_NL.ISO-8859-15.php=ISO-8859-15
+encoding//nucleus/locales/pt_Latn_BR.ISO-8859-1.php=ISO-8859-1
+encoding//nucleus/locales/ro_Latn_RO.ISO-8859-1.php=ISO-8859-1
+encoding//nucleus/locales/ru_Cyrl_RU.WINDOWS-1251.php=WINDOWS-1251
+encoding//nucleus/locales/sk_Latn_SK.ISO-8859-2.php=ISO-8859-2
+encoding//nucleus/locales/zh_Hans_CN.GB2312.php=GB2312
diff --git a/.settings/org.eclipse.php.core.prefs b/.settings/org.eclipse.php.core.prefs
new file mode 100644 (file)
index 0000000..5f7d896
--- /dev/null
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+include_path=
index 6cf854a..33529ec 100644 (file)
@@ -1,3 +1,4 @@
+<<<<<<< HEAD
 <?php\r
 /*\r
  * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)\r
@@ -32,4 +33,40 @@ if ( $errorInfo )
        doError($errorInfo['message'], $skin);\r
 }\r
 \r
+=======
+<?php
+/*
+ * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)
+ * Copyright (C) 2002-2009 The Nucleus Group
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * (see nucleus/documentation/index.html#license for more info)
+ */
+
+/**
+ * File containing actions that can be performed by visitors of the site,
+ * like adding comments, etc...
+ * @license http://nucleuscms.org/license.txt GNU General Public License
+ * @copyright Copyright (C) 2002-2009 The Nucleus Group
+ * @version $Id: action.php 1888 2012-06-17 08:38:54Z sakamocchi $
+ */
+
+$CONF = array();
+require('./config.php');
+include_libs('ACTION.php');
+
+$action = requestVar('action');
+$a = new Action();
+$errorInfo = $a->doAction($action);
+
+if ( $errorInfo )
+{
+       $skin =& $manager->getSkin($errorInfo['skinid']);
+       doError($errorInfo['message'], $skin);
+}
+
+>>>>>>> skinnable-master
 exit;
\ No newline at end of file
index 5c013e7..9caf5a2 100644 (file)
--- a/atom.php
+++ b/atom.php
@@ -1,49 +1,49 @@
-<?php\r
-/*\r
- * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)\r
- * Copyright (C) 2002-2012 The Nucleus Group\r
- *\r
- * This program is free software; you can redistribute it and/or\r
- * modify it under the terms of the GNU General Public License\r
- * as published by the Free Software Foundation; either version 2\r
- * of the License, or (at your option) any later version.\r
- * (see nucleus/documentation/index.html#license for more info)\r
- */\r
-\r
-/**\r
- * Nucleus Atom Syndication\r
- * @license http://nucleuscms.org/license.txt GNU General Public License\r
- * @copyright Copyright (C) 2002-2012 The Nucleus Group\r
- * @version $Id: atom.php 1388 2009-07-18 06:31:28Z shizuki $\r
- */\r
-\r
-header('Pragma: no-cache');\r
-\r
-$CONF = array();\r
-include('./config.php');\r
-\r
-if ( !$CONF['DisableSite'] )\r
-{\r
-       // get feed into $feed\r
-       ob_start();\r
-       selectSkin('feeds/atom');\r
-       selector();\r
-       $feed = ob_get_contents();\r
-       ob_end_clean();\r
-       \r
-       // create ETAG (hash of feed)\r
-       // (HTTP_IF_NONE_MATCH has quotes around it)\r
-       $eTag = '"' . md5($feed) . '"';\r
-       header('Etag: ' . $eTag);\r
-       \r
-       // compare Etag to what we got\r
-       if ( $eTag == serverVar('HTTP_IF_NONE_MATCH') )\r
-       {\r
-               header('HTTP/1.0 304 Not Modified');\r
-               header('Content-Length: 0');\r
-       }\r
-       else\r
-       {\r
-               echo $feed;\r
-       }\r
-}\r
+<?php
+/*
+ * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)
+ * Copyright (C) 2002-2009 The Nucleus Group
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * (see nucleus/documentation/index.html#license for more info)
+ */
+
+/**
+ * Nucleus Atom Syndication
+ * @license http://nucleuscms.org/license.txt GNU General Public License
+ * @copyright Copyright (C) 2002-2009 The Nucleus Group
+ * @version $Id: atom.php 1693 2012-03-10 11:37:56Z sakamocchi $
+ */
+
+header('Pragma: no-cache');
+
+$CONF = array();
+include('./config.php');
+
+if ( !$CONF['DisableSite'] )
+{
+       // get feed into $feed
+       ob_start();
+       selectSkin('feeds/atom');
+       selector();
+       $feed = ob_get_contents();
+       ob_end_clean();
+       
+       // create ETAG (hash of feed)
+       // (HTTP_IF_NONE_MATCH has quotes around it)
+       $eTag = '"' . md5($feed) . '"';
+       header('Etag: ' . $eTag);
+       
+       // compare Etag to what we got
+       if ( $eTag == serverVar('HTTP_IF_NONE_MATCH') )
+       {
+               header('HTTP/1.0 304 Not Modified');
+               header('Content-Length: 0');
+       }
+       else
+       {
+               echo $feed;
+       }
+}
index 7dd000f..1a0c594 100644 (file)
     <!-- Copy necessary files in root -->
     <copy file="${src.home}/action.php" todir="${upgrade.home}" preservelastmodified="yes" />
        <copy file="${src.home}/atom.php" todir="${upgrade.home}" preservelastmodified="yes" />
-       <copy file="${src.home}/createaccount.html" todir="${upgrade.home}" preservelastmodified="yes" />
        <copy file="${src.home}/createaccount.php" todir="${upgrade.home}" preservelastmodified="yes" />
        <copy file="${src.home}/readme.html" todir="${upgrade.home}" preservelastmodified="yes" />
        <copy file="${src.home}/robots.txt" todir="${upgrade.home}" preservelastmodified="yes" />
index e7cf179..a40a2c3 100644 (file)
-<?php\r
-\r
-class NP_ImageCreateThumbnail extends NucleusPlugin {\r
-\r
-   /* \r
-       * Nucleus Plugin\r
-       *\r
-       * Copyright 2007 by Kai Greve\r
-       * \r
-       * This program is free software and open source software; you can redistribute\r
-       * it and/or modify it under the terms of the GNU General Public License as\r
-       * published by the Free Software Foundation; either version 2 of the License,\r
-       * or (at your option) any later version.\r
-       *\r
-       * This program is distributed in the hope that it will be useful, but WITHOUT\r
-       * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\r
-       * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for\r
-       * more details.\r
-       *\r
-       * You should have received a copy of the GNU General Public License along\r
-       * with this program; if not, write to the Free Software Foundation, Inc.,\r
-       * 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA  or visit\r
-       * http://www.gnu.org/licenses/gpl.html\r
-       * \r
-       *\r
-       * NP_ImageCreateThumbnail creates a thumbnail after an image is uploaded,\r
-       * it demonstrates the uages of the PostMediaUpload event                        \r
-       *\r
-       * History:\r
-       * v0.01: 2007-01-01\r
-       *       - initial release       \r
-       * \r
-       */\r
-\r
-       function getName()                { return 'NP_ImageCreateThumbnail'; }\r
-       function getAuthor()      { return 'Kai Greve'; }\r
-       function getURL()                 { return 'http://www.nucleuscms.org/'; }\r
-       function getVersion()     { return '0.01'; }\r
-       function getDescription() { return 'Generates Thumbnails after an image is uploaded.';  }\r
-       \r
-       function getMinNucleusVersion() { return 330; }\r
-\r
-       function supportsFeature($what) {\r
-               switch($what)\r
-               { case 'SqlTablePrefix':\r
-                               return 1;\r
-                       default:\r
-                               return 0; }\r
-       }\r
-\r
-       function install() {\r
-               $this->createOption ('thumbsize', 'Maximal width (landscape format) or height (portrait format) for Thumbnails', 'text', '150');\r
-       }\r
-\r
-       function unInstall() {\r
-       }\r
-\r
-       function getEventList() {\r
-               return array('PostMediaUpload');\r
-       }\r
-\r
-\r
-       function event_PostMediaUpload(&$data) {\r
-               \r
-               $collection = $data['collection'];\r
-       $mediadir = $data['mediadir'];\r
-       $filename = $data['filename'];\r
-       $fullpath = $mediadir.$filename;\r
-       \r
-       // evaluate the filetype from the filename\r
-               $filetype = strtolower(substr($filename, strpos($filename, ".")+1));\r
-               \r
-               // filetype is jpeg\r
-               if ($filetype=='jpg' || $filetype=='jpeg') {\r
-               \r
-                       $size = getimagesize($fullpath);\r
-                       \r
-                       $ratio = $size[1]/$size[0]; // ratio = height / width\r
-                       \r
-                       if ($ratio < 1) {\r
-                               $new_height = $this->getOption('thumbsize') * $size[1]/$size[0];\r
-                               $new_width = $this->getOption('thumbsize');\r
-                       }\r
-                       else {\r
-                               $new_height = $this->getOption('thumbsize');\r
-                               $new_width = $this->getOption('thumbsize') * $size[0]/$size[1];\r
-                       }                       \r
-\r
-                       $image_orig = imagecreatefromjpeg($fullpath);\r
-                       $image_new = imagecreatetruecolor($new_width, $new_height);\r
-               \r
-                       imagecopyresampled($image_new, $image_orig, 0, 0, 0, 0, $new_width, $new_height, $size[0], $size[1]);\r
-\r
-                       $thumbfilename = substr($fullpath, 0, strpos($fullpath, ".")).'_thumb.'.$filetype;\r
-                               \r
-                       imagejpeg ($image_new , $thumbfilename);\r
-                               \r
-                       // clear the memory\r
-                       imagedestroy($image_orig);\r
-                       imagedestroy($image_new);\r
-               }\r
-               \r
-               // filetype is png\r
-               if ($filetype=='png') {\r
-               \r
-                       $size = getimagesize($fullpath);\r
-                       \r
-                       $ratio = $size[1]/$size[0]; // ratio = height / width\r
-                       \r
-                       if ($ratio < 1) {\r
-                               $new_height = $this->getOption('thumbsize') * $size[1]/$size[0];\r
-                               $new_width = $this->getOption('thumbsize');\r
-                       }\r
-                       else {\r
-                               $new_height = $this->getOption('thumbsize');\r
-                               $new_width = $this->getOption('thumbsize') * $size[0]/$size[1];\r
-                       }                       \r
-\r
-                       $image_orig = imagecreatefrompng($fullpath);\r
-                       $image_new = imagecreatetruecolor($new_width, $new_height);\r
-               \r
-                       imagecopyresampled($image_new, $image_orig, 0, 0, 0, 0, $new_width, $new_height, $size[0], $size[1]);\r
-\r
-                       $thumbfilename = substr($fullpath, 0, strpos($fullpath, ".")).'_thumb.'.$filetype;\r
-                               \r
-                       imagepng ($image_new , $thumbfilename);\r
-                               \r
-                       // clear the memory\r
-                       imagedestroy($image_orig);\r
-                       imagedestroy($image_new);\r
-               }\r
-       }\r
-}\r
-\r
-?>\r
+<?php
+
+class NP_ImageCreateThumbnail extends NucleusPlugin {
+
+/*
+ * Nucleus Plugin
+ *
+ * Copyright 2007 by Kai Greve
+ * 
+ * This program is free software and open source software; you can redistribute
+ * it and/or modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the License,
+ * or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA  or visit
+ * http://www.gnu.org/licenses/gpl.html
+ * 
+ *
+ * NP_ImageCreateThumbnail creates a thumbnail after an image is uploaded,
+ * it demonstrates the uages of the PostMediaUpload event                      
+ *
+ * History:
+ * v0.01: 2007-01-01
+ *     - initial release       
+ * 
+ */
+
+       function getName()                { return 'NP_ImageCreateThumbnail'; }
+       function getAuthor()      { return 'Kai Greve'; }
+       function getURL()                 { return 'http://www.nucleuscms.org/'; }
+       function getVersion()     { return '0.01'; }
+       function getDescription() { return 'Generates Thumbnails after an image is uploaded.';  }
+       
+       function getMinNucleusVersion() { return 330; }
+
+       function supportsFeature($what) {
+               switch($what)
+               { case 'SqlTablePrefix':
+                               return 1;
+                       default:
+                               return 0; }
+       }
+
+       function install() {
+               $this->createOption ('thumbsize', 'Maximal width (landscape format) or height (portrait format) for Thumbnails', 'text', '150');
+       }
+
+       function unInstall() {
+       }
+
+       function getEventList() {
+               return array('PostMediaUpload');
+       }
+
+
+       function event_PostMediaUpload(&$data) {
+               
+               $collection = $data['collection'];
+       $mediadir = $data['mediadir'];
+       $filename = $data['filename'];
+       $fullpath = $mediadir.$filename;
+       
+       // evaluate the filetype from the filename
+               $filetype = strtolower(substr($filename, strpos($filename, ".")+1));
+               
+               // filetype is jpeg
+               if ($filetype=='jpg' || $filetype=='jpeg') {
+               
+                       $size = getimagesize($fullpath);
+                       
+                       $ratio = $size[1]/$size[0]; // ratio = height / width
+                       
+                       if ($ratio < 1) {
+                               $new_height = $this->getOption('thumbsize') * $size[1]/$size[0];
+                               $new_width = $this->getOption('thumbsize');
+                       }
+                       else {
+                               $new_height = $this->getOption('thumbsize');
+                               $new_width = $this->getOption('thumbsize') * $size[0]/$size[1];
+                       }                       
+
+                       $image_orig = imagecreatefromjpeg($fullpath);
+                       $image_new = imagecreatetruecolor($new_width, $new_height);
+               
+                       imagecopyresampled($image_new, $image_orig, 0, 0, 0, 0, $new_width, $new_height, $size[0], $size[1]);
+
+                       $thumbfilename = substr($fullpath, 0, strpos($fullpath, ".")).'_thumb.'.$filetype;
+                               
+                       imagejpeg ($image_new , $thumbfilename);
+                               
+                       // clear the memory
+                       imagedestroy($image_orig);
+                       imagedestroy($image_new);
+               }
+               
+               // filetype is png
+               if ($filetype=='png') {
+               
+                       $size = getimagesize($fullpath);
+                       
+                       $ratio = $size[1]/$size[0]; // ratio = height / width
+                       
+                       if ($ratio < 1) {
+                               $new_height = $this->getOption('thumbsize') * $size[1]/$size[0];
+                               $new_width = $this->getOption('thumbsize');
+                       }
+                       else {
+                               $new_height = $this->getOption('thumbsize');
+                               $new_width = $this->getOption('thumbsize') * $size[0]/$size[1];
+                       }                       
+
+                       $image_orig = imagecreatefrompng($fullpath);
+                       $image_new = imagecreatetruecolor($new_width, $new_height);
+               
+                       imagecopyresampled($image_new, $image_orig, 0, 0, 0, 0, $new_width, $new_height, $size[0], $size[1]);
+
+                       $thumbfilename = substr($fullpath, 0, strpos($fullpath, ".")).'_thumb.'.$filetype;
+                               
+                       imagepng ($image_new , $thumbfilename);
+                               
+                       // clear the memory
+                       imagedestroy($image_orig);
+                       imagedestroy($image_new);
+               }
+       }
+}
+
+?>
index 44793c6..4cf8034 100644 (file)
@@ -1,97 +1,96 @@
-<?php\r
-\r
-class NP_ImageLimitSize extends NucleusPlugin {\r
-/*\r
- Nucleus Plugin\r
\r
- History:\r
-       v0.01 (2006-12-30):\r
-               - release for testing purposes (demonstrates the usage of the PreMediaUpload event)\r
-\r
-*/\r
-\r
-       function getName()                { return 'NP_ImageLimitSize'; }\r
-       function getAuthor()      { return 'Kai Greve'; }\r
-       function getURL()                 { return 'http://www.nucleuscms.org/'; }\r
-       function getVersion()     { return '0.01'; }\r
-       function getDescription() { return 'Rescales an image (jpg/png) during the upload if it is bigger then a maximum with.'; }\r
-\r
-       function getMinNucleusVersion() { return 330; }\r
-\r
-       function supportsFeature($what) {\r
-               switch($what)\r
-               { case 'SqlTablePrefix':\r
-                               return 1;\r
-                       default:\r
-                               return 0; }\r
-       }\r
-\r
-       function install() {\r
-               $this->createOption('maxwidth', 'Maximal width for images', 'text', '450');     \r
-       }\r
-\r
-       function unInstall() {\r
-       }\r
-\r
-       function getEventList() {\r
-               return array('PreMediaUpload');\r
-       }\r
-\r
-       function event_PreMediaUpload(&$data) {\r
-\r
-               $collection = $data['collection'];\r
-               $uploadfile = $data['uploadfile'];\r
-               $filename = $data['filename'];\r
-               \r
-               // evaluate the filetype from the filename\r
-               $filetype = strtolower(substr($filename, strpos($filename, ".")+1));\r
-               \r
-               // filetype is jpeg\r
-               if ($filetype=='jpg' || $filetype=='jpeg') {\r
-               \r
-                       $size=getimagesize($data['uploadfile']);\r
-                       \r
-                       // size[0] is the image width           \r
-                       if ($size[0]>$this->getOption('maxwidth')) {\r
-\r
-                               $newheight =  $this->getOption('maxwidth') * $size[1]/$size[0];\r
-                       $image_orig = imagecreatefromjpeg($uploadfile);\r
-                               $image_new = imagecreatetruecolor($this->getOption('maxwidth'), $newheight);\r
-               \r
-                               imagecopyresampled($image_new, $image_orig, 0, 0, 0, 0, $this->getOption('maxwidth'), $newheight, $size[0], $size[1]);\r
-\r
-                               imagejpeg ($image_new , $uploadfile);\r
-                               \r
-                               // clear the memory\r
-                               imagedestroy($image_orig);\r
-                               imagedestroy($image_new);\r
-               \r
-                       }\r
-               }\r
-               \r
-               // filetype is png\r
-               if ($filetype=='png') {\r
-               \r
-                       $size=getimagesize($data['uploadfile']);\r
-               \r
-                       // size[0] is the image width\r
-                       if ($size[0]>$this->getOption('maxwidth')) {\r
-               \r
-                               $newheight =  $this->getOption('maxwidth') * $size[1]/$size[0];\r
-                       $image_orig = imagecreatefrompng($uploadfile);\r
-                               $image_new = imagecreatetruecolor($this->getOption('maxwidth'), $newheight);\r
-\r
-                               imagecopyresampled($image_new, $image_orig, 0, 0, 0, 0, $this->getOption('maxwidth'), $newheight, $size[0], $size[1]);\r
-               \r
-                               imagepng ( $image_new , $uploadfile);\r
-                               \r
-                               // clear the memory\r
-                               imagedestroy($image_orig);\r
-                               imagedestroy($image_new);\r
-\r
-                       }\r
-               }\r
-       }\r
-}\r
-\r
-?>\r
+<?php
+
+class NP_ImageLimitSize extends NucleusPlugin {
+/*
+ Nucleus Plugin
+ History:
+       v0.01 (2006-12-30):
+               - release for testing purposes (demonstrates the usage of the PreMediaUpload event)
+*/
+
+       function getName()                { return 'NP_ImageLimitSize'; }
+       function getAuthor()      { return 'Kai Greve'; }
+       function getURL()                 { return 'http://www.nucleuscms.org/'; }
+       function getVersion()     { return '0.01'; }
+       function getDescription() { return 'Rescales an image (jpg/png) during the upload if it is bigger then a maximum with.'; }
+
+       function getMinNucleusVersion() { return 330; }
+
+       function supportsFeature($what) {
+               switch($what)
+               { case 'SqlTablePrefix':
+                               return 1;
+                       default:
+                               return 0; }
+       }
+
+       function install() {
+               $this->createOption('maxwidth', 'Maximal width for images', 'text', '450');     
+       }
+
+       function unInstall() {
+       }
+
+       function getEventList() {
+               return array('PreMediaUpload');
+       }
+
+       function event_PreMediaUpload(&$data) {
+
+               $collection = $data['collection'];
+               $uploadfile = $data['uploadfile'];
+               $filename = $data['filename'];
+               
+               // evaluate the filetype from the filename
+               $filetype = strtolower(substr($filename, strpos($filename, ".")+1));
+               
+               // filetype is jpeg
+               if ($filetype=='jpg' || $filetype=='jpeg') {
+               
+                       $size=getimagesize($data['uploadfile']);
+                       
+                       // size[0] is the image width           
+                       if ($size[0]>$this->getOption('maxwidth')) {
+
+                               $newheight =  $this->getOption('maxwidth') * $size[1]/$size[0];
+                       $image_orig = imagecreatefromjpeg($uploadfile);
+                               $image_new = imagecreatetruecolor($this->getOption('maxwidth'), $newheight);
+               
+                               imagecopyresampled($image_new, $image_orig, 0, 0, 0, 0, $this->getOption('maxwidth'), $newheight, $size[0], $size[1]);
+
+                               imagejpeg ($image_new , $uploadfile);
+                               
+                               // clear the memory
+                               imagedestroy($image_orig);
+                               imagedestroy($image_new);
+               
+                       }
+               }
+               
+               // filetype is png
+               if ($filetype=='png') {
+               
+                       $size=getimagesize($data['uploadfile']);
+               
+                       // size[0] is the image width
+                       if ($size[0]>$this->getOption('maxwidth')) {
+               
+                               $newheight =  $this->getOption('maxwidth') * $size[1]/$size[0];
+                       $image_orig = imagecreatefrompng($uploadfile);
+                               $image_new = imagecreatetruecolor($this->getOption('maxwidth'), $newheight);
+
+                               imagecopyresampled($image_new, $image_orig, 0, 0, 0, 0, $this->getOption('maxwidth'), $newheight, $size[0], $size[1]);
+               
+                               imagepng ( $image_new , $uploadfile);
+                               
+                               // clear the memory
+                               imagedestroy($image_orig);
+                               imagedestroy($image_new);
+
+                       }
+               }
+       }
+}
+
+?>
diff --git a/createaccount.html b/createaccount.html
deleted file mode 100644 (file)
index a06792d..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
-<html>\r
-<head>\r
-       <meta http-equiv="Refresh" content="5;url=createaccount.php" />\r
-       <title>Create Member Account</title>\r
-       <style type="text/css">@import url(nucleus/styles/manual.css);</style>\r
-</head>\r
-<body>\r
-       <h1>Create Account</h1>\r
-\r
-       <p>Sorry, the URL of the Create Account Form has changed.</p>\r
-       <p>If you are not redirected automatically please use this link: <a href="createaccount.php">Create Member Account</a>.</p>\r
-       <p>Thank you. :-)</p>\r
-       \r
-</body>\r
-</html>\r
index adcc5a4..0cc16dd 100644 (file)
-<?php\r
-/*\r
- * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)\r
- * Copyright (C) 2002-20011 The Nucleus Group\r
- *\r
- * This program is free software; you can redistribute it and/or\r
- * modify it under the terms of the GNU General Public License\r
- * as published by the Free Software Foundation; either version 2\r
- * of the License, or (at your option) any later version.\r
- * (see nucleus/documentation/index.html#license for more info)\r
- */\r
-\r
-/**\r
- * Registration form for new users\r
- * @license http://nucleuscms.org/license.txt GNU General Public License\r
- * @copyright Copyright (C) 2002-20011 The Nucleus Group\r
- * @version $Id: createaccount.php 1624 2012-01-09 11:36:20Z sakamocchi $\r
- */\r
-\r
-require_once "./config.php";\r
-include_libs('ACTION.php',false,false);\r
-\r
-sendContentType('text/html', 'createaccount');\r
-echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n";\r
-echo "<html>\n";\r
-echo "<head>\n";\r
-echo "<title>Create Member Account</title>\n";\r
-echo "<style type=\"text/css\">@import url(nucleus/styles/manual.css);</style>\n";\r
-echo "</head>\n";\r
-echo "<body>\n";\r
-echo "<h1>Create Account</h1>\n";\r
-\r
-// show form only if Visitors are allowed to create a Member Account\r
-if ( $CONF['AllowMemberCreate'] == 1 )\r
-{\r
-       $name = '';\r
-       $realname ='';\r
-       $email = '';\r
-       $url = '';\r
-       \r
-       /* already submit */\r
-       if ( array_key_exists('showform', $_POST) && $_POST['showform'] == 1 )\r
-       {\r
-               if ( array_key_exists('name', $_POST) )\r
-               {\r
-                       $name = $_POST['name'];\r
-               }\r
-               if ( array_key_exists('realname', $_POST) )\r
-               {\r
-                       $realname = $_POST['realname'];\r
-               }\r
-               if ( array_key_exists('email', $_POST) )\r
-               {\r
-                       $email = $_POST['email'];\r
-               }\r
-               if ( array_key_exists('url', $_POST) )\r
-               {\r
-                       $url = $_POST['url'];\r
-               }\r
-               // after the from is sent it will be validated\r
-               // POST data will be added as value to treat the user with care (;-))\r
-               $a = new Action();\r
-               \r
-               $message = $a->createAccount();\r
-               if ( $message != 1 )\r
-               {\r
-                       echo '<p style="font-weight:bold; color:red;">' . $message . "</p>\n";\r
-               }\r
-               else\r
-               {\r
-                       echo '<p>' . _MSG_ACTIVATION_SENT . "</p>\n"; \r
-                       echo "<p>Return to <a href=\"{$CONF['IndexURL']}\" title=\"{$CONF['SiteName']}\">{$CONF['SiteName']}</a></p>\n";\r
-                       echo "</body>\n";\r
-                       echo "</html>\n";\r
-                       exit;\r
-               }\r
-       }\r
-       \r
-       echo "<form method=\"post\" action=\"createaccount.php\">\n";\r
-       echo "<dl>\n";\r
-       echo "<dt><label for=\"name\">Login Name (required): </label></dt>\n";\r
-       echo "<dd><input id=\"name\"name=\"name\" value=\"{$name}\" size=\"32\" maxlength=\"32\" /><span style=\"\small\">(only a-z, 0-9)</span></dd>\n";\r
-       echo "<dt><label for=\"realname\">Real Name (required): </label></dt>\n";\r
-       echo "<dd><input id=\"realname\" name=\"realname\" value=\"{$realname}\" size=\"40\" /></dd>\n";\r
-       echo "<dt><label for=\"email\">Email (required): </label></dt>\n";\r
-       echo "<dd><input id=\"email\"name=\"email\" value=\"{$email}\" size=\"40\" /><span style=\"\small\">(must be valid, because an activation link will be sent over there)</span></dd>\n";\r
-       echo "<dt><label for=\"url\">URL: </label></dt>\n";\r
-       echo "<dd><input id=\"url\"name=\"url\" value=\"{$url}\" size=\"60\" /></dd>\n";\r
-       echo "<input type=\"hidden\" name=\"showform\" value=\"1\" />\n";\r
-       // add extra fields from Plugins, like NP_Profile\r
-       $manager->notify('RegistrationFormExtraFields', array('type' => 'createaccount.php', 'prelabel' => '', 'postlabel' => '<br />', 'prefield' => '', 'postfield' => '<br /><br />'));\r
-       \r
-       // add a Captcha challenge or something else\r
-       global $manager;\r
-       $manager->notify('FormExtra', array('type' => 'membermailform-notloggedin'));\r
-       echo "<button type=\"submit\" name=\"action\" value=\"createaccount\" />Create Account</button>\n";\r
-       echo "</dl>\n";\r
-       echo "</form>\n";\r
-}\r
-else\r
-{\r
-       echo "<p>\n";\r
-       echo 'Visitors are not allowed to create a Member Account.<br /><br />';\r
-       echo 'Please contact the website administrator for more information.';\r
-       echo "</p>\n";\r
-}\r
-       \r
-echo "</body>\n";\r
-echo "</html>\n";\r
+<?php
+/*
+ * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)
+ * Copyright (C) 2002-20011 The Nucleus Group
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * (see nucleus/documentation/index.html#license for more info)
+ */
+
+/**
+ * Registration form for new users
+ * @license http://nucleuscms.org/license.txt GNU General Public License
+ * @copyright Copyright (C) 2002-20011 The Nucleus Group
+ * @version $Id: createaccount.php 1888 2012-06-17 08:38:54Z sakamocchi $
+ */
+
+// we are using admin stuff:
+$CONF = array();
+$CONF['UsingAdminArea'] = 1;
+
+require_once "./config.php";
+include_libs('ACTION.php');
+
+if ( !Admin::initialize() )
+{
+       /* TODO: something to handling errors */
+       exit;
+}
+
+Admin::action('createaccount');
+exit;
index b2e0434..669bb25 100644 (file)
@@ -1,10 +1,10 @@
-PLEASE NOTE: the skins.htaccess file in this directory is intended to prohibit, for enhanced security, direct access .inc and .php files in the skin folders. Depending on the web server configuration, the code in this .htaccess file may not work as intended. In this case, your site will be displayed incorrectly, with missing content or style. Renaming the .htaccess file should fix the problem.\r
-\r
-To apply it, follow these instructions:\r
-\r
-1. Be sure that another .htaccess file does not exist in the /skins folder\r
-2. Copy the skins.htaccess file into the skins folder of your Nucleus CMS installation\r
-3. Rename the file to .htaccess\r
-4. If you have an existing .htaccess file in your skins folder, copy the contents from the skins.htaccess file into the existing .htacces file.\r
-\r
+PLEASE NOTE: the skins.htaccess file in this directory is intended to prohibit, for enhanced security, direct access .inc and .php files in the skin folders. Depending on the web server configuration, the code in this .htaccess file may not work as intended. In this case, your site will be displayed incorrectly, with missing content or style. Renaming the .htaccess file should fix the problem.
+
+To apply it, follow these instructions:
+
+1. Be sure that another .htaccess file does not exist in the /skins folder.
+2. Copy the skins.htaccess file into the skins folder of your Nucleus CMS installation.
+3. Rename the file to .htaccess.
+4. If you have an existing .htaccess file in your skins folder, copy the contents from the skins.htaccess file into the existing .htacces file.
+
 You can disable after installing it by renaming the file to something else, or by removing the file from that folder.
\ No newline at end of file
index 3440faf..17c1577 100644 (file)
--- a/index.php
+++ b/index.php
@@ -1,3 +1,4 @@
+<<<<<<< HEAD
 <?php\r
 // This file will generate and return the main page of the site\r
 $CONF = array();\r
@@ -6,3 +7,14 @@ $CONF['Self'] = 'index.php';
 include('./config.php');\r
 \r
 selector();\r
+=======
+<?php
+// This file will generate and return the main page of the site
+$CONF = array();
+$CONF['Self'] = 'index.php';
+
+include('./config.php');
+
+selector();
+
+>>>>>>> skinnable-master
index 17fb9a3..13fd7be 100644 (file)
@@ -1,3 +1,4 @@
+<<<<<<< HEAD
 <?php\r
 /*\r
  * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)\r
@@ -1724,3 +1725,1822 @@ class ParamManager
                return $isValid;\r
        }\r
 }\r
+=======
+<?php
+/*
+ * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)
+ * Copyright (C) 2002-2012 The Nucleus Group
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * (see nucleus/documentation/index.html#license for more info)
+ *
+ * This script will install the Nucleus tables in your SQL-database,
+ * and initialize the data in those tables.
+ */
+
+/**
+ * @license http://nucleuscms.org/license.txt GNU General Public License
+ * @copyright Copyright (C) 2002-2012 The Nucleus Group
+ * @version $Id: index.php 1889 2012-06-17 08:46:45Z sakamocchi $
+ */
+
+/* global values initialize */
+$CONF = array();
+
+/* reporting all errors for support */
+error_reporting(E_ALL);
+
+$minimum_php_version = '5.0.6';
+$minimum_mysql_version = '3.23';
+
+$page_footer_copyright = '&copy; 2001-2012 The Nucleus Groupe . Running Nucleus CMS v4.00';
+
+// begin if: server's PHP version is below the minimum; halt installation
+if ( version_compare(PHP_VERSION, $minimum_php_version, '<') )
+{
+       exit('<div style="font-size: xx-large;"> Nucleus requires at least PHP version ' . $minimum_php_version . '</div>');
+}
+
+// make sure there's no unnecessary escaping: # set_magic_quotes_runtime(0);
+if ( version_compare(PHP_VERSION, '5.3.0', '<') )
+{
+       ini_set('magic_quotes_runtime', '0');
+}
+
+/* default installed plugins and skins */
+$aConfPlugsToInstall = array('NP_SecurityEnforcer', 'NP_SkinFiles', 'NP_Medium');
+$aConfSkinsToImport = array('atom', 'rss2.0', 'rsd', 'default', 'admin/default', 'admin/bookmarklet');
+
+// Check if some important files
+do_check_files();
+
+/* i18n class is needed for internationalization */
+include_once('../nucleus/libs/i18n.php');
+if ( !i18n::init('UTF-8', '../nucleus/locales') )
+{
+       exit('<div style="font-size: xx-large;"> Failed to initialize iconv or mbstring extension. Would you please contact the administrator of your PHP server? </div>');
+}
+
+// include core classes that are needed for login & plugin handling
+
+// added for 3.5 sql_* wrapper
+global $MYSQL_HANDLER;
+
+if ( !isset($MYSQL_HANDLER) )
+{
+       $MYSQL_HANDLER = array('mysql', '');
+       
+       // check if mysql support is installed; this check may not make sense, as is, in a version past 3.5x
+       if ( !function_exists('mysql_query') && !function_exists('mysqli_query') )
+       {
+               exit('<div style="font-size: xx-large;"> Your PHP version does not have support for MySQL :( </div>');
+}
+}
+include_once('../nucleus/libs/sql/sql.php');
+
+session_start();
+if ( count($_GET) == 0 && count($_POST) == 0 )
+{
+       unset($_SESSION['param_manager']);
+}
+
+// restore the $param from the session
+if ( array_key_exists('param_manager', $_SESSION) )
+{
+       $param = $_SESSION['param_manager'];
+}
+else
+{
+       $param = new ParamManager();
+}
+
+// include translation file
+$param->set_locale();
+
+do_action();
+
+// $param is saved to the session
+if ( isset($param) )
+{
+       $_SESSION['param_manager'] = $param;
+}
+else
+{
+       unset($_SESSION['param_manager']);
+}
+exit;
+
+/**
+ * installer action
+ */
+function do_action()
+{
+       global $param;
+
+       if ( array_key_exists('action', $_POST) )
+       {
+               $isPostback = true;
+       }
+       else
+       {
+               $isPostback = false;
+       }
+
+       // mode change
+       if ( array_key_exists('mode', $_REQUEST) )
+       {
+               if ( $_REQUEST['mode'] == 'detail' )
+               {
+                       $param->set_state('detail');
+               }
+               elseif ( $_REQUEST['mode'] == 'simple' )
+               {
+                       $param->set_state('mysql');
+               }
+       }
+
+       // input parameter check
+       if ( $isPostback )
+       {
+               switch ( $param->state )
+               {
+                       case 'locale':
+                               $param->set_state('mysql');
+                               $isPostback = false;
+                               break;
+                       case 'mysql':
+                               if ( count($param->check_mysql_parameters()) == 0 )
+                               {
+                                       $param->set_state('weblog');
+                                       $isPostback = false;
+                               }
+                               break;
+                       case 'weblog':
+                               if ( count($param->check_user_parameters()) == 0
+                                       && count($param->check_weblog_parameters()) == 0 )
+                               {
+                                       $param->set_state('install');
+                                       $isPostback = false;
+                               }
+                               break;
+                       case 'detail':
+                               if ( $param->check_all_parameters() )
+                               {
+                                       $param->set_state('install');
+                                       $isPostback = false;
+                               }
+                               break;
+               }
+       }
+
+       // page render
+       show_header();
+       switch ( $param->state )
+       {
+               case 'locale':
+                       show_select_locale_form();
+                       break;
+               case 'mysql':
+                       show_database_setting_form($isPostback);
+                       break;
+               case 'weblog':
+                       show_blog_setting_form($isPostback);
+                       break;
+               case 'detail':
+                       show_detail_setting_form($isPostback);
+                       break;
+               case 'install':
+                       show_install_complete_form();
+                       break;
+       }
+       show_footer();
+}
+
+/**
+ * header tag of the installation screens
+ **/
+function show_header()
+{
+       global $param;
+
+       /* HTTP 1.1 application for no caching */
+       header("Cache-Control: no-cache, must-revalidate");
+       header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
+       header('Content-Type: text/html; charset=' . i18n::get_current_charset());
+?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+       <head>
+               <title><?php echo _TITLE; ?></title>
+               <link rel="stylesheet" type="text/css" href="./styles/inst.css" />
+               <style type="text/css">
+               <!--
+               <?php echo _BODYFONTSTYLE; ?>
+               -->
+               </style>
+               <script type="text/javascript">
+                       function SelectText( element ) {
+                               window.setTimeout( function() { element.select() }, 0 );
+                       }
+                       var isSubmit = false;
+                       function OnceSubmit() {
+                               if (!isSubmit) {
+                                       isSubmit = true;
+                                       window.setTimeout( function() { isSubmit = false; }, 10000 );
+                                       return true;
+                               }
+                               return false;
+                       }
+               </script>
+       </head>
+       <body>
+               <div id="header">
+                       <div id="navigation">
+                               <h1><img src="./styles/nucleus_rogo.png" alt="NucleusCMS" /></h1>
+                               <ul>
+<?php
+       echo '<li>';
+       $label = '_LOCALE_' . strtoupper($param->locale);
+       if ( !defined($label) )
+       {
+               echo $param->locale;
+       }
+       else
+       {
+               echo constant($label);
+       }
+       echo "</li>\n";
+       
+       if ( in_array($param->state, array('mysql', 'weblog', 'install')) )
+       {
+               echo '<li>&nbsp; &gt; &nbsp;' . _STEP1, '</li><li';
+               if ( $param->state == 'mysql' )
+               {
+                       echo ' class="gry"';
+               }
+               echo '>&nbsp; &gt; &nbsp;', _STEP2, '</li><li';
+               if ( in_array($param->state, array('mysql', 'weblog')) )
+               {
+                       echo ' class="gry"';
+               }
+               echo '>&nbsp; &gt; &nbsp;', _STEP3, "</li>\n";
+       }
+       if ( in_array($param->state, array('mysql', 'weblog', 'detail')) )
+       {
+               echo '<li class="rightbox">';
+               if ( in_array($param->state, array('mysql', 'weblog')) )
+               {
+                       echo '<a href="./?mode=detail">', _MODE2, '</a>';
+               }
+               else
+               {
+                       echo '<a href="./?mode=simple">', _MODE1, '</a>';
+               }
+               echo '</li>';
+       }
+?>
+                               </ul>
+                       </div>
+               </div>
+<?php
+}
+
+/**
+ * footer tag of the installation screens
+ **/
+function show_footer()
+{
+       global $page_footer_copyright;
+?>
+               <div id="footer">
+                       <?php echo $page_footer_copyright; ?>
+               </div>
+       </body>
+</html>
+<?php
+}
+
+/**
+ * Display the form for language select
+ */
+function show_select_locale_form()
+{
+       global $param;
+       
+?>
+               <div id="container">
+                       <p style="font-size:152%;font-weight:bold;">
+                               <?php echo _LOCALE_HEADER; ?>
+                       </p>
+                       <form method="post" action="./index.php">
+
+                               <div class="prt">
+                                       <select name="locale">
+<?php
+       $locales = i18n::get_available_locale_list();
+       foreach ( $locales as $locale )
+       {
+               if ( $param->locale != $locale )
+               {
+                       echo "<option value=\"{$locale}\">";
+               }
+               else
+               {
+                       echo "<option value=\"{$locale}\" selected=\"selected\">";
+               }
+               
+               $checkfile = "./locales/{$locale}." . i18n::get_current_charset() . '.php';
+               if ( !file_exists($checkfile) )
+               {
+                       echo '*&nbsp;';
+               }
+
+               $label = '_LOCALE_' . strtoupper($locale);
+               if ( !defined($label) )
+       {
+                       echo $locale;
+               }
+               else
+               {
+                       echo constant($label);
+               }
+               echo "</option>\n";
+       }
+?>
+                                       </select>
+                                       <p><?php echo _LOCALE_DESC1; ?></p>
+                                       <p><?php echo _LOCALE_DESC2; ?></p>
+                                       <p><?php echo _LOCALE_NEED_HELP;?></p>
+                                       <p class="sbt">
+                                               <button type="submit" name="action" value="locale" class="sbt_arw">START</button>
+                                       </p>
+                               </div>
+                       </form>
+               </div>
+<?php
+}
+
+/**
+ * Display the form to set up a database
+ * @param bool $isPostback
+ */
+function show_database_setting_form($isPostback)
+{
+       global $param, $minimum_mysql_version;
+
+       $config_writable = canConfigFileWritable();
+       $mysql_version = getMySqlVersion();
+?>
+               <div id="container">
+                       <p class="msg">
+<?php
+       echo _SIMPLE_NAVI1;
+       if ( $config_writable != '' )
+       {
+               echo '<span class="err">', $config_writable, '</span>';
+       }
+       if ( $mysql_version == '0.0.0' )
+       {
+               echo '<span class="err">', _DBVERSION_UNKOWN, '</span>';
+       }
+       elseif ( version_compare($mysql_version, $minimum_mysql_version, '<') )
+       {
+               echo '<span class="err">', sprintf(_DBVERSION_TOOLOW, $minimum_mysql_version), '</span>';
+       }
+?>
+                       </p>
+                       <form method="post" action="./index.php">
+                               <div class="prt">
+                                       <h2><?php echo _DB_HEADER; ?></h2>
+                                       <p class="msg">
+<?php
+       if ( $isPostback )
+       {
+               $errors = $param->check_mysql_parameters();
+               if ( is_array($errors) )
+               {
+                       foreach ( $errors as $error )
+                       {
+                               echo '<span class="err">', $error, "</span>\n";
+                       }
+               }
+       }
+?>
+                                       </p>
+                                       <table>
+                                               <tr>
+                                                       <th><span class="nam"><?php echo _DB_FIELD1; ?></span><span class="sub"><?php echo _DB_FIELD1_DESC; ?></span></th>
+                                                               <td><input type="text" name="mysql_host" value="<?php echo $param->mysql_host; ?>" /></td>
+                                               </tr>
+                                               <tr>
+                                                       <th><span class="nam"><?php echo _DB_FIELD2; ?></span><span class="sub"><?php echo _DB_FIELD2_DESC; ?></span></th>
+                                                               <td><input type="text" name="mysql_user" value="<?php echo $param->mysql_user; ?>" /></td>
+                                               </tr>
+                                               <tr>
+                                                       <th><span class="nam"><?php echo _DB_FIELD3; ?></span></th>
+                                                               <td><input type="text" name="mysql_password" value="<?php echo $param->mysql_password; ?>" /></td>
+                                               </tr>
+                                               <tr>
+                                                       <th><span class="nam"><?php echo _DB_FIELD4; ?></span><span class="sub"><?php echo _DB_FIELD4_DESC; ?></span></th>
+                                                               <td><input type="text" name="mysql_database" value="<?php echo $param->mysql_database; ?>" /></td>
+                                               </tr>
+                                       </table>
+                                       <p class="sbt">
+                                               <button type="submit" name="mode" value="detail" class="sbt_sqr"><?php echo _MODE2; ?></button>
+                                               <button type="submit" name="action" value="mysql" class="sbt_arw"><?php echo _NEXT; ?></button>
+                                       </p>
+                                       <p class="msg">
+                                               <?php echo _DB_TEXT1; ?>
+                                       </p>
+                               </div>
+                       </form>
+               </div>
+<?php
+}
+
+/**
+ * Displays a form to the blog settings
+ * @param bool $isPostback
+ */
+function show_blog_setting_form($isPostback)
+{
+       global $param;
+?>
+               <div id="container">
+                       <p class="msg">
+                               <?php echo _SIMPLE_NAVI2; ?>
+                       </p>
+                       <form method="post" action="./index.php">
+                               <div class="prt">
+                                       <h2><?php echo _BLOG_HEADER; ?></h2>
+                                       <p class="msg">
+<?php
+       if ( $isPostback )
+       {
+               $errors = $param->check_weblog_parameters();
+               if ( is_array($errors) )
+               {
+                       foreach ( $errors as $error )
+                       {
+                               echo '<span class="err">', $error, "</span>\n";
+                       }
+               }
+       }
+?>
+                                       </p>
+                                       <table>
+                                               <tr>
+                                                       <th><span class="nam"><?php echo _BLOG_FIELD1; ?></span></th>
+                                                               <td><input type="text" name="blog_name" value="<?php echo $param->blog_name; ?>" /></td>
+                                               </tr>
+                                               <tr>
+                                                       <th><span class="nam"><?php echo _BLOG_FIELD2; ?></span><span class="sub"><?php echo _BLOG_FIELD2_DESC; ?></span></th>
+                                                               <td><input type="text" name="blog_shortname" value="<?php echo $param->blog_shortname; ?>" /></td>
+                                               </tr>
+                                       </table>
+                               </div>
+
+                               <div class="prt">
+                                       <h2><?php echo _ADMIN_HEADER; ?></h2>
+                                       <p class="msg">
+<?php
+       if ( $isPostback )
+       {
+               $errors = $param->check_user_parameters();
+               if ( is_array($errors) )
+               {
+                       foreach ( $errors as $error )
+                       {
+                               echo '<span class="err">', $error, "</span>\n";
+                       }
+               }
+       }
+?>
+                                       </p>
+                                       <table>
+                                               <tr>
+                                                       <th><span class="nam"><?php echo _ADMIN_FIELD1; ?></span></th>
+                                                               <td><input type="text" name="user_realname" value="<?php echo $param->user_realname; ?>" /></td>
+                                               </tr>
+                                               <tr>
+                                                       <th><span class="nam"><?php echo _ADMIN_FIELD2; ?></span><span class="sub"><?php echo _ADMIN_FIELD2_DESC; ?></span></th>
+                                                               <td><input type="text" name="user_name" value="<?php echo $param->user_name; ?>" /></td>
+                                               </tr>
+                                               <tr>
+                                                       <th><span class="nam"><?php echo _ADMIN_FIELD3; ?></span></th>
+                                                               <td><input type="password" name="user_password" /></td>
+                                               </tr>
+                                               <tr>
+                                                       <th><span class="nam"><?php echo _ADMIN_FIELD4; ?></span></th>
+                                                               <td><input type="password" name="user_password2" /></td>
+                                               </tr>
+                                               <tr>
+                                                       <th><span class="nam"><?php echo _ADMIN_FIELD5; ?></span></th>
+                                                               <td><input type="text" name="user_email" value="<?php echo $param->user_email; ?>" /></td>
+                                               </tr>
+                                       </table>
+                                       <p class="sbt">
+                                               <button type="submit" name="action" value="weblog" class="sbt_arw" onclick="OnceSubmit()"><?php echo _INSTALL; ?></button>
+                                       </p>
+                               </div>
+                       </form>
+               </div>
+<?php
+}
+
+/**
+ * Displays a form to the detail settings
+ * @param bool $isPostback
+ */
+function show_detail_setting_form($isPostback)
+{
+       global $param, $minimum_mysql_version;
+
+       $mysql_version = getMySqlVersion();
+?>
+               <div id="container_detailed">
+                       <p class="msg">
+                               <?php echo _DETAIL_NAVI1; ?>
+<?php
+       if ( $isPostback && !$param->check_all_parameters() )
+       {
+               echo '<span class="err">', _VALID_ERROR, "</span>\n";
+       }
+?>
+                       </p>
+                       <ul class="msg">
+                               <li>PHP: <?php echo phpversion(); ?></li>
+                               <li>MySQL:
+<?php
+       echo ($mysql_version == '0.0.0') ? _DBVERSION_UNKOWN : $mysql_version;
+       if ( version_compare($mysql_version, $minimum_mysql_version, '<') )
+       {
+               echo '<span class="err">', sprintf(_DBVERSION_TOOLOW, $minimum_mysql_version), '</span>';
+       }
+?></li>
+                       </ul>
+                       <form method="post" action="">
+
+                               <div class="prt">
+                                       <h2><?php echo _DETAIL_HEADER1; ?></h2>
+                                       <p class="msg">
+<?php
+       if ( $isPostback )
+       {
+               $errors = $param->check_mysql_parameters();
+               if ( is_array($errors) )
+               {
+                       foreach ( $errors as $error )
+                       {
+                               echo '<span class="err">', $error, "</span>\n";
+                       }
+               }
+       }
+?>
+                                       </p>
+                                       <table>
+                                               <tr>
+                                                       <th><span class="nam"><?php echo _DB_FIELD1; ?></span><span class="sub"><?php echo _DB_FIELD1_DESC; ?></span></th>
+                                                               <td><input type="text" name="mysql_host" value="<?php echo $param->mysql_host; ?>" /></td>
+                                               </tr>
+                                               <tr>
+                                                       <th><span class="nam"><?php echo _DB_FIELD2; ?></span><span class="sub"><?php echo _DB_FIELD2_DESC; ?></span></th>
+                                                               <td><input type="text" name="mysql_user" value="<?php echo $param->mysql_user; ?>" /></td>
+                                               </tr>
+                                               <tr>
+                                                       <th><span class="nam"><?php echo _DB_FIELD3; ?></span></th>
+                                                               <td><input type="text" name="mysql_password" value="<?php echo $param->mysql_password; ?>" /></td>
+                                               </tr>
+                                               <tr>
+                                                       <th><span class="nam"><?php echo _DB_FIELD4; ?></span><span class="sub"><?php echo _DB_FIELD4_DESC; ?></span></th>
+                                                               <td><input type="text" name="mysql_database" value="<?php echo $param->mysql_database; ?>" /></td>
+                                               </tr>
+                                               <tr>
+                                                       <th><span class="nam"><?php echo _DB_FIELD5; ?></span><span class="sub"><?php echo _DB_FIELD5_DESC; ?></span></th>
+                                                               <td><input type="text" name="mysql_tablePrefix" value="<?php echo $param->mysql_tablePrefix; ?>" /></td>
+                                               </tr>
+                                       </table>
+
+                                       <h2><?php echo _DETAIL_HEADER2; ?></h2>
+                                       <p class="msg">
+<?php
+       if ( $isPostback )
+       {
+               $errors = $param->check_uri_parameters();
+               if ( is_array($errors) )
+               {
+                       foreach ( $errors as $error )
+                       {
+                               echo '<span class="err">', $error, "</span>\n";
+                       }
+               }
+               $errors = $param->check_path_parameters();
+               if ( is_array($errors) )
+               {
+                       foreach ( $errors as $error )
+                       {
+                               echo '<span class="err">', $error, "</span>\n";
+                       }
+               }
+       }
+?>
+                                       </p>
+                                       <table>
+                                               <tr>
+                                                       <th><span class="nam"><?php echo _PATH_FIELD1; ?></span></th>
+                                                               <td><input type="text" name="IndexURL" value="<?php echo $param->IndexURL; ?>" /></td>
+                                               </tr>
+                                               <tr>
+                                                       <th><span class="nam"><?php echo _PATH_FIELD2; ?></span></th>
+                                                               <td><input type="text" name="AdminURL" value="<?php echo $param->AdminURL; ?>" /></td>
+                                               </tr>
+                                               <tr>
+                                                       <th><span class="nam"><?php echo _PATH_FIELD3; ?></span></th>
+                                                               <td><input type="text" name="AdminPath" value="<?php echo $param->AdminPath; ?>" /></td>
+                                               </tr>
+                                               <tr>
+                                                       <th><span class="nam"><?php echo _PATH_FIELD4; ?></span></th>
+                                                               <td><input type="text" name="MediaURL" value="<?php echo $param->MediaURL; ?>" /></td>
+                                               </tr>
+                                               <tr>
+                                                       <th><span class="nam"><?php echo _PATH_FIELD5; ?></span></th>
+                                                               <td><input type="text" name="MediaPath" value="<?php echo $param->MediaPath; ?>" /></td>
+                                               </tr>
+                                               <tr>
+                                                       <th><span class="nam"><?php echo _PATH_FIELD6; ?></span></th>
+                                                               <td><input type="text" name="SkinsURL" value="<?php echo $param->SkinsURL; ?>" /></td>
+                                               </tr>
+                                               <tr>
+                                                       <th><span class="nam"><?php echo _PATH_FIELD7; ?></span></th>
+                                                               <td><input type="text" name="SkinsPath" value="<?php echo $param->SkinsPath; ?>" /></td>
+                                               </tr>
+                                               <tr>
+                                                       <th><span class="nam"><?php echo _PATH_FIELD8; ?></span></th>
+                                                               <td><input type="text" name="PluginURL" value="<?php echo $param->PluginURL; ?>" /></td>
+                                               </tr>
+                                               <tr>
+                                                       <th><span class="nam"><?php echo _PATH_FIELD9; ?></span></th>
+                                                               <td><input type="text" name="ActionURL" value="<?php echo $param->ActionURL; ?>" /></td>
+                                               </tr>
+                                       </table>
+                                       <p class="msg">
+                                               <?php echo _DETAIL_TEXT3; ?>
+                                       </p>
+
+                                       <h2><?php echo _DETAIL_HEADER3; ?></h2>
+                                       <p class="msg">
+<?php
+       echo _DETAIL_TEXT4;
+       if ( $isPostback )
+       {
+               $errors = $param->check_user_parameters();
+               if ( is_array($errors) )
+               {
+                       foreach ( $errors as $error )
+                       {
+                               echo '<span class="err">', $error, "</span>\n";
+                       }
+               }
+       }
+?>
+                                       </p>
+                                       <table>
+                                               <tr>
+                                                       <th><span class="nam"><?php echo _ADMIN_FIELD1; ?></span></th>
+                                                               <td><input type="text" name="user_realname" value="<?php echo $param->user_realname; ?>" /></td>
+                                               </tr>
+                                               <tr>
+                                                       <th><span class="nam"><?php echo _ADMIN_FIELD2; ?></span><span class="sub"><?php echo _ADMIN_FIELD2_DESC; ?></span></th>
+                                                               <td><input type="text" name="user_name" value="<?php echo $param->user_name; ?>" /></td>
+                                               </tr>
+                                               <tr>
+                                                       <th><span class="nam"><?php echo _ADMIN_FIELD3; ?></span></th>
+                                                               <td><input type="password" name="user_password" /></td>
+                                               </tr>
+                                               <tr>
+                                                       <th><span class="nam"><?php echo _ADMIN_FIELD4; ?></span></th>
+                                                               <td><input type="password" name="user_password2" /></td>
+                                               </tr>
+                                               <tr>
+                                                       <th><span class="nam"><?php echo _ADMIN_FIELD5; ?></span></th>
+                                                               <td><input type="text" name="user_email" value="<?php echo $param->user_email; ?>" /></td>
+                                               </tr>
+                                       </table>
+
+                                       <h2><?php echo _DETAIL_HEADER4; ?></h2>
+                                       <p class="msg">
+<?php
+       echo _DETAIL_TEXT5;
+       if ( $isPostback )
+       {
+               $errors = $param->check_weblog_parameters();
+               if ( is_array($errors) )
+               {
+                       foreach ( $errors as $error )
+                       {
+                               echo '<span class="err">', $error, "</span>\n";
+                       }
+               }
+       }
+?>
+                                       </p>
+                                       <table>
+                                               <tr>
+                                                       <th><span class="nam"><?php echo _BLOG_FIELD1; ?></span></th>
+                                                               <td><input type="text" name="blog_name" value="<?php echo $param->blog_name; ?>" /></td>
+                                               </tr>
+                                               <tr>
+                                                       <th><span class="nam"><?php echo _BLOG_FIELD2; ?></span><span class="sub"><?php echo _BLOG_FIELD2_DESC; ?></span></th>
+                                                               <td><input type="text" name="blog_shortname" value="<?php echo $param->blog_shortname; ?>" /></td>
+                                               </tr>
+                                       </table>
+
+                                       <p class="msg">
+                                               <?php echo _DETAIL_TEXT6; ?>
+                                       </p>
+
+                                       <p class="sbt">
+                                               <button type="submit" name="action" value="detail" class="sbt_arw" onclick="OnceSubmit()"><?php echo _INSTALL; ?></button>
+                                       </p>
+                               </div>
+                       </form>
+               </div>
+<?php
+}
+
+/**
+ * Displays a screen to signal the completion of the installation
+ */
+function show_install_complete_form()
+{
+       global $MYSQL_HANDLER, $param;
+       $errors = do_install();
+?>
+               <div id="container">
+                       <p class="msg">
+<?php
+       if ( is_array($errors) && count($errors) > 0 )
+       {
+               echo _INST_ERROR;
+               foreach ( $errors as $error )
+               {
+                       echo '<span class="err">', $error, "</span>\n";
+               }
+       }
+       else
+       {
+               echo _INST_TEXT;
+               if ( array_key_exists('config_data', $_SESSION) )
+               {
+                       echo '<span class="err">', _INST_TEXT4, '</span>';
+?>
+<textarea id="config_text" readonly="readonly" onfocus="SelectText(this);"><?php echo htmlentities($_SESSION['config_data'], null, i18n::get_current_charset()) ?></textarea>
+<?php
+               }
+               else
+               {
+                       echo '<span class="err">', _INST_TEXT5, '</span>';
+               }
+?>
+                       </p>
+                       <form method="post" action="./index.php">
+                               <div class="prt">
+                                       <h2><?php echo _INST_HEADER1; ?></h2>
+                                       <p class="msg">
+                                               <?php echo sprintf(_INST_TEXT1, $param->blog_name); ?>
+                                       </p>
+                                       <p class="sbt">
+                                               <button type="button" name="toBlog" onclick="location.href='<?php echo $param->IndexURL; ?>';" class="sbt_arw"><?php echo _INST_BUTTON1; ?></button>
+                                       </p>
+                               </div>
+
+                               <div class="prt">
+                                       <h2><?php echo _INST_HEADER2; ?></h2>
+                                       <p class="msg">
+                                               <?php echo _INST_TEXT2; ?>
+                                       </p>
+                                       <p class="sbt">
+                                               <button type="button" name="toMng" onclick="location.href='<?php echo $param->AdminURL; ?>';" class="sbt_arw"><?php echo _INST_BUTTON2; ?></button>
+                                       </p>
+                               </div>
+
+                               <div class="prt">
+                                       <h2><?php echo _INST_HEADER3; ?></h2>
+                                       <p class="msg">
+                                               <?php echo _INST_TEXT3; ?>
+                                       </p>
+                                       <p class="sbt">
+                                               <button type="button" name="toAddBlog" onclick="location.href='<?php echo $param->AdminURL; ?>index.php?action=createnewlog';" class="sbt_arw"><?php echo _INST_BUTTON3; ?></button>
+                                       </p>
+                               </div>
+                       </form>
+<?php
+       }
+?>
+               </div>
+<?php
+       unset($param);
+}
+
+/**
+ * The installation process itself
+ * @return array error messages
+ */
+function do_install()
+{
+       global $param;
+       global $MYSQL_HANDLER, $MYSQL_HOST, $MYSQL_USER, $MYSQL_PASSWORD, $MYSQL_DATABASE, $MYSQL_PREFIX, $MYSQL_CONN;
+       global $DIR_NUCLEUS, $DIR_MEDIA, $DIR_SKINS, $DIR_PLUGINS, $DIR_LANG, $DIR_LIBS;
+       $errors = array();
+
+       /*
+        * 1. put all param-vars into vars
+        */
+       $MYSQL_HOST             = $param->mysql_host;
+       $MYSQL_USER             = $param->mysql_user;
+       $MYSQL_PASSWORD = $param->mysql_password;
+       $MYSQL_DATABASE = $param->mysql_database;
+       $MYSQL_PREFIX   = $param->mysql_tablePrefix;
+
+       $DIR_NUCLEUS    = $param->AdminPath;
+       $DIR_MEDIA              = $param->MediaPath;
+       $DIR_SKINS              = $param->SkinsPath;
+       $DIR_PLUGINS    = $DIR_NUCLEUS . 'plugins/';
+       $DIR_LOCALES    = $DIR_NUCLEUS . 'locales/';
+       $DIR_LIBS               = $DIR_NUCLEUS . 'libs/';
+
+       /*
+        * 2.open mySQL connection
+        */
+       $MYSQL_CONN = @DB::setConnectionInfo($MYSQL_HANDLER[1], $MYSQL_HOST, $MYSQL_USER, $MYSQL_PASSWORD);
+       if ( $MYSQL_CONN == FALSE )
+       {
+               $errors[] = _DBCONNECT_ERROR;
+               return $errors;
+       }
+
+       /*
+        * 3. try to create database if needed
+        */
+       if ( DB::execute("CREATE DATABASE IF NOT EXISTS {$MYSQL_DATABASE}") === FALSE )
+       {
+               $errinfo = DB::getError();
+               $errors[] = _INST_ERROR1 . ': ' . $errinfo[2];
+       }
+
+       /*
+        * 4. try to select database
+        */
+       $MYSQL_CONN = @DB::setConnectionInfo($MYSQL_HANDLER[1], $MYSQL_HOST, $MYSQL_USER, $MYSQL_PASSWORD, $MYSQL_DATABASE);
+       if ( !$MYSQL_CONN )
+       {
+               $errors[] = _INST_ERROR2;
+       }
+
+       if ( count($errors) > 0 )
+       {
+               return $errors;
+       }
+
+       /*
+        * 5. execute queries
+        */
+       $table_names = array(
+               'nucleus_actionlog',
+               'nucleus_ban',
+               'nucleus_blog',
+               'nucleus_category',
+               'nucleus_comment',
+               'nucleus_config',
+               'nucleus_item',
+               'nucleus_karma',
+               'nucleus_member',
+               'nucleus_plugin',
+               'nucleus_skin',
+               'nucleus_template',
+               'nucleus_team',
+               'nucleus_activation',
+               'nucleus_tickets'
+       );
+
+       $prefixed_table_names = array();
+       foreach ( $table_names as $table_name )
+       {
+               $prefixed_table_names[] = $MYSQL_PREFIX . $table_name;
+       }
+
+       // table exists check
+       $result = DB::getResult('SHOW TABLES');
+       foreach ( $result as $row )
+       {
+               if ( in_array($row[0], $prefixed_table_names) )
+               {
+                       $errors[] = _INST_ERROR3;
+                       break;
+               }
+       }
+       if ( count($errors) > 0 )
+       {
+               return $errors;
+       }
+
+       $filename = 'install.sql';
+       $fd = fopen($filename, 'r');
+       $queries = fread($fd, filesize($filename));
+       fclose($fd);
+
+       $queries = preg_split('#(;\n|;\r)#', $queries);
+
+       foreach ( $queries as $query )
+       {
+               if ( preg_match('/\w+/', $query) )
+               {
+                       if ( $MYSQL_PREFIX )
+                       {
+                               $query = str_replace($table_names, $prefixed_table_names, $query);
+                       }
+
+                       if ( DB::execute($query) === FALSE )
+                       {
+                               $errinfo = DB::getError();
+                               $errors[] = _INST_ERROR4 . ' (<small>' . $query . '</small>): ' . $errinfo[2];
+                       }
+               }
+       }
+
+       /*
+        * 6. put needed records
+        */
+       /* push first post */
+       $query = "INSERT INTO %s VALUES (1, %s, %s, %s, 1, 1, %s, 0, 0, 0, 1, 0, 1)";
+       $query = sprintf($query,
+               tableName('nucleus_item'),
+               DB::quoteValue(_1ST_POST_TITLE),
+               DB::quoteValue(_1ST_POST),
+               DB::quoteValue(_1ST_POST2),
+               DB::formatDateTime()
+       );
+       if ( DB::execute($query) === FALSE )
+       {
+               $errinfo = DB::getError();
+               $errors[] = _INST_ERROR4 . ' (<small>' . $query . '</small>): ' . $errinfo[2];
+       }
+
+       /* push configurations */
+       array_merge($errors, updateConfig('IndexURL', $param->IndexURL));
+       array_merge($errors, updateConfig('AdminURL', $param->AdminURL));
+       array_merge($errors, updateConfig('MediaURL', $param->MediaURL));
+       array_merge($errors, updateConfig('SkinsURL', $param->SkinsURL));
+       array_merge($errors, updateConfig('PluginURL', $param->PluginURL));
+       array_merge($errors, updateConfig('ActionURL', $param->ActionURL));
+       array_merge($errors, updateConfig('AdminEmail', $param->user_email));
+       array_merge($errors, updateConfig('SiteName', $param->blog_name));
+       array_merge($errors, updateConfig('Locale', i18n::get_current_locale()));
+
+       /* push super admin */
+       $query = "UPDATE %s SET mname = %s, mrealname = %s, mpassword = %s, memail = %s, murl = %s, madmin = 1, mcanlogin = 1 WHERE mnumber = 1";
+       $query = sprintf($query,
+               tableName('nucleus_member'),
+               DB::quoteValue($param->user_name),
+               DB::quoteValue($param->user_realname),
+               DB::quoteValue(md5($param->user_password)),
+               DB::quoteValue($param->user_email),
+               DB::quoteValue($param->IndexURL)
+       );
+       if ( DB::execute($query) === FALSE )
+       {
+               $errinfo = DB::getError();
+               $errors[] = _INST_ERROR5 . ': ' . $errinfo[2];
+       }
+
+       /* push new weblog */
+       $query = "UPDATE %s SET bname = %s, bshortname = %s, burl = %s WHERE bnumber = 1";
+       $query = sprintf($query,
+               tableName('nucleus_blog'),
+               DB::quoteValue($param->blog_name),
+               DB::quoteValue($param->blog_shortname),
+               DB::quoteValue($param->IndexURL)
+       );
+       if ( DB::execute($query) === FALSE )
+       {
+               $errinfo = DB::getError();
+               $errors[] = _INST_ERROR6 . ': ' . $errinfo[2];
+       }
+
+       /* push default category */
+       $query = "UPDATE %s SET cname = %s, cdesc = %s WHERE catid = 1";
+       $query = sprintf($query,
+               tableName('nucleus_category'),
+               DB::quoteValue(_GENERALCAT_NAME),
+               DB::quoteValue(_GENERALCAT_DESC)
+       );
+       if ( DB::execute($query) === FALSE )
+       {
+               $errinfo = DB::getError();
+               $errors[] = _INST_ERROR6 . ': ' . $errinfo[2];
+       }
+
+       /*
+        * 7. install default plugins and skins
+        */
+       global $aConfPlugsToInstall, $aConfSkinsToImport;
+       $aSkinErrors = array();
+       $aPlugErrors = array();
+
+       if ( (count($aConfPlugsToInstall) > 0) || (count($aConfSkinsToImport) > 0) )
+       {
+               include_once($DIR_LIBS . 'globalfunctions.php');
+               global $manager;
+               if ( !isset($manager) )
+               {
+                       $manager = new Manager();
+               }
+
+               include_once($DIR_LIBS . 'skinie.php');
+               
+               $aSkinErrors = installCustomSkins();
+               if ( count($aSkinErrors) > 0 )
+               {
+                       array_merge($errors, $aSkinErrors);
+               }
+
+               $query  = "SELECT sdnumber FROM %s WHERE sdname='admin/default'";
+               $query  = sprintf($query, tableName('nucleus_skin_desc'));
+               $res    = intval(DB::getValue($query));
+               array_merge($errors, updateConfig('AdminSkin', $res));
+               
+               $query  = "SELECT sdnumber FROM %s WHERE sdname='admin/bookmarklet'";
+               $query  = sprintf($query, tableName('nucleus_skin_desc'));
+               $res    = intval(DB::getValue($query));
+               array_merge($errors, updateConfig('BookmarkletSkin', $res));
+               
+               $query          = "SELECT sdnumber FROM %s WHERE sdname='default'";
+               $query          = sprintf($query, tableName('nucleus_skin_desc'));
+               $defSkinID      = intval(DB::getValue($query));
+
+               $query = "UPDATE %s SET bdefskin=%d WHERE bnumber=1";
+               $query = sprintf($query, tableName('nucleus_blog'), $defSkinID);
+               DB::execute($query);
+               $query = "UPDATE %s SET value=%d WHERE name='BaseSkin'";
+               $query = sprintf($query, tableName('nucleus_config'), $defSkinID);
+               DB::execute($query);
+
+               $aPlugErrors = installCustomPlugs();
+               if ( count($aPlugErrors) > 0 )
+               {
+                       array_merge($errors, $aPlugErrors);
+               }
+       }
+
+       /*
+        * 8. Write config file ourselves (if possible)
+        */
+       $config_data = '<' . '?php' . "\n";
+       $config_data .= "// mySQL connection information\n";
+       $config_data .= "\$MYSQL_HOST = '" . $MYSQL_HOST . "';\n";
+       $config_data .= "\$MYSQL_USER = '" . $MYSQL_USER . "';\n";
+       $config_data .= "\$MYSQL_PASSWORD = '" . $MYSQL_PASSWORD . "';\n";
+       $config_data .= "\$MYSQL_DATABASE = '" . $MYSQL_DATABASE . "';\n";
+       $config_data .= "\$MYSQL_PREFIX = '" . $MYSQL_PREFIX . "';\n";
+       $config_data .= "// new in 3.50. first element is db handler, the second is the db driver used by the handler\n";
+       $config_data .= "// default is \$MYSQL_HANDLER = array('mysql','mysql');\n";
+       $config_data .= "//\$MYSQL_HANDLER = array('mysql','mysql');\n";
+       $config_data .= "//\$MYSQL_HANDLER = array('pdo','mysql');\n";
+       $config_data .= "\$MYSQL_HANDLER = array('" . $MYSQL_HANDLER[0] . "','" . $MYSQL_HANDLER[1] . "');\n";
+       $config_data .= "\n";
+       $config_data .= "// main nucleus directory\n";
+       $config_data .= "\$DIR_NUCLEUS = '" . $DIR_NUCLEUS . "';\n";
+       $config_data .= "\n";
+       $config_data .= "// path to media dir\n";
+       $config_data .= "\$DIR_MEDIA = '" . $DIR_MEDIA . "';\n";
+       $config_data .= "\n";
+       $config_data .= "// extra skin files for imported skins\n";
+       $config_data .= "\$DIR_SKINS = '" . $DIR_SKINS . "';\n";
+       $config_data .= "\n";
+       $config_data .= "// these dirs are normally sub dirs of the nucleus dir, but \n";
+       $config_data .= "// you can redefine them if you wish\n";
+       $config_data .= "\$DIR_PLUGINS = \$DIR_NUCLEUS . 'plugins/';\n";
+       $config_data .= "\$DIR_LOCALES = \$DIR_NUCLEUS . 'locales/';\n";
+       $config_data .= "\$DIR_LIBS = \$DIR_NUCLEUS . 'libs/';\n";
+       $config_data .= "\n";
+       $config_data .= "// include libs\n";
+       $config_data .= "include(\$DIR_LIBS.'globalfunctions.php');\n";
+       $config_data .= "?" . ">";
+
+       $result = false;
+       if ( @!file_exists('../config.php') || is_writable('../config.php') )
+       {
+               if ( $fp = @fopen('../config.php', 'w') )
+               {
+                       $result = @fwrite($fp, $config_data, i18n::strlen($config_data));
+                       fclose($fp);
+               }
+       }
+
+       if ( $result )
+       {
+               // try to change the read-only permission.
+               if ( strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN' )
+               {
+                       @chmod('../config.php', 0444);
+               }
+       }
+       else
+       {
+               $_SESSION['config_data'] = $config_data;
+       }
+
+       return $errors;
+}
+
+/**
+ * Confirm that you can write to the configuration file
+ * @return string error message
+ */
+function canConfigFileWritable()
+{
+       if ( @file_exists('../config.php') && @!is_writable('../config.php') )
+       {
+               // try to change the read-write permission.
+               if ( strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN' )
+               {
+                       @chmod('../config.php', 0666);
+               }
+
+               if ( @!is_writable('../config.php') )
+               {
+                       return _INST_ERROR8;
+               }
+       }
+       return '';
+}
+
+/**
+ * To obtain the version of MySQL
+ * @return string
+ */
+function getMySqlVersion()
+{
+       global $MYSQL_HANDLER, $minimum_mysql_version, $errors;
+       // Turn on output buffer
+       // Needed to repress the output of the sql function that are
+       // not part of php (in this case the @ operator doesn't work)
+       ob_start();
+
+       // note: this piece of code is taken from phpMyAdmin
+       $conn = @DB::setConnectionInfo($MYSQL_HANDLER[1], 'localhost', '', '');
+
+       if ( $conn )
+       {
+               $row = DB::getAttribute(PDO::ATTR_SERVER_VERSION);
+               $match = preg_split('#\.#', $row);
+       }
+       else
+       {
+               $row = @DB::getRow('SHOW VARIABLES LIKE \'version\'');
+
+               if ( $row )
+               {
+                       $match = preg_split('#\.#', $row[1]);
+               }
+               else
+               {
+                       $output = (function_exists('shell_exec')) ? @shell_exec('mysql -V') : '0.0.0';
+                       preg_match('@[0-9]+\.[0-9]+\.[0-9]+@', $output, $version);
+                       $match = preg_split('#\.#', $version[0]);
+
+                       if ( $match[0] == '' )
+                       {
+                               $match = array('0', '0', '0');
+                       }
+               }
+       }
+
+       @DB::disConnect();
+
+       //End and clean output buffer
+       ob_end_clean();
+
+       return implode($match, '.');
+}
+
+/**
+ * Add a table prefix if it is used
+ *
+ * @param string $input table name with prefix
+ * @return string
+ */
+function tableName($input)
+{
+       global $MYSQL_PREFIX;
+       if ( $MYSQL_PREFIX )
+       {
+               return $MYSQL_PREFIX . $input;
+       }
+       else
+       {
+               return $input;
+       }
+}
+
+/**
+ * Install custom plugins
+ */
+function installCustomPlugs()
+{
+       global $aConfPlugsToInstall, $DIR_LIBS, $manager;
+
+       $aErrors = array();
+       if ( count($aConfPlugsToInstall) == 0 )
+       {
+               return $aErrors;
+       }
+
+       $query = sprintf('SELECT * FROM %s', tableName('nucleus_plugin'));
+       $res = DB::getResult($query);
+       $numCurrent = $res->rowCount();
+
+       foreach ( $aConfPlugsToInstall as $plugName )
+       {
+               $query = sprintf('INSERT INTO %s (porder, pfile) VALUES (%d, %s)',
+                       tableName('nucleus_plugin'),
+                       (++$numCurrent),
+                       DB::quoteValue($plugName));
+               DB::execute($query);
+
+               $manager->clearCachedInfo('installedPlugins');
+               $plugin =& $manager->getPlugin($plugName);
+               $plugin->setID($numCurrent);
+
+               if ( !$plugin )
+               {
+                       $query = sprintf('DELETE FROM %s WHERE pfile = %s',
+                               tableName('nucleus_plugin'),
+                               DB::quoteValue($plugName));
+                       DB::execute($query);
+                       $numCurrent--;
+                       array_push($aErrors, sprintf(_INST_ERROR9, $plugName));
+                       continue;
+               }
+               $plugin->install();
+       }
+
+       $query = sprintf('DELETE FROM %s', tableName('nucleus_plugin_event'));
+       DB::execute($query);
+       $query = sprintf('SELECT pid, pfile FROM %s', tableName('nucleus_plugin'));
+       $res = DB::getResult($query);
+
+       foreach ( $res as $row )
+       {
+               $plug =& $manager->getPlugin($row['pfile']);
+
+               if ( $plug )
+               {
+                       $eventList = $plug->getEventList();
+                       foreach ( $eventList as $eventName )
+                       {
+                               $query = sprintf('INSERT INTO %s (pid, event) VALUES (%d, %s)',
+                                       tableName('nucleus_plugin_event'),
+                                       intval($row['pid']),
+                                       DB::quoteValue($eventName));
+                               DB::execute($query);
+                       }
+               }
+       }
+       return $aErrors;
+}
+
+/**
+ * Install custom skins
+ * Prepares the installation of custom skins
+ */
+function installCustomSkins()
+{
+       global $aConfSkinsToImport, $DIR_LIBS, $DIR_SKINS;
+
+       $aErrors = array();
+       if ( count($aConfSkinsToImport) == 0 )
+       {
+               return $aErrors;
+       }
+
+       $importer = new SkinImport();
+
+       foreach ( $aConfSkinsToImport as $skinName )
+       {
+               $importer->reset();
+               $skinFile = $DIR_SKINS . $skinName . '/skinbackup.xml';
+
+               if ( !@file_exists($skinFile) )
+               {
+                       array_push($aErrors, sprintf(_INST_ERROR10, $skinFile));
+                       continue;
+               }
+
+               $error = $importer->readFile($skinFile);
+
+               if ( $error )
+               {
+                       array_push($aErrors, sprintf(_INST_ERROR11, $skinName) . ' : ' . $error);
+                       continue;
+               }
+
+               $error = $importer->writeToDatabase(1);
+
+               if ( $error )
+               {
+                       array_push($aErrors, sprintf(_INST_ERROR12, $skinName) . ' : ' . $error);
+                       continue;
+               }
+       }
+       return $aErrors;
+}
+
+/**
+ * Check if some important files of the Nucleus CMS installation are available
+ * Give an error if one or more files are not accessible
+ */
+function do_check_files()
+{
+       $missingfiles = array();
+       $files = array(
+               './install.sql',
+               '../index.php',
+               '../action.php',
+               '../nucleus/index.php',
+               '../nucleus/libs/ACTION.php',
+               '../nucleus/libs/ACTIONLOG.php',
+               '../nucleus/libs/ACTIONS.php',
+               '../nucleus/libs/ADMIN.php',
+               '../nucleus/libs/BaseActions.php',
+               '../nucleus/libs/BLOG.php',
+               '../nucleus/libs/BODYACTIONS.php',
+               '../nucleus/libs/COMMENT.php',
+               '../nucleus/libs/COMMENTACTIONS.php',
+               '../nucleus/libs/COMMENTS.php',
+               '../nucleus/libs/ENTITY.php',
+               '../nucleus/libs/globalfunctions.php',
+               '../nucleus/libs/i18n.php',
+               '../nucleus/libs/ITEM.php',
+               '../nucleus/libs/ITEMACTIONS.php',
+               '../nucleus/libs/LINK.php',
+               '../nucleus/libs/MANAGER.php',
+               '../nucleus/libs/MEDIA.php',
+               '../nucleus/libs/MEMBER.php',
+               '../nucleus/libs/NOTIFICATION.php',
+               '../nucleus/libs/PARSER.php',
+               '../nucleus/libs/PLUGIN.php',
+               '../nucleus/libs/PLUGINADMIN.php',
+               '../nucleus/libs/SEARCH.php',
+               '../nucleus/libs/showlist.php',
+               '../nucleus/libs/SKIN.php',
+               '../nucleus/libs/TEMPLATE.php',
+               '../nucleus/libs/vars4.1.0.php',
+               '../nucleus/libs/xmlrpc.inc.php',
+               '../nucleus/libs/xmlrpcs.inc.php',
+               '../nucleus/libs/sql/DB.php',
+               '../nucleus/libs/sql/MYSQLPDO.php'
+       );
+
+       $count = count($files);
+       for ( $i = 0; $i < $count; $i++ )
+       {
+               if ( !is_readable($files[$i]) )
+               {
+                       array_push($missingfiles, 'File <b>' . $files[$i] . '</b> is missing or not readable.<br />');
+               }
+       }
+
+       if ( count($missingfiles) > 0 )
+       {
+               exit(implode("\n", $missingfiles));
+       }
+}
+
+/**
+ * Updates the configuration in the database
+ *
+ * @param string $name name of the config var
+ * @param string $value new value of the config var
+ * @return array
+ */
+function updateConfig($name, $value)
+{
+       $errors = array();
+
+       $query = "UPDATE %s SET value = %s WHERE name = %s";
+       $query = sprintf($query, tableName('nucleus_config'), DB::quoteValue(trim($value)), DB::quoteValue($name));
+
+       if ( DB::execute($query) === FALSE )
+       {
+               $errinfo = DB::getError();
+               $errors[] = _INST_ERROR4 . ': ' . $errinfo[2];
+       }
+       return $errors;
+}
+
+class ParamManager
+{
+       /* process parameter */
+       public $state;
+       public $locale;
+
+       /* mysql connection parameters */
+       public $mysql_host;
+       public $mysql_user;
+       public $mysql_password;
+       public $mysql_database;
+       public $mysql_tablePrefix;
+
+       /* weblog configuration parameters */
+       public $blog_name;
+       public $blog_shortname;
+
+       /* member configuration parameters */
+       public $user_name;
+       public $user_realname;
+       public $user_password;
+       private $user_password2;
+       public $user_email;
+
+       /* URI parameters  */
+       private $root_url;
+       public $IndexURL;
+       public $AdminURL;
+       public $MediaURL;
+       public $SkinsURL;
+       public $PluginURL;
+       public $ActionURL;
+
+       /* path parameters */
+       private $root_path;
+       public $AdminPath;
+       public $MediaPath;
+       public $SkinsPath;
+
+       /**
+        * constructor
+        */
+       public function __construct()
+       {
+               $this->init();
+       }
+
+       public function init()
+       {
+               // set default values
+               $this->state = 'locale';
+               $this->install_mode = 'simple';
+               $this->locale = '';
+               $this->mysql_host = @ini_get('mysql.default_host');
+               $this->blog_name = 'My Nucleus CMS';
+               $this->blog_shortname = 'mynucleuscms';
+
+               /* root path */
+               $directory_separator = preg_quote(DIRECTORY_SEPARATOR, '|');
+               $this->root_path = implode('/', preg_split("|$directory_separator|", realpath(dirname(__FILE__) . '/..')));
+               if ( substr($this->root_path, -1, 1) !== '/' )
+               {
+                       $this->root_path .= '/';
+               }
+               $base_path_pcre = preg_quote($this->root_path, '|');
+
+               /* current directry name */
+               $directory_name = preg_replace("#{$base_path_pcre}#", '', implode('/', preg_split("#{$directory_separator}#", realpath(dirname(__FILE__)))));
+               $directory_name_pcre = preg_quote($directory_name, '|');
+
+               /* root uri */
+               $root_url = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
+               $this->root_url = preg_replace("|$directory_name_pcre(.*)$|", '', $root_url);
+
+               $this->AdminPath = $this->root_path . 'nucleus/';
+               $this->MediaPath = $this->root_path . 'media/';
+               $this->SkinsPath = $this->root_path . 'skins/';
+
+               $this->IndexURL  = $this->root_url;
+               $this->AdminURL  = $this->root_url . 'nucleus/';
+               $this->MediaURL  = $this->root_url . 'media/';
+               $this->SkinsURL  = $this->root_url . 'skins/';
+               $this->PluginURL = $this->root_url . 'nucleus/plugins/';
+               $this->ActionURL = $this->root_url . 'action.php';
+       }
+
+       private function read_parameter($parameter)
+       {
+               foreach ( $parameter as $element )
+               {
+                       if ( array_key_exists($element, $_POST) )
+                       {
+                               $this->$element = $_POST[$element];
+                       }
+               }
+       }
+
+       public function set_state($state)
+       {
+               $states = array('locale', 'mysql', 'weblog', 'detail', 'install');
+               if ( in_array($state, $states) )
+               {
+                       $this->state = $state;
+               }
+       }
+
+       public function set_locale()
+       {
+               $this->read_parameter(array('locale'));
+
+               if ( !$this->locale )
+               {
+                       /**
+                        * default locale select simple implementation
+                        * 
+                        * NOTE:
+                        * RFC2616: Hypertext Transfer Protocol -- HTTP/1.1
+                        * http://www.ietf.org/rfc/rfc2616.txt
+                        * 
+                        * 14.4 Accept-Language
+                        * 
+                        *    The Accept-Language request-header field is similar to Accept, but
+                        *    restricts the set of natural languages that are preferred as a
+                        *    response to the request. Language tags are defined in section 3.10.
+                        * 
+                        *        Accept-Language = "Accept-Language" ":"
+                        *                          1#( language-range [ ";" "q" "=" qvalue ] )
+                        *        language-range  = ( ( 1*8ALPHA *( "-" 1*8ALPHA ) ) | "*" )
+                        *        
+                        *    Each language-range MAY be given an associated quality value which
+                        *    represents an estimate of the user's preference for the languages
+                        *    specified by that range. The quality value defaults to "q=1". For
+                        *    example,
+                        * 
+                        *        Accept-Language: da, en-gb;q=0.8, en;q=0.7
+                        * 
+                        *    would mean: "I prefer Danish, but will accept British English and
+                        *    other types of English." A language-range matches a language-tag if
+                        *    it exactly equals the tag, or if it exactly equals a prefix of the
+                        *    tag such that the first tag character following the prefix is "-".
+                        *    The special range "*", if present in the Accept-Language field,
+                        *    matches every tag not matched by any other range present in the
+                        *    Accept-Language field.
+                        * 
+                        * TODO: this is appropriate implement or not
+                        */
+                       $languages = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
+                       
+                       /* retrieve language token of language tag from first token */
+                       $language = '';
+                       if ( is_array($languages) && count($languages) > 0 )
+                       {
+                               $language = preg_replace('#^([\w]+).*$#', '$1', $languages[0]);
+                       }
+                       
+                       $locales = i18n::get_available_locale_list();
+                       foreach ( $locales as $locale )
+                       {
+                               if ( i18n::strpos($locale, $language) === 0 )
+                               {
+                                       $this->locale = $locale;
+                                       break;
+                               }
+                       }
+               }
+               
+               /* include installer translation messages */
+               $translation_file = "./locales/{$this->locale}." . i18n::get_current_charset() . '.php';
+               if ( !file_exists($translation_file) )
+               {
+                       $translation_file = './locales/en_Latn_US.UTF-8.php';
+               }
+               include($translation_file);
+               
+               /* include global translation messages */
+               $translation_file = "../nucleus/locales/{$this->locale}." . i18n::get_current_charset() . '.php';
+               if ( !file_exists($translation_file) )
+               {
+                       $translation_file = './locales/en_Latn_US.UTF-8.php';
+               }
+               include($translation_file);
+               
+               i18n::set_current_locale($this->locale);
+               
+               return;
+       }
+
+       public function check_mysql_parameters()
+       {
+               global $MYSQL_HANDLER;
+               
+               $parameters = array('mysql_host', 'mysql_user', 'mysql_password', 'mysql_database', 'mysql_tablePrefix');
+               $this->read_parameter($parameters);
+
+               $errors = array();
+               if ( $this->mysql_host == '' )
+               {
+                       $errors[] = sprintf(_VALID_ERROR1, _DB_FIELD1);
+               }
+
+               if ( $this->mysql_user == '' )
+               {
+                       $errors[] = sprintf(_VALID_ERROR1, _DB_FIELD2);
+               }
+               
+               if ( $this->mysql_user != ''
+                       && !preg_match('/^[a-z0-9_\-]+$/i', $this->mysql_user) )
+               {
+                       $errors[] = sprintf(_VALID_ERROR2, _DB_FIELD2);
+               }
+               
+               if ( $this->mysql_database == '' )
+               {
+                       $errors[] = sprintf(_VALID_ERROR1, _DB_FIELD4);
+               }
+
+               if ( $this->mysql_database != ''
+                       && !preg_match('/^[a-z0-9_\-]+$/i', $this->mysql_database) )
+               {
+                       $errors[] = sprintf(_VALID_ERROR2, _DB_FIELD4);
+               }
+
+               if ( $this->mysql_tablePrefix != ''
+                       && !preg_match('/^[a-z0-9_]+$/i', $this->mysql_tablePrefix) )
+               {
+                       $errors[] = sprintf(_VALID_ERROR3, _DB_FIELD5);
+               }
+               
+               if ( count($errors) == 0 )
+               {
+                       $mysql_conn = @DB::setConnectionInfo($MYSQL_HANDLER[1], $this->mysql_host, $this->mysql_user, $this->mysql_password);
+                       if ( $mysql_conn == false )
+                       {
+                               $errors[] = _DBCONNECT_ERROR;
+                       }
+                       else
+                       {
+                               @DB::disConnect();
+                       }
+               }
+
+               return $errors;
+       }
+
+       public function check_user_parameters()
+       {
+               $parameters = array('user_name', 'user_realname', 'user_password', 'user_password2', 'user_email');
+               $this->read_parameter($parameters);
+
+               $errors = array();
+               if ( $this->user_realname == '' )
+               {
+                       $errors[] = sprintf(_VALID_ERROR1, _ADMIN_FIELD1);
+               }
+
+               if ( $this->user_name == '' )
+               {
+                       $errors[] = sprintf(_VALID_ERROR1, _ADMIN_FIELD2);
+               }
+               elseif ( !preg_match("/^[a-z0-9]+([ a-z0-9]*[a-z0-9]+)?$/i", $this->user_name) )
+               {
+                       $errors[] = _VALID_ERROR5;
+               }
+
+               if ( $this->user_password == '' || $this->user_password2 == '' )
+               {
+                       $errors[] = sprintf(_VALID_ERROR1, _ADMIN_FIELD3);
+                       $this->user_password = '';
+               }
+               elseif ( $this->user_password != $this->user_password2 )
+               {
+                       $errors[] = _VALID_ERROR6;
+                       $this->user_password = '';
+               }
+
+               if ( !preg_match("/^[a-z0-9\._+\-]+@[a-z0-9\._\-]+\.[a-z]{2,6}$/i", $this->user_email) )
+               {
+                       $errors[] = _VALID_ERROR7;
+               }
+
+               return $errors;
+       }
+
+       public function check_weblog_parameters()
+       {
+               $parameters = array('blog_name', 'blog_shortname');
+               $this->read_parameter($parameters);
+
+               $errors = array();
+               if ( $this->blog_name == '' )
+               {
+                       $errors[] = sprintf(_VALID_ERROR1, _BLOG_FIELD1);
+               }
+
+               if ( $this->blog_shortname == '' )
+               {
+                       $errors[] = sprintf(_VALID_ERROR1, _BLOG_FIELD2);
+               }
+
+               if ( !preg_match("/^[a-z0-9]+$/i", $this->blog_shortname) )
+               {
+                       $errors[] = _VALID_ERROR4;
+               }
+
+               return $errors;
+       }
+
+       public function check_uri_parameters()
+       {
+               $parameters = array('IndexURL', 'AdminURL', 'MediaURL', 'SkinsURL', 'PluginURL', 'ActionURL');
+               $this->read_parameter($parameters);
+
+               $errors = array();
+               if ( substr($this->IndexURL, -1, 1) !== '/' )
+               {
+                       $errors[] = sprintf(_VALID_ERROR8, _PATH_FIELD1);
+               }
+
+               if ( substr($this->AdminURL, -1, 1) !== '/' )
+               {
+                       $errors[] = sprintf(_VALID_ERROR8, _PATH_FIELD2);
+               }
+
+               if ( substr($this->MediaURL, -1, 1) !== '/' )
+               {
+                       $errors[] = sprintf(_VALID_ERROR8, _PATH_FIELD4);
+               }
+
+               if ( substr($this->SkinsURL, -1, 1) !== '/' )
+               {
+                       $errors[] = sprintf(_VALID_ERROR8, _PATH_FIELD6);
+               }
+
+               if ( substr($this->PluginURL, -1, 1) !== '/' )
+               {
+                       $errors[] = sprintf(_VALID_ERROR8, _PATH_FIELD8);
+               }
+
+               if ( strrchr($this->ActionURL, '/') != '/action.php' )
+               {
+                       $errors[] = sprintf(_VALID_ERROR9, _PATH_FIELD9);
+               }
+
+               return $errors;
+       }
+
+       public function check_path_parameters()
+       {
+               $parameters = array('AdminPath', 'MediaPath', 'SkinsPath');
+               $this->read_parameter($parameters);
+
+               $separators = array('/', DIRECTORY_SEPARATOR);
+               $errors = array();
+               if ( !in_array(substr($this->AdminPath, -1, 1), $separators) )
+               {
+                       $errors[] = sprintf(_VALID_ERROR10, _PATH_FIELD3);
+               }
+               elseif ( !file_exists($this->AdminPath) )
+               {
+                       $errors[] = sprintf(_VALID_ERROR11, _PATH_FIELD3);
+               }
+
+               if ( !in_array(substr($this->MediaPath, -1, 1), $separators) )
+               {
+                       $errors[] = sprintf(_VALID_ERROR10, _PATH_FIELD5);
+               }
+               elseif ( !file_exists($this->MediaPath) )
+               {
+                       $errors[] = sprintf(_VALID_ERROR11, _PATH_FIELD5);
+               }
+
+               if ( !in_array(substr($this->SkinsPath, -1, 1), $separators) )
+               {
+                       $errors[] = sprintf(_VALID_ERROR10, _PATH_FIELD7);
+               }
+               elseif ( !file_exists($this->SkinsPath) )
+               {
+                       $errors[] = sprintf(_VALID_ERROR11, _PATH_FIELD7);
+               }
+
+               return $errors;
+       }
+
+       /**
+        * check all parameters
+        * @return bool
+        */
+       public function check_all_parameters()
+       {
+               $this->set_locale();
+
+               $isValid = true;
+               $isValid &= (count($this->check_mysql_parameters()) == 0);
+               $isValid &= (count($this->check_user_parameters()) == 0);
+               $isValid &= (count($this->check_weblog_parameters()) == 0);
+               $isValid &= (count($this->check_uri_parameters()) == 0);
+               $isValid &= (count($this->check_path_parameters()) == 0);
+
+               return $isValid;
+       }
+}
+>>>>>>> skinnable-master
index 8d0b892..0237635 100644 (file)
-CREATE TABLE nucleus_actionlog (\r
-  timestamp datetime NOT NULL default '0000-00-00 00:00:00',\r
-  message varchar(255) NOT NULL default ''\r
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;\r
-\r
-CREATE TABLE nucleus_activation (\r
-  vkey varchar(40) NOT NULL default '',\r
-  vtime datetime NOT NULL default '0000-00-00 00:00:00',\r
-  vmember int(11) NOT NULL default '0',\r
-  vtype varchar(15) NOT NULL default '',\r
-  vextra varchar(128) NOT NULL default '',\r
-  PRIMARY KEY  (vkey)\r
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;\r
-\r
-CREATE TABLE nucleus_ban (\r
-  iprange varchar(15) NOT NULL default '',\r
-  reason varchar(255) NOT NULL default '',\r
-  blogid int(11) NOT NULL default '0'\r
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;\r
-\r
-CREATE TABLE nucleus_blog (\r
-  bnumber int(11) NOT NULL auto_increment,\r
-  bname varchar(60) NOT NULL default '',\r
-  bshortname varchar(15) NOT NULL default '',\r
-  bdesc varchar(200) default NULL,\r
-  bcomments tinyint(2) NOT NULL default '1',\r
-  bmaxcomments int(11) NOT NULL default '0',\r
-  btimeoffset decimal(3,1) NOT NULL default '0.0',\r
-  bnotify varchar(128) default NULL,\r
-  burl varchar(100) default NULL,\r
-  bupdate varchar(60) default NULL,\r
-  bdefskin int(11) NOT NULL default '1',\r
-  bpublic tinyint(2) NOT NULL default '1',\r
-  bconvertbreaks tinyint(2) NOT NULL default '1',\r
-  bdefcat int(11) default NULL,\r
-  bnotifytype int(11) NOT NULL default '15',\r
-  ballowpast tinyint(2) NOT NULL default '0',\r
-  bincludesearch tinyint(2) NOT NULL default '0',\r
-  breqemail TINYINT( 2 ) DEFAULT '0' NOT NULL,\r
-  bfuturepost TINYINT(2) DEFAULT '0' NOT NULL,\r
-  PRIMARY KEY  (bnumber),\r
---  UNIQUE KEY bnumber (bnumber),\r
-  UNIQUE KEY bshortname (bshortname)\r
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;\r
-\r
-INSERT INTO nucleus_blog VALUES (1, 'My Nucleus CMS', 'mynucleuscms', '', 1, 0, 0.0, '', 'http://localhost:8080/nucleus/', '', 5, 1, 1, 1, 1, 1, 0, 0, 0);\r
-\r
-CREATE TABLE nucleus_category (\r
-  catid int(11) NOT NULL auto_increment,\r
-  cblog int(11) NOT NULL default '0',\r
-  cname varchar(200) default NULL,\r
-  cdesc varchar(200) default NULL,\r
-  PRIMARY KEY  (catid)\r
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;\r
-\r
-INSERT INTO nucleus_category VALUES (1, 1, 'General', 'Items that do not fit in other categories');\r
-\r
-CREATE TABLE nucleus_comment (\r
-  cnumber int(11) NOT NULL auto_increment,\r
-  cbody text NOT NULL,\r
-  cuser varchar(40) default NULL,\r
-  cmail varchar(100) default NULL,\r
-  cemail VARCHAR( 100 ),\r
-  cmember int(11) default NULL,\r
-  citem int(11) NOT NULL default '0',\r
-  ctime datetime NOT NULL default '0000-00-00 00:00:00',\r
-  chost varchar(60) default NULL,\r
-  cip varchar(15) NOT NULL default '',\r
-  cblog int(11) NOT NULL default '0',\r
-  PRIMARY KEY  (cnumber),\r
---  UNIQUE KEY cnumber (cnumber),\r
-  KEY citem (citem),\r
-  FULLTEXT KEY cbody (cbody),\r
-  INDEX cblog (cblog)\r
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;\r
-\r
-CREATE TABLE nucleus_config (\r
-  name varchar(20) NOT NULL default '',\r
-  value varchar(128) default NULL,\r
-  PRIMARY KEY  (name)\r
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;\r
-\r
-INSERT INTO nucleus_config VALUES ('DefaultBlog', '1');\r
-INSERT INTO nucleus_config VALUES ('AdminEmail', 'example@example.org');\r
-INSERT INTO nucleus_config VALUES ('IndexURL', 'http://localhost:8080/nucleus/');\r
-INSERT INTO nucleus_config VALUES ('Locale', 'en_Latn_US');\r
-INSERT INTO nucleus_config VALUES ('SessionCookie', '');\r
-INSERT INTO nucleus_config VALUES ('AllowMemberCreate', '');\r
-INSERT INTO nucleus_config VALUES ('AllowMemberMail', '1');\r
-INSERT INTO nucleus_config VALUES ('SiteName', 'My Nucleus CMS');\r
-INSERT INTO nucleus_config VALUES ('AdminURL', 'http://localhost:8080/nucleus/nucleus/');\r
-INSERT INTO nucleus_config VALUES ('NewMemberCanLogon', '1');\r
-INSERT INTO nucleus_config VALUES ('DisableSite', '');\r
-INSERT INTO nucleus_config VALUES ('DisableSiteURL', 'http://www.this-page-intentionally-left-blank.org/');\r
-INSERT INTO nucleus_config VALUES ('LastVisit', '');\r
-INSERT INTO nucleus_config VALUES ('MediaURL', 'http://localhost:8080/nucleus/media/');\r
-INSERT INTO nucleus_config VALUES ('AllowedTypes', 'jpg,jpeg,gif,mpg,mpeg,avi,mov,mp3,swf,png');\r
-INSERT INTO nucleus_config VALUES ('AllowLoginEdit', '');\r
-INSERT INTO nucleus_config VALUES ('AllowUpload', '1');\r
-INSERT INTO nucleus_config VALUES ('DisableJsTools', '2');\r
-INSERT INTO nucleus_config VALUES ('CookiePath', '/');\r
-INSERT INTO nucleus_config VALUES ('CookieDomain', '');\r
-INSERT INTO nucleus_config VALUES ('CookieSecure', '');\r
-INSERT INTO nucleus_config VALUES ('CookiePrefix', '');\r
-INSERT INTO nucleus_config VALUES ('MediaPrefix', '1');\r
-INSERT INTO nucleus_config VALUES ('MaxUploadSize', '1048576');\r
-INSERT INTO nucleus_config VALUES ('NonmemberMail', '');\r
-INSERT INTO nucleus_config VALUES ('PluginURL', 'http://localhost:8080/nucleus/nucleus/plugins/');\r
-INSERT INTO nucleus_config VALUES ('ProtectMemNames', '1');\r
-INSERT INTO nucleus_config VALUES ('BaseSkin', '5');\r
-INSERT INTO nucleus_config VALUES ('SkinsURL', 'http://localhost:8080/nucleus/skins/');\r
-INSERT INTO nucleus_config VALUES ('ActionURL', 'http://localhost:8080/nucleus/action.php');\r
-INSERT INTO nucleus_config VALUES ('URLMode', 'normal');\r
-INSERT INTO nucleus_config VALUES ('DatabaseVersion', '350');\r
-INSERT INTO nucleus_config VALUES ('DebugVars', '0');\r
-INSERT INTO nucleus_config VALUES ('DefaultListSize', '10');\r
-INSERT INTO nucleus_config VALUES ('AdminCSS', 'original');\r
-\r
-CREATE TABLE nucleus_item (\r
-  inumber int(11) NOT NULL auto_increment,\r
-  ititle varchar(160) default NULL,\r
-  ibody text NOT NULL,\r
-  imore text,\r
-  iblog int(11) NOT NULL default '0',\r
-  iauthor int(11) NOT NULL default '0',\r
-  itime datetime NOT NULL default '0000-00-00 00:00:00',\r
-  iclosed tinyint(2) NOT NULL default '0',\r
-  idraft tinyint(2) NOT NULL default '0',\r
-  ikarmapos int(11) NOT NULL default '0',\r
-  icat int(11) default NULL,\r
-  ikarmaneg int(11) NOT NULL default '0',\r
-  iposted tinyint(2) NOT NULL default '1',\r
-  PRIMARY KEY  (inumber),\r
---  UNIQUE KEY inumber (inumber),\r
-  KEY itime (itime),\r
-  INDEX iblog (iblog),\r
-  INDEX idraft (idraft),\r
-  INDEX icat (icat),\r
-  FULLTEXT KEY ibody (ibody,ititle,imore)\r
-) ENGINE=MyISAM PACK_KEYS=0 DEFAULT CHARSET=utf8;\r
-\r
-CREATE TABLE nucleus_karma (\r
-  itemid int(11) NOT NULL default '0',\r
-  ip char(15) NOT NULL default ''\r
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;\r
-\r
-CREATE TABLE nucleus_member (\r
-  mnumber int(11) NOT NULL auto_increment,\r
-  mname varchar(32) NOT NULL default '',\r
-  mrealname varchar(60) default NULL,\r
-  mpassword varchar(40) NOT NULL default '',\r
-  memail varchar(60) default NULL,\r
-  murl varchar(100) default NULL,\r
-  mnotes varchar(100) default NULL,\r
-  madmin tinyint(2) NOT NULL default '0',\r
-  mcanlogin tinyint(2) NOT NULL default '1',\r
-  mcookiekey varchar(40) default NULL,\r
-  mlocale varchar(20) NOT NULL default '',\r
-  mautosave tinyint(2) NOT NULL default '1',\r
-  PRIMARY KEY  (mnumber),\r
---  UNIQUE KEY mnumber (mnumber),\r
-  UNIQUE KEY mname (mname)\r
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;\r
-\r
-INSERT INTO nucleus_member VALUES (1, 'example', 'example', '1a79a4d60de6718e8e5b326e338ae533', 'example@example.org', 'http://localhost:8080/nucleus/', '', 1, 1, 'd767aefc60415859570d64c649257f19', '', 1);\r
-\r
-CREATE TABLE nucleus_plugin (\r
-  pid int(11) NOT NULL auto_increment,\r
-  pfile varchar(40) NOT NULL default '',\r
-  porder int(11) NOT NULL default '0',\r
-  PRIMARY KEY  (pid),\r
---  KEY pid (pid),\r
-  KEY porder (porder)\r
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;\r
-\r
-CREATE TABLE nucleus_plugin_event (\r
-  pid int(11) NOT NULL default '0',\r
-  event varchar(40) default NULL,\r
-  KEY pid (pid)\r
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;\r
-\r
-CREATE TABLE nucleus_plugin_option (\r
-  ovalue text NOT NULL,\r
-  oid int(11) NOT NULL auto_increment,\r
-  ocontextid int(11) NOT NULL default '0',\r
-  PRIMARY KEY  (oid,ocontextid)\r
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;\r
-\r
-CREATE TABLE nucleus_plugin_option_desc (\r
-  oid int(11) NOT NULL auto_increment,\r
-  opid int(11) NOT NULL default '0',\r
-  oname varchar(20) NOT NULL default '',\r
-  ocontext varchar(20) NOT NULL default '',\r
-  odesc varchar(255) default NULL,\r
-  otype varchar(20) default NULL,\r
-  odef text,\r
-  oextra text,\r
-  PRIMARY KEY  (opid,oname,ocontext),\r
-  UNIQUE KEY oid (oid)\r
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;\r
-\r
-CREATE TABLE nucleus_skin (\r
-  sdesc int(11) NOT NULL default '0',\r
-  stype varchar(20) NOT NULL default '',\r
-  scontent text NOT NULL,\r
-  PRIMARY KEY  (sdesc,stype)\r
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;\r
-\r
--- INSERT INTO nucleus_skin VALUES (2, 'index', '<?xml version=\"1.0\" encoding=\"<%charset%>\"?>\n\n<feed xml:lang=\"en-us\" xmlns=\"http://www.w3.org/2005/Atom\">\n    <title><%blogsetting(name)%></title>\n    <id><%blogsetting(url)%>:<%blogsetting(id)%></id>\n\n    <link rel=\"alternate\" type=\"text/html\" href=\"<%blogsetting(url)%>\" />\n    <link rel=\"self\" type=\"application/atom+xml\" href=\"<%blogsetting(url)%><%self%>\" />\n    <generator uri=\"http://nucleuscms.org/\"><%version%></generator>\n    <updated><%blog(feeds/atom/modified,1)%></updated>\n\n    <%blog(feeds/atom/entries,10)%>\n</feed>');\r
--- INSERT INTO nucleus_skin VALUES (4, 'index', '<?xml version="1.0"?>\r\n<rsd version="1.0">\r\n <service>\r\n  <engineName><%version%></engineName>\r\n  <engineLink>http://nucleuscms.org/</engineLink>\r\n  <homepageLink><%sitevar(url)%></homepageLink>\r\n  <apis>\r\n   <api name="MetaWeblog" preferred="true" apiLink="<%adminurl%>xmlrpc/server.php" blogID="<%blogsetting(id)%>">\r\n    <docs>http://nucleuscms.org/documentation/devdocs/xmlrpc.html</docs>\r\n   </api>\r\n   <api name="Blogger" preferred="false" apiLink="<%adminurl%>xmlrpc/server.php" blogID="<%blogsetting(id)%>">\r\n    <docs>http://nucleuscms.org/documentation/devdocs/xmlrpc.html</docs>\r\n   </api>\r\n  </apis>\r\n </service>\r\n</rsd>');\r
--- INSERT INTO nucleus_skin VALUES (3, 'index', '<?xml version="1.0" encoding="<%charset%>"?>\r\n<rss version="2.0">\r\n  <channel>\r\n    <title><%blogsetting(name)%></title>\r\n    <link><%blogsetting(url)%></link>\r\n    <description><%blogsetting(desc)%></description>\r\n    <language>en-us</language>           \r\n    <generator><%version%></generator>\r\n    <copyright>?</copyright>             \r\n    <category>Weblog</category>\r\n    <docs>http://backend.userland.com/rss</docs>\r\n    <image>\r\n      <url><%blogsetting(url)%>/nucleus/nucleus2.gif</url>\r\n      <title><%blogsetting(name)%></title>\r\n      <link><%blogsetting(url)%></link>\r\n    </image>\r\n    <%blog(feeds/rss20,10)%>\r\n  </channel>\r\n</rss>');\r
-\r
-CREATE TABLE nucleus_skin_desc (\r
-  sdnumber int(11) NOT NULL auto_increment,\r
-  sdname varchar(20) NOT NULL default '',\r
-  sddesc varchar(200) default NULL,\r
-  sdtype varchar(40) NOT NULL default 'text/html',\r
-  sdincmode varchar(10) NOT NULL default 'normal',\r
-  sdincpref varchar(50) NOT NULL default '',\r
-  PRIMARY KEY  (sdnumber),\r
---  UNIQUE KEY sdnumber (sdnumber),\r
-  UNIQUE KEY sdname (sdname)\r
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;\r
-\r
--- INSERT INTO nucleus_skin_desc VALUES (2, 'feeds/atom', 'Atom 1.0 weblog syndication', 'application/atom+xml', 'normal', '');\r
--- INSERT INTO nucleus_skin_desc VALUES (3, 'feeds/rss20', 'RSS 2.0 syndication of weblogs', 'text/xml', 'normal', '');\r
--- INSERT INTO nucleus_skin_desc VALUES (4, 'xml/rsd', 'RSD (Really Simple Discovery) information for weblog clients', 'text/xml', 'normal', '');\r
--- INSERT INTO nucleus_skin_desc VALUES (5, 'default', 'Nucleus CMS default skin', 'text/html', 'skindir', 'default/');\r
-\r
-CREATE TABLE nucleus_team (\r
-  tmember int(11) NOT NULL default '0',\r
-  tblog int(11) NOT NULL default '0',\r
-  tadmin tinyint(2) NOT NULL default '0',\r
-  PRIMARY KEY  (tmember,tblog)\r
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;\r
-\r
-INSERT INTO nucleus_team VALUES (1, 1, 1);\r
-\r
-CREATE TABLE nucleus_template (\r
-  tdesc int(11) NOT NULL default '0',\r
-  tpartname varchar(64) NOT NULL default '',\r
-  tcontent text NOT NULL,\r
-  PRIMARY KEY  (tdesc,tpartname)\r
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;\r
-\r
--- INSERT INTO nucleus_template VALUES (3, 'ITEM', '<item>\r\n <title><%title(xml)%></title>\r\n <link><%blogurl%>index.php?itemid=<%itemid%></link>\r\n<description><![CDATA[<%body%><%more%>]]></description>\r\n <category><%category%></category>\r\n<comments><%blogurl%>index.php?itemid=<%itemid%></comments>\r\n <pubDate><%date(rfc822)%></pubDate>\r\n</item>');\r
--- INSERT INTO nucleus_template VALUES (3, 'EDITLINK', '<a href="<%editlink%>" onclick="<%editpopupcode%>">edit</a>');\r
--- INSERT INTO nucleus_template VALUES (3, 'FORMAT_DATE', '%x');\r
--- INSERT INTO nucleus_template VALUES (3, 'FORMAT_TIME', '%X');\r
--- INSERT INTO nucleus_template VALUES (4, 'ITEM', '<%date(utc)%>');\r
--- INSERT INTO nucleus_template VALUES (5, 'ITEM', '<entry>\n <title type=\"html\"><![CDATA[<%title%>]]></title>\n <link rel=\"alternate\" type=\"text/html\" href=\"<%blogurl%>index.php?itemid=<%itemid%>\" />\n <author>\n  <name><%author%></name>\n </author>\n <updated><%date(utc)%></updated>\n <published><%date(iso8601)%></published>\n <content type=\"html\"><![CDATA[<%body%><%more%>]]></content>\n <id><%blogurl%>:<%blogid%>:<%itemid%></id>\n</entry>');\r
--- INSERT INTO nucleus_template VALUES (5, 'POPUP_CODE', '<%media%>');\r
--- INSERT INTO nucleus_template VALUES (5, 'IMAGE_CODE', '<%image%>');\r
--- INSERT INTO nucleus_template VALUES (5, 'MEDIA_CODE', '<%media%>');\r
--- INSERT INTO nucleus_template VALUES (3, 'POPUP_CODE', '<%image%>');\r
--- INSERT INTO nucleus_template VALUES (3, 'MEDIA_CODE', '<%media%>');\r
--- INSERT INTO nucleus_template VALUES (3, 'IMAGE_CODE', '<%media%>');\r
-\r
-CREATE TABLE nucleus_template_desc (\r
-  tdnumber int(11) NOT NULL auto_increment,\r
-  tdname varchar(64) NOT NULL default '',\r
-  tddesc varchar(200) default NULL,\r
-  PRIMARY KEY  (tdnumber),\r
---  UNIQUE KEY tdnumber (tdnumber),\r
-  UNIQUE KEY tdname (tdname)\r
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;\r
-\r
--- INSERT INTO nucleus_template_desc VALUES (4, 'feeds/atom/modified', 'Atom feeds: Inserts last modification date');\r
--- INSERT INTO nucleus_template_desc VALUES (5, 'feeds/atom/entries', 'Atom feeds: Feed items');\r
--- INSERT INTO nucleus_template_desc VALUES (3, 'feeds/rss20', 'Used for RSS 2.0 syndication of your blog');\r
--- INSERT INTO nucleus_template_desc VALUES (8, 'default/index', 'Nucleus CMS default index template');\r
--- INSERT INTO nucleus_template_desc VALUES (9, 'default/item', 'Nucleus CMS default item template');\r
-\r
-CREATE TABLE nucleus_tickets (\r
-  ticket varchar(40) NOT NULL default '',\r
-  ctime datetime NOT NULL default '0000-00-00 00:00:00',\r
-  member int(11) NOT NULL default '0',\r
-  PRIMARY KEY  (ticket,member)\r
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;\r
+CREATE TABLE nucleus_actionlog (
+  timestamp datetime NOT NULL default '0000-00-00 00:00:00',
+  message varchar(255) NOT NULL default ''
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE nucleus_activation (
+  vkey varchar(40) NOT NULL default '',
+  vtime datetime NOT NULL default '0000-00-00 00:00:00',
+  vmember int(11) NOT NULL default '0',
+  vtype varchar(15) NOT NULL default '',
+  vextra varchar(128) NOT NULL default '',
+  PRIMARY KEY  (vkey)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE nucleus_ban (
+  iprange varchar(15) NOT NULL default '',
+  reason varchar(255) NOT NULL default '',
+  blogid int(11) NOT NULL default '0'
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE nucleus_blog (
+  bnumber int(11) NOT NULL auto_increment,
+  bname varchar(60) NOT NULL default '',
+  bshortname varchar(15) NOT NULL default '',
+  bdesc varchar(200) default NULL,
+  bcomments tinyint(2) NOT NULL default '1',
+  bmaxcomments int(11) NOT NULL default '0',
+  btimeoffset decimal(3,1) NOT NULL default '0.0',
+  bnotify varchar(128) default NULL,
+  burl varchar(100) default NULL,
+  bupdate varchar(60) default NULL,
+  bdefskin int(11) NOT NULL default '1',
+  bpublic tinyint(2) NOT NULL default '1',
+  bconvertbreaks tinyint(2) NOT NULL default '1',
+  bdefcat int(11) default NULL,
+  bnotifytype int(11) NOT NULL default '15',
+  ballowpast tinyint(2) NOT NULL default '0',
+  bincludesearch tinyint(2) NOT NULL default '0',
+  breqemail TINYINT( 2 ) DEFAULT '0' NOT NULL,
+  bfuturepost TINYINT(2) DEFAULT '0' NOT NULL,
+  PRIMARY KEY  (bnumber),
+--  UNIQUE KEY bnumber (bnumber),
+  UNIQUE KEY bshortname (bshortname)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+INSERT INTO nucleus_blog VALUES (1, 'My Nucleus CMS', 'mynucleuscms', '', 1, 0, 0.0, '', 'http://localhost:8080/nucleus/', '', 5, 1, 1, 1, 1, 1, 0, 0, 0);
+
+CREATE TABLE nucleus_category (
+  catid int(11) NOT NULL auto_increment,
+  cblog int(11) NOT NULL default '0',
+  cname varchar(200) default NULL,
+  cdesc varchar(200) default NULL,
+  PRIMARY KEY  (catid)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+INSERT INTO nucleus_category VALUES (1, 1, 'General', 'Items that do not fit in other categories');
+
+CREATE TABLE nucleus_comment (
+  cnumber int(11) NOT NULL auto_increment,
+  cbody text NOT NULL,
+  cuser varchar(40) default NULL,
+  cmail varchar(100) default NULL,
+  cemail VARCHAR( 100 ),
+  cmember int(11) default NULL,
+  citem int(11) NOT NULL default '0',
+  ctime datetime NOT NULL default '0000-00-00 00:00:00',
+  chost varchar(60) default NULL,
+  cip varchar(15) NOT NULL default '',
+  cblog int(11) NOT NULL default '0',
+  PRIMARY KEY  (cnumber),
+--  UNIQUE KEY cnumber (cnumber),
+  KEY citem (citem),
+  FULLTEXT KEY cbody (cbody),
+  INDEX cblog (cblog)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE nucleus_config (
+  name varchar(20) NOT NULL default '',
+  value varchar(128) default NULL,
+  PRIMARY KEY  (name)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+INSERT INTO nucleus_config VALUES ('DefaultBlog', '1');
+INSERT INTO nucleus_config VALUES ('AdminEmail', 'example@example.org');
+INSERT INTO nucleus_config VALUES ('IndexURL', 'http://localhost:8080/nucleus/');
+INSERT INTO nucleus_config VALUES ('Locale', 'en_Latn_US');
+INSERT INTO nucleus_config VALUES ('SessionCookie', '');
+INSERT INTO nucleus_config VALUES ('AllowMemberCreate', '');
+INSERT INTO nucleus_config VALUES ('AllowMemberMail', '1');
+INSERT INTO nucleus_config VALUES ('SiteName', 'My Nucleus CMS');
+INSERT INTO nucleus_config VALUES ('AdminURL', 'http://localhost:8080/nucleus/nucleus/');
+INSERT INTO nucleus_config VALUES ('NewMemberCanLogon', '1');
+INSERT INTO nucleus_config VALUES ('DisableSite', '');
+INSERT INTO nucleus_config VALUES ('DisableSiteURL', 'http://www.this-page-intentionally-left-blank.org/');
+INSERT INTO nucleus_config VALUES ('LastVisit', '');
+INSERT INTO nucleus_config VALUES ('MediaURL', 'http://localhost:8080/nucleus/media/');
+INSERT INTO nucleus_config VALUES ('AllowedTypes', 'jpg,jpeg,gif,mpg,mpeg,avi,mov,mp3,swf,png');
+INSERT INTO nucleus_config VALUES ('AllowLoginEdit', '');
+INSERT INTO nucleus_config VALUES ('AllowUpload', '1');
+INSERT INTO nucleus_config VALUES ('DisableJsTools', '2');
+INSERT INTO nucleus_config VALUES ('CookiePath', '/');
+INSERT INTO nucleus_config VALUES ('CookieDomain', '');
+INSERT INTO nucleus_config VALUES ('CookieSecure', '');
+INSERT INTO nucleus_config VALUES ('CookiePrefix', '');
+INSERT INTO nucleus_config VALUES ('MediaPrefix', '1');
+INSERT INTO nucleus_config VALUES ('MaxUploadSize', '1048576');
+INSERT INTO nucleus_config VALUES ('NonmemberMail', '');
+INSERT INTO nucleus_config VALUES ('PluginURL', 'http://localhost:8080/nucleus/nucleus/plugins/');
+INSERT INTO nucleus_config VALUES ('ProtectMemNames', '1');
+INSERT INTO nucleus_config VALUES ('BaseSkin', '5');
+INSERT INTO nucleus_config VALUES ('SkinsURL', 'http://localhost:8080/nucleus/skins/');
+INSERT INTO nucleus_config VALUES ('ActionURL', 'http://localhost:8080/nucleus/action.php');
+INSERT INTO nucleus_config VALUES ('URLMode', 'normal');
+INSERT INTO nucleus_config VALUES ('DatabaseVersion', '350');
+INSERT INTO nucleus_config VALUES ('DebugVars', '0');
+INSERT INTO nucleus_config VALUES ('DefaultListSize', '10');
+INSERT INTO nucleus_config VALUES ('AdminCSS', 'original');
+INSERT INTO nucleus_config VALUES ('AdminSkin', '0');
+INSERT INTO nucleus_config VALUES ('BookmarkletSkin', '0');
+
+CREATE TABLE nucleus_item (
+  inumber int(11) NOT NULL auto_increment,
+  ititle varchar(160) default NULL,
+  ibody text NOT NULL,
+  imore text,
+  iblog int(11) NOT NULL default '0',
+  iauthor int(11) NOT NULL default '0',
+  itime datetime NOT NULL default '0000-00-00 00:00:00',
+  iclosed tinyint(2) NOT NULL default '0',
+  idraft tinyint(2) NOT NULL default '0',
+  ikarmapos int(11) NOT NULL default '0',
+  icat int(11) default NULL,
+  ikarmaneg int(11) NOT NULL default '0',
+  iposted tinyint(2) NOT NULL default '1',
+  PRIMARY KEY  (inumber),
+--  UNIQUE KEY inumber (inumber),
+  KEY itime (itime),
+  INDEX iblog (iblog),
+  INDEX idraft (idraft),
+  INDEX icat (icat),
+  FULLTEXT KEY ibody (ibody,ititle,imore)
+) ENGINE=MyISAM PACK_KEYS=0 DEFAULT CHARSET=utf8;
+
+CREATE TABLE nucleus_karma (
+  itemid int(11) NOT NULL default '0',
+  ip char(15) NOT NULL default ''
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE nucleus_member (
+  mnumber int(11) NOT NULL auto_increment,
+  mname varchar(32) NOT NULL default '',
+  mrealname varchar(60) default NULL,
+  mpassword varchar(40) NOT NULL default '',
+  memail varchar(60) default NULL,
+  murl varchar(100) default NULL,
+  mnotes varchar(100) default NULL,
+  madmin tinyint(2) NOT NULL default '0',
+  mcanlogin tinyint(2) NOT NULL default '1',
+  mcookiekey varchar(40) default NULL,
+  mlocale varchar(20) NOT NULL default '',
+  mautosave tinyint(2) NOT NULL default '1',
+  madminskin tinyint(2) NOT NULL default '0',
+  mbkmklt tinyint(2) NOT NULL default '0',
+  PRIMARY KEY  (mnumber),
+--  UNIQUE KEY mnumber (mnumber),
+  UNIQUE KEY mname (mname)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+INSERT INTO nucleus_member VALUES (1, 'example', 'example', '1a79a4d60de6718e8e5b326e338ae533', 'example@example.org', 'http://localhost:8080/nucleus/', '', 1, 1, 'd767aefc60415859570d64c649257f19', '', 1, 0, 0);
+
+CREATE TABLE nucleus_plugin (
+  pid int(11) NOT NULL auto_increment,
+  pfile varchar(40) NOT NULL default '',
+  porder int(11) NOT NULL default '0',
+  PRIMARY KEY  (pid),
+--  KEY pid (pid),
+  KEY porder (porder)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE nucleus_plugin_event (
+  pid int(11) NOT NULL default '0',
+  event varchar(40) default NULL,
+  KEY pid (pid)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE nucleus_plugin_option (
+  ovalue text NOT NULL,
+  oid int(11) NOT NULL auto_increment,
+  ocontextid int(11) NOT NULL default '0',
+  PRIMARY KEY  (oid,ocontextid)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE nucleus_plugin_option_desc (
+  oid int(11) NOT NULL auto_increment,
+  opid int(11) NOT NULL default '0',
+  oname varchar(20) NOT NULL default '',
+  ocontext varchar(20) NOT NULL default '',
+  odesc varchar(255) default NULL,
+  otype varchar(20) default NULL,
+  odef text,
+  oextra text,
+  PRIMARY KEY  (opid,oname,ocontext),
+  UNIQUE KEY oid (oid)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE nucleus_skin (
+  sdesc int(11) NOT NULL default '0',
+  stype varchar(20) NOT NULL default '',
+  scontent text NOT NULL,
+  PRIMARY KEY  (sdesc,stype)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- INSERT INTO nucleus_skin VALUES (2, 'index', '<?xml version=\"1.0\" encoding=\"<%charset%>\"?>\n\n<feed xml:lang=\"en-us\" xmlns=\"http://www.w3.org/2005/Atom\">\n    <title><%blogsetting(name)%></title>\n    <id><%blogsetting(url)%>:<%blogsetting(id)%></id>\n\n    <link rel=\"alternate\" type=\"text/html\" href=\"<%blogsetting(url)%>\" />\n    <link rel=\"self\" type=\"application/atom+xml\" href=\"<%blogsetting(url)%><%self%>\" />\n    <generator uri=\"http://nucleuscms.org/\"><%version%></generator>\n    <updated><%blog(feeds/atom/modified,1)%></updated>\n\n    <%blog(feeds/atom/entries,10)%>\n</feed>');
+-- INSERT INTO nucleus_skin VALUES (4, 'index', '<?xml version="1.0"?>\r\n<rsd version="1.0">\r\n <service>\r\n  <engineName><%version%></engineName>\r\n  <engineLink>http://nucleuscms.org/</engineLink>\r\n  <homepageLink><%sitevar(url)%></homepageLink>\r\n  <apis>\r\n   <api name="MetaWeblog" preferred="true" apiLink="<%adminurl%>xmlrpc/server.php" blogID="<%blogsetting(id)%>">\r\n    <docs>http://nucleuscms.org/documentation/devdocs/xmlrpc.html</docs>\r\n   </api>\r\n   <api name="Blogger" preferred="false" apiLink="<%adminurl%>xmlrpc/server.php" blogID="<%blogsetting(id)%>">\r\n    <docs>http://nucleuscms.org/documentation/devdocs/xmlrpc.html</docs>\r\n   </api>\r\n  </apis>\r\n </service>\r\n</rsd>');
+-- INSERT INTO nucleus_skin VALUES (3, 'index', '<?xml version="1.0" encoding="<%charset%>"?>\r\n<rss version="2.0">\r\n  <channel>\r\n    <title><%blogsetting(name)%></title>\r\n    <link><%blogsetting(url)%></link>\r\n    <description><%blogsetting(desc)%></description>\r\n    <language>en-us</language>           \r\n    <generator><%version%></generator>\r\n    <copyright>?</copyright>             \r\n    <category>Weblog</category>\r\n    <docs>http://backend.userland.com/rss</docs>\r\n    <image>\r\n      <url><%blogsetting(url)%>/nucleus/nucleus2.gif</url>\r\n      <title><%blogsetting(name)%></title>\r\n      <link><%blogsetting(url)%></link>\r\n    </image>\r\n    <%blog(feeds/rss20,10)%>\r\n  </channel>\r\n</rss>');
+
+CREATE TABLE nucleus_skin_desc (
+  sdnumber int(11) NOT NULL auto_increment,
+  sdname varchar(20) NOT NULL default '',
+  sddesc varchar(200) default NULL,
+  sdtype varchar(40) NOT NULL default 'text/html',
+  sdincmode varchar(10) NOT NULL default 'normal',
+  sdincpref varchar(50) NOT NULL default '',
+  PRIMARY KEY  (sdnumber),
+--  UNIQUE KEY sdnumber (sdnumber),
+  UNIQUE KEY sdname (sdname)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- INSERT INTO nucleus_skin_desc VALUES (2, 'feeds/atom', 'Atom 1.0 weblog syndication', 'application/atom+xml', 'normal', '');
+-- INSERT INTO nucleus_skin_desc VALUES (3, 'feeds/rss20', 'RSS 2.0 syndication of weblogs', 'text/xml', 'normal', '');
+-- INSERT INTO nucleus_skin_desc VALUES (4, 'xml/rsd', 'RSD (Really Simple Discovery) information for weblog clients', 'text/xml', 'normal', '');
+-- INSERT INTO nucleus_skin_desc VALUES (5, 'default', 'Nucleus CMS default skin', 'text/html', 'skindir', 'default/');
+
+CREATE TABLE nucleus_team (
+  tmember int(11) NOT NULL default '0',
+  tblog int(11) NOT NULL default '0',
+  tadmin tinyint(2) NOT NULL default '0',
+  PRIMARY KEY  (tmember,tblog)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+INSERT INTO nucleus_team VALUES (1, 1, 1);
+
+CREATE TABLE nucleus_template (
+  tdesc int(11) NOT NULL default '0',
+  tpartname varchar(64) NOT NULL default '',
+  tcontent text NOT NULL,
+  PRIMARY KEY  (tdesc,tpartname)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- INSERT INTO nucleus_template VALUES (3, 'ITEM', '<item>\r\n <title><%title(xml)%></title>\r\n <link><%blogurl%>index.php?itemid=<%itemid%></link>\r\n<description><![CDATA[<%body%><%more%>]]></description>\r\n <category><%category%></category>\r\n<comments><%blogurl%>index.php?itemid=<%itemid%></comments>\r\n <pubDate><%date(rfc822)%></pubDate>\r\n</item>');
+-- INSERT INTO nucleus_template VALUES (3, 'EDITLINK', '<a href="<%editlink%>" onclick="<%editpopupcode%>">edit</a>');
+-- INSERT INTO nucleus_template VALUES (3, 'FORMAT_DATE', '%x');
+-- INSERT INTO nucleus_template VALUES (3, 'FORMAT_TIME', '%X');
+-- INSERT INTO nucleus_template VALUES (4, 'ITEM', '<%date(utc)%>');
+-- INSERT INTO nucleus_template VALUES (5, 'ITEM', '<entry>\n <title type=\"html\"><![CDATA[<%title%>]]></title>\n <link rel=\"alternate\" type=\"text/html\" href=\"<%blogurl%>index.php?itemid=<%itemid%>\" />\n <author>\n  <name><%author%></name>\n </author>\n <updated><%date(utc)%></updated>\n <published><%date(iso8601)%></published>\n <content type=\"html\"><![CDATA[<%body%><%more%>]]></content>\n <id><%blogurl%>:<%blogid%>:<%itemid%></id>\n</entry>');
+-- INSERT INTO nucleus_template VALUES (5, 'POPUP_CODE', '<%media%>');
+-- INSERT INTO nucleus_template VALUES (5, 'IMAGE_CODE', '<%image%>');
+-- INSERT INTO nucleus_template VALUES (5, 'MEDIA_CODE', '<%media%>');
+-- INSERT INTO nucleus_template VALUES (3, 'POPUP_CODE', '<%image%>');
+-- INSERT INTO nucleus_template VALUES (3, 'MEDIA_CODE', '<%media%>');
+-- INSERT INTO nucleus_template VALUES (3, 'IMAGE_CODE', '<%media%>');
+
+CREATE TABLE nucleus_template_desc (
+  tdnumber int(11) NOT NULL auto_increment,
+  tdname varchar(64) NOT NULL default '',
+  tddesc varchar(200) default NULL,
+  PRIMARY KEY  (tdnumber),
+--  UNIQUE KEY tdnumber (tdnumber),
+  UNIQUE KEY tdname (tdname)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- INSERT INTO nucleus_template_desc VALUES (4, 'feeds/atom/modified', 'Atom feeds: Inserts last modification date');
+-- INSERT INTO nucleus_template_desc VALUES (5, 'feeds/atom/entries', 'Atom feeds: Feed items');
+-- INSERT INTO nucleus_template_desc VALUES (3, 'feeds/rss20', 'Used for RSS 2.0 syndication of your blog');
+-- INSERT INTO nucleus_template_desc VALUES (8, 'default/index', 'Nucleus CMS default index template');
+-- INSERT INTO nucleus_template_desc VALUES (9, 'default/item', 'Nucleus CMS default item template');
+
+CREATE TABLE nucleus_tickets (
+  ticket varchar(40) NOT NULL default '',
+  ctime datetime NOT NULL default '0000-00-00 00:00:00',
+  member int(11) NOT NULL default '0',
+  PRIMARY KEY  (ticket,member)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
index 9cedd5e..c05b7f3 100644 (file)
-<?php\r
-/*\r
- * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)\r
- * Copyright (C) 2002-2012 The Nucleus Group\r
- *\r
- * This program is free software; you can redistribute it and/or\r
- * modify it under the terms of the GNU General Public License\r
- * as published by the Free Software Foundation; either version 2\r
- * of the License, or (at your option) any later version.\r
- * (see nucleus/documentation/index.html#license for more info)\r
- */\r
-\r
-/**\r
- * @license http://nucleuscms.org/license.txt GNU General Public License\r
- * @copyright Copyright (C) 2002-2012 The Nucleus Group\r
- * @version $Id: install.php 1227 2007-12-14 16:48:40Z ehui $\r
- */\r
-\r
-// header\r
-define('_TITLE',                               'Nucleus Install');\r
-define('_BODYFONTSTYLE',               '');\r
-\r
-// common\r
-define('_STEP1',                               'Check DB');\r
-define('_STEP2',                               'Setting Blog');\r
-define('_STEP3',                               'Finish');\r
-define('_MODE1',                               'Step by Step');\r
-define('_MODE2',                               'Detailed setting');\r
-define('_NEXT',                                        'NEXT');\r
-define('_INSTALL',                             'INSTALL');\r
-\r
-// database settings\r
-define('_SIMPLE_NAVI1',                        'At first I confirm the connection of the database. I input setting of MySQL, and please click to "next".<br />When I input detailed information and set it, please click "Detailed Setting".');\r
-define('_DB_HEADER',                   'Check Database');\r
-define('_DB_TEXT1',                            '"Detailed setting" is recommended if used to Nucleus.');\r
-define('_DB_FIELD1',                   'Hostname');\r
-define('_DB_FIELD1_DESC',              '(It is usually localhost)');\r
-define('_DB_FIELD2',                   'Username');\r
-define('_DB_FIELD2_DESC',              '(alphabet, number, _, -)');\r
-define('_DB_FIELD3',                   'Password');\r
-define('_DB_FIELD4',                   'Database');\r
-define('_DB_FIELD4_DESC',              '(alphabet, number, _, -)');\r
-define('_DB_FIELD5',                   'Table Prefix');\r
-define('_DB_FIELD5_DESC',              'Don\'t usually set this.');\r
-\r
-// blog settings\r
-define('_SIMPLE_NAVI2',                        'I was able to confirm the connection of the database.<br />Setting Blog and Information of the ADMIN, and please click to "NEXT".');\r
-define('_BLOG_HEADER',                 'Weblog Data');\r
-define('_BLOG_FIELD1',                 'Blog Name');\r
-define('_BLOG_FIELD2',                 'Blog Short Name');\r
-define('_BLOG_FIELD2_DESC',            '(alphabet, number)');\r
-\r
-// admin settings\r
-define('_ADMIN_HEADER',                        'Administrator User');\r
-define('_ADMIN_FIELD1',                        'Manager Name');\r
-define('_ADMIN_FIELD2',                        'Login ID');\r
-define('_ADMIN_FIELD2_DESC',   '(alphabet, number)');\r
-define('_ADMIN_FIELD3',                        'Password');\r
-define('_ADMIN_FIELD4',                        'Password Again');\r
-define('_ADMIN_FIELD5',                        'E-mail Address');\r
-\r
-// url/path settings\r
-define('_PATH_FIELD1',                 'Site URL');\r
-define('_PATH_FIELD2',                 'Admin-area URL');\r
-define('_PATH_FIELD3',                 'Admin-area path');\r
-define('_PATH_FIELD4',                 'Media files URL');\r
-define('_PATH_FIELD5',                 'Media dir path');\r
-define('_PATH_FIELD6',                 'Skin files URL');\r
-define('_PATH_FIELD7',                 'Skin files dir path');\r
-define('_PATH_FIELD8',                 'Plugin files URL');\r
-define('_PATH_FIELD9',                 'Action URL');\r
-\r
-// detail\r
-define('_DETAIL_NAVI1',                        'All fields are mandatory. Optional information can be set from the Nucleus admin-area when installation is completed.');\r
-define('_DETAIL_HEADER1',              'MySQL Login Data');\r
-define('_DETAIL_TEXT1',                        'Enter your MySQL data below. This install script needs it to be able to create and fill your database tables.');\r
-define('_DETAIL_HEADER2',              'Directories and URLs');\r
-define('_DETAIL_TEXT2',                        'This install script has attempted to find out the directories and URLs in which Nucleus is installed. Please check the values below and correct if necessary. The URLs and file paths should end with a slash.');\r
-define('_DETAIL_TEXT3',                        'Note: Use absolute paths instead of relative paths.');\r
-define('_DETAIL_HEADER3',              'Administrator User');\r
-define('_DETAIL_TEXT4',                        'You need to enter some information to create the first user of your site.');\r
-define('_DETAIL_HEADER4',              'Weblog Data');\r
-define('_DETAIL_TEXT5',                        'Below, you need to enter some information to create a default weblog. The name of this weblog will also be used as name for your site.');\r
-define('_DETAIL_TEXT6',                        'Verify the data above, and click the button below to set up your database tables and initial data. This can take a while, so have patience. ONLY CLICK THE BUTTON ONCE !');\r
-\r
-// install complete\r
-define('_INST_TEXT',                   'Congratulations. The installation was completed!');\r
-define('_INST_HEADER1',                        'New Blog');\r
-define('_INST_TEXT1',                  'Let\'s take a look at once you have created [%s].');\r
-define('_INST_BUTTON1',                        'New Blog');\r
-define('_INST_HEADER2',                        'Management page');\r
-define('_INST_TEXT2',                  'A design change, user addition, the category setting to the management page.');\r
-define('_INST_BUTTON2',                        'Management Page');\r
-define('_INST_HEADER3',                        'Addition of the Blog');\r
-define('_INST_TEXT3',                  'If necessary, you can even add a blog.');\r
-define('_INST_BUTTON3',                        'Add Blog');\r
-define('_INST_TEXT4',                  'Was unable to write to the <i>config.php</i>. Please replace with the following contents.');\r
-define('_INST_TEXT5',                  'Please make sure the <i>config.php</i> permissions if it were a <span style="font-weight:bold;">444</span>. If different, please change the "444".');\r
-\r
-// errors\r
-define('_DBCONNECT_ERROR',             'Could not connect to MySQL Server.');\r
-define('_DBVERSION_UNKOWN',            'Indeterminable');\r
-define('_DBVERSION_TOOLOW',            'You must have MySQL version %s or more at least in the Nucleus.');\r
-\r
-define('_VALID_ERROR',                 'There is an error in your input. Please re-look at the input value to see the error message for each section.');\r
-define('_VALID_ERROR1',                        '"%s" has not been entered.');\r
-define('_VALID_ERROR2',                        '"%s" character that can be used are A-Z, a-z ,0-9, _ and -.');\r
-define('_VALID_ERROR3',                        '"%s" character that can be used are A-Z, a-z ,0-9 and _.');\r
-define('_VALID_ERROR4',                        'It contains characters that can not be used to "Blog Short Name". (Characters that can be used: A-Z, a-z and 0-9, blank can not be used)');\r
-define('_VALID_ERROR5',                        'Contains characters that can not be used in "Login ID". (A-Z, a-z, 0-9 and the first and last non-blank characters that can be used)');\r
-define('_VALID_ERROR6',                        'Passwords entered do not match.');\r
-define('_VALID_ERROR7',                        '"E-mail address" is incorrect.');\r
-define('_VALID_ERROR8',                        'Does not end with a forward slash "/" is "%s".');\r
-define('_VALID_ERROR9',                        'Does not end with "action.php" the URL of the "%s".');\r
-define('_VALID_ERROR10',               'Does not end with a forward slash "/" directory path of "%s".');\r
-define('_VALID_ERROR11',               'Directory path in the "%s" does not exist on the server.');\r
-\r
-define('_INST_ERROR',                  'Failed to install. Please run the installation script again to fix the cause of the following.');\r
-define('_INST_ERROR1',                 'Could not create the database. Please make sure that there is a permission to create.');\r
-define('_INST_ERROR2',                 'Could not find the database. Please make sure that the database exists.');\r
-define('_INST_ERROR3',                 'Database table was trying to create already exists.');\r
-define('_INST_ERROR4',                 'An error occurred execution of the query');\r
-define('_INST_ERROR5',                 'An error occurred during the execution of the "Configuring Members"');\r
-define('_INST_ERROR6',                 'An error occurred during the execution of the "Blog Settings"');\r
-define('_INST_ERROR7',                 'An error occurred during the execution of the "Setting item"');\r
-define('_INST_ERROR8',                 'can not write to the config.php. Once you have the permissions to <span style="font-weight:bold;">666</span> of config.php, the script will automatically write the configuration information. (<a href="../nucleus/documentation/tips.html#filepermissions">Quick Guide to change permissions</a>)');\r
-define('_INST_ERROR9',                 'Could not install the plug-in "%s".');\r
-define('_INST_ERROR10',                        'File "%s" can not be found.');\r
-define('_INST_ERROR11',                        'Theme file "%s" could not be read.');\r
-define('_INST_ERROR12',                        'Could not import the theme "%s".');\r
-\r
-\r
-// General category\r
-define('_GENERALCAT_NAME',             'General');\r
-define('_GENERALCAT_DESC',             'Items that do not fit in other categories');\r
-define('_1ST_POST_TITLE',              'Welcome to Nucleus CMS v4.0');\r
-define('_1ST_POST',                            'This is the first post on your Nucleus CMS. Nucleus offers you the building blocks you need to create a web presence. Whether you want to\r
-create a personal blog, a family page, or an online business site, Nucleus CMS can help you achieve your goals.<br /> <br /> We\\\'ve loaded this first entry with links and information to get you started. Though you can delete this entry, it will eventually scroll off the main page as you add content to your site. Add your comments while you learn to work with Nucleus CMS, or bookmark this page so you can come back to it when you need to.');\r
-define('_1ST_POST2',                   '<b>Home - <a href="http://nucleuscms.org/" title="Nucleus CMS home">nucleuscms.org</a></b><br /> Welcome to the world of Nucleus CMS. In 2001 a set of PHP scripts were let loose on the open Internet. Those scripts, which took user-generated data and used it to dynamically create html pages, contained the ideas and the algorithms that are the core of today\\\'s Nucleus CMS. Though Nucleus CMS 3.5 is far more flexible and powerful than the scripts from which it emerged, it still expresses the values that guided its birth: flexibility, security, and computational elegance.<br /> <br /> Thanks to an international community of sophisticated developers and designers, Nucleus CMS remains simple enough for anyone to learn, and expandable enough to allow you to build almost any website you can imagine. Nucleus CMS lets you integrate text, images, and user comments in a seamless package that will make your web presence as serious, professional, personal, or fun as you want it to be. We hope you enjoy its power.<br /> <br /> <b>Documentation - <a href="http://docs.nucleuscms.org/" title="Nucleus CMS Documentation">docs.nucleuscms.org</a></b><br /> The install process places a <a href="nucleus/documentation/">user</a> and a <a href="nucleus/documentation/devdocs/">developer</a> documentation on your web server. Pop-up <a href="/nucleus/documentation/help.html">help</a> is available throughout the administration area to assist you in maintaining and customizing your site. When in the Nucleus CMS admin area, click on this symbol <img src="nucleus/documentation/icon-help.gif" width="15" height="15" alt="help icon" /> for context-sensitive help. You can also read this documentation online under <a href="http://docs.nucleuscms.org/" title="Nucleus CMS Documentation">docs.nucleuscms.org</a>.<br /> <br /> <b>Frequently Asked Questions - <a nicetitle="Nucleus CMS FAQ" href="http://faq.nucleuscms.org/">faq.nucleuscms.org</a></b><br /> If you need more information about managing, extending or troubleshooting your Nucleus CMS the Nucleus FAQ is the first place to search information. Over 170 frequently asked questions are answered from experienced Nucleus users.<br /> <br /> <b>Support - <a href="http://forum.nucleuscms.org/" title="Nucleus CMS Support Forum">forum.nucleuscms.org</a></b><br /> Should you require assistance, please don\\\'t hesitate to <a href="http://forum.nucleuscms.org/faq.php">join</a> the 6,800+ registered users on our forums. With its built-in search capability of the 73,000+ posted articles, your answers are just a few clicks away. Remember: almost any question you think of has already been asked on the forums, and almost anything you want to do with Nucleus has been tried and explained there. Be sure to check them out.<br /> <br /> <b>Demonstration - <a href="http://demo.nucleuscms.org/" title="Nucleus CMS Demonstration">demo.nucleuscms.org</a></b><br /> Want to play around, test changes or tell a friend or relative about Nucleus CMS? Visit our live <a href="http://demo.nucleuscms.org/">demo site</a>.<br /> <br /> <b>Skins - <a href="http://skins.nucleuscms.org/" title="Nucleus CMS Skins">skins.nucleuscms.org</a></b><br /> The combination of multi-weblogs and skins/templates make for a powerful duo in personalizing your site or designing one for a friend, relative or business client. Import new skins to change the look of your website, or create your own skins and share them with the Nucleus community! Help designing or modifying skins is only a few clicks away in the Nucleus forums.<br /> <br /> <b>Plugins - <a href="http://plugins.nucleuscms.org/" title="Nucleus plugins">plugins.nucleuscms.org</a></b><br /> Looking to add some extra functionality to the base Nucleus CMS package? Our <a href="http://wiki.nucleuscms.org/plugin">plugin repository</a> gives you plenty of ways to extend and expand what Nucleus CMS can do; your imagination and creativity are the only limit on how Nucleus CMS can work for you.<br /> <br /> <b>Development - <a href="http://dev.nucleuscms.org/" title="Nucleus Development">dev.nucleuscms.org</a></b><br /> If you need more information about the Nucleus development you can find Informations in the developer documents at <a href="http://dev.nucleuscms.org/" title="Nucleus Development">dev.nucleuscms.org</a> or in the <a href="http://forum.nucleuscms.org/">Support Forum</a>. Sourceforge.net graciously hosts our <a href="http://sourceforge.net/projects/nucleuscms/">Open Source project page</a> which contains our software downloads and CVS repository.<br /> <br /> <b>Donators</b><br /> We would like to thank these <a href="http://nucleuscms.org/donators.php">nice people</a> for their <a href="http://nucleuscms.org/donate.php">support</a>. <em>Thanks all!</em><br /> <br /> <b>Vote for Nucleus CMS</b><br /> Like Nucleus CMS? Vote for us at <a href="http://www.hotscripts.com/Detailed/13368.html?RID=nucleus@demuynck.org">HotScripts</a> and <a href="http://www.opensourcecms.com/index.php?option=content&task=view&id=145">opensourceCMS</a>.<br /> <br /> <b>License</b><br /> When we speak of free software, we are referring to freedom, not price. Our <a href="http://www.gnu.org/licenses/gpl.html">General Public Licenses</a> are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.');\r
+<?php
+/*
+ * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)
+ * Copyright (C) 2002-2012 The Nucleus Group
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * (see nucleus/documentation/index.html#license for more info)
+ */
+
+/**
+ * @license http://nucleuscms.org/license.txt GNU General Public License
+ * @copyright Copyright (C) 2002-2012 The Nucleus Group
+ * @version $Id: install.php 1227 2007-12-14 16:48:40Z ehui $
+ */
+
+// header
+define('_TITLE',                               'Nucleus Install');
+define('_BODYFONTSTYLE',               '');
+
+// common
+define('_STEP1',                               'Check DB');
+define('_STEP2',                               'Setting Blog');
+define('_STEP3',                               'Finish');
+define('_MODE1',                               'Step by Step');
+define('_MODE2',                               'Detailed setting');
+define('_NEXT',                                        'NEXT');
+define('_INSTALL',                             'INSTALL');
+
+// locale setting
+define('_LOCALE_HEADER',               'Select Your Locale');
+define('_LOCALE_DESC1',                        'Nucleus CMS can be used under several locales.');
+define('_LOCALE_DESC2',                        'If you can see prefixed name with asterisk in above select box, it means translation for the locale is not enough yet.');
+define('_LOCALE_NEED_HELP',            'We\'re waiting for your contribution to translate!');
+
+// database settings
+define('_SIMPLE_NAVI1',                        'At first I confirm the connection of the database. I input setting of MySQL, and please click to "next".<br />When I input detailed information and set it, please click "Detailed Setting".');
+define('_DB_HEADER',                   'Check Database');
+define('_DB_TEXT1',                            '"Detailed setting" is recommended if used to Nucleus.');
+define('_DB_FIELD1',                   'Hostname');
+define('_DB_FIELD1_DESC',              '(It is usually localhost)');
+define('_DB_FIELD2',                   'Username');
+define('_DB_FIELD2_DESC',              '(alphabet, number, _, -)');
+define('_DB_FIELD3',                   'Password');
+define('_DB_FIELD4',                   'Database');
+define('_DB_FIELD4_DESC',              '(alphabet, number, _, -)');
+define('_DB_FIELD5',                   'Table Prefix');
+define('_DB_FIELD5_DESC',              'Don\'t usually set this.');
+
+// blog settings
+define('_SIMPLE_NAVI2',                        'I was able to confirm the connection of the database.<br />Setting Blog and Information of the ADMIN, and please click to "NEXT".');
+define('_BLOG_HEADER',                 'Weblog Data');
+define('_BLOG_FIELD1',                 'Blog Name');
+define('_BLOG_FIELD2',                 'Blog Short Name');
+define('_BLOG_FIELD2_DESC',            '(alphabet, number)');
+
+// admin settings
+define('_ADMIN_HEADER',                        'Administrator User');
+define('_ADMIN_FIELD1',                        'Manager Name');
+define('_ADMIN_FIELD2',                        'Login ID');
+define('_ADMIN_FIELD2_DESC',   '(alphabet, number)');
+define('_ADMIN_FIELD3',                        'Password');
+define('_ADMIN_FIELD4',                        'Password Again');
+define('_ADMIN_FIELD5',                        'E-mail Address');
+
+// url/path settings
+define('_PATH_FIELD1',                 'Site URL');
+define('_PATH_FIELD2',                 'Admin-area URL');
+define('_PATH_FIELD3',                 'Admin-area path');
+define('_PATH_FIELD4',                 'Media files URL');
+define('_PATH_FIELD5',                 'Media dir path');
+define('_PATH_FIELD6',                 'Skin files URL');
+define('_PATH_FIELD7',                 'Skin files dir path');
+define('_PATH_FIELD8',                 'Plugin files URL');
+define('_PATH_FIELD9',                 'Action URL');
+
+// detail
+define('_DETAIL_NAVI1',                        'All fields are mandatory. Optional information can be set from the Nucleus admin-area when installation is completed.');
+define('_DETAIL_HEADER1',              'MySQL Login Data');
+define('_DETAIL_TEXT1',                        'Enter your MySQL data below. This install script needs it to be able to create and fill your database tables.');
+define('_DETAIL_HEADER2',              'Directories and URLs');
+define('_DETAIL_TEXT2',                        'This install script has attempted to find out the directories and URLs in which Nucleus is installed. Please check the values below and correct if necessary. The URLs and file paths should end with a slash.');
+define('_DETAIL_TEXT3',                        'Note: Use absolute paths instead of relative paths.');
+define('_DETAIL_HEADER3',              'Administrator User');
+define('_DETAIL_TEXT4',                        'You need to enter some information to create the first user of your site.');
+define('_DETAIL_HEADER4',              'Weblog Data');
+define('_DETAIL_TEXT5',                        'Below, you need to enter some information to create a default weblog. The name of this weblog will also be used as name for your site.');
+define('_DETAIL_TEXT6',                        'Verify the data above, and click the button below to set up your database tables and initial data. This can take a while, so have patience. ONLY CLICK THE BUTTON ONCE !');
+
+// install complete
+define('_INST_TEXT',                   'Congratulations. The installation was completed!');
+define('_INST_HEADER1',                        'New Blog');
+define('_INST_TEXT1',                  'Let\'s take a look at once you have created [%s].');
+define('_INST_BUTTON1',                        'New Blog');
+define('_INST_HEADER2',                        'Management page');
+define('_INST_TEXT2',                  'A design change, user addition, the category setting to the management page.');
+define('_INST_BUTTON2',                        'Management Page');
+define('_INST_HEADER3',                        'Addition of the Blog');
+define('_INST_TEXT3',                  'If necessary, you can even add a blog.');
+define('_INST_BUTTON3',                        'Add Blog');
+define('_INST_TEXT4',                  'Was unable to write to the <i>config.php</i>. Please replace with the following contents.');
+define('_INST_TEXT5',                  'Please make sure the <i>config.php</i> permissions if it were a <span style="font-weight:bold;">444</span>. If different, please change the "444".');
+
+// errors
+define('_DBCONNECT_ERROR',             'Could not connect to MySQL Server.');
+define('_DBVERSION_UNKOWN',            'Indeterminable');
+define('_DBVERSION_TOOLOW',            'You must have MySQL version %s or more at least in the Nucleus.');
+
+define('_VALID_ERROR',                 'There is an error in your input. Please re-look at the input value to see the error message for each section.');
+define('_VALID_ERROR1',                        '"%s" has not been entered.');
+define('_VALID_ERROR2',                        '"%s" character that can be used are A-Z, a-z ,0-9, _ and -.');
+define('_VALID_ERROR3',                        '"%s" character that can be used are A-Z, a-z ,0-9 and _.');
+define('_VALID_ERROR4',                        'It contains characters that can not be used to "Blog Short Name". (Characters that can be used: A-Z, a-z and 0-9, blank can not be used)');
+define('_VALID_ERROR5',                        'Contains characters that can not be used in "Login ID". (A-Z, a-z, 0-9 and the first and last non-blank characters that can be used)');
+define('_VALID_ERROR6',                        'Passwords entered do not match.');
+define('_VALID_ERROR7',                        '"E-mail address" is incorrect.');
+define('_VALID_ERROR8',                        'Does not end with a forward slash "/" is "%s".');
+define('_VALID_ERROR9',                        'Does not end with "action.php" the URL of the "%s".');
+define('_VALID_ERROR10',               'Does not end with a forward slash "/" directory path of "%s".');
+define('_VALID_ERROR11',               'Directory path in the "%s" does not exist on the server.');
+
+define('_INST_ERROR',                  'Failed to install. Please run the installation script again to fix the cause of the following.');
+define('_INST_ERROR1',                 'Could not create the database. Please make sure that there is a permission to create.');
+define('_INST_ERROR2',                 'Could not find the database. Please make sure that the database exists.');
+define('_INST_ERROR3',                 'Database table was trying to create already exists.');
+define('_INST_ERROR4',                 'An error occurred execution of the query');
+define('_INST_ERROR5',                 'An error occurred during the execution of the "Configuring Members"');
+define('_INST_ERROR6',                 'An error occurred during the execution of the "Blog Settings"');
+define('_INST_ERROR7',                 'An error occurred during the execution of the "Setting item"');
+define('_INST_ERROR8',                 'can not write to the config.php. Once you have the permissions to <span style="font-weight:bold;">666</span> of config.php, the script will automatically write the configuration information. (<a href="../nucleus/documentation/tips.html#filepermissions">Quick Guide to change permissions</a>)');
+define('_INST_ERROR9',                 'Could not install the plug-in "%s".');
+define('_INST_ERROR10',                        'File "%s" can not be found.');
+define('_INST_ERROR11',                        'Theme file "%s" could not be read.');
+define('_INST_ERROR12',                        'Could not import the theme "%s".');
+
+
+// General category
+define('_GENERALCAT_NAME',             'General');
+define('_GENERALCAT_DESC',             'Items that do not fit in other categories');
+define('_1ST_POST_TITLE',              'Welcome to Nucleus CMS v4.0');
+define('_1ST_POST',                            'This is the first post on your Nucleus CMS. Nucleus offers you the building blocks you need to create a web presence. Whether you want to
+create a personal blog, a family page, or an online business site, Nucleus CMS can help you achieve your goals.<br /> <br /> We\\\'ve loaded this first entry with links and information to get you started. Though you can delete this entry, it will eventually scroll off the main page as you add content to your site. Add your comments while you learn to work with Nucleus CMS, or bookmark this page so you can come back to it when you need to.');
+define('_1ST_POST2',                   '<b>Home - <a href="http://nucleuscms.org/" title="Nucleus CMS home">nucleuscms.org</a></b><br /> Welcome to the world of Nucleus CMS. In 2001 a set of PHP scripts were let loose on the open Internet. Those scripts, which took user-generated data and used it to dynamically create html pages, contained the ideas and the algorithms that are the core of today\\\'s Nucleus CMS. Though Nucleus CMS 3.5 is far more flexible and powerful than the scripts from which it emerged, it still expresses the values that guided its birth: flexibility, security, and computational elegance.<br /> <br /> Thanks to an international community of sophisticated developers and designers, Nucleus CMS remains simple enough for anyone to learn, and expandable enough to allow you to build almost any website you can imagine. Nucleus CMS lets you integrate text, images, and user comments in a seamless package that will make your web presence as serious, professional, personal, or fun as you want it to be. We hope you enjoy its power.<br /> <br /> <b>Documentation - <a href="http://docs.nucleuscms.org/" title="Nucleus CMS Documentation">docs.nucleuscms.org</a></b><br /> The install process places a <a href="nucleus/documentation/">user</a> and a <a href="nucleus/documentation/devdocs/">developer</a> documentation on your web server. Pop-up <a href="/nucleus/documentation/help.html">help</a> is available throughout the administration area to assist you in maintaining and customizing your site. When in the Nucleus CMS admin area, click on this symbol <img src="nucleus/documentation/icon-help.gif" width="15" height="15" alt="help icon" /> for context-sensitive help. You can also read this documentation online under <a href="http://docs.nucleuscms.org/" title="Nucleus CMS Documentation">docs.nucleuscms.org</a>.<br /> <br /> <b>Frequently Asked Questions - <a nicetitle="Nucleus CMS FAQ" href="http://faq.nucleuscms.org/">faq.nucleuscms.org</a></b><br /> If you need more information about managing, extending or troubleshooting your Nucleus CMS the Nucleus FAQ is the first place to search information. Over 170 frequently asked questions are answered from experienced Nucleus users.<br /> <br /> <b>Support - <a href="http://forum.nucleuscms.org/" title="Nucleus CMS Support Forum">forum.nucleuscms.org</a></b><br /> Should you require assistance, please don\\\'t hesitate to <a href="http://forum.nucleuscms.org/faq.php">join</a> the 6,800+ registered users on our forums. With its built-in search capability of the 73,000+ posted articles, your answers are just a few clicks away. Remember: almost any question you think of has already been asked on the forums, and almost anything you want to do with Nucleus has been tried and explained there. Be sure to check them out.<br /> <br /> <b>Demonstration - <a href="http://demo.nucleuscms.org/" title="Nucleus CMS Demonstration">demo.nucleuscms.org</a></b><br /> Want to play around, test changes or tell a friend or relative about Nucleus CMS? Visit our live <a href="http://demo.nucleuscms.org/">demo site</a>.<br /> <br /> <b>Skins - <a href="http://skins.nucleuscms.org/" title="Nucleus CMS Skins">skins.nucleuscms.org</a></b><br /> The combination of multi-weblogs and skins/templates make for a powerful duo in personalizing your site or designing one for a friend, relative or business client. Import new skins to change the look of your website, or create your own skins and share them with the Nucleus community! Help designing or modifying skins is only a few clicks away in the Nucleus forums.<br /> <br /> <b>Plugins - <a href="http://plugins.nucleuscms.org/" title="Nucleus plugins">plugins.nucleuscms.org</a></b><br /> Looking to add some extra functionality to the base Nucleus CMS package? Our <a href="http://wiki.nucleuscms.org/plugin">plugin repository</a> gives you plenty of ways to extend and expand what Nucleus CMS can do; your imagination and creativity are the only limit on how Nucleus CMS can work for you.<br /> <br /> <b>Development - <a href="http://dev.nucleuscms.org/" title="Nucleus Development">dev.nucleuscms.org</a></b><br /> If you need more information about the Nucleus development you can find Informations in the developer documents at <a href="http://dev.nucleuscms.org/" title="Nucleus Development">dev.nucleuscms.org</a> or in the <a href="http://forum.nucleuscms.org/">Support Forum</a>. Sourceforge.net graciously hosts our <a href="http://sourceforge.net/projects/nucleuscms/">Open Source project page</a> which contains our software downloads and CVS repository.<br /> <br /> <b>Donators</b><br /> We would like to thank these <a href="http://nucleuscms.org/donators.php">nice people</a> for their <a href="http://nucleuscms.org/donate.php">support</a>. <em>Thanks all!</em><br /> <br /> <b>Vote for Nucleus CMS</b><br /> Like Nucleus CMS? Vote for us at <a href="http://www.hotscripts.com/Detailed/13368.html?RID=nucleus@demuynck.org">HotScripts</a> and <a href="http://www.opensourcecms.com/index.php?option=content&task=view&id=145">opensourceCMS</a>.<br /> <br /> <b>License</b><br /> When we speak of free software, we are referring to freedom, not price. Our <a href="http://www.gnu.org/licenses/gpl.html">General Public Licenses</a> are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.');
index e3dfe38..8b09d9e 100644 (file)
-<?php\r
-/*\r
- * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)\r
- * Copyright (C) 2002-2012 The Nucleus Group\r
- *\r
- * This program is free software; you can redistribute it and/or\r
- * modify it under the terms of the GNU General Public License\r
- * as published by the Free Software Foundation; either version 2\r
- * of the License, or (at your option) any later version.\r
- * (see nucleus/documentation/index.html#license for more info)\r
- */\r
-\r
-/**\r
- * @license http://nucleuscms.org/license.txt GNU General Public License\r
- * @copyright Copyright (C) 2002-2012 The Nucleus Group\r
- * @version $Id: install_lang_japanese.php 1189 2011-03-28 14:45:08Z sakamocchi $\r
- */\r
-\r
-// header\r
-define('_TITLE',                               'Nucleusのインストール');\r
-define('_BODYFONTSTYLE',               'body {\r
-       font:14px/20px "メイリオ", "Meiryo", "ヒラギノ角ゴ Pro W3", "Hiragino Kaku Gothic Pro", "Osaka", "MS Pゴシック", "MS PGothic",sans-serif;\r
-       *font-size:small; /* for IE */\r
-       *font:x-small; /* for IE in quirks mode */\r
-}\r
-\r
-#container h2{\r
-       padding:7px 0 3px 35px;\r
-}\r
-\r
-.prt .sbt .sbt_sqr,.prt .sbt .sbt_arw{\r
-       letter-spacing:0.2em;\r
-}');\r
-\r
-// common\r
-define('_STEP1',                               'データベースの確認');\r
-define('_STEP2',                               'ブログ設定');\r
-define('_STEP3',                               '完了');\r
-define('_MODE1',                               '簡易設定');\r
-define('_MODE2',                               '詳細設定');\r
-define('_NEXT',                                        '次へ');\r
-define('_INSTALL',                             'インストール');\r
-\r
-// database settings\r
-define('_SIMPLE_NAVI1',                        'まずデータベースの接続を確認します。MySQLの設定を入力して「次へ」をクリックしてください。<br />詳細な情報を入力して設定する場合は「詳細情報」をクリックしてください。');\r
-define('_DB_HEADER',                   'データベース接続');\r
-define('_DB_TEXT1',                            'Nucleusになれているなら、詳細設定がおすすめです。');\r
-define('_DB_FIELD1',                   'ホスト名');\r
-define('_DB_FIELD1_DESC',              '(通常は localhost)');\r
-define('_DB_FIELD2',                   'ユーザー名');\r
-define('_DB_FIELD2_DESC',              '(半角英数 , _ , - )');\r
-define('_DB_FIELD3',                   'パスワード');\r
-define('_DB_FIELD4',                   'データベース名');\r
-define('_DB_FIELD4_DESC',              '(半角英数 , _ , - )');\r
-define('_DB_FIELD5',                   'プリフィックス');\r
-define('_DB_FIELD5_DESC',              '通常は空白で結構です');\r
-\r
-// blog settings\r
-define('_SIMPLE_NAVI2',                        'データベースの接続が確認できました。<br />ブログと管理者の設定をして「次へ」をクリックしてください。');\r
-define('_BLOG_HEADER',                 'ブログ設定');\r
-define('_BLOG_FIELD1',                 'ブログ名');\r
-define('_BLOG_FIELD2',                 'ブログ短縮名');\r
-define('_BLOG_FIELD2_DESC',            '(半角英数)');\r
-\r
-// admin settings\r
-define('_ADMIN_HEADER',                        '管理者の情報');\r
-define('_ADMIN_FIELD1',                        '管理者名');\r
-define('_ADMIN_FIELD2',                        'ログインID');\r
-define('_ADMIN_FIELD2_DESC',   '(半角英数)');\r
-define('_ADMIN_FIELD3',                        'パスワード');\r
-define('_ADMIN_FIELD4',                        'パスワード:確認');\r
-define('_ADMIN_FIELD5',                        'メールアドレス');\r
-\r
-// url/path settings\r
-define('_PATH_FIELD1',                 'サイトのURL');\r
-define('_PATH_FIELD2',                 '管理URL');\r
-define('_PATH_FIELD3',                 '管理パス');\r
-define('_PATH_FIELD4',                 'メディアURL');\r
-define('_PATH_FIELD5',                 'メディアパス');\r
-define('_PATH_FIELD6',                 'スキンファイルURL');\r
-define('_PATH_FIELD7',                 'スキンファイルパス');\r
-define('_PATH_FIELD8',                 'プラグインURL');\r
-define('_PATH_FIELD9',                 'アクションURL');\r
-\r
-// detail\r
-define('_DETAIL_NAVI1',                        'すべての項目を入力してください。オプション設定は、インストール完了後Nucleusの管理ページから変更できます。');\r
-define('_DETAIL_HEADER1',              'MySQLのログイン情報');\r
-define('_DETAIL_TEXT1',                        'データベースのログイン情報を入力してください。この情報が分からない場合は、システム管理者かホスティング元に確認をとってください。');\r
-define('_DETAIL_HEADER2',              'ディレクトリとURL');\r
-define('_DETAIL_TEXT2',                        'ディレクトリとURLを下記の設定でインストールします。特殊なディレクトリ構成で運用したい場合は、ここで変更できます。<br />ディレクトリのパス及びURLはスラッシュ「/」で閉じてください。');\r
-define('_DETAIL_TEXT3',                        'Note: パスは相対パスではなく絶対パスを使用してください。');\r
-define('_DETAIL_HEADER3',              '管理権限をもつユーザー');\r
-define('_DETAIL_TEXT4',                        'サイトの最初のユーザーを作成するための情報を入力してください。');\r
-define('_DETAIL_HEADER4',              'ブログ設定');\r
-define('_DETAIL_TEXT5',                        'デフォルトのブログを作成するための情報を入力してください。このブログの名前は、サイト名としても利用されます。');\r
-define('_DETAIL_TEXT6',                        '上に書いてきたデータが正しいか確かめてください。よければデータベース・テーブルと最初のデータを設定するために下のボタンを押してください。少し時間がかかるかもしれませんがご辛抱を。ボタンをクリックするのは一回だけにしてください。');\r
-\r
-// install complete\r
-define('_INST_TEXT',                   'おめでとうございます。インストールは完了しました!');\r
-define('_INST_HEADER1',                        '作成したブログ');\r
-define('_INST_TEXT1',                  'さっそく作成した "%s" を見てみましょう。');\r
-define('_INST_BUTTON1',                        'ブログへ');\r
-define('_INST_HEADER2',                        '管理ページ');\r
-define('_INST_TEXT2',                  'デザイン変更、ユーザー追加、カテゴリ設定は管理ページへ。');\r
-define('_INST_BUTTON2',                        '管理ページ');\r
-define('_INST_HEADER3',                        'ブログの追加');\r
-define('_INST_TEXT3',                  '必要であれば、さらにブログを追加できます。');\r
-define('_INST_BUTTON3',                        '追加作成');\r
-define('_INST_TEXT4',                  '<i>config.php</i>への書き込みが行えませんでした。以下の内容で書き換えてください。');\r
-define('_INST_TEXT5',                  '<i>config.php</i>のパーミッションが"<span style="font-weight:bold;">444</span>"であるか確認してください。もし、違うならば"444"に変更してください。');\r
-\r
-// errors\r
-define('_DBCONNECT_ERROR',             'MySQL Serverに接続できませんでした。');\r
-define('_DBVERSION_UNKOWN',            '判別不能');\r
-define('_DBVERSION_TOOLOW',            'Nucleusでは少なくともバージョン "%s" 以上のMySQLが必要です。');\r
-\r
-define('_VALID_ERROR',                 '入力内容に誤りがあります。各セクションのエラーメッセージを確認して入力値を見なおしてください。');\r
-define('_VALID_ERROR1',                        '"%s" が入力されていません。');\r
-define('_VALID_ERROR2',                        '"%s" に使用できる文字は半角の A-Z、a-z、0-9、_(アンダーライン)、-(ハイフン)のみです。');\r
-define('_VALID_ERROR3',                        '"%s" に使用できる文字は半角の A-Z、a-z、0-9、_(アンダーライン)のみです。');\r
-define('_VALID_ERROR4',                        '"ブログの短縮名(略称)" に使用できる文字は  A-Z、a-z、0-9(半角英数)のみです。');\r
-define('_VALID_ERROR5',                        '"ログインID" に使用できる文字は A-Z、a-z、0-9(半角英数)のみです。ただし、最初と最後以外では半角スペースも使用できます。');\r
-define('_VALID_ERROR6',                        '入力された二つのパスワードが一致しません。');\r
-define('_VALID_ERROR7',                        '"メールアドレス" が不正です。');\r
-define('_VALID_ERROR8',                        '"%s" が"/(スラッシュ)"で終わっていません。');\r
-define('_VALID_ERROR9',                        '"%s" のアドレスが"action.php"で終わっていません。');\r
-define('_VALID_ERROR10',               '"%s" のディレクトリパスが"/(スラッシュ)"で終わっていません。');\r
-define('_VALID_ERROR11',               '"%s" のディレクトリパスがサーバ上に存在しません。');\r
-\r
-define('_INST_ERROR',                  'インストールに失敗しました。以下の原因を解決して再度インストールスクリプトを実行してください。');\r
-define('_INST_ERROR1',                 'データベースを作成できませんでした。作成の権限があるかどうか確認してください。');\r
-define('_INST_ERROR2',                 'データベースを見つけられませんでした。データベースが存在するか確認してください。');\r
-define('_INST_ERROR3',                 '作成しようとしたテーブルが既に存在しています。');\r
-define('_INST_ERROR4',                 'クエリの実行中にエラーが発生しました');\r
-define('_INST_ERROR5',                 '"メンバー設定" の実行中にエラーが発生しました');\r
-define('_INST_ERROR6',                 '"ブログ設定" の実行中にエラーが発生しました');\r
-define('_INST_ERROR7',                 '"アイテム設定" の実行中にエラーが発生しました');\r
-define('_INST_ERROR8',                 'config.php への書き込みができません。config.php のパーミッションを<span style="font-weight:bold;">666</span>にしておけば、スクリプトが自動で設定情報を書き込みます。(<a href="../nucleus/documentation/tips.html#filepermissions">パーミッション変更の簡易ガイド</a>)。');\r
-define('_INST_ERROR9',                 'プラグイン "%s" をインストールできませんでした。');\r
-define('_INST_ERROR10',                        'ファイル "%s" が見つかりません。');\r
-define('_INST_ERROR11',                        'テーマファイル "%s" が読み込めませんでした。');\r
-define('_INST_ERROR12',                        'テーマ "%s" をインポートできませんでした。');\r
-\r
-\r
-// General category\r
-define('_GENERALCAT_NAME',             '総合');\r
-define('_GENERALCAT_DESC',             '投稿した記事に合うカテゴリが無い時にこのカテゴリを使用すると良いでしょう');\r
-define('_1ST_POST_TITLE',              'Nucleus CMS バージョン4.00 へようこそ');\r
-define('_1ST_POST',                            'ウェブサイトの作成を補助する積み木がここにあります。それは心躍るブログになるかもしれませんし、見る人を和ませる家族のサイトになるかもしれませんし、実り多い趣味のサイトになるかもしれません。あるいは現在のあなたには想像がつかないものになることだってあるでしょう。<br />\r
-<br />用途が思いつきませんでしたか? それならここへ来て正解です。なぜならあなた同様私たちにもわからないのですから。');\r
-define('_1ST_POST2',                   'これはサイトにおける最初のエントリーです。スタートを切りやすいように、リンクと情報を入れておきました。<br />\r
-<br />\r
-この記事を削除することもできますが、どちらにせよ記事を追加していくことによってやがてメインページからは見えなくなります。Nucleusを扱ううちに生じたメモをコメントとして追加し、将来アクセスできるようにこのページをブックマークしておくのも手です。<br />\r
-<br />\r
-<b>リンク</b><br />\r
-<br />\r
-Nucleus CMSの<a href="http://nucleuscms.org">本家</a>と<a href="http://japan.nucleuscms.org">日本語公式</a>ページ。<br />\r
-<br />\r
-Nucleus CMSのSourceForge<a href="http://sourceforge.net/projects/nucleuscms/">プロジェクト</a>(<a href="http://sourceforge.jp/projects/nucleus-jp/">日本版</a>)ページ。<br />\r
-<br />\r
-Nucleus CMSの<a href="http://wakka.xiffy.nl/Plugin/">プラグイン倉庫</a>と<a href="http://japan.nucleuscms.org/wiki/plugins">日本語のリスト</a>ページ。<br />\r
-<br />\r
-<b>ドキュメント - <a href="http://docs.nucleuscms.org/">docs.nucleuscms.org</a></b><br />\r
-<br />\r
-Nucleusの<a href="http://japan.nucleuscms.org/faq.php">FAQ(よくある質問集)</a>(<a href="http://nucleuscms.org/faq.php">原文</a>)ページ。<br />\r
-<br />\r
-インストール方法等は<a href="nucleus/documentation/">ユーザー向け</a>と<a href="nucleus/documentation/devdocs/">開発者向け</a>文書がファイルに含まれています。<br />\r
-<br />\r
-ポップアップ<a href="./nucleus/documentation/help.html">ヘルプ</a>が管理エリアのいたるところにあり、サイトのカスタマイズやデザインを手助けしてくれることでしょう。<br />\r
-<br />\r
-一度用意されているドキュメントに目を通したら、<a href="http://wiki.nucleuscms.org/">Wiki</a>(<a href="http://japan.nucleuscms.org/wiki/">日本版</a>)を訪れてください。ユーザーの書いたハウツーや小技が掲載されています。<br />\r
-<br />\r
-<b>サポート</b><br />\r
-<br />\r
-<a href="http://forum.nucleuscms.org/">forum.nucleuscms.org</a>(本家)<br />\r
-<a href="http://japan.nucleuscms.org/bb/">japan.nucleuscms.org/bb/</a>(日本版)<br />\r
-<br />\r
-<a href="http://forum.nucleuscms.org/groupcp.php?g=3">moderators</a>とサポートフォーラムで活動する全てのボランティアに感謝します。<br />\r
-<br />\r
-- <a href="http://edmondhui.homeip.net/blog/">admun</a> - Ottawa, ON, Canada<br />\r
-- <a href="http://www.tamizhan.com/">anand</a> - Bangalore, India<br />\r
-- <a href="http://hcgtv.com">hcgtv</a> - Miami, Florida, USA<br />\r
-- <a href="http://www.adrenalinsports.nl/">ikeizer</a> - Maastricht<br />\r
-- <a href="http://www.tipos.com.br/">moraes</a> - Brazil<br />\r
-- <a href="http://roelg.nl/">roel </a>- The Netherlands<br />\r
-- <a href="http://budts.be/weblog/">TeRanEX </a>- Ekeren, Antwerp, Belgium<br />\r
-- <a href="http://www.trentadams.com/">Trent </a>- Alberta, Canada<br />\r
-- <a href="http://xiffy.nl/weblog/">xiffy </a>- Deventer<br />\r
-<br />\r
-もし手助けが必要なら、1400を超える登録ユーザーのいる私たちのフォーラムに参加してください。23,000を超える投稿された記事を検索できるようになっておりますので、求める答えに数回のクリックでたどり着けるかもしれません。<br />\r
-<br />\r
-<b>カスタマイズ - <a href="http://skins.nucleuscms.org/">skins.nucleuscms.org</a></b><br />\r
-<br />\r
-マルチウェブログとスキン/テンプレートの組み合わせは強力な相乗効果を生み出します。個人的なサイト作成、友人や親戚あるいはクライアントに対するサイトデザインいずれに対してもです。<br />\r
-<br />\r
-636の登録された<a href="http://nucleuscms.org/sites.php">Nucleusで運用されているサイト</a>(<a href="http://japan.nucleuscms.org/sites.php">日本版</a>)の中から特色あるサイトをサンプルとしてご紹介します。<br />\r
-<br />\r
-個人サイト<br />\r
-- <a href="http://bloggard.com/">bloggard.com</a> - The Adventures of Bloggard<br />\r
-- <a href="http://www.yetanotherblog.de/">yetanotherblog.de</a> - Yet Another Blog<br />\r
-<br />\r
-趣味、旅行、ニュースサイト<br />\r
-- <a href="http://adrenalinsports.nl/">adrenalinsports.nl</a> - Extreme sports<br />\r
-- <a href="http://groningen-info.de/">groningen-info.de</a> - Neues aus Groningen. Fr Leute aus Duitsland.<br />\r
-<br />\r
-<b>Nucleus Developer Network - <a href="http://dev.nucleuscms.org/">dev.nucleuscms.org</a></b><br />\r
-<br />\r
-NUDNは、開発者サイトおよびプログラミングリソースのハブです。<br />\r
-<br />\r
-NUDN satellite sites, handles, location and UTC offset:<br />\r
-- <a href="http://karma.nucleuscms.org/">karma</a> - Izegem +02<br />\r
-- <a href="http://edmondhui.homeip.net/blog/">admun</a> - Ottawa -04<br />\r
-- <a href="http://dev.budts.be/nucleus/">TeRanEX</a> - Ekeren +02<br />\r
-<br />\r
-Sourceforge.net には私たちの <a href="http://sourceforge.net/projects/nucleuscms/">SVNリポジトリ</a> をホストをして頂いています。<br />\r
-<br />\r
-遊んだり、テスト更新を行ってみたい場合は、<a href="http://demo.nucleuscms.org/">demo.nucleuscms.org</a>にあるデモサイトを訪れてみてください。<br />\r
-<br />\r
-Not sure what plugins to use, visit the <a href="http://showcase.trentadams.com/">showcase site</a> where you can see plugins at play in their native habitat.<br />\r
-<br />\r
-Then visit the plugin repository at <a href="http://plugins.nucleuscms.org/">plugins.nucleuscms.org</a> for download and installation instructions.<br />\r
-<br />\r
-<b>寄付者一覧</b><br />\r
-<br />\r
-<a href="http://nucleuscms.org/donators.php">素晴らしい人々</a>による<a href="http://nucleuscms.org/donate.php">援助</a>感謝を捧げます。<em>ありがとう!</em><br />\r
-<br />\r
-<b>Nucleus CMS への投票</b><br />\r
-<br />\r
-Nucleusが気に入りましたか? <a href="http://www.hotscripts.com/Detailed/13368.html?RID=nucleus@demuynck.org">HotScripts</a>や<a href="http://www.opensourcecms.com/index.php?option=content&task=view&id=145">opensourceCMS</a>での投票をお願いします。<br />\r
-<br />\r
-<b>ライセンス</b><br />\r
-<br />\r
-私たちがフリー・ソフトウェアについて口にする場合は自由のことに言及しているのであって、価格のことではありません。私たちの<a href="http://www.gnu.org/licenses/gpl.html">GNU General Public Licenses(一般公有使用許諾書)</a>(<a href="http://www.gnu.org/licenses/gpl.ja.html">日本語訳(参考)</a>と<a href="http://www.atmarkit.co.jp/aig/03linux/gpl.html">概要</a>)は、フリー・ソフトウェアの複製物を自由に頒布できること(そして、望むならこのサービスに対して対価を請求できること)、ソース・コードを実際に受け取るか希望しさえすれば入手することが可能であること、入手したソフトウェアを変更したり新しいフリー・プログラムの一部として使用できること、以上の各内容を行なうことができるということをユーザ自身が知っていることを実現できるようにデザインされています。');\r
+<?php
+/*
+ * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)
+ * Copyright (C) 2002-2012 The Nucleus Group
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * (see nucleus/documentation/index.html#license for more info)
+ */
+
+/**
+ * @license http://nucleuscms.org/license.txt GNU General Public License
+ * @copyright Copyright (C) 2002-2012 The Nucleus Group
+ * @version $Id: install_lang_japanese.php 1189 2011-03-28 14:45:08Z sakamocchi $
+ */
+
+// header
+define('_TITLE',                               'Nucleusのインストール');
+define('_BODYFONTSTYLE',               'body {
+       font:14px/20px "メイリオ", "Meiryo", "ヒラギノ角ゴ Pro W3", "Hiragino Kaku Gothic Pro", "Osaka", "MS Pゴシック", "MS PGothic",sans-serif;
+       *font-size:small; /* for IE */
+       *font:x-small; /* for IE in quirks mode */
+}
+
+#container h2{
+       padding:7px 0 3px 35px;
+}
+
+.prt .sbt .sbt_sqr,.prt .sbt .sbt_arw{
+       letter-spacing:0.2em;
+}');
+
+// common
+define('_STEP1',                               'データベースの確認');
+define('_STEP2',                               'ブログ設定');
+define('_STEP3',                               '完了');
+define('_MODE1',                               '簡易設定');
+define('_MODE2',                               '詳細設定');
+define('_NEXT',                                        '次へ');
+define('_INSTALL',                             'インストール');
+
+// locale setting
+define('_LOCALE_HEADER',               'あなたのロケールを選択して下さい');
+define('_LOCALE_DESC1',                        'Nucleus CMSはさまざまなロケールで使うことができるよう作られています。');
+define('_LOCALE_DESC2',                        '上のセレクトボックスに表示される名前のうち、アスタリスクで始まるものは翻訳が十分ではありません。');
+define('_LOCALE_NEED_HELP',            'もし余裕がありましたら、ぜひ翻訳したファイルを送って下さい!');
+
+// database settings
+define('_SIMPLE_NAVI1',                        'まずデータベースの接続を確認します。MySQLの設定を入力して「次へ」をクリックしてください。<br />詳細な情報を入力して設定する場合は「詳細情報」をクリックしてください。');
+define('_DB_HEADER',                   'データベース接続');
+define('_DB_TEXT1',                            'Nucleusになれているなら、詳細設定がおすすめです。');
+define('_DB_FIELD1',                   'ホスト名');
+define('_DB_FIELD1_DESC',              '(通常は localhost)');
+define('_DB_FIELD2',                   'ユーザー名');
+define('_DB_FIELD2_DESC',              '(半角英数 , _ , - )');
+define('_DB_FIELD3',                   'パスワード');
+define('_DB_FIELD4',                   'データベース名');
+define('_DB_FIELD4_DESC',              '(半角英数 , _ , - )');
+define('_DB_FIELD5',                   'プリフィックス');
+define('_DB_FIELD5_DESC',              '通常は空白で結構です');
+
+// blog settings
+define('_SIMPLE_NAVI2',                        'データベースの接続が確認できました。<br />ブログと管理者の設定をして「次へ」をクリックしてください。');
+define('_BLOG_HEADER',                 'ブログ設定');
+define('_BLOG_FIELD1',                 'ブログ名');
+define('_BLOG_FIELD2',                 'ブログ短縮名');
+define('_BLOG_FIELD2_DESC',            '(半角英数)');
+
+// admin settings
+define('_ADMIN_HEADER',                        '管理者の情報');
+define('_ADMIN_FIELD1',                        '管理者名');
+define('_ADMIN_FIELD2',                        'ログインID');
+define('_ADMIN_FIELD2_DESC',   '(半角英数)');
+define('_ADMIN_FIELD3',                        'パスワード');
+define('_ADMIN_FIELD4',                        'パスワード:確認');
+define('_ADMIN_FIELD5',                        'メールアドレス');
+
+// url/path settings
+define('_PATH_FIELD1',                 'サイトのURL');
+define('_PATH_FIELD2',                 '管理URL');
+define('_PATH_FIELD3',                 '管理パス');
+define('_PATH_FIELD4',                 'メディアURL');
+define('_PATH_FIELD5',                 'メディアパス');
+define('_PATH_FIELD6',                 'スキンファイルURL');
+define('_PATH_FIELD7',                 'スキンファイルパス');
+define('_PATH_FIELD8',                 'プラグインURL');
+define('_PATH_FIELD9',                 'アクションURL');
+
+// detail
+define('_DETAIL_NAVI1',                        'すべての項目を入力してください。オプション設定は、インストール完了後Nucleusの管理ページから変更できます。');
+define('_DETAIL_HEADER1',              'MySQLのログイン情報');
+define('_DETAIL_TEXT1',                        'データベースのログイン情報を入力してください。この情報が分からない場合は、システム管理者かホスティング元に確認をとってください。');
+define('_DETAIL_HEADER2',              'ディレクトリとURL');
+define('_DETAIL_TEXT2',                        'ディレクトリとURLを下記の設定でインストールします。特殊なディレクトリ構成で運用したい場合は、ここで変更できます。<br />ディレクトリのパス及びURLはスラッシュ「/」で閉じてください。');
+define('_DETAIL_TEXT3',                        'Note: パスは相対パスではなく絶対パスを使用してください。');
+define('_DETAIL_HEADER3',              '管理権限をもつユーザー');
+define('_DETAIL_TEXT4',                        'サイトの最初のユーザーを作成するための情報を入力してください。');
+define('_DETAIL_HEADER4',              'ブログ設定');
+define('_DETAIL_TEXT5',                        'デフォルトのブログを作成するための情報を入力してください。このブログの名前は、サイト名としても利用されます。');
+define('_DETAIL_TEXT6',                        '上に書いてきたデータが正しいか確かめてください。よければデータベース・テーブルと最初のデータを設定するために下のボタンを押してください。少し時間がかかるかもしれませんがご辛抱を。ボタンをクリックするのは一回だけにしてください。');
+
+// install complete
+define('_INST_TEXT',                   'おめでとうございます。インストールは完了しました!');
+define('_INST_HEADER1',                        '作成したブログ');
+define('_INST_TEXT1',                  'さっそく作成した "%s" を見てみましょう。');
+define('_INST_BUTTON1',                        'ブログへ');
+define('_INST_HEADER2',                        '管理ページ');
+define('_INST_TEXT2',                  'デザイン変更、ユーザー追加、カテゴリ設定は管理ページへ。');
+define('_INST_BUTTON2',                        '管理ページ');
+define('_INST_HEADER3',                        'ブログの追加');
+define('_INST_TEXT3',                  '必要であれば、さらにブログを追加できます。');
+define('_INST_BUTTON3',                        '追加作成');
+define('_INST_TEXT4',                  '<i>config.php</i>への書き込みが行えませんでした。以下の内容で書き換えてください。');
+define('_INST_TEXT5',                  '<i>config.php</i>のパーミッションが"<span style="font-weight:bold;">444</span>"であるか確認してください。もし、違うならば"444"に変更してください。');
+
+// errors
+define('_DBCONNECT_ERROR',             'MySQL Serverに接続できませんでした。');
+define('_DBVERSION_UNKOWN',            '判別不能');
+define('_DBVERSION_TOOLOW',            'Nucleusでは少なくともバージョン "%s" 以上のMySQLが必要です。');
+
+define('_VALID_ERROR',                 '入力内容に誤りがあります。各セクションのエラーメッセージを確認して入力値を見なおしてください。');
+define('_VALID_ERROR1',                        '"%s" が入力されていません。');
+define('_VALID_ERROR2',                        '"%s" に使用できる文字は半角の A-Z、a-z、0-9、_(アンダーライン)、-(ハイフン)のみです。');
+define('_VALID_ERROR3',                        '"%s" に使用できる文字は半角の A-Z、a-z、0-9、_(アンダーライン)のみです。');
+define('_VALID_ERROR4',                        '"ブログの短縮名(略称)" に使用できる文字は  A-Z、a-z、0-9(半角英数)のみです。');
+define('_VALID_ERROR5',                        '"ログインID" に使用できる文字は A-Z、a-z、0-9(半角英数)のみです。ただし、最初と最後以外では半角スペースも使用できます。');
+define('_VALID_ERROR6',                        '入力された二つのパスワードが一致しません。');
+define('_VALID_ERROR7',                        '"メールアドレス" が不正です。');
+define('_VALID_ERROR8',                        '"%s" が"/(スラッシュ)"で終わっていません。');
+define('_VALID_ERROR9',                        '"%s" のアドレスが"action.php"で終わっていません。');
+define('_VALID_ERROR10',               '"%s" のディレクトリパスが"/(スラッシュ)"で終わっていません。');
+define('_VALID_ERROR11',               '"%s" のディレクトリパスがサーバ上に存在しません。');
+
+define('_INST_ERROR',                  'インストールに失敗しました。以下の原因を解決して再度インストールスクリプトを実行してください。');
+define('_INST_ERROR1',                 'データベースを作成できませんでした。作成の権限があるかどうか確認してください。');
+define('_INST_ERROR2',                 'データベースを見つけられませんでした。データベースが存在するか確認してください。');
+define('_INST_ERROR3',                 '作成しようとしたテーブルが既に存在しています。');
+define('_INST_ERROR4',                 'クエリの実行中にエラーが発生しました');
+define('_INST_ERROR5',                 '"メンバー設定" の実行中にエラーが発生しました');
+define('_INST_ERROR6',                 '"ブログ設定" の実行中にエラーが発生しました');
+define('_INST_ERROR7',                 '"アイテム設定" の実行中にエラーが発生しました');
+define('_INST_ERROR8',                 'config.php への書き込みができません。config.php のパーミッションを<span style="font-weight:bold;">666</span>にしておけば、スクリプトが自動で設定情報を書き込みます。(<a href="../nucleus/documentation/tips.html#filepermissions">パーミッション変更の簡易ガイド</a>)。');
+define('_INST_ERROR9',                 'プラグイン "%s" をインストールできませんでした。');
+define('_INST_ERROR10',                        'ファイル "%s" が見つかりません。');
+define('_INST_ERROR11',                        'テーマファイル "%s" が読み込めませんでした。');
+define('_INST_ERROR12',                        'テーマ "%s" をインポートできませんでした。');
+
+
+// General category
+define('_GENERALCAT_NAME',             '総合');
+define('_GENERALCAT_DESC',             '投稿した記事に合うカテゴリが無い時にこのカテゴリを使用すると良いでしょう');
+define('_1ST_POST_TITLE',              'Nucleus CMS バージョン4.00 へようこそ');
+define('_1ST_POST',                            'ウェブサイトの作成を補助する積み木がここにあります。それは心躍るブログになるかもしれませんし、見る人を和ませる家族のサイトになるかもしれませんし、実り多い趣味のサイトになるかもしれません。あるいは現在のあなたには想像がつかないものになることだってあるでしょう。<br />
+<br />用途が思いつきませんでしたか? それならここへ来て正解です。なぜならあなた同様私たちにもわからないのですから。');
+define('_1ST_POST2',                   'これはサイトにおける最初のエントリーです。スタートを切りやすいように、リンクと情報を入れておきました。<br />
+<br />
+この記事を削除することもできますが、どちらにせよ記事を追加していくことによってやがてメインページからは見えなくなります。Nucleusを扱ううちに生じたメモをコメントとして追加し、将来アクセスできるようにこのページをブックマークしておくのも手です。<br />
+<br />
+<b>リンク</b><br />
+<br />
+Nucleus CMSの<a href="http://nucleuscms.org">本家</a>と<a href="http://japan.nucleuscms.org">日本語公式</a>ページ。<br />
+<br />
+Nucleus CMSのSourceForge<a href="http://sourceforge.net/projects/nucleuscms/">プロジェクト</a>(<a href="http://sourceforge.jp/projects/nucleus-jp/">日本版</a>)ページ。<br />
+<br />
+Nucleus CMSの<a href="http://wakka.xiffy.nl/Plugin/">プラグイン倉庫</a>と<a href="http://japan.nucleuscms.org/wiki/plugins">日本語のリスト</a>ページ。<br />
+<br />
+<b>ドキュメント - <a href="http://docs.nucleuscms.org/">docs.nucleuscms.org</a></b><br />
+<br />
+Nucleusの<a href="http://japan.nucleuscms.org/faq.php">FAQ(よくある質問集)</a>(<a href="http://nucleuscms.org/faq.php">原文</a>)ページ。<br />
+<br />
+インストール方法等は<a href="nucleus/documentation/">ユーザー向け</a>と<a href="nucleus/documentation/devdocs/">開発者向け</a>文書がファイルに含まれています。<br />
+<br />
+ポップアップ<a href="./nucleus/documentation/help.html">ヘルプ</a>が管理エリアのいたるところにあり、サイトのカスタマイズやデザインを手助けしてくれることでしょう。<br />
+<br />
+一度用意されているドキュメントに目を通したら、<a href="http://wiki.nucleuscms.org/">Wiki</a>(<a href="http://japan.nucleuscms.org/wiki/">日本版</a>)を訪れてください。ユーザーの書いたハウツーや小技が掲載されています。<br />
+<br />
+<b>サポート</b><br />
+<br />
+<a href="http://forum.nucleuscms.org/">forum.nucleuscms.org</a>(本家)<br />
+<a href="http://japan.nucleuscms.org/bb/">japan.nucleuscms.org/bb/</a>(日本版)<br />
+<br />
+<a href="http://forum.nucleuscms.org/groupcp.php?g=3">moderators</a>とサポートフォーラムで活動する全てのボランティアに感謝します。<br />
+<br />
+- <a href="http://edmondhui.homeip.net/blog/">admun</a> - Ottawa, ON, Canada<br />
+- <a href="http://www.tamizhan.com/">anand</a> - Bangalore, India<br />
+- <a href="http://hcgtv.com">hcgtv</a> - Miami, Florida, USA<br />
+- <a href="http://www.adrenalinsports.nl/">ikeizer</a> - Maastricht<br />
+- <a href="http://www.tipos.com.br/">moraes</a> - Brazil<br />
+- <a href="http://roelg.nl/">roel </a>- The Netherlands<br />
+- <a href="http://budts.be/weblog/">TeRanEX </a>- Ekeren, Antwerp, Belgium<br />
+- <a href="http://www.trentadams.com/">Trent </a>- Alberta, Canada<br />
+- <a href="http://xiffy.nl/weblog/">xiffy </a>- Deventer<br />
+<br />
+もし手助けが必要なら、1400を超える登録ユーザーのいる私たちのフォーラムに参加してください。23,000を超える投稿された記事を検索できるようになっておりますので、求める答えに数回のクリックでたどり着けるかもしれません。<br />
+<br />
+<b>カスタマイズ - <a href="http://skins.nucleuscms.org/">skins.nucleuscms.org</a></b><br />
+<br />
+マルチウェブログとスキン/テンプレートの組み合わせは強力な相乗効果を生み出します。個人的なサイト作成、友人や親戚あるいはクライアントに対するサイトデザインいずれに対してもです。<br />
+<br />
+636の登録された<a href="http://nucleuscms.org/sites.php">Nucleusで運用されているサイト</a>(<a href="http://japan.nucleuscms.org/sites.php">日本版</a>)の中から特色あるサイトをサンプルとしてご紹介します。<br />
+<br />
+個人サイト<br />
+- <a href="http://bloggard.com/">bloggard.com</a> - The Adventures of Bloggard<br />
+- <a href="http://www.yetanotherblog.de/">yetanotherblog.de</a> - Yet Another Blog<br />
+<br />
+趣味、旅行、ニュースサイト<br />
+- <a href="http://adrenalinsports.nl/">adrenalinsports.nl</a> - Extreme sports<br />
+- <a href="http://groningen-info.de/">groningen-info.de</a> - Neues aus Groningen. Fr Leute aus Duitsland.<br />
+<br />
+<b>Nucleus Developer Network - <a href="http://dev.nucleuscms.org/">dev.nucleuscms.org</a></b><br />
+<br />
+NUDNは、開発者サイトおよびプログラミングリソースのハブです。<br />
+<br />
+NUDN satellite sites, handles, location and UTC offset:<br />
+- <a href="http://karma.nucleuscms.org/">karma</a> - Izegem +02<br />
+- <a href="http://edmondhui.homeip.net/blog/">admun</a> - Ottawa -04<br />
+- <a href="http://dev.budts.be/nucleus/">TeRanEX</a> - Ekeren +02<br />
+<br />
+Sourceforge.net には私たちの <a href="http://sourceforge.net/projects/nucleuscms/">SVNリポジトリ</a> をホストをして頂いています。<br />
+<br />
+遊んだり、テスト更新を行ってみたい場合は、<a href="http://demo.nucleuscms.org/">demo.nucleuscms.org</a>にあるデモサイトを訪れてみてください。<br />
+<br />
+Not sure what plugins to use, visit the <a href="http://showcase.trentadams.com/">showcase site</a> where you can see plugins at play in their native habitat.<br />
+<br />
+Then visit the plugin repository at <a href="http://plugins.nucleuscms.org/">plugins.nucleuscms.org</a> for download and installation instructions.<br />
+<br />
+<b>寄付者一覧</b><br />
+<br />
+<a href="http://nucleuscms.org/donators.php">素晴らしい人々</a>による<a href="http://nucleuscms.org/donate.php">援助</a>感謝を捧げます。<em>ありがとう!</em><br />
+<br />
+<b>Nucleus CMS への投票</b><br />
+<br />
+Nucleusが気に入りましたか? <a href="http://www.hotscripts.com/Detailed/13368.html?RID=nucleus@demuynck.org">HotScripts</a>や<a href="http://www.opensourcecms.com/index.php?option=content&task=view&id=145">opensourceCMS</a>での投票をお願いします。<br />
+<br />
+<b>ライセンス</b><br />
+<br />
+私たちがフリー・ソフトウェアについて口にする場合は自由のことに言及しているのであって、価格のことではありません。私たちの<a href="http://www.gnu.org/licenses/gpl.html">GNU General Public Licenses(一般公有使用許諾書)</a>(<a href="http://www.gnu.org/licenses/gpl.ja.html">日本語訳(参考)</a>と<a href="http://www.atmarkit.co.jp/aig/03linux/gpl.html">概要</a>)は、フリー・ソフトウェアの複製物を自由に頒布できること(そして、望むならこのサービスに対して対価を請求できること)、ソース・コードを実際に受け取るか希望しさえすれば入手することが可能であること、入手したソフトウェアを変更したり新しいフリー・プログラムの一部として使用できること、以上の各内容を行なうことができるということをユーザ自身が知っていることを実現できるようにデザインされています。');
index c4c31df..8b74b5f 100644 (file)
-/*\r
- * style sheet for installer\r
- * \r
- * $Id: \r
-*/\r
-\r
-@charset 'UTF-8';\r
-/* CSS Document */\r
-\r
-/* Layout */\r
-body{\r
-       margin:0;\r
-       padding:0;\r
-       text-align:center;\r
-       color:#666;\r
-}\r
-#header{\r
-       width: 100%;\r
-       height:40px;\r
-       background:#000;\r
-       position: fixed;  \r
-       top:0;  \r
-       left:0;  \r
-}\r
-#container,#container_detailed,#footer,#navigation{\r
-       margin:0 auto;\r
-       text-align:left;\r
-       border-width:0 1px;\r
-}\r
-#navigation{\r
-       width:800px;\r
-       height:40px;\r
-}\r
-#container,#container_detailed{\r
-       width:550px;\r
-       padding:40px 20px 0 30px;\r
-}\r
-#footer{\r
-       width:600px;\r
-}\r
-\r
-/* Common Settings */\r
-p{\r
-       margin:20px 0;\r
-}\r
-img{\r
-       border:none;\r
-}\r
-a{\r
-       text-decoration:none;\r
-}\r
-pre{\r
-       font-size: small;\r
-       line-height: 1em;\r
-       background-color:#eee;\r
-       border:1px solid gray;\r
-       padding: 2px;\r
-}\r
-.err{\r
-       display:block;\r
-       color:#c00;\r
-}\r
-\r
-/* Top navigation */\r
-#navigation h1{\r
-       width:120px;\r
-       height:35px;\r
-       margin:0 30px 0 0;\r
-       padding:4px 0 1px 0;\r
-       float:left;\r
-}\r
-#navigation ul{\r
-       margin:0 100px 0 0; \r
-       padding:18px 0 2px 0;\r
-       height:20px;\r
-       list-style-type:none;\r
-}\r
-#navigation li{\r
-       float:left;\r
-       font-size:93%;\r
-       height:20px;\r
-}\r
-#navigation li.rightbox{\r
-       float:right;\r
-}\r
-#navigation li,#navigation a{\r
-       color:#dedede;\r
-}\r
-#navigation li.gry{\r
-       color:#787878;\r
-}\r
-#navigation a:hover{\r
-       color:#fff;\r
-}\r
-\r
-/* Content */\r
-#container h2,#container_detailed h2{\r
-       line-height:20px;\r
-       height:20px;\r
-       margin:0 -20px 0 -30px;\r
-       padding:6px 0 4px 35px;\r
-       background:url("nuc_h2_bk.png") 4px 4px no-repeat #d0d0d0;\r
-       font-size:136%;\r
-       color:#454545;\r
-}\r
-\r
-/* Form table */\r
-.prt table{\r
-       width: 100%;\r
-       margin-bottom:20px;\r
-}\r
-.prt table th{\r
-       font-size:99%;\r
-       text-align:right;\r
-       width:135px;\r
-       height:40px;\r
-}\r
-.prt table th .nam{\r
-       margin:5px 0 0 0;\r
-       padding:5px 0 0 0;\r
-       height:15px;\r
-       line-height:15px;\r
-       font-weight:bold;\r
-       color:#454545;\r
-}\r
-.prt table th .sub{\r
-       display:block;\r
-       margin:0;\r
-       padding:0 0 5px 0;\r
-       height:10px;\r
-       line-height:10px;\r
-       font-size:65%;\r
-       font-weight:normal;\r
-       color:#666;\r
-}\r
-.prt table td input{\r
-       width:390px;\r
-       height:35px;\r
-       margin:0 0 0 5px;\r
-       font-size:182%;\r
-       font-weight:bold;\r
-       color:#333;\r
-       background:url("nuc_input_bk.png") no-repeat;\r
-       border:1px solid #999;\r
-       border-right-color:#ccc;\r
-       border-bottom-color:#ccc;\r
-}\r
-\r
-#container_detailed .prt table td input{\r
-       height:25px;\r
-       margin:0 0 0 5px;\r
-       font-size:122%;\r
-       font-weight:normal;\r
-       color:#000;\r
-}\r
-\r
-/* Select */\r
-.prt select{\r
-       width:510px;\r
-       height:35px;\r
-       line-height:35px;\r
-       margin:0 20px 10px 0;\r
-       font-size:152%;\r
-       font-weight:bold;\r
-       color:#333;\r
-       border:1px solid #999;\r
-       border-left-color:#ccc;\r
-       border-top-color:#ccc;\r
-       background:url("nuc_input_bk.png") no-repeat;\r
-}\r
-\r
-#container_detailed .prt select{\r
-       height:25px;\r
-       line-height:25px;\r
-       margin:0 20px 10px 0;\r
-       font-size:122%;\r
-}\r
-\r
-/* Button */\r
-.prt .sbt{\r
-       height:40px;\r
-       margin:10px 0;\r
-       text-align:center;\r
-}\r
-.prt .sbt .sbt_sqr,.prt .sbt .sbt_arw{\r
-       height:35px;\r
-       border:none;\r
-       background:#000;\r
-       color:#dedede;\r
-       font-size:136%;\r
-       font-weight:bold;\r
-}\r
-.prt .sbt .sbt_sqr{\r
-       padding:0 20px;\r
-       margin-right:5px;\r
-       border-radius:5px;\r
-}\r
-.prt .sbt .sbt_arw{\r
-       padding:0 30px 0 20px;\r
-       border-radius:5px 0 0 5px;\r
-       background:url("nuc_but_bk_03.png") right top no-repeat #000;\r
-}\r
-.prt .sbt .sbt_sqr:hover{\r
-       color:#ffde00;\r
-       background:#292929;\r
-}\r
-.prt .sbt .sbt_arw:hover{\r
-       color:#ffde00;\r
-       background:url("nuc_but_bk_03.png") right top no-repeat #292929;\r
-}\r
-\r
-/* Text */\r
-#config_text{\r
-       width:100%;\r
-       height:50px;\r
-       border:1px solid gray;\r
-}\r
-\r
-/* Footer */\r
-#footer{\r
-       border-top:1px solid #999;\r
-       text-align:right;\r
-       height:25px;\r
-       margin-top:10px;\r
-       padding:5px 10px 0 0;\r
-       font-size:77%;\r
-}\r
-\r
+/*
+ * style sheet for installer
+ * 
+ * $Id: 
+*/
+
+@charset 'UTF-8';
+/* CSS Document */
+
+/* Layout */
+body{
+       margin:0;
+       padding:0;
+       text-align:center;
+       color:#666;
+}
+#header{
+       width: 100%;
+       height:40px;
+       background:#000;
+       position: fixed;  
+       top:0;  
+       left:0;  
+}
+#container,#container_detailed,#footer,#navigation{
+       margin:0 auto;
+       text-align:left;
+       border-width:0 1px;
+}
+#navigation{
+       width:800px;
+       height:40px;
+}
+#container,#container_detailed{
+       width:550px;
+       padding:40px 20px 0 30px;
+}
+#footer{
+       width:600px;
+}
+
+/* Common Settings */
+p{
+       margin:20px 0;
+}
+img{
+       border:none;
+}
+a{
+       text-decoration:none;
+}
+pre{
+       font-size: small;
+       line-height: 1em;
+       background-color:#eee;
+       border:1px solid gray;
+       padding: 2px;
+}
+.err{
+       display:block;
+       color:#c00;
+}
+
+/* Top navigation */
+#navigation h1{
+       width:120px;
+       height:35px;
+       margin:0 30px 0 0;
+       padding:4px 0 1px 0;
+       float:left;
+}
+#navigation ul{
+       margin:0 100px 0 0; 
+       padding:18px 0 2px 0;
+       height:20px;
+       list-style-type:none;
+}
+#navigation li{
+       float:left;
+       font-size:93%;
+       height:20px;
+}
+#navigation li.rightbox{
+       float:right;
+}
+#navigation li,#navigation a{
+       color:#dedede;
+}
+#navigation li.gry{
+       color:#787878;
+}
+#navigation a:hover{
+       color:#fff;
+}
+
+/* Content */
+#container h2,#container_detailed h2{
+       line-height:20px;
+       height:20px;
+       margin:0 -20px 0 -30px;
+       padding:6px 0 4px 35px;
+       background:url("nuc_h2_bk.png") 4px 4px no-repeat #d0d0d0;
+       font-size:136%;
+       color:#454545;
+}
+
+/* Form table */
+.prt table{
+       width: 100%;
+       margin-bottom:20px;
+}
+.prt table th{
+       font-size:99%;
+       text-align:right;
+       width:135px;
+       height:40px;
+}
+.prt table th .nam{
+       margin:5px 0 0 0;
+       padding:5px 0 0 0;
+       height:15px;
+       line-height:15px;
+       font-weight:bold;
+       color:#454545;
+}
+.prt table th .sub{
+       display:block;
+       margin:0;
+       padding:0 0 5px 0;
+       height:10px;
+       line-height:10px;
+       font-size:65%;
+       font-weight:normal;
+       color:#666;
+}
+.prt table td input{
+       width:390px;
+       height:35px;
+       margin:0 0 0 5px;
+       font-size:182%;
+       font-weight:bold;
+       color:#333;
+       background:url("nuc_input_bk.png") no-repeat;
+       border:1px solid #999;
+       border-right-color:#ccc;
+       border-bottom-color:#ccc;
+}
+
+#container_detailed .prt table td input{
+       height:25px;
+       margin:0 0 0 5px;
+       font-size:122%;
+       font-weight:normal;
+       color:#000;
+}
+
+/* Select */
+.prt select{
+       width:510px;
+       height:35px;
+       line-height:35px;
+       margin:0 20px 10px 0;
+       font-size:152%;
+       font-weight:bold;
+       color:#333;
+       border:1px solid #999;
+       border-left-color:#ccc;
+       border-top-color:#ccc;
+       background:url("nuc_input_bk.png") no-repeat;
+}
+
+#container_detailed .prt select{
+       height:25px;
+       line-height:25px;
+       margin:0 20px 10px 0;
+       font-size:122%;
+}
+
+/* Button */
+.prt .sbt{
+       height:40px;
+       margin:10px 0;
+       text-align:center;
+}
+.prt .sbt .sbt_sqr,.prt .sbt .sbt_arw{
+       height:35px;
+       border:none;
+       background:#000;
+       color:#dedede;
+       font-size:136%;
+       font-weight:bold;
+}
+.prt .sbt .sbt_sqr{
+       padding:0 20px;
+       margin-right:5px;
+       border-radius:5px;
+}
+.prt .sbt .sbt_arw{
+       padding:0 30px 0 20px;
+       border-radius:5px 0 0 5px;
+       background:url("nuc_but_bk_03.png") right top no-repeat #000;
+}
+.prt .sbt .sbt_sqr:hover{
+       color:#ffde00;
+       background:#292929;
+}
+.prt .sbt .sbt_arw:hover{
+       color:#ffde00;
+       background:url("nuc_but_bk_03.png") right top no-repeat #292929;
+}
+
+/* Text */
+#config_text{
+       width:100%;
+       height:50px;
+       border:1px solid gray;
+}
+
+/* Footer */
+#footer{
+       border-top:1px solid #999;
+       text-align:right;
+       height:25px;
+       margin-top:10px;
+       padding:5px 10px 0 0;
+       font-size:77%;
+}
+
index 13a56b1..dcfa4c2 100644 (file)
-                   GNU GENERAL PUBLIC LICENSE\r
-                      Version 2, June 1991\r
-\r
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.\r
-                       59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
- Everyone is permitted to copy and distribute verbatim copies\r
- of this license document, but changing it is not allowed.\r
-\r
-                           Preamble\r
-\r
-  The licenses for most software are designed to take away your\r
-freedom to share and change it.  By contrast, the GNU General Public\r
-License is intended to guarantee your freedom to share and change free\r
-software--to make sure the software is free for all its users.  This\r
-General Public License applies to most of the Free Software\r
-Foundation's software and to any other program whose authors commit to\r
-using it.  (Some other Free Software Foundation software is covered by\r
-the GNU Library General Public License instead.)  You can apply it to\r
-your programs, too.\r
-\r
-  When we speak of free software, we are referring to freedom, not\r
-price.  Our General Public Licenses are designed to make sure that you\r
-have the freedom to distribute copies of free software (and charge for\r
-this service if you wish), that you receive source code or can get it\r
-if you want it, that you can change the software or use pieces of it\r
-in new free programs; and that you know you can do these things.\r
-\r
-  To protect your rights, we need to make restrictions that forbid\r
-anyone to deny you these rights or to ask you to surrender the rights.\r
-These restrictions translate to certain responsibilities for you if you\r
-distribute copies of the software, or if you modify it.\r
-\r
-  For example, if you distribute copies of such a program, whether\r
-gratis or for a fee, you must give the recipients all the rights that\r
-you have.  You must make sure that they, too, receive or can get the\r
-source code.  And you must show them these terms so they know their\r
-rights.\r
-\r
-  We protect your rights with two steps: (1) copyright the software, and\r
-(2) offer you this license which gives you legal permission to copy,\r
-distribute and/or modify the software.\r
-\r
-  Also, for each author's protection and ours, we want to make certain\r
-that everyone understands that there is no warranty for this free\r
-software.  If the software is modified by someone else and passed on, we\r
-want its recipients to know that what they have is not the original, so\r
-that any problems introduced by others will not reflect on the original\r
-authors' reputations.\r
-\r
-  Finally, any free program is threatened constantly by software\r
-patents.  We wish to avoid the danger that redistributors of a free\r
-program will individually obtain patent licenses, in effect making the\r
-program proprietary.  To prevent this, we have made it clear that any\r
-patent must be licensed for everyone's free use or not licensed at all.\r
-\r
-  The precise terms and conditions for copying, distribution and\r
-modification follow.\r
-\r
-                   GNU GENERAL PUBLIC LICENSE\r
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\r
-\r
-  0. This License applies to any program or other work which contains\r
-a notice placed by the copyright holder saying it may be distributed\r
-under the terms of this General Public License.  The "Program", below,\r
-refers to any such program or work, and a "work based on the Program"\r
-means either the Program or any derivative work under copyright law:\r
-that is to say, a work containing the Program or a portion of it,\r
-either verbatim or with modifications and/or translated into another\r
-language.  (Hereinafter, translation is included without limitation in\r
-the term "modification".)  Each licensee is addressed as "you".\r
-\r
-Activities other than copying, distribution and modification are not\r
-covered by this License; they are outside its scope.  The act of\r
-running the Program is not restricted, and the output from the Program\r
-is covered only if its contents constitute a work based on the\r
-Program (independent of having been made by running the Program).\r
-Whether that is true depends on what the Program does.\r
-\r
-  1. You may copy and distribute verbatim copies of the Program's\r
-source code as you receive it, in any medium, provided that you\r
-conspicuously and appropriately publish on each copy an appropriate\r
-copyright notice and disclaimer of warranty; keep intact all the\r
-notices that refer to this License and to the absence of any warranty;\r
-and give any other recipients of the Program a copy of this License\r
-along with the Program.\r
-\r
-You may charge a fee for the physical act of transferring a copy, and\r
-you may at your option offer warranty protection in exchange for a fee.\r
-\r
-  2. You may modify your copy or copies of the Program or any portion\r
-of it, thus forming a work based on the Program, and copy and\r
-distribute such modifications or work under the terms of Section 1\r
-above, provided that you also meet all of these conditions:\r
-\r
-    a) You must cause the modified files to carry prominent notices\r
-    stating that you changed the files and the date of any change.\r
-\r
-    b) You must cause any work that you distribute or publish, that in\r
-    whole or in part contains or is derived from the Program or any\r
-    part thereof, to be licensed as a whole at no charge to all third\r
-    parties under the terms of this License.\r
-\r
-    c) If the modified program normally reads commands interactively\r
-    when run, you must cause it, when started running for such\r
-    interactive use in the most ordinary way, to print or display an\r
-    announcement including an appropriate copyright notice and a\r
-    notice that there is no warranty (or else, saying that you provide\r
-    a warranty) and that users may redistribute the program under\r
-    these conditions, and telling the user how to view a copy of this\r
-    License.  (Exception: if the Program itself is interactive but\r
-    does not normally print such an announcement, your work based on\r
-    the Program is not required to print an announcement.)\r
-\r
-These requirements apply to the modified work as a whole.  If\r
-identifiable sections of that work are not derived from the Program,\r
-and can be reasonably considered independent and separate works in\r
-themselves, then this License, and its terms, do not apply to those\r
-sections when you distribute them as separate works.  But when you\r
-distribute the same sections as part of a whole which is a work based\r
-on the Program, the distribution of the whole must be on the terms of\r
-this License, whose permissions for other licensees extend to the\r
-entire whole, and thus to each and every part regardless of who wrote it.\r
-\r
-Thus, it is not the intent of this section to claim rights or contest\r
-your rights to work written entirely by you; rather, the intent is to\r
-exercise the right to control the distribution of derivative or\r
-collective works based on the Program.\r
-\r
-In addition, mere aggregation of another work not based on the Program\r
-with the Program (or with a work based on the Program) on a volume of\r
-a storage or distribution medium does not bring the other work under\r
-the scope of this License.\r
-\r
-  3. You may copy and distribute the Program (or a work based on it,\r
-under Section 2) in object code or executable form under the terms of\r
-Sections 1 and 2 above provided that you also do one of the following:\r
-\r
-    a) Accompany it with the complete corresponding machine-readable\r
-    source code, which must be distributed under the terms of Sections\r
-    1 and 2 above on a medium customarily used for software interchange; or,\r
-\r
-    b) Accompany it with a written offer, valid for at least three\r
-    years, to give any third party, for a charge no more than your\r
-    cost of physically performing source distribution, a complete\r
-    machine-readable copy of the corresponding source code, to be\r
-    distributed under the terms of Sections 1 and 2 above on a medium\r
-    customarily used for software interchange; or,\r
-\r
-    c) Accompany it with the information you received as to the offer\r
-    to distribute corresponding source code.  (This alternative is\r
-    allowed only for noncommercial distribution and only if you\r
-    received the program in object code or executable form with such\r
-    an offer, in accord with Subsection b above.)\r
-\r
-The source code for a work means the preferred form of the work for\r
-making modifications to it.  For an executable work, complete source\r
-code means all the source code for all modules it contains, plus any\r
-associated interface definition files, plus the scripts used to\r
-control compilation and installation of the executable.  However, as a\r
-special exception, the source code distributed need not include\r
-anything that is normally distributed (in either source or binary\r
-form) with the major components (compiler, kernel, and so on) of the\r
-operating system on which the executable runs, unless that component\r
-itself accompanies the executable.\r
-\r
-If distribution of executable or object code is made by offering\r
-access to copy from a designated place, then offering equivalent\r
-access to copy the source code from the same place counts as\r
-distribution of the source code, even though third parties are not\r
-compelled to copy the source along with the object code.\r
-\r
-  4. You may not copy, modify, sublicense, or distribute the Program\r
-except as expressly provided under this License.  Any attempt\r
-otherwise to copy, modify, sublicense or distribute the Program is\r
-void, and will automatically terminate your rights under this License.\r
-However, parties who have received copies, or rights, from you under\r
-this License will not have their licenses terminated so long as such\r
-parties remain in full compliance.\r
-\r
-  5. You are not required to accept this License, since you have not\r
-signed it.  However, nothing else grants you permission to modify or\r
-distribute the Program or its derivative works.  These actions are\r
-prohibited by law if you do not accept this License.  Therefore, by\r
-modifying or distributing the Program (or any work based on the\r
-Program), you indicate your acceptance of this License to do so, and\r
-all its terms and conditions for copying, distributing or modifying\r
-the Program or works based on it.\r
-\r
-  6. Each time you redistribute the Program (or any work based on the\r
-Program), the recipient automatically receives a license from the\r
-original licensor to copy, distribute or modify the Program subject to\r
-these terms and conditions.  You may not impose any further\r
-restrictions on the recipients' exercise of the rights granted herein.\r
-You are not responsible for enforcing compliance by third parties to\r
-this License.\r
-\r
-  7. If, as a consequence of a court judgment or allegation of patent\r
-infringement or for any other reason (not limited to patent issues),\r
-conditions are imposed on you (whether by court order, agreement or\r
-otherwise) that contradict the conditions of this License, they do not\r
-excuse you from the conditions of this License.  If you cannot\r
-distribute so as to satisfy simultaneously your obligations under this\r
-License and any other pertinent obligations, then as a consequence you\r
-may not distribute the Program at all.  For example, if a patent\r
-license would not permit royalty-free redistribution of the Program by\r
-all those who receive copies directly or indirectly through you, then\r
-the only way you could satisfy both it and this License would be to\r
-refrain entirely from distribution of the Program.\r
-\r
-If any portion of this section is held invalid or unenforceable under\r
-any particular circumstance, the balance of the section is intended to\r
-apply and the section as a whole is intended to apply in other\r
-circumstances.\r
-\r
-It is not the purpose of this section to induce you to infringe any\r
-patents or other property right claims or to contest validity of any\r
-such claims; this section has the sole purpose of protecting the\r
-integrity of the free software distribution system, which is\r
-implemented by public license practices.  Many people have made\r
-generous contributions to the wide range of software distributed\r
-through that system in reliance on consistent application of that\r
-system; it is up to the author/donor to decide if he or she is willing\r
-to distribute software through any other system and a licensee cannot\r
-impose that choice.\r
-\r
-This section is intended to make thoroughly clear what is believed to\r
-be a consequence of the rest of this License.\r
-\r
-  8. If the distribution and/or use of the Program is restricted in\r
-certain countries either by patents or by copyrighted interfaces, the\r
-original copyright holder who places the Program under this License\r
-may add an explicit geographical distribution limitation excluding\r
-those countries, so that distribution is permitted only in or among\r
-countries not thus excluded.  In such case, this License incorporates\r
-the limitation as if written in the body of this License.\r
-\r
-  9. The Free Software Foundation may publish revised and/or new versions\r
-of the General Public License from time to time.  Such new versions will\r
-be similar in spirit to the present version, but may differ in detail to\r
-address new problems or concerns.\r
-\r
-Each version is given a distinguishing version number.  If the Program\r
-specifies a version number of this License which applies to it and "any\r
-later version", you have the option of following the terms and conditions\r
-either of that version or of any later version published by the Free\r
-Software Foundation.  If the Program does not specify a version number of\r
-this License, you may choose any version ever published by the Free Software\r
-Foundation.\r
-\r
-  10. If you wish to incorporate parts of the Program into other free\r
-programs whose distribution conditions are different, write to the author\r
-to ask for permission.  For software which is copyrighted by the Free\r
-Software Foundation, write to the Free Software Foundation; we sometimes\r
-make exceptions for this.  Our decision will be guided by the two goals\r
-of preserving the free status of all derivatives of our free software and\r
-of promoting the sharing and reuse of software generally.\r
-\r
-                           NO WARRANTY\r
-\r
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY\r
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN\r
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES\r
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED\r
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS\r
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE\r
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,\r
-REPAIR OR CORRECTION.\r
-\r
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\r
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR\r
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,\r
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING\r
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED\r
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY\r
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER\r
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE\r
-POSSIBILITY OF SUCH DAMAGES.\r
-\r
-                    END OF TERMS AND CONDITIONS\r
-\r
-           How to Apply These Terms to Your New Programs\r
-\r
-  If you develop a new program, and you want it to be of the greatest\r
-possible use to the public, the best way to achieve this is to make it\r
-free software which everyone can redistribute and change under these terms.\r
-\r
-  To do so, attach the following notices to the program.  It is safest\r
-to attach them to the start of each source file to most effectively\r
-convey the exclusion of warranty; and each file should have at least\r
-the "copyright" line and a pointer to where the full notice is found.\r
-\r
-    <one line to give the program's name and a brief idea of what it does.>\r
-    Copyright (C) <year>  <name of author>\r
-\r
-    This program is free software; you can redistribute it and/or modify\r
-    it under the terms of the GNU General Public License as published by\r
-    the Free Software Foundation; either version 2 of the License, or\r
-    (at your option) any later version.\r
-\r
-    This program is distributed in the hope that it will be useful,\r
-    but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
-    GNU General Public License for more details.\r
-\r
-    You should have received a copy of the GNU General Public License\r
-    along with this program; if not, write to the Free Software\r
-    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
-\r
-\r
-Also add information on how to contact you by electronic and paper mail.\r
-\r
-If the program is interactive, make it output a short notice like this\r
-when it starts in an interactive mode:\r
-\r
-    Gnomovision version 69, Copyright (C) year name of author\r
-    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\r
-    This is free software, and you are welcome to redistribute it\r
-    under certain conditions; type `show c' for details.\r
-\r
-The hypothetical commands `show w' and `show c' should show the appropriate\r
-parts of the General Public License.  Of course, the commands you use may\r
-be called something other than `show w' and `show c'; they could even be\r
-mouse-clicks or menu items--whatever suits your program.\r
-\r
-You should also get your employer (if you work as a programmer) or your\r
-school, if any, to sign a "copyright disclaimer" for the program, if\r
-necessary.  Here is a sample; alter the names:\r
-\r
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the program\r
-  `Gnomovision' (which makes passes at compilers) written by James Hacker.\r
-\r
-  <signature of Ty Coon>, 1 April 1989\r
-  Ty Coon, President of Vice\r
-\r
-This General Public License does not permit incorporating your program into\r
-proprietary programs.  If your program is a subroutine library, you may\r
-consider it more useful to permit linking proprietary applications with the\r
-library.  If this is what you want to do, use the GNU Library General\r
-Public License instead of this License.\r
+                   GNU GENERAL PUBLIC LICENSE
+                      Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+                       59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                           Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                   GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+                           NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+                    END OF TERMS AND CONDITIONS
+
+           How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
index 6278c97..836b920 100644 (file)
@@ -25,11 +25,32 @@ $CONF['UsingAdminArea'] = 1;
 // include all classes and config data
 include('../config.php');
 
+<<<<<<< HEAD
+=======
+// get skin object
+$skinid = $member->bookmarklet;
+if ( !Skin::existsID($skinid) )
+{
+       $skinid = $CONF['BookmarkletSkin'];
+       if ( !Skin::existsID($skinid) )
+       {
+               sendContentType('text/html');
+               echo _ERROR_SKIN;
+               exit;
+       }
+}
+$skin =& $manager->getSkin($skinid, 'AdminActions', 'AdminSkin');
+
+>>>>>>> skinnable-master
 // check logged-in or pass through
 $action = requestVar('action');
 if ( !$member->isLoggedIn() )
 {
+<<<<<<< HEAD
        bm_loginAndPassThrough($action);
+=======
+       bm_loginAndPassThrough($skin, $action);
+>>>>>>> skinnable-master
        exit;
 }
 else if ( $action == 'login')
@@ -49,16 +70,19 @@ else if ( $action == '' )
        $action = 'add';
 }
 
+<<<<<<< HEAD
 // send HTTP 1.1 message header for Content-Type
 sendContentType('text/html', 'bookmarklet-' . $action);
 
+=======
+>>>>>>> skinnable-master
 // check ticket
 $aActionsNotToCheck = array('login', 'add', 'edit');
 if ( !in_array($action, $aActionsNotToCheck) )
 {
        if ( !$manager->checkTicket() )
        {
-               bm_doError(_ERROR_BADTICKET);
+               bm_doError($skin, _ERROR_BADTICKET);
        }
 }
 
@@ -67,32 +91,32 @@ switch ( $action )
 {
        // adds the item for real
        case 'additem':
-               bm_doAddItem();
+               bm_doAddItem($skin);
                break;
        
        // shows the edit item form
        case 'edit':
-               bm_doEditForm();
+               bm_doEditForm($skin);
                break;
        
        // edits the item for real
        case 'edititem':
-               bm_doEditItem();
+               bm_doEditItem($skin);
                break;
        
        // on login, 'action' gets changed to 'nextaction'
        case 'login':
-               bm_doError('Something went wrong');
+               bm_doError($skin, 'Something went wrong');
                break;
        
        // shows the fill in form
        case 'add':
        default:
-               bm_doShowForm();
+               bm_doShowForm($skin);
                break;
 }
 
-function bm_doAddItem()
+function bm_doAddItem($skin)
 {
        global $member, $manager, $CONF;
        
@@ -101,7 +125,7 @@ function bm_doAddItem()
        
        if ( $result['status'] == 'error' )
        {
-               bm_doError($result['message']);
+               bm_doError($skin, $result['message']);
        }
        
        $blogid = getBlogIDFromItemID($result['itemid']);
@@ -118,12 +142,16 @@ function bm_doAddItem()
                $extrahead = '';
        }
        
+<<<<<<< HEAD
        bm_message(_ITEM_ADDED, _ITEM_ADDED, $message,$extrahead);
+=======
+       bm_message($skin, _ITEM_ADDED, $message,$extrahead);
+>>>>>>> skinnable-master
        
        return;
 }
 
-function bm_doEditItem()
+function bm_doEditItem($skin)
 {
        global $member, $manager, $CONF;
        
@@ -133,7 +161,7 @@ function bm_doEditItem()
        // only allow if user is allowed to alter item
        if ( !$member->canUpdateItem($itemid, $catid) )
        {
-               bm_doError(_ERROR_DISALLOWED);
+               bm_doError($skin, _ERROR_DISALLOWED);
        }
        
        $body = postVar('body');
@@ -163,7 +191,7 @@ function bm_doEditItem()
                // show error when sth goes wrong
                if ( !$catid )
                {
-                       bm_doError('Could not create new category');
+                       bm_doError($skin, 'Could not create new category');
                }
        }
        
@@ -186,7 +214,7 @@ function bm_doEditItem()
                        $timestamp = 0;
                        break;
                default:
-                       bm_doError('Something went wrong');
+                       bm_doError($skin, 'Something went wrong');
        }
        
        // update item for real
@@ -197,27 +225,42 @@ function bm_doEditItem()
                Item::delete($draftid);
        }
        
-       // show success message
-       if ( $catid != intPostVar('catid') )
+       if ( $result['status'] == 'newcategory' )
        {
-               bm_message(_ITEM_UPDATED, _ITEM_UPDATED, 'Item was added, and a new category was created. <a href="index.php?action=categoryedit&amp;blogid=' . $blog->getID() . '&amp;catid=' . $catid . '" onclick="if (event &amp;&amp; event.preventDefault) event.preventDefault(); window.open(this.href); return false;" title="Opens in new window">Click here to edit the name and description of the category.</a>', '');
+               $href           = "index.php?action=categoryedit&amp;blogid={$blogid}&amp;catid={$result['catid']}";
+               $onclick        = 'if (event &amp;&amp; event.preventDefault) event.preventDefault(); window.open(this.href); return false;';
+               $title          = _BOOKMARKLET_NEW_WINDOW;
+               $aTag           = " <a href=\"{$href}\" onclick=\"{$onclick}\" title=\"{$title}\">";
+               $message        = _BOOKMARKLET_NEW_CATEGORY . $aTag . _BOOKMARKLET_NEW_CATEGORY_EDIT . '</a>';
        }
        else
        {
-               bm_message(_ITEM_UPDATED, _ITEM_UPDATED, _ITEM_UPDATED, '');
+               $message = _ITEM_ADDED;
        }
        
+<<<<<<< HEAD
        return;
 }
 
 function bm_loginAndPassThrough($action='add')
+=======
+       // show success message
+       bm_message($skin, _ITEM_ADDED, $message, '');
+       return;
+}
+
+function bm_loginAndPassThrough($skin, $action='add')
+>>>>>>> skinnable-master
 {
+       /*
+        * TODO: これを出力させる
        $blogid = intRequestVar('blogid');
        $itemid = intRequestVar('itemid');
        $log_text = requestVar('logtext');
        $log_link = requestVar('loglink');
        $log_linktitle = requestVar('loglinktitle');
        
+<<<<<<< HEAD
        echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n";
        echo "<html xmlns=\"http://www.w3.org/1999/xhtml\">\n";
        echo "<head>\n";
@@ -232,23 +275,31 @@ function bm_loginAndPassThrough($action='add')
        echo "<p>\n";
        echo _LOGINFORM_NAME . "<input type=\"text\" name=\"login\" value=\"\" /><br />\n";
        echo _LOGINFORM_PWD . "<input type=\"password\" name=\"password\" value=\"\" /><br />\n";
+=======
+>>>>>>> skinnable-master
        echo '<input type="hidden" name="blogid" value="' . Entity::hsc($blogid). '" />' . "\n";
        echo '<input type="hidden" name="itemid" value="' . Entity::hsc($itemid). '" />' . "\n";
        echo '<input type="hidden" name="logtext" value="' . Entity::hsc($log_text) . '" />' . "\n";
        echo '<input type="hidden" name="loglink" value="' . Entity::hsc($log_link) . '" />' . "\n";
        echo '<input type="hidden" name="loglinktitle" value="' . Entity::hsc($log_linktitle) . '" />' . "\n";
        echo "<input type=\"hidden\" name=\"nextaction\" value=\"{$action}\" />\n";
+<<<<<<< HEAD
        echo '<button type="submit" name="action" value="login">' . _LOGIN . "</button>\n";
        echo "</p>\n";
        echo "</form>\n";
        echo '<p><a href="bookmarklet.php" onclick="window.close();">' . _POPUP_CLOSE . "</a></p>\n";
        echo "</body>\n";
        echo "</html>\n";
+=======
+       */
+       
+       $skin->parse('showlogin');
+>>>>>>> skinnable-master
        
        return;
 }
 
-function bm_doShowForm()
+function bm_doShowForm($skin)
 {
        global $manager, $member;
        
@@ -259,18 +310,24 @@ function bm_doShowForm()
        
        if ( !Blog::existsID($blogid) )
        {
-               bm_doError(_ERROR_NOSUCHBLOG);
+               bm_doError($skin, _ERROR_NOSUCHBLOG);
        }
+<<<<<<< HEAD
        else
        {
                $blog =& $manager->getBlog($blogid);
        }
        
        if ( !$member->isTeamMember($blogid) )
+=======
+       else if ( !$member->isTeamMember($blogid) )
+>>>>>>> skinnable-master
        {
-               bm_doError(_ERROR_NOTONTEAM);
+               bm_doError($skin, _ERROR_NOTONTEAM);
        }
        
+       $blog =& $manager->getBlog($blogid);
+       
        $logje = '';
        
        if ( $log_text )
@@ -288,6 +345,7 @@ function bm_doShowForm()
                $logje .= '<a href="' . Entity::hsc($log_link) . '">' . Entity::hsc($log_linktitle) . '</a>';
        }
        
+<<<<<<< HEAD
        $variables = array();
        $variables['body'] = $logje;
        $variables['title'] = Entity::hsc($log_linktitle);
@@ -301,10 +359,34 @@ function bm_doShowForm()
        $parser = new Parser($handler);
        $parser->parse($contents);
        
+=======
+       $item = array();
+       $item['body'] = $logje;
+       $item['title'] = Entity::hsc($log_linktitle);
+       
+       $data = array(
+               'blog'          => &$blog,
+               'item'          => &$item,
+               'contents'      => &$item
+       );
+       $manager->notify('PreAddItemForm', $data);
+       
+       if ( $blog->convertBreaks() )
+       {
+               $item['body'] = removeBreaks($item['body']);
+       }
+       
+       Admin::$blog = &$blog;
+       Admin::$contents = &$item;
+       
+       Admin::$action = 'createitem';
+       $skin->parse('createitem');
+       
+>>>>>>> skinnable-master
        return;
 }
 
-function bm_doEditForm()
+function bm_doEditForm($skin)
 {
        global $member, $manager;
        
@@ -312,18 +394,29 @@ function bm_doEditForm()
        
        if ( !$manager->existsItem($itemid, 0, 0) )
        {
-               bm_doError(_ERROR_NOSUCHITEM);
+               bm_doError($skin, _ERROR_NOSUCHITEM);
        }
-       
-       if ( !$member->canAlterItem($itemid) )
+       else if ( !$member->canAlterItem($itemid) )
        {
-               bm_doError(_ERROR_DISALLOWED);
+               bm_doError($skin, _ERROR_DISALLOWED);
        }
        
+<<<<<<< HEAD
        $variables =& $manager->getItem($itemid, 1, 1);
+=======
+>>>>>>> skinnable-master
        $blog =& $manager->getBlog(getBlogIDFromItemID($itemid) );
+       $item =& $manager->getItem($itemid, 1, 1);
        
+<<<<<<< HEAD
        $manager->notify('PrepareItemForEdit', array('item' => &$variables) );
+=======
+       $data = array(
+               'blog' => &$blog,
+               'item' => &$item
+       );
+       $manager->notify('PrepareItemForEdit', $data);
+>>>>>>> skinnable-master
        
        if ( $blog->convertBreaks() )
        {
@@ -331,6 +424,7 @@ function bm_doEditForm()
                $variables['more'] = removeBreaks($variables['more']);
        }
        
+<<<<<<< HEAD
        $handler = new PageFactory($blog);
        $handler->setVariables($variables);
        
@@ -341,15 +435,25 @@ function bm_doEditForm()
        
        return;
 }
+=======
+       Admin::$blog = &$blog;
+       Admin::$contents = &$item;
+       
+       Admin::$action = 'itemedit';
+       $skin->parse('itemedit');
+       
+       return;}
+>>>>>>> skinnable-master
 
-function bm_doError($msg)
+function bm_doError($skin, $msg)
 {
-       bm_message(_ERROR, _ERRORMSG, $msg);
+       bm_message($skin, _ERRORMSG, $msg);
        die;
 }
 
-function bm_message($title, $head, $msg, $extrahead = '')
+function bm_message($skin, $title, $msg, $extrahead = '')
 {
+<<<<<<< HEAD
        echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n";
        echo "<html xmlns=\"http://www.w3.org/1999/xhtml\">\n";
        echo "<head>\n";
@@ -365,12 +469,18 @@ function bm_message($title, $head, $msg, $extrahead = '')
        echo '<p><a href="bookmarklet.php" onclick="window.close();window.opener.location.reload();">' . _POPUP_CLOSE . "</a></p>\n";
        echo "</body>\n";
        echo "</html>\n";
+=======
+       Admin::$extrahead = $extrahead;
+       Admin::$headMess = $msg;
+       $skin->parse('adminerrorpage');
+>>>>>>> skinnable-master
        
        return;
 }
 
-function bm_style()
+function bm_doContextMenuCode($width=600, $height=500)
 {
+<<<<<<< HEAD
        echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"styles/bookmarklet.css\" />\n";
        echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"styles/addedit.css\" />\n";
        return;
@@ -380,6 +490,9 @@ function bm_doContextMenuCode($width=600, $height=500)
 {
        global $CONF;
        
+=======
+       global $CONF;   
+>>>>>>> skinnable-master
        $blogid = (integer) intGetVar('blogid');
        
        echo "<script type=\"text/javascript\" defer=\"defer\">\n";
index 18b5ab3..f7ba823 100644 (file)
@@ -24,7 +24,7 @@
  *
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2006 The Nucleus Group
- * @version $Id: blogger.php 846 2005-12-30 10:38:32Z dekarma $
+ * @version $Id: blogger.php 1692 2012-03-10 11:22:09Z sakamocchi $
  */
 
 include("../../config.php");
index 72c70bf..5ab25df 100644 (file)
@@ -20,7 +20,7 @@
  *
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2006 The Nucleus Group
- * @version $Id: bloggercaif.php 1624 2012-01-09 11:36:20Z sakamocchi $
+ * @version $Id: bloggercaif.php 1889 2012-06-17 08:46:45Z sakamocchi $
  */
 
 include("../../config.php");
@@ -220,7 +220,7 @@ while ($a_name = array_pop($authors)) {
                <?php                   $query =  'SELECT mname as text, mnumber as value FROM '.sql_table('member');
 
                        $template['name'] = 'memberid[' . $idx . ']';
-                       showlist($query,'select',$template);
+                       echo showlist($query,'select',$template);
                ?>
                        </td>
                        <td>
@@ -247,7 +247,7 @@ while ($a_name = array_pop($authors)) {
                        <?php                                   $query =  'SELECT bname as text, bnumber as value FROM '.sql_table('blog');
                                        $template['name'] = 'blogid';
                                        $template['selected'] = $CONF['DefaultBlog'];
-                                       showlist($query,'select',$template);
+                                       echo showlist($query,'select',$template);
                        ?>
                </div>
                <div>
@@ -258,7 +258,7 @@ while ($a_name = array_pop($authors)) {
                                <?php                                   $query =  'SELECT mname as text, mnumber as value FROM '.sql_table('member');
 
                                        $template['name'] = 'newowner';
-                                       showlist($query,'select',$template);
+                                       echo showlist($query,'select',$template);
                                ?>
                                </li>
                        </ul>
index cf28fb5..6f27dfd 100644 (file)
@@ -12,7 +12,7 @@
 /**
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2006 The Nucleus Group
- * @version $Id: functions.inc.php 1624 2012-01-09 11:36:20Z sakamocchi $
+ * @version $Id: functions.inc.php 1889 2012-06-17 08:46:45Z sakamocchi $
  */
 
 // try to set a long timeout time
@@ -228,8 +228,10 @@ class BlogImport {
                }
 
                // - call callback
-               if ($this->strCallback && function_exists($this->strCallback)) {
-                       call_user_func_array($this->strCallback, array(&$aData));
+               if ( $this->strCallback && function_exists($this->strCallback) )
+               {
+                       $params = array(&$aData);
+                       call_user_func_array($this->strCallback, $params);
                }
 
                if ($this->bDebug) {
@@ -294,7 +296,7 @@ class BlogImport {
                                $query =  'SELECT bname as text, bnumber as value FROM '.sql_table('blog');
                                $template['name'] = 'blogid';
                                $template['selected'] = $CONF['DefaultBlog'];
-                               showlist($query,'select',$template);
+                               echo showlist($query,'select',$template);
                                break;
 // ----------------------------------------------------------------------------------------
                        case 'ConvertSelectMembers':
@@ -796,34 +798,45 @@ class BlogImport {
        }
 
        function sql_addToItem($title, $body, $more, $blogid, $authorid, $timestamp, $closed, $category, $karmapos, $karmaneg) {
-               $title          = trim(addslashes($title));
-               $body           = trim(addslashes($body));
-               $more           = trim(addslashes($more));
-               $timestamp      = date("Y-m-d H:i:s", $timestamp);
+               $title          = DB::quoteValue(trim($title));
+               $body           = DB::quoteValue(trim($body));
+               $more           = DB::quoteValue(trim($more));
+               $timestamp      = DB::formatDateTime($timestamp);
 
                $query = 'INSERT INTO '.sql_table('item').' (ITITLE, IBODY, IMORE, IBLOG, IAUTHOR, ITIME, ICLOSED, IKARMAPOS, IKARMANEG, ICAT) '
-                          . "VALUES ('$title', '$body', '$more', $blogid, $authorid, '$timestamp', $closed, $karmapos, $karmaneg,  $category)";
+                          . "VALUES ($title, $body, $more, $blogid, $authorid, $timestamp, $closed, $karmapos, $karmaneg,  $category)";
 
                if ( DB::execute($query) === FALSE )
                {
+<<<<<<< HEAD
                        die("Error while executing query: " . $query);
+=======
+                       die('Error while executing query: ' . $query);
+>>>>>>> skinnable-master
                }
 
                return DB::getInsertId();
        }
 
        function sql_addToBlog($name, $shortname, $ownerid) {
-               $name           = addslashes($name);
-               $shortname      = addslashes($shortname);
+               $name           = DB::quoteValue($name);
+               $shortname      = DB::quoteValue($shortname);
 
                // create new category first
                DB::execute('INSERT INTO '.sql_table('category')." (CNAME, CDESC) VALUES ('General','Items that do not fit in another category')");
                $defcat = DB::getInsertId();
 
+<<<<<<< HEAD
                $query = 'INSERT INTO '.sql_table('blog')." (BNAME, BSHORTNAME, BCOMMENTS, BMAXCOMMENTS, BDEFCAT) VALUES ('$name','$shortname',1 ,0, $defcat)";
                if ( DB::execute($query) === FALSE )
                {
                        die("Error while executing query: " . $query);
+=======
+               $query = 'INSERT INTO '.sql_table('blog')." (BNAME, BSHORTNAME, BCOMMENTS, BMAXCOMMENTS, BDEFCAT) VALUES ($name, $shortname, 1, 0, $defcat)";
+               if ( DB::execute($query) === FALSE )
+               {
+                       die('Error while executing query: ' . $query);
+>>>>>>> skinnable-master
                }
                $id = DB::getInsertId();
 
@@ -837,20 +850,24 @@ class BlogImport {
        }
 
        function sql_addToComments($name, $url, $body, $blogid, $itemid, $memberid, $timestamp, $host, $ip='') {
-               $name           = addslashes($name);
-               $url            = addslashes($url);
-               $body           = trim(addslashes($body));
-               $host           = addslashes($host);
-               $ip             = addslashes($ip);
-               $timestamp      = date("Y-m-d H:i:s", $timestamp);
+               $name           = DB::quoteValue($name);
+               $url            = DB::quoteValue($url);
+               $body           = DB::quoteValue(trim($body));
+               $host           = DB::quoteValue($host);
+               $ip             = DB::quoteValue($ip);
+               $timestamp      = DB::formatDateTime($timestamp);
 
                $query = 'INSERT INTO '.sql_table('comment')
                           . ' (CUSER, CMAIL, CMEMBER, CBODY, CITEM, CTIME, CHOST, CBLOG, CIP) '
-                          . "VALUES ('$name', '$url', $memberid, '$body', $itemid, '$timestamp', '$host', $blogid, '$ip')";
+                          . "VALUES ($name, $url, $memberid, $body, $itemid, $timestamp, $host, $blogid, $ip)";
 
                if ( DB::execute($query) === FALSE )
                {
+<<<<<<< HEAD
                        die("Error while executing query: " . $query);
+=======
+                       die('Error while executing query: ' . $query);
+>>>>>>> skinnable-master
                }
 
                return DB::getInsertId();
@@ -863,7 +880,11 @@ class BlogImport {
 
                if ( DB::execute($query) === FALSE )
                {
+<<<<<<< HEAD
                        die("Error while executing query: " . $query);
+=======
+                       die('Error while executing query: ' . $query);
+>>>>>>> skinnable-master
                }
 
                return DB::getInsertId();
@@ -893,16 +914,20 @@ if ($ver > 250)
 
        // TODO: remove this function (replaced by BlogImport::sql_addToItem)
        function convert_addToItem($title, $body, $more, $blogid, $authorid, $timestamp, $closed, $category, $karmapos, $karmaneg) {
-               $title = trim(addslashes($title));
-               $body = trim(addslashes($body));
-               $more = trim(addslashes($more));
+               $title = DB::quoteValue(trim($title));
+               $body = DB::quoteValue(trim($body));
+               $more = DB::quoteValue(trim($more));
 
                $query = 'INSERT INTO '.sql_table('item').' (ITITLE, IBODY, IMORE, IBLOG, IAUTHOR, ITIME, ICLOSED, IKARMAPOS, IKARMANEG, ICAT) '
-                          . "VALUES ('$title', '$body', '$more', $blogid, $authorid, '$timestamp', $closed, $karmapos, $karmaneg,  $category)";
+                          . "VALUES ($title, $body, $more, $blogid, $authorid, '$timestamp', $closed, $karmapos, $karmaneg,  $category)";
 
                if ( DB::execute($query) === FALSE )
                {
+<<<<<<< HEAD
                        die("Error while executing query: " . $query);
+=======
+                       die('Error while executing query: ' . $query);
+>>>>>>> skinnable-master
                }
 
                return DB::getInsertId();
@@ -911,17 +936,24 @@ if ($ver > 250)
 
        // TODO: remove this function (replaced by BlogImport::sql_addToBlog)
        function convert_addToBlog($name, $shortname, $ownerid) {
-               $name = addslashes($name);
-               $shortname = addslashes($shortname);
+               $name = DB::quoteValue($name);
+               $shortname = DB::quoteValue($shortname);
 
                // create new category first
                DB::execute('INSERT INTO '.sql_table('category')." (CNAME, CDESC) VALUES ('General','Items that do not fit in another categort')");
                $defcat = DB::getInsertId();
 
+<<<<<<< HEAD
                $query = 'INSERT INTO '.sql_table('blog')." (BNAME, BSHORTNAME, BCOMMENTS, BMAXCOMMENTS, BDEFCAT) VALUES ('$name','$shortname',1 ,0, $defcat)";
                if ( DB::execute($query) === FALSE )
                {
                        die("Error while executing query: " . $query);
+=======
+               $query = 'INSERT INTO '.sql_table('blog')." (BNAME, BSHORTNAME, BCOMMENTS, BMAXCOMMENTS, BDEFCAT) VALUES ($name, $shortname, 1, 0, $defcat)";
+               if ( DB::execute($query) === FALSE )
+               {
+                       die('Error while executing query: ' . $query);
+>>>>>>> skinnable-master
                }
                $id = DB::getInsertId();
 
@@ -932,15 +964,15 @@ if ($ver > 250)
 
        // TODO: remove this function (replaced by BlogImport::sql_addToComments)
        function convert_addToComments($name, $url, $body, $blogid, $itemid, $memberid, $timestamp, $host, $ip='') {
-               $name = addslashes($name);
-               $url = addslashes($url);
-               $body = trim(addslashes($body));
-               $host = addslashes($host);
-               $ip = addslashes($ip);
+               $name = DB::quoteValue($name);
+               $url = DB::quoteValue($url);
+               $body = DB::quoteValue(trim($body));
+               $host = DB::quoteValue($host);
+               $ip = DB::quoteValue($ip);
 
                $query = 'INSERT INTO '.sql_table('comment')
                           . ' (CUSER, CMAIL, CMEMBER, CBODY, CITEM, CTIME, CHOST, CBLOG, CIP) '
-                          . "VALUES ('$name', '$url', $memberid, '$body', $itemid, '$timestamp', '$host', $blogid, '$ip')";
+                          . "VALUES ($name, $url, $memberid, $body, $itemid, '$timestamp', $host, $blogid, $ip)";
 
                if ( DB::execute($query) === FALSE )
                {
@@ -994,7 +1026,7 @@ if ($ver > 250)
                <head>
                        <title>Nucleus Convert</title>
                        <style><!--
-                               @import url('../styles/manual.css');
+                               @import url('../styles/documentation/manual.css');
                        --></style>
                </head>
                <body>
index 58f5f7d..2bad4dc 100644 (file)
@@ -24,7 +24,7 @@
  *
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2006 The Nucleus Group
- * @version $Id: genericImport.php 846 2005-12-30 10:38:32Z dekarma $
+ * @version $Id: genericImport.php 1889 2012-06-17 08:46:45Z sakamocchi $
  */
 
 include("../../config.php");
@@ -149,7 +149,7 @@ function gi_assignMembers() {
                        <?php                                   $query =  'SELECT bname as text, bnumber as value FROM '.sql_table('blog');
                                        $template['name'] = 'blogid';
                                        $template['selected'] = $CONF['DefaultBlog'];
-                                       showlist($query,'select',$template);
+                                       echo showlist($query,'select',$template);
                        ?>
                </div>
                <div>
@@ -160,7 +160,7 @@ function gi_assignMembers() {
                                <?php                                   $query =  'SELECT mname as text, mnumber as value FROM '.sql_table('member');
 
                                        $template['name'] = 'newowner';
-                                       showlist($query,'select',$template);
+                                       echo showlist($query,'select',$template);
                                ?>
                                </li>
                        </ul>
index f0bda61..80f0d05 100644 (file)
@@ -22,7 +22,7 @@
  *
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2006 The Nucleus Group
- * @version $Id: greymatter.php 1624 2012-01-09 11:36:20Z sakamocchi $
+ * @version $Id: greymatter.php 1889 2012-06-17 08:46:45Z sakamocchi $
  */
 
 include("../../config.php");
@@ -184,7 +184,7 @@ while ($author = fgets($filehandle,4096)) {
                        $query =  'SELECT mname as text, mnumber as value FROM '.sql_table('member');
 
                        $template['name'] = 'memberid[' . $idx . ']';
-                       showlist($query,'select',$template);
+                       echo showlist($query,'select',$template);
                ?>
                        </td>
                        <td>
@@ -209,7 +209,7 @@ fclose($filehandle);
                                        $query =  'SELECT mname as text, mnumber as value FROM '.sql_table('member');
 
                                        $template['name'] = 'memberid[0]';
-                                       showlist($query,'select',$template);
+                                       echo showlist($query,'select',$template);
                                ?>
                        </td>
                        <td>
@@ -231,7 +231,7 @@ fclose($filehandle);
                        <?php                                   $query =  'SELECT bname as text, bnumber as value FROM '.sql_table('blog');
                                        $template['name'] = 'blogid';
                                        $template['selected'] = $CONF['DefaultBlog'];
-                                       showlist($query,'select',$template);
+                                       echo showlist($query,'select',$template);
                        ?>
                </div>
                <div>
@@ -243,7 +243,7 @@ fclose($filehandle);
                                        $query =  'SELECT mname as text, mnumber as value FROM '.sql_table('member');
 
                                        $template['name'] = 'newowner';
-                                       showlist($query,'select',$template);
+                                       echo showlist($query,'select',$template);
                                ?>
                                </li>
                        </ul>
index 8ed8bff..cb07e39 100644 (file)
@@ -3,7 +3,7 @@
 <head>
        <title>Nucleus Convert</title>
        <style><!--
-               @import url('../styles/manual.css');
+               @import url('../styles/documentation/manual.css');
        --></style>
 </head>
 <body>
index a20f493..b2324ce 100644 (file)
@@ -22,7 +22,7 @@
  *
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2006 The Nucleus Group
- * @version $Id: livejournal.php 1624 2012-01-09 11:36:20Z sakamocchi $
+ * @version $Id: livejournal.php 1889 2012-06-17 08:46:45Z sakamocchi $
  */
 
 include("../../config.php");
@@ -157,7 +157,7 @@ function bc_assignMembers() {
                                   . " FROM ".sql_table('member');
 
                        $template['name'] = 'memberid[' . $idx . ']';
-                       showlist($query,'select',$template);
+                       echo showlist($query,'select',$template);
                ?>
                        </td>
                        <td>
@@ -187,7 +187,7 @@ function bc_assignMembers() {
                                                   . " FROM ".sql_table('blog');
                                        $template['name'] = 'blogid';
                                        $template['selected'] = $CONF['DefaultBlog'];
-                                       showlist($query,'select',$template);
+                                       echo showlist($query,'select',$template);
                        ?>
                </div>
                <div>
@@ -200,7 +200,7 @@ function bc_assignMembers() {
                                                   . " FROM ".sql_table('member');
 
                                        $template['name'] = 'newowner';
-                                       showlist($query,'select',$template);
+                                       echo showlist($query,'select',$template);
                                ?>
                                </li>
                        </ul>
index cb00639..3d933c4 100644 (file)
@@ -25,6 +25,7 @@
 
 include("../../config.php");
 
+<<<<<<< HEAD
 function def($s)
 {
        if ( isset($_POST[$s]) )
@@ -84,6 +85,53 @@ function encoding($s)
        else
                return $s;
 }
+=======
+  function def($s){ 
+    if (isset($_POST[$s])) 
+      echo Entity::hsc($_POST[$s]); 
+    else {
+      if (i18n::strpos($s,'host')!==FALSE) echo "localhost";
+      if (i18n::strpos($s,'username')!==FALSE) echo "root";
+      if (i18n::strpos($s,'wpprefix')!==FALSE) echo "wp_";
+    }
+  }
+  
+  function error($s){
+    global $isok;
+    $isok=false;
+    echo "<h3>Error: $s</h3>";
+  }
+  
+  // line breaks into properly formatted paragraphs
+  function paragraph($text, $br = false) {
+    $text=trim($text);
+    $text = str_replace("\r",'',$text);
+    $text = preg_replace('/&([^#])(?![a-z]{1,8};)/', '&amp;$1', $text);
+    if ($text=="") return "";
+    $text = $text . "\n"; // just to make things a little easier, pad the end
+    $text = preg_replace('|<br/>\s*<br/>|', "\n\n", $text);
+    $text = preg_replace('!(<(?:table|ul|ol|li|pre|form|blockquote|h[1-6])[^>]*>)!', "\n$1", $text); // Space things out a little
+    $text = preg_replace('!(</(?:table|ul|ol|li|pre|form|blockquote|h[1-6])>)!', "$1\n", $text); // Space things out a little
+    $text = preg_replace("/(\r\n|\r)/", "\n", $text); // cross-platform newlines 
+    $text = preg_replace("/\n\n+/", "\n\n", $text); // take care of duplicates
+    $text = preg_replace('/\n?(.+?)(?:\n\s*\n|\z)/s', "\t<p>$1</p>\n", $text); // make paragraphs, including one at the end 
+    $text = preg_replace('|<p>\s*?</p>|', '', $text); // under certain strange conditions it could create a P of entirely whitespace 
+    $text = preg_replace("|<p>(<li.+?)</p>|", "$1", $text); // problem with nested lists
+    // blockquote
+    $text = preg_replace('|<p><blockquote([^>]*)>|i', "<blockquote$1><p>", $text);
+    $text = str_replace('</blockquote></p>', '</p></blockquote>', $text);
+    // now the hard work
+    $text = preg_replace('!<p>\s*(</?(?:table|tr|td|th|div|ul|ol|li|pre|select|form|blockquote|p|h[1-6])[^>]*>)!', "$1", $text);
+    $text = preg_replace('!(</?(?:table|tr|td|th|div|ul|ol|li|pre|select|form|blockquote|p|h[1-6])[^>]*>)\s*</p>|</div>"!', "$1", $text); 
+    if ($br) $text = preg_replace('|(?<!<br />)\s*\n|', "<br />\n", $text); // optionally make line breaks
+    $text = preg_replace('!(</?(?:table|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|select|form|blockquote|p|h[1-6])[^>]*>)\s*<br/>!', "$1", $text);
+    $text = preg_replace('!<br/>(\s*</?(?:p|li|div|th|pre|td|ul|ol)>)!', '$1', $text);
+    // some cleanup
+    $text = str_replace('</p><br />','</p>',$text);
+    $text = str_replace("<br />\n</p>",'</p>',$text);
+    return $text; 
+  }
+>>>>>>> skinnable-master
 
 ?>
 <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
@@ -130,6 +178,7 @@ else
        {
                @mysql_select_db($_POST['wpdatabase'], $linkwp) or error("Cannot select WordPress DB...");
        }
+<<<<<<< HEAD
 
        // connect to Nucleus CMS database
        /*
@@ -189,6 +238,67 @@ else
                }
                echo "</p>";
 
+=======
+
+       // connect to Nucleus CMS database
+       /*
+       $linkblogcms = @mysql_connect($_POST['blogcmshost'],$_POST['blogcmsusername'],$_POST['blogcmspassword'],true);
+       if($linkblogcms==false) 
+         error("Cannot connect to Nucleus DB..");
+       else {
+         @mysql_select_db($_POST['blogcmsdatabase'],$linkblogcms) or error("Cannot select Nucleus DB...");
+       }
+        */
+
+       if ( !$isok )
+       {
+               echo "<p>Please correct these errors first!</p><hr />";
+       }
+       else
+       {
+               /*                 */
+               /* transfer data ! */
+               /*                 */
+               $prefixwp = $_POST['wpprefix'];
+
+               /* *********************************************** */
+               echo "<h2>Getting encoding...</h2>";
+               $query = "SELECT option_value FROM " . $prefixwp . "options WHERE option_name='blog_charset'";
+               $querywp = mysql_query($query, $linkwp) or die($query);
+               if ( $row = mysql_fetch_object($querywp) )
+                       $input = $row->option_value;
+               else
+                       $input = "utf-8";
+               echo "<p>Encoding: $input</p>";
+
+               /* *********************************************** */
+               echo "<h2>Transfering categories...</h2>";
+               DB::execute("DELETE FROM " . sql_table('category') . " WHERE cdesc='@wordpress'");
+               $total_num = DB::getValue("SELECT count(*) as result FROM " . sql_table('category'));
+               $catdd = $total_num;
+               $total_num++;
+
+               $query = "SELECT * FROM " . $prefixwp . "term_taxonomy , " . $prefixwp . "terms WHERE " . $prefixwp . "term_taxonomy.term_taxonomy_id = "
+                       . $prefixwp . "terms.term_id AND " . $prefixwp . "term_taxonomy.taxonomy='category'";
+               $querywp = mysql_query($query, $linkwp) or die($query);
+               echo "<p>rows to transfer: " . mysql_num_rows($querywp) . "</p>";
+               echo "<p>";
+               $cate_map = array();
+               while ( $row = mysql_fetch_object($querywp) )
+               {
+                       echo $total_num . ", ";
+                       $cate_map[$row->term_id] = $total_num;
+                       $query = sprintf("INSERT INTO %s (catid,cblog,cname,cdesc) VALUES (%d,1,'%s','@wordpress')"
+                               , sql_table('category'), intval($total_num), encoding($row->name));
+                       if ( DB::execute($query) === FALSE )
+                       {
+                               die($query);
+                       }
+                       $total_num++;
+               }
+               echo "</p>";
+
+>>>>>>> skinnable-master
                /* *********************************************** */
                echo "<h2>Transfering posts and comments...</h2>";
                DB::execute("DELETE FROM " . sql_table('comment') . " WHERE chost='@wordpress'");
index aef0a88..59d8ef6 100644 (file)
@@ -1,7 +1,7 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
 <head>
-       <!-- $Id: plugins.html 1545 2011-06-28 21:31:37Z ftruscot $ -->
+       <!-- $Id: plugins.html 1721 2012-03-31 10:18:25Z sakamocchi $ -->
        <title>Nucleus - Plugin API</title>
        <link rel="stylesheet" type="text/css" href="styles/manual.css" />
        <style type="text/css">
index 59684ba..f6952cc 100644 (file)
@@ -1,7 +1,7 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
 <head>
-       <!-- $Id: sqltables.html 1457 2010-10-26 15:47:41Z ftruscot $ -->
+       <!-- $Id: sqltables.html 1686 2012-03-01 15:29:57Z sakamocchi $ -->
        <title>Nucleus - SQL Table Structure</title>
        <link rel="stylesheet" type="text/css" href="styles/manual.css" />
        <style type="text/css">
index 0510d15..f70cbea 100644 (file)
@@ -1,7 +1,7 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-       <!-- $Id: help.html 1500 2011-03-01 19:32:53Z ftruscot $ -->
+       <!-- $Id: help.html 1889 2012-06-17 08:46:45Z sakamocchi $ -->
 
        <title>Nucleus Admin Help</title>
        <style type="text/css">
@@ -97,7 +97,7 @@
 
 <div class="page">
 <h1>Nucleus Popup Help</h1>
-<p>Please hold on while the page is being downloaded (about 100KB).</p>
+<p>Please hold on while the page is being downloaded (about 390KB).</p>
 </div>
 
 
@@ -2325,6 +2325,20 @@ all
 </div>
 
 
+<div class="page">
+<a id="skinvar-locale" name="skinvar-locale"></a>
+<h1>Skinvar: locale</h1>
+<p>The present locale based on a site's establishing it is output.</p>
+<h2>Arguments</h2>
+<p>None</p>
+<h2>Skintypes</h2>
+<p>All</p>
+<h2>Examples</h2>
+<pre>
+&lt;%locale%&gt;
+</pre>
+</div>
+
 
 
 
@@ -3984,7 +3998,7 @@ These template variables be used in the following template-parts: <tt>item heade
        <td>URL of the weblog</td>
 </tr><tr>
        <td><a href="#templatememberextra" title="authtext()">authtext</a></td>
-       <td>the extra text</a> for members, empty for non members</td>
+       <td>the extra text for members, empty for non members</td>
 </tr><tr>
        <td>short</td>
        <td>a cut off version of the body, which truncates after the first line break. <a href="#templatecommentcontinued">A link is added</a> at the end according to the template</td>
@@ -4034,7 +4048,7 @@ These template variables be used in the following template-parts: <tt>item heade
 <h2>Arguments</h2>
 
 
-<ul>Optional:
+<p>Optional:
        <ul>
                <li><strong><em>what</em></strong>: Choose a type of information to be displayed:
                        <ul>
@@ -4047,7 +4061,7 @@ These template variables be used in the following template-parts: <tt>item heade
                        </ul>
                </li>
        </ul>
-</ul>
+</p>
 
 <h2>Examples</h2>
 <pre><code>&lt;%karma(posp)%&gt; out of &lt;%karma(votes)%&gt; were positive</code></pre>
@@ -4065,12 +4079,12 @@ These template variables be used in the following template-parts: <tt>item heade
 
 <h2>Arguments</h2>
 
-<ul>Optional:
+<p>Optional:
        <ul>
                <li><strong><em>maxlength</em></strong>: When provided, makes the itemtitle behave like the <a href="#templatevar-syndicate_title">syndicate_title templatevar</a>.
                </li>
        </ul>
-</ul>
+</p>
 
 </div>
 
@@ -4086,7 +4100,7 @@ These template variables be used in the following template-parts: <tt>item heade
 <p>Inserts the name of the author</p>
 
 <h2>Arguments</h2>
-<ul>Optional:
+<p>Optional:
        <ul>
                <li><strong><em>what</em></strong>: Choose a type of information to be displayed:
                        <ul>
@@ -4098,7 +4112,7 @@ These template variables be used in the following template-parts: <tt>item heade
                        </ul>
                </li>
        </ul>
-</ul>
+</p>
 
 <h2>Examples</h2>
 
@@ -4163,11 +4177,11 @@ Inserts a date using the <a href="#templatedatetime">date format specified in th
 </p>
 
 <h2>Arguments</h2>
-<ul>Optional
+<p>Optional
        <ul>
                <li><strong><i>format</i></strong>: format to be used to format the date</li>
        </ul>
-</ul>
+</p>
 
 <h2>Specials</h2>
 
@@ -4199,11 +4213,11 @@ Inserts a time using the <a href="#templatedatetime">time format specified in th
 </p>
 
 <h2>Arguments</h2>
-<ul>Optional
+<p>Optional
        <ul>
                <li><strong><i>format</i></strong>: format to be used to format the time</li>
        </ul>
-</ul>
+</p>
 
 <h2>Examples</h2>
 <pre>
@@ -4223,7 +4237,7 @@ Inserts a comments 'block'. <a href="#templatecomments">More information about t
 </p>
 
 <h2>Arguments</h2>
-<ul><p>Optional:</p>
+<p>Optional:
        <table><tr>
                <th>Name</th>
                <th>Contents</th>
@@ -4231,7 +4245,7 @@ Inserts a comments 'block'. <a href="#templatecomments">More information about t
                <td>MaxToShow</td>
                <td>Amount of comments to show (when set, this overrides the <a href="#blogmaxcomments">max. comments blogsetting</a>)</td>
        </tr></table>
-</ul>
+</p>
 
 <h2>Examples</h2>
 
@@ -4566,5 +4580,6094 @@ smaller plugins on the forum that never made it to the wiki.
 
 </div>
 
+<div class="page">
+<a id="adminskinvar-actionurl" name="adminskinvar-actionurl"></a>
+<h1>AdminSkinvar: actionurl</h1>
+<p>The contents of $CONF['ActionURL'] are indicated.</p>
+<h2>Arguments</h2>
+<p>None</p>
+<h2>Skintypes</h2>
+<p>All</p>
+<h2>Examples</h2>
+<pre>
+&lt;%actionurl%&gt;
+</pre>
+</div>
+
+<div class="page">
+<a id="adminskinvar-addtickettourl" name="adminskinvar-addtickettourl"></a>
+<h1>AdminSkinvar: addtickettourl</h1>
+<p>A ticket is added to URL to which it was given.</p>
+<h2>Arguments</h2>
+<p>URL</p>
+<h2>Skintypes</h2>
+<p>All</p>
+<h2>Examples</h2>
+<pre>
+&lt;%addtickettourl(index.php)%&gt;
+</pre>
+</div>
+
+<div class="page">
+<a id="adminskinvar-adminurl" name="adminskinvar-adminurl"></a>
+<h1>AdminSkinvar: adminurl</h1>
+<p>The contents of $CONF['AdminURL'] are indicated.</p>
+<h2>Arguments</h2>
+<p>None</p>
+<h2>Skintypes</h2>
+<p>All</p>
+<h2>Examples</h2>
+<pre>
+&lt;%adminurl%&gt;
+</pre>
+</div>
+
+<div class="page">
+<a id="adminskinvar-codename" name="adminskinvar-codename"></a>
+<h1>AdminSkinvar: codename</h1>
+<p>The contents of $nucleus['codename'] are indicated.</p>
+<h2>Arguments</h2>
+<p>None</p>
+<h2>Skintypes</h2>
+<p>All</p>
+<h2>Examples</h2>
+<pre>
+&lt;%codename%&gt;
+</pre>
+</div>
+
+<div class="page">
+<a id="adminskinvar-date" name="adminskinvar-date"></a>
+<h1>AdminSkinvar: date</h1>
+<p>Formatted datetime is indicated.</p>
+<h2>Arguments</h2>
+<p>date format</p>
+<h2>Skintypes</h2>
+<p>All</p>
+<h2>Examples</h2>
+<pre>
+&lt;%date(c)%&gt;
+</pre>
+</div>
+
+<div class="page">
+<a id="adminskinvar-extrahead" name="adminskinvar-extrahead"></a>
+<h1>AdminSkinvar: extrahead</h1>
+<p>The contents of extra &lt;head&gt; contents are indicated.</p>
+<h2>Arguments</h2>
+<p>None</p>
+<h2>Skintypes</h2>
+<p>All</p>
+<h2>Examples</h2>
+<pre>
+&lt;%extrahead%&gt;
+</pre>
+</div>
+
+<div class="page">
+<a id="adminskinvar-headmessage" name="adminskinvar-headmessage"></a>
+<h1>AdminSkinvar: headmessage</h1>
+<p>Adminpagr headmessage is indicated.</p>
+<h2>Arguments</h2>
+<p>None</p>
+<h2>Skintypes</h2>
+<p>All</p>
+<h2>Examples</h2>
+<pre>
+&lt;%headmessage%&gt;
+</pre>
+</div>
+
+<div class="page">
+<a id="adminskinvar-helplink" name="adminskinvar-helplink"></a>
+<h1>AdminSkinvar: helplink</h1>
+<p>Link to help topic is indicated.</p>
+<h2>Arguments</h2>
+<p>topic</p>
+<h2>Skintypes</h2>
+<p>All</p>
+<h2>Examples</h2>
+<pre>
+&lt;%helplink(adminskinvar-helplink)%&gt;
+</pre>
+</div>
+
+<div class="page">
+<a id="adminskinvar-member" name="adminskinvar-member"></a>
+<h1>AdminSkinvar: member</h1>
+<p>Member information is indicated.</p>
+<h2>Arguments</h2>
+       <p>Required:</p>
+       <table><tr>
+               <th>Name</th>
+               <th>Contents</th>
+       </tr><tr>
+               <td>name</td>
+               <td>Display name of member</td>
+       </tr><tr>
+               <td>realname</td>
+               <td>Real name of member</td>
+       </tr><tr>
+               <td>notes</td>
+               <td>Notes of member</td>
+       </tr><tr>
+               <td>url</td>
+               <td>Site URL of member</td>
+       </tr><tr>
+               <td>email</td>
+               <td>E-mail of member</td>
+       </tr><tr>
+               <td>id</td>
+               <td>ID of member</td>
+       </tr><tr>
+               <td>yourname</td>
+               <td>Display name of reading member</td>
+       </tr><tr>
+               <td>yourrealname</td>
+               <td>Real name of reading member</td>
+       </tr><tr>
+               <td>yournotes</td>
+               <td>Notes of reading member</td>
+       </tr><tr>
+               <td>yoururl</td>
+               <td>Site URL of reading member</td>
+       </tr><tr>
+               <td>youremail</td>
+               <td>E-mail of reading member</td>
+       </tr><tr>
+               <td>yourid</td>
+               <td>ID of reading member</td>
+       </tr><tr>
+               <td>yourprofileurl</td>
+               <td>Profile page URL of reading member</td>
+       </tr></table>
+<h2>Skintypes</h2>
+<p>All</p>
+<h2>Examples</h2>
+<pre>
+&lt;%member(realname)%&gt;
+</pre>
+</div>
+
+<div class="page">
+<a id="adminskinvar-newestcompare" name="adminskinvar-newestcompare"></a>
+<h1>AdminSkinvar: newestcompare</h1>
+<p>I inquire whether the version of the core file is the latest edition.</p>
+<h2>Arguments</h2>
+<p>None</p>
+<h2>Skintypes</h2>
+<p>All</p>
+<h2>Examples</h2>
+<pre>
+&lt;%newestcompare%&gt;
+</pre>
+</div>
+
+<div class="page">
+<a id="adminskinvar-pagehead" name="adminskinvar-pagehead"></a>
+<h1>AdminSkinvar: pagehead</h1>
+<p>The contents of page header are indicated.</p>
+<h2>Arguments</h2>
+<p>None</p>
+<h2>Skintypes</h2>
+<p>All</p>
+<h2>Examples</h2>
+<pre>
+&lt;%pagehead%&gt;
+</pre>
+</div>
+
+<div class="page">
+<a id="adminskinvar-pagefoot" name="adminskinvar-pagefoot"></a>
+<h1>AdminSkinvar: pagefoot</h1>
+<p>The contents of page footer are indicated.</p>
+<h2>Arguments</h2>
+<p>None</p>
+<h2>Skintypes</h2>
+<p>All</p>
+<h2>Examples</h2>
+<pre>
+&lt;%pagefoot%&gt;
+</pre>
+</div>
+
+<div class="page">
+<a id="adminskinvar-qmenuaddselect" name="adminskinvar-qmenuaddselect"></a>
+<h1>AdminSkinvar: qmenuaddselect</h1>
+<p>Selection box of the blog to which an item is added on the quick menu bar.</p>
+<h2>Arguments</h2>
+<p>Template name</p>
+<h2>Skintypes</h2>
+<p>All</p>
+<h2>Examples</h2>
+<pre>
+&lt;%qmenuaddselect(admin/default)%&gt;
+</pre>
+</div>
+
+<div class="page">
+<a id="adminskinvar-quickmenu" name="adminskinvar-quickmenu"></a>
+<h1>AdminSkinvar: quickmenu</h1>
+<p>The contents of quick menu bar are indicated.</p>
+<h2>Arguments</h2>
+<p>Template name</p>
+<h2>Skintypes</h2>
+<p>All</p>
+<h2>Examples</h2>
+<pre>
+&lt;%quickmenu(admin/default)%&gt;
+</pre>
+</div>
+
+<div class="page">
+<a id="adminskinvar-sitevar" name="adminskinvar-sitevar"></a>
+<h1>AdminSkinvar: sitevar</h1>
+<p>Site configuration vars are indicated.</p>
+<h2>Arguments</h2>
+       <p>Required:</p>
+       <table><tr>
+               <th>Name</th>
+               <th>Contents</th>
+       </tr><tr>
+               <td>url</td>
+               <td>$CONF['IndexURL']</td>
+       </tr><tr>
+               <td>name</td>
+               <td>$CONF['SiteName']</td>
+       </tr><tr>
+               <td>admin</td>
+               <td>$CONF['AdminEmail']</td>
+       </tr><tr>
+               <td>adminurl</td>
+               <td>$CONF['AdminURL']</td>
+       </tr></table>
+<h2>Skintypes</h2>
+<p>All</p>
+<h2>Examples</h2>
+<pre>
+&lt;%sitevar(adminurl)%&gt;
+</pre>
+</div>
+
+<div class="page">
+<a id="adminskinvar-sprinttext" name="adminskinvar-sprinttext"></a>
+<h1>AdminSkinvar: sprinttext</h1>
+<p>A string produced according to the formatting string format.</p>
+<h2>Arguments</h2>
+<p>format(The fixed number or character string), args(value)</p>
+<h2>Skintypes</h2>
+<p>All</p>
+<h2>Examples</h2>
+<pre>
+&lt;%sprinttext(_PLUGIN_OPTIONS_TITLE,&lt;|%geteditpluginfo(name)%|&gt;)%&gt;
+</pre>
+</div>
+
+<div class="page">
+<a id="adminskinvar-ticket" name="adminskinvar-ticket"></a>
+<h1>AdminSkinvar: ticket</h1>
+<p>"type" the attribute, "hidden", a ticket is output by a input tag.</p>
+<h2>Arguments</h2>
+<p>None</p>
+<h2>Skintypes</h2>
+<p>All</p>
+<h2>Examples</h2>
+<pre>
+&lt;%ticket%&gt;
+</pre>
+</div>
+
+<div class="page">
+<a id="adminskinvar-version" name="adminskinvar-version"></a>
+<h1>AdminSkinvar: version</h1>
+<p>The contents of $nucleus['version'] are indicated.</p>
+<h2>Arguments</h2>
+<p>None</p>
+<h2>Skintypes</h2>
+<p>All</p>
+<h2>Examples</h2>
+<pre>
+&lt;%version%&gt;
+</pre>
+</div>
+
+<div class="page">
+<a id="adminskinvar-versioncheckurl" name="adminskinvar-versioncheckurl"></a>
+<h1>AdminSkinvar: versioncheckurl</h1>
+<p>URL of which I inquire a newest version of a core file is output.</p>
+<h2>Arguments</h2>
+<p>None</p>
+<h2>Skintypes</h2>
+<p>All</p>
+<h2>Examples</h2>
+<pre>
+&lt;%versioncheckurl%&gt;
+</pre>
+</div>
+
+<div class="page">
+<a id="adminskinvar-benchmark" name="adminskinvar-benchmark"></a>
+<h1>AdminSkinvar: benchmark</h1>
+<p>Number of issuances of generation time from access starting to the place where this skin variable was written and a query is output.</p>
+<h2>Arguments</h2>
+<p>None</p>
+<h2>Skintypes</h2>
+<p>All</p>
+<h2>Examples</h2>
+<pre>
+&lt;%benchmark%&gt;
+</pre>
+</div>
+
+<div class="page">
+<a id="adminskinvar-charset" name="adminskinvar-charset"></a>
+<h1>AdminSkinvar: charset</h1>
+<p>Character code for page indication.</p>
+<h2>Arguments</h2>
+<p>None</p>
+<h2>Skintypes</h2>
+<p>All</p>
+<h2>Examples</h2>
+<pre>
+&lt;%charset%&gt;
+</pre>
+</div>
+
+<div class="page">
+<a id="adminskinvar-if" name="adminskinvar-if"></a>
+<a id="adminskinvar-else" name="adminskinvar-else"></a>
+<a id="adminskinvar-endif" name="adminskinvar-endif"></a>
+<a id="adminskinvar-ifnot" name="adminskinvar-ifnot"></a>
+<a id="adminskinvar-elseifnot" name="adminskinvar-elseifnot"></a>
+<a id="adminskinvar-elseif" name="adminskinvar-elseif"></a>
+<h1>AdminSkinvars: if/ifnot/else/elseif/elseifnot/endif</h1>
+
+<p>Inserts a content block only when certain conditions are fullfilled. Can be used in the item and comment fields of templates as of 3.60, as well as in Item bodies (same as item template fields).</p>
+
+<h2>Arguments</h2>
+<p>Only the <code>if</code>, <code>ifnot</code>, <code>elseif</code>, and <code>elseifnot</code> skinvars have options</p>
+
+
+<ul>
+       <li><strong>type</strong>: type of condition</li>
+       <li><em>name</em>: name of option (optional)</li>
+       <li><em>value</em>: value to be checked (optional)</li>
+</ul>
+
+<h2>Condition types</h2>
+
+<ul>
+       <li><strong>category</strong>: condition is fullfilled when a category is selected
+               <ul>
+                       <li><strong>category</strong>: checks if any category is selected</li>
+                       <li><strong>category,catname,<em>CategoryName</em></strong>: checks if the current category is <em>CategoryName</em></li>
+                       <li><strong>category,catid,<em>CategoryId</em></strong>: checks if the current category is <em>CategoryId</em></li>
+               </ul>
+       </li>
+       <li><strong>blogsetting</strong>: checks if the value <em>name</em> blogsetting equals <em>value</em> (the name is the column name from the nucleus_blog sql table)</li>
+       <li><strong>loggedin</strong>: condition is fullfilled if visiting member is currently logged in</li>
+       <li><strong>onteam</strong>: condition is fullfilled if visiting member is currently logged in &amp; member of the blog team of the current blog (or the blog given in the <em>name</em> parameter)</li>
+       <li><strong>admin</strong>: condition is fullfilled if visiting member is currently logged in &amp; member with blog admin rights to the current blog (or the blog given in the <em>name</em> parameter)</li>
+       <li><strong>superadmin</strong>: condition is fullfilled if visiting member is currently logged in &amp; member with admin rights to the site</li>
+       <li><strong>nextitem</strong>: true if there is a more recent item available for the current weblog (item skintype)</li>
+       <li><strong>previtem</strong>: true if there is an older item available for the current weblog (item skintype)</li>
+       <li><strong>archivenextexists</strong>: true if there is a more recent archive available for the current weblog (archive skintype)</li>
+       <li><strong>archiveprevexists</strong>: true if there is an older archive available for the current weblog (archive skintype)</li>
+       <li><strong>skintype</strong>: checks if the current skin type is equal to <em>value</em> (index, search, item, archive, archivelist, ...). For special skin parts, the skin type is the name of the special skin part.</li>
+       <li><strong>hasplugin</strong>: checks if the a plugin is installed, or if a plugin option has been set to a specific value
+               <ul>
+                       <li><strong>hasplugin,<em>PluginName</em></strong>: checks if plugin is available</li>
+                       <li><strong>hasplugin,<em>PluginName</em>,<em>OptionName</em></strong>: checks if a plugin option is not set to 'no'</li>
+                       <li><strong>hasplugin,<em>PluginName</em>,<em>OptionName=value</em></strong>: checks if a plugin option is set to a specific value</li>
+               </ul>
+       </li>
+       <li><strong>adminaction</strong>: checks if the action query of URL is equal to <em>value</em>.</li>
+       <li><strong>adminoldaction</strong>: checks if the original action query of URL is equal to <em>value</em>.</li>
+       <li><strong>addresschange</strong>: checks if there change in the address of the member.</li>
+       <li><strong>bechangepass</strong>: checks if have to change the password.</li>
+       <li><strong>skincandidates</strong>: checks if skin overlap.</li>
+       <li><strong>nameclashes</strong>: checks if member name overlap.</li>
+       <li><strong>existsnewplugin</strong>: checks if plugin of non-installation in a plugin directory.</li>
+       <li><strong>autosave</strong>: checks if autosave of the article which is being edited.</li>
+       <li><strong>itemproperty</strong>: checks whether the contents of a property of an item "$name" are equal to $value.</li>
+</ul>
+<h2>Skintypes</h2>
+<p>All</p>
+<h2>Examples</h2>
+<pre>
+&lt;%if(superadmin)%&gt;
+non-installed plugin list overview &amp; installed plugin list overview
+&lt;else&gt;
+installed plugin list overview only
+&lt;%endif%&gt;
+</pre>
+</div>
+
+<div class="page">
+<a id="adminskinvar-include" name="adminskinvar-include"></a>
+<h1>AdminSkinvar: include</h1>
+<p>
+Includes a textfile into the output. The contents of the file is not parsed in any way, so you cannot use skin/templatevars or use PHP code (see <a href="#adminskinvar-parsedinclude">parsedinclude</a> and <a href="#adminskinvar-phpinclude">phpinclude</a> if you want parsed includes)
+</p>
+<h2>Arguments</h2>
+<ul>
+       <li><strong>filename</strong>: the name of the file to be included (either relative to the position of index.php, or absolute). Note that an URL can also be used here.</li>
+</ul>
+<h2>Notes</h2>
+<ul>
+       <li>This tag is affected by the <a href="#parser-properties">parser settings <code>IncludeMode</code> and <code>IncludePrefix</code></a></li>
+</ul>
+<h2>Skintypes</h2>
+<p>All</p>
+<h2>Examples</h2>
+<pre>
+&lt;%include(filename.txt)%&gt;
+&lt;%include(/home/user/myself/filename.txt)%&gt;
+&lt;%include(http://mydomain.com/filename.html)%&gt;
+</pre>
+</div>
+
+<div class="page">
+<a id="adminskinvar-locale" name="adminskinvar-locale"></a>
+<h1>AdminSkinvar: locale</h1>
+<p>The present locale based on a site's establishing it is output.</p>
+<h2>Arguments</h2>
+<p>None</p>
+<h2>Skintypes</h2>
+<p>All</p>
+<h2>Examples</h2>
+<pre>
+&lt;%locale%&gt;
+</pre>
+</div>
+
+<div class="page">
+<a id="adminskinvar-parsedinclude" name="adminskinvar-parsedinclude"></a>
+<h1>AdminSkinvar: parsedinclude</h1>
+<p>Includes a file into the output. The contents of the file is parsed by the Nucleus skin/template parser, so you can use skin/templatevars. (see <a href="#skinvar-phpinclude">phpinclude</a> and <a href="#skinvar-include">include</a> for other include options)</p>
+<h2>Arguments</h2>
+<ul>
+       <li><strong>filename</strong>: the name of the file to be included (either relative to the position of index.php, or absolute)</li>
+</ul>
+<h2>Notes</h2>
+<ul>
+       <li>This tag is affected by the <a href="#parser-properties">parser settings <code>IncludeMode</code> and <code>IncludePrefix</code></a></li>
+       <li>From inside the included file, you can call <code>&lt;%parsedinclude(filename)%&gt;</code> again. To avoid endless loops, the maximum depth level you can go is 3.</li>
+</ul>
+<h2>Skintypes</h2>
+<p>
+all
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%parsedinclude(filename.txt)%&gt;
+&lt;%parsedinclude(/home/user/myself/filename.txt)%&gt;
+</pre>
+</div>
+
+<div class="page">
+<a id="adminskinvar-phpinclude" name="adminskinvar-phpinclude"></a>
+<h1>AdminSkinvar: phpinclude</h1>
+<p>Includes a php-file into the output. The contents of the file is parsed by the PHP parser, so be careful. Nucleus skin/templatevars are <b>not</b> parsed! (see <a href="#skinvar-parsedinclude">parsedinclude</a> and <a href="#skinvar-include">include</a> for other include options).</p>
+<h2>Arguments</h2>
+<ul>
+       <li><strong>filename</strong>: the name of the file to be included (either relative to the position of index.php, or absolute)</li>
+</ul>
+<h2>Notes</h2>
+<ul>
+       <li>This tag is affected by the <a href="#parser-properties">parser settings <code>IncludeMode</code> and <code>IncludePrefix</code></a></li>
+       <li>Your file will be included using the standard php <code>include()</code> command. This command will be called from <em>inside</em> a class method, so <strong>you'll need to declare which global variables you want to access</strong> yourself. Most of the <a href="#skinvar-phpinclude-vars">standard variables</a> are automatically declared global by Nucleus itself.</li>
+</ul>
+<h2>Skintypes</h2>
+<p>all</p>
+<h2>Examples</h2>
+<pre>
+<code>&lt;%phpinclude(filename.php)%&gt;
+&lt;%phpinclude(/home/user/myself/filename.php)%&gt;</code>
+</pre>
+</div>
+
+<div class="page">
+<a id="adminskinvar-set" name="adminskinvar-set"></a>
+<h1>AdminSkinvar: set</h1>
+<p>
+Sets a <a href="#parser-properties" title="A list of available parser properties">parser property</a>.
+</p>
+<h2>Arguments</h2>
+<p>
+       <ul>
+               <li><strong>property</strong>: name of the property</li>
+               <li><strong>value</strong>: value of the property</li>
+       </ul>
+</p>
+<h2>Skintypes</h2>
+<p>all</p>
+<h2>Examples</h2>
+<pre>
+&lt;%set(IncludeMode,skindir)%&gt;
+&lt;%set(IncludePrefix,somedir/)%&gt;
+</pre>
+</div>
+
+<div class="page">
+<a name="adminskinvar-skinfile"></a>
+<h1>AdminSkinvar: skinfile</h1>
+<p>Used by imported skins to put a link relative to the skins-URL. Use it in conjunction with the <tt>IncludePrefix</tt> <a href="#parser-properties">parser property</a> to get the best results</p>
+<h2>Arguments</h2>
+<p>
+       <ul>
+               <li><strong>filename</strong>: filename of which you want the correct URL</li>
+       </ul>
+</p>
+<h2>Skintypes</h2>
+<p>all</p>
+<h2>Examples</h2>
+<pre>
+&lt;%skinfile(mystyle.css)%&gt;
+</pre>
+</div>
+
+<div class="page">
+<a id="adminskinvar-text" name="adminskinvar-text"></a>
+<h1>AdminSkinvar: text</h1>
+<p>Constant which is already defined is output.</p>
+<h2>Arguments</h2>
+<p>Constant</p>
+<h2>Skintypes</h2>
+<p>All</p>
+<h2>Examples</h2>
+<pre>
+&lt;%text(_ADMINPAGEFOOT_DONATE)%&gt;
+</pre>
+</div>
+
+<div class="page">
+<a id="adminskinvar-actionloglist" name="adminskinvar-actionloglist"></a>
+<h1>AdminSkinvar: actionloglist</h1>
+<p>actionloglist is output.</p>
+<h2>Arguments</h2>
+<p>TemplateName</p>
+<h2>Skintypes</h2>
+<p>
+actionlog
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%actionloglist(admin/default)%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-activationmessage" name="adminskinvar-activationmessage"></a>
+<h1>AdminSkinvar: activationmessage</h1>
+<p>activationmessage is output.</p>
+<h2>Arguments</h2>
+<p>
+       type, TemplateName
+       <ul>
+               <li>type:template type
+                       <ul>
+                               <li>title:activation welcome message</li>
+                               <li>body:activation confirming message</li>
+                               <li>ackey:activation key</li>
+                       </ul>
+               </li>
+               <li>TemplateName:template name</li>
+       </ul>
+</p>
+<h2>Skintypes</h2>
+<p>
+activate
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%activationmessage(text,admin/default)%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-eventformextra" name="adminskinvar-eventformextra"></a>
+<h1>AdminSkinvar: eventformextra</h1>
+<p>Make a formextra event occur.</p>
+<h2>Arguments</h2>
+<p>
+form type
+<ul>
+<li>activation : for activate skintype.</li>
+<li>membermailform-notloggedin : for createaccountinput skintype.</li>
+</ul>
+</p>
+<h2>Skintypes</h2>
+<p>
+<ul>
+<li>activate</li>
+<li>createaccountinput</li>
+</ul>
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%eventformextra(activation)%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-getblogsetting" name="adminskinvar-getblogsetting"></a>
+<h1>AdminSkinvar: getblogsetting</h1>
+<p>Blogsettings is output.</p>
+<h2>Arguments</h2>
+<p>
+<ul>
+<li>id:blog ID</li>
+<li>url:blog URL</li>
+<li>name:blog Name</li>
+<li>desc:blog Description</li>
+<li>short:blog Short Name</li>
+<li>notifyaddress:blog admin notify address</li>
+<li>maxcomments:blog Max Comments</li>
+<li>updatefile:Update File</li>
+<li>timeoffset:Time Offset</li>
+</ul>
+</p>
+<h2>Skintypes</h2>
+<p>
+addnewlog
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%getblogsetting(url)%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-blogsetting" name="adminskinvar-blogsetting"></a>
+<h1>AdminSkinvar: blogsetting</h1>
+<p>Blogsettings is output.</p>
+<h2>Arguments</h2>
+<p>
+<ul>
+<li>id:blog ID</li>
+<li>url:blog URL</li>
+<li>name:blog Name</li>
+<li>desc:blog Description</li>
+<li>short:blog Short Name</li>
+<li>notifyaddress:blog admin notify address</li>
+<li>maxcomments:blog Max Comments</li>
+<li>updatefile:Update File</li>
+<li>timeoffset:Time Offset</li>
+</ul>
+</p>
+<h2>Skintypes</h2>
+<p>
+addnewlog
+banlistnew
+blogsettings
+deleteblog
+manageteam
+teamdelete
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%blogsetting(url)%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-requestblogid" name="adminskinvar-requestblogid"></a>
+<h1>AdminSkinvar: requestblogid</h1>
+<p>'blogid' in HTTP Request variables is output.</p>
+<h2>Arguments</h2>
+<p>None</p>
+<h2>Skintypes</h2>
+<p>
+addnewlog
+banlist
+banlistdelete
+banlistdeleteconfirm
+banlistnew
+batchteam
+blogsettings
+categorydelete
+categoryedit
+deleteblog
+itemcommentlist
+manageteam
+teamdelete
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%requestblogid%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-skintypehelp" name="adminskinvar-skintypehelp"></a>
+<h1>AdminSkinvar: skintypehelp</h1>
+<p>A link to help of the skin type which is being edited at present is output.</p>
+<h2>Arguments</h2>
+<p>None</p>
+<h2>Skintypes</h2>
+<p>
+adminskinedittype
+skinedittype
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%skintypehelp%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-importskininfo" name="adminskinvar-importskininfo"></a>
+<h1>AdminSkinvar: importskininfo</h1>
+<p>Information on imported skin/template is output.</p>
+<h2>Arguments</h2>
+<p>
+type
+<ul>
+       <li>info : Information on imported skin</li>
+       <li>snames : Names on imported skin</li>
+       <li>tnames : Names on imported template</li>
+       <li>sclashes : Names on imported skin which conflicts</li>
+       <li>tclashes : Names on imported template which conflicts</li>
+       <li>skinfile : File names on imported skin</li>
+       <li>mode : Reading mode of skin</li>
+</ul>
+</p>
+<h2>Skintypes</h2>
+<p>
+<ul>
+       <li>adminskiniedoimport</li>
+       <li>adminskinieimport</li>
+       <li>skiniedoimport</li>
+       <li>skinieimport</li>
+</ul>
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%importskininfo(info)%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-adminbloglink" name="adminskinvar-adminbloglink"></a>
+<h1>AdminSkinvar: adminbloglink</h1>
+<p>A link to a blog of id requested in URL is output.</p>
+<h2>Arguments</h2>
+<p>templateName</p>
+<h2>Skintypes</h2>
+<p>
+       <ul>
+               <li>banlist</li>
+               <li>blogcommentlist</li>
+               <li>blogsettings</li>
+               <li>createitem</li>
+               <li>itemlist</li>
+       </ul>
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%adminbloglink(admin/default)%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-adminbanlist" name="adminskinvar-adminbanlist"></a>
+<h1>AdminSkinvar: adminbanlist</h1>
+<p>A list of the ip-address which prohibits access to a blog of id requested in url is output.</p>
+<h2>Arguments</h2>
+<p>templateName</p>
+<h2>Skintypes</h2>
+<p>
+banlist
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%adminbanlist(admin/default)%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-requestiprange" name="adminskinvar-requestiprange"></a>
+<h1>AdminSkinvar: requestiprange</h1>
+<p>ip-range which releases regulation is output.</p>
+<h2>Arguments</h2>
+<p>None</p>
+<h2>Skintypes</h2>
+<p>
+banlistdelete
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%requestiprange%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-banlistdeletedlist" name="adminskinvar-banlistdeletedlist"></a>
+<h1>AdminSkinvar: banlistdeletedlist</h1>
+<p>A list of ip which just released regulation is indicated.</p>
+<h2>Arguments</h2>
+<p>templateName</p>
+<h2>Skintypes</h2>
+<p>
+banlistdeleteconfirm
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%banlistdeletedlist(admin/default)%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-iprangeinput" name="adminskinvar-iprangeinput"></a>
+<h1>AdminSkinvar: iprangeinput</h1>
+<p>A list of ip-range regulated now is indicated.</p>
+<h2>Arguments</h2>
+<p>None</p>
+<h2>Skintypes</h2>
+<p>
+banlistnew
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%iprangeinput%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-adminbatchaction" name="adminskinvar-adminbatchaction"></a>
+<h1>AdminSkinvar: adminbatchaction</h1>
+<p>Requested batchaction is indicated in URL.</p>
+<h2>Arguments</h2>
+<p>None</p>
+<h2>Skintypes</h2>
+<p>
+       <ul>
+               <li>batchcategory</li>
+               <li>batchcomment</li>
+               <li>batchitem</li>
+               <li>batchmember</li>
+               <li>batchteam</li>
+       </ul>
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%adminbatchaction%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-adminbatchlist" name="adminskinvar-adminbatchlist"></a>
+<h1>AdminSkinvar: adminbatchlist</h1>
+<p>A list of items/comments/members/teams/categories during a batch processing is indicated.</p>
+<h2>Arguments</h2>
+<p>templateName</p>
+<h2>Skintypes</h2>
+<p>
+       <ul>
+               <li>batchcategory</li>
+               <li>batchcomment</li>
+               <li>batchitem</li>
+               <li>batchmember</li>
+               <li>batchteam</li>
+               <li>blogcommentlist</li>
+       </ul>
+
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%adminbatchlist(admin/default)%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-batchdeletetype" name="adminskinvar-batchdeletetype"></a>
+<h1>AdminSkinvar: batchdeletetype</h1>
+<p>The type of the batched processing method is indicated.</p>
+<h2>Arguments</h2>
+<p>None</p>
+<h2>Skintypes</h2>
+<p>
+batchdelete
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%batchdeletetype%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-batchdeletelist" name="adminskinvar-batchdeletelist"></a>
+<h1>AdminSkinvar: batchdeletelist</h1>
+<p>The list deleted by batched processing method is indicated.</p>
+<h2>Arguments</h2>
+<p>None</p>
+<h2>Skintypes</h2>
+<p>
+batchdelete
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%batchdeletelist%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-batchmovetitle" name="adminskinvar-batchmovetitle"></a>
+<h1>AdminSkinvar: batchmovetitle</h1>
+<p>Movement by batched processing method indicates the title which is being processed.</p>
+<h2>Arguments</h2>
+<p>None</p>
+<h2>Skintypes</h2>
+<p>
+       <ul>
+               <li>batchmove</li>
+               <li>bbatchmovecat</li>
+       </ul>
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%batchmovetitle%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-batchmovetype" name="adminskinvar-batchmovetype"></a>
+<h1>AdminSkinvar: batchmovetype</h1>
+<p>The type of the batched processing method of movement is indicated.</p>
+<h2>Arguments</h2>
+<p>None</p>
+<h2>Skintypes</h2>
+<p>
+       <ul>
+               <li>batchmove</li>
+               <li>batchmovecat</li>
+       </ul>
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%batchmovetype%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-batchmovelist" name="adminskinvar-batchmovelist"></a>
+<h1>AdminSkinvar: batchmovelist</h1>
+<p>The list move by batched processing method is indicated.</p>
+<h2>Arguments</h2>
+<p>None</p>
+<h2>Skintypes</h2>
+<p>
+       <ul>
+               <li>batchmove</li>
+               <li>batchmovecat</li>
+       </ul>
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%batchmovelist%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-movedistselect" name="adminskinvar-movedistselect"></a>
+<h1>AdminSkinvar: movedistselect</h1>
+<p>A select box in a movement destination is output.</p>
+<h2>Arguments</h2>
+<p>None</p>
+<h2>Skintypes</h2>
+<p>
+       <ul>
+               <li>batchmove</li>
+               <li>batchmovecat</li>
+               <li>itemmove</li>
+       </ul>
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%movedistselect%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-batchmovebtn" name="adminskinvar-batchmovebtn"></a>
+<h1>AdminSkinvar: batchmovebtn</h1>
+<p>A text of Tree peony suitable for the movement type is output.</p>
+<h2>Arguments</h2>
+<p>None</p>
+<h2>Skintypes</h2>
+<p>
+       <ul>
+               <li>batchmove</li>
+               <li>batchmovecat</li>
+       </ul>
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%batchmovebtn%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-commentnavlist" name="adminskinvar-commentnavlist"></a>
+<h1>AdminSkinvar: commentnavlist</h1>
+<p>A list of comments is output.</p>
+<h2>Arguments</h2>
+<p>None</p>
+<h2>Skintypes</h2>
+<p>
+       <ul>
+               <li>blogcommentlist</li>
+               <li>browseowncomments</li>
+               <li>itemcommentlist/li>
+       </ul>
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%commentnavlist%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-blogcatlist" name="adminskinvar-blogcatlist"></a>
+<h1>AdminSkinvar: blogcatlist</h1>
+<p>A list of the categories which are included in the blog which is being edited is output.</p>
+<h2>Arguments</h2>
+<p>templateName</p>
+<h2>Skintypes</h2>
+<p>
+blogsettings
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%blogcatlist(admin/default)%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-blognotifysetting" name="adminskinvar-blognotifysetting"></a>
+<h1>AdminSkinvar: blognotifysetting</h1>
+<p>Judgment of whether a check is put in a check box of whether you notify an administrator when there was a comment or vote or new item to a blog, is done.</p>
+<h2>Arguments</h2>
+<p>Type(comment or vote or newitem)</p>
+<h2>Skintypes</h2>
+<p>
+blogsettings
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%blognotifysetting(vote)%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-blogsettingyesno" name="adminskinvar-blogsettingyesno"></a>
+<h1>AdminSkinvar: blogsettingyesno</h1>
+<p>The radio button answered at inside of setting of a blog "Yes." "No." is indicated.</p>
+<h2>Arguments</h2>
+<p>type(convertbreaks or allowpastposting or comments or public or reqemail or searchable),templateName</p>
+<h2>Skintypes</h2>
+<p>
+blogsettings
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%blogsettingyesno(public,admin/default)%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-blogteammembers" name="adminskinvar-blogteammembers"></a>
+<h1>AdminSkinvar: blogteammembers</h1>
+<p>Members list of blog teams is output.</p>
+<h2>Arguments</h2>
+<p>None</p>
+<h2>Skintypes</h2>
+<p>
+blogsettings
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%blogteammembers%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-blogtime" name="adminskinvar-blogtime"></a>
+<h1>AdminSkinvar: blogtime</h1>
+<p>The time and the time based on offset are output by the form designated in format current as of the server.</p>
+<h2>Arguments</h2>
+<p>type("blogtime" or except),format,offset</p>
+<h2>Skintypes</h2>
+<p>
+       <ul>
+               <li>blogsettings</li>
+               <li>createnewlog</li>
+       </ul>
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%blogtime%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-defcatselect" name="adminskinvar-defcatselect"></a>
+<h1>AdminSkinvar: defcatselect</h1>
+<p>The select box to which zinc entrusts a category of default is output.</p>
+<h2>Arguments</h2>
+<p>templateName</p>
+<h2>Skintypes</h2>
+<p>
+blogsettings
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%defcatselect(admin/default)%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-defskinselect" name="adminskinvar-defskinselect"></a>
+<h1>AdminSkinvar: defskinselect</h1>
+<p>The select box from which skin of a blog or skin of the default applied at the time of blog making newly is chosen is output.</p>
+<h2>Arguments</h2>
+<p>type('blog' or not),templateName</p>
+<h2>Skintypes</h2>
+<p>
+       <ul>
+               <li>blogsettings</li>
+               <li>createnewlog</li>
+               <li>settingsedit</li>
+       </ul>
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%defskinselect(blog,admin/default)%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-pluginextras" name="adminskinvar-pluginextras"></a>
+<h1>AdminSkinvar: pluginextras</h1>
+<p>Member/Blog/GeneralSettingsFormExtras or RegistrationFormExtraFields event occur.</p>
+<h2>Arguments</h2>
+<p>Type</p>
+<h2>Skintypes</h2>
+<p>
+       <ul>
+               <li>blogsettings</li>
+               <li>createaccountinput</li>
+               <li>createitem</li>
+               <li>itemedit</li>
+               <li>settingsedit</li>
+       </ul>
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%pluginextras(blog)%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-pluginoptions" name="adminskinvar-pluginoptions"></a>
+<h1>AdminSkinvar: pluginoptions</h1>
+<p>Setting of a plugin options are output.</p>
+<h2>Arguments</h2>
+<p>context(global or member or blog or category or item),templateName</p>
+<h2>Skintypes</h2>
+<p>
+       <ul>
+               <li>blogsettings</li>
+               <li>categoryedit</li>
+               <li>createitem</li>
+               <li>editmembersettings</li>
+               <li>itemedit</li>
+       </ul>
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%pluginoptions(blog,admin/default)%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-bookmarkletadmin" name="adminskinvar-bookmarkletadmin"></a>
+<h1>AdminSkinvar: bookmarkletadmin</h1>
+<p>javascript to indicate a bookmark let is output./p>
+<h2>Arguments</h2>
+<p>None</p>
+<h2>Skintypes</h2>
+<p>
+bookmarklet
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%bookmarkletadmin%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-itemnavlist" name="adminskinvar-itemnavlist"></a>
+<h1>AdminSkinvar: itemnavlist</h1>
+<p>A list of contributed items is output.</p>
+<h2>Arguments</h2>
+<p>templateName</p>
+<h2>Skintypes</h2>
+<p>
+browseownitems
+itemlist
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%itemnavlist(admin/default)%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-categorysetting" name="adminskinvar-categorysetting"></a>
+<h1>AdminSkinvar: categorysetting</h1>
+<p>Setting of a category is indicated.</p>
+<h2>Arguments</h2>
+<p>Type('name' or not)</p>
+<h2>Skintypes</h2>
+<p>
+       <ul>
+               <li>categorydelete</li>
+               <li>categoryedit</li>
+       </ul>
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%categorysetting(name)%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-editdesturl" name="adminskinvar-editdesturl"></a>
+<h1>AdminSkinvar: editdesturl</h1>
+<p>URL which indicates a list of the back items to which the category was changed</p>
+<h2>Arguments</h2>
+<p>None</p>
+<h2>Skintypes</h2>
+<p>
+categoryedit
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%editdesturl%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-deletecomment" name="adminskinvar-deletecomment"></a>
+<h1>AdminSkinvar: deletecomment</h1>
+<p>Information on an eliminated comment is output.</p>
+<h2>Arguments</h2>
+<p>Type(id or author or body)</p>
+<h2>Skintypes</h2>
+<p>
+commentdelete
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%deletecomment(id)%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-editcomment" name="adminskinvar-editcomment"></a>
+<h1>AdminSkinvar: editcomment</h1>
+<p>Information on the comment which is being edited is output.</p>
+<h2>Arguments</h2>
+<p>Type(id or user or date or body or cmail or url or other)</p>
+<h2>Skintypes</h2>
+<p>
+commentedit
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%editcomment(body)%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-contents" name="adminskinvar-contents"></a>
+<h1>AdminSkinvar: contents</h1>
+<p>Information on the item which is being edited newly and or is output.</p>
+<h2>Arguments</h2>
+<p>which(part for item)</p>
+<h2>Skintypes</h2>
+<p>
+       <ul>
+               <li>createaccountinput</li>
+               <li>createaccountsuccess</li>
+               <li>createitem</li>
+               <li>itemedit</li>
+       </ul>
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%contents(title)%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-blogid" name="adminskinvar-blogid"></a>
+<h1>AdminSkinvar: blogid</h1>
+<p>The ID for the requested blog is output in $_REQUEST.</p>
+<h2>Arguments</h2>
+<p>None</p>
+<h2>Skintypes</h2>
+<p>
+createitem
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%blogid%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-categories" name="adminskinvar-categories"></a>
+<h1>AdminSkinvar: categories</h1>
+<p>An item outputs the selection box from which the category to which I belong is chosen.</p>
+<h2>Arguments</h2>
+<p>startidx</p>
+<h2>Skintypes</h2>
+<p>
+       <ul>
+               <li>createitem</li>
+               <li>itemedit</li>
+       </ul>
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%categories(40)%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-currenttime" name="adminskinvar-currenttime"></a>
+<h1>AdminSkinvar: currenttime</h1>
+<p>The present time based on the setting of a blog is output.</p>
+<h2>Arguments</h2>
+<p>
+   <table>
+      <tr>
+       <td><em>&quot;seconds&quot;</em></td>
+       <td>Numeric representation of seconds</td>
+      </tr>
+      <tr>
+       <td><em>&quot;minutes&quot;</em></td>
+       <td>Numeric representation of minutes</td>
+      </tr>
+      <tr>
+       <td><em>&quot;hours&quot;</em></td>
+       <td>Numeric representation of hours</td>
+      </tr>
+      <tr>
+       <td><em>&quot;mday&quot;</em></td>
+       <td>Numeric representation of the day of the month</td>
+      </tr>
+      <tr>
+       <td><em>&quot;wday&quot;</em></td>
+       <td>Numeric representation of the day of the week</td>
+      </tr>
+      <tr>
+       <td><em>&quot;mon&quot;</em></td>
+       <td>Numeric representation of a month</td>
+      </tr>
+      <tr>
+       <td><em>&quot;year&quot;</em></td>
+       <td>A full numeric representation of a year, 4 digits</td>
+      </tr>
+      <tr>
+       <td><em>&quot;yday&quot;</em></td>
+       <td>Numeric representation of the day of the year</td>
+     </tr>
+      <tr>
+       <td><em>&quot;weekday&quot;</em></td>
+       <td>A full textual representation of the day of the week</td>
+      </tr>
+      <tr>
+       <td><em>&quot;month&quot;</em></td>
+       <td>A full textual representation of a month, such as January or March</td>
+      </tr>
+      <tr>
+       <td><em>0</em></td>
+       <td>
+        Seconds since the Unix Epoch, similar to the values returned by
+        <span class="function"><a href="function.time.php" class="function">time()</a></span> and used by <span class="function"><a href="function.date.php" class="function">date()</a></span>.
+       </td>
+      </tr>
+   </table>
+</p>
+<h2>Skintypes</h2>
+<p>
+       <ul>
+               <li>createitem</li>
+               <li>itemedit</li>
+       </ul>
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%currenttime(month)%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-init" name="adminskinvar-init"></a>
+<h1>AdminSkinvar: init</h1>
+<p>Initialization of contribution or edit processing of an item.</p>
+<h2>Arguments</h2>
+<p>None</p>
+<h2>Skintypes</h2>
+<p>
+       <ul>
+               <li>createitem</li>
+               <li>itemedit</li>
+       </ul>
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%init%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-editmember" name="adminskinvar-editmember"></a>
+<h1>AdminSkinvar: editmember</h1>
+<p>The setting form of the editing member is output.</p>
+<h2>Arguments</h2>
+<p>type(id or displayname or realname or email or url or admin or canlogin or notes or autosave),templateName</p>
+<h2>Skintypes</h2>
+<p>
+       <ul>
+               <li>editmembersettings</li>
+               <li>memberdelete</li>
+               <li>teamdelete</li>
+       </ul>
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%editmember(url,admin/default)%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-localeselectoptions" name="adminskinvar-localeselectoptions"></a>
+<h1>AdminSkinvar: localeselectoptions</h1>
+<p>The options for select box from which a locale is chosen is output.</p>
+<h2>Arguments</h2>
+<p>None</p>
+<h2>Skintypes</h2>
+<p>
+       <ul>
+               <li>editmembersettings</li>
+               <li>settingsedit</li>
+       </ul>
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%localeselectoptions%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-deleteitemtitle" name="adminskinvar-deleteitemtitle"></a>
+<h1>AdminSkinvar: deleteitemtitle</h1>
+<p>The title of the deleted item is indicated.</p>
+<h2>Arguments</h2>
+<p>None</p>
+<h2>Skintypes</h2>
+<p>
+itemdelete
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%deleteitemtitle%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-deleteitembody" name="adminskinvar-deleteitembody"></a>
+<h1>AdminSkinvar: deleteitembody</h1>
+<p>The body of the deleted item is indicated.</p>
+<h2>Arguments</h2>
+<p>None</p>
+<h2>Skintypes</h2>
+<p>
+itemdelete
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%deleteitembody%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-deleteitemid" name="adminskinvar-deleteitemid"></a>
+<h1>AdminSkinvar: deleteitemid</h1>
+<p>The ID of the deleted item is indicated.</p>
+<h2>Arguments</h2>
+<p>None</p>
+<h2>Skintypes</h2>
+<p>
+itemdelete
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%deleteitemid%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-checkedonval" name="adminskinvar-checkedonval"></a>
+<h1>AdminSkinvar: checkedonval</h1>
+<p>Property name of an item lays with value and puts a check in.</p>
+<h2>Arguments</h2>
+<p>value,name</p>
+<h2>Skintypes</h2>
+<p>
+itemedit
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%checkedonval(1,closed)%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-itemtime" name="adminskinvar-itemtime"></a>
+<h1>AdminSkinvar: itemtime</h1>
+<p>The contribution time of the item is output.</p>
+<h2>Arguments</h2>
+<p>
+   <table>
+      <tr>
+       <td><em>&quot;seconds&quot;</em></td>
+       <td>Numeric representation of seconds</td>
+      </tr>
+      <tr>
+       <td><em>&quot;minutes&quot;</em></td>
+       <td>Numeric representation of minutes</td>
+      </tr>
+      <tr>
+       <td><em>&quot;hours&quot;</em></td>
+       <td>Numeric representation of hours</td>
+      </tr>
+      <tr>
+       <td><em>&quot;mday&quot;</em></td>
+       <td>Numeric representation of the day of the month</td>
+      </tr>
+      <tr>
+       <td><em>&quot;wday&quot;</em></td>
+       <td>Numeric representation of the day of the week</td>
+      </tr>
+      <tr>
+       <td><em>&quot;mon&quot;</em></td>
+       <td>Numeric representation of a month</td>
+      </tr>
+      <tr>
+       <td><em>&quot;year&quot;</em></td>
+       <td>A full numeric representation of a year, 4 digits</td>
+      </tr>
+      <tr>
+       <td><em>&quot;yday&quot;</em></td>
+       <td>Numeric representation of the day of the year</td>
+     </tr>
+      <tr>
+       <td><em>&quot;weekday&quot;</em></td>
+       <td>A full textual representation of the day of the week</td>
+      </tr>
+      <tr>
+       <td><em>&quot;month&quot;</em></td>
+       <td>A full textual representation of a month, such as January or March</td>
+      </tr>
+      <tr>
+       <td><em>0</em></td>
+       <td>
+        Seconds since the Unix Epoch, similar to the values returned by
+        <span class="function"><a href="function.time.php" class="function">time()</a></span> and used by <span class="function"><a href="function.date.php" class="function">date()</a></span>.
+       </td>
+      </tr>
+   </table>
+</p>
+<h2>Skintypes</h2>
+<p>
+itemedit
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%itemtime(mday)%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-ilistaddnew" name="adminskinvar-ilistaddnew"></a>
+<h1>AdminSkinvar: ilistaddnew</h1>
+<p>A link to a new contribution screen of an item is output.</p>
+<h2>Arguments</h2>
+<p>None</p>
+<h2>Skintypes</h2>
+<p>
+itemlist
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%ilistaddnew%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-moveitemid" name="adminskinvar-moveitemid"></a>
+<h1>AdminSkinvar: moveitemid</h1>
+<p>The ID for the item I move is output.</p>
+<h2>Arguments</h2>
+<p>None</p>
+<h2>Skintypes</h2>
+<p>
+itemmove
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%moveitemid%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-blogteamlist" name="adminskinvar-blogteamlist"></a>
+<h1>AdminSkinvar: blogteamlist</h1>
+<p>A list of the members who can contribute to a blog is output.</p>
+<h2>Arguments</h2>
+<p>templateName</p>
+<h2>Skintypes</h2>
+<p>
+manageteam
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%blogteamlist(admin/default)%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-newmemberselect" name="adminskinvar-newmemberselect"></a>
+<h1>AdminSkinvar: newmemberselect</h1>
+<p>A select box of the new member who seasons the team which can contribute to a blog is output.</p>
+<h2>Arguments</h2>
+<p>templateName</p>
+<h2>Skintypes</h2>
+<p>
+manageteam
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%newmemberselect(admin/default)%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-inputyesno" name="adminskinvar-inputyesno"></a>
+<h1>AdminSkinvar: inputyesno</h1>
+<p>The form of the question answered at yes or no is output.</p>
+<h2>Arguments</h2>
+<p>name,checkedval(value of the one value1 and value2 check),tabindex,value1,value2,yesval(label for value1),noval(label for value2),isAdmin,templateName</p>
+<h2>Skintypes</h2>
+<p>
+       <ul>
+               <li>manageteam</li>
+               <li>usermanagement</li>
+       </ul>
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%inputyesno(canlogin,1,10070)%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-yrbloglist" name="adminskinvar-yrbloglist"></a>
+<h1>AdminSkinvar: yrbloglist</h1>
+<p>A list of the blogs which are being managed is output.</p>
+<h2>Arguments</h2>
+<p>templateName</p>
+<h2>Skintypes</h2>
+<p>
+overview
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%yrbloglist(admin/default)%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-editpluginfo" name="adminskinvar-editpluginfo"></a>
+<h1>AdminSkinvar: editpluginfo</h1>
+<p>Information on the plugin which is being edited is output.</p>
+<h2>Arguments</h2>
+<p>Type(id or name)</p>
+<h2>Skintypes</h2>
+<p>
+       <ul>
+               <li>plugindelete</li>
+               <li>pluginoptions</li>
+       </ul>
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%editpluginfo(name)%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-helpplugname" name="adminskinvar-helpplugname"></a>
+<h1>AdminSkinvar: helpplugname</h1>
+<p>The name of plugin indicating help is output.</p>
+<h2>Arguments</h2>
+<p>None</p>
+<h2>Skintypes</h2>
+<p>
+pluginhelp
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%helpplugname%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-pluginhelp" name="adminskinvar-pluginhelp"></a>
+<h1>AdminSkinvar: pluginhelp</h1>
+<p>help in plugin is output.</p>
+<h2>Arguments</h2>
+<p>None</p>
+<h2>Skintypes</h2>
+<p>
+pluginhelp
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%pluginhelp%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-pluginlistlist" name="adminskinvar-pluginlistlist"></a>
+<h1>AdminSkinvar: pluginlistlist</h1>
+<p>A list of plugin is output.</p>
+<h2>Arguments</h2>
+<p>templateName</p>
+<h2>Skintypes</h2>
+<p>
+pluginlist
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%pluginlistlist(admin/default)%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-newpluginlist" name="adminskinvar-newpluginlist"></a>
+<h1>AdminSkinvar: newpluginlist</h1>
+<p>Option tags of a select box of plugins of non-installation are output.</p>
+<h2>Arguments</h2>
+<p>None</p>
+<h2>Skintypes</h2>
+<p>
+pluginlist
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%newpluginlist%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-editplugoptionslist" name="adminskinvar-editplugoptionslist"></a>
+<h1>AdminSkinvar: editplugoptionslist</h1>
+<p>Plugin options are output.</p>
+<h2>Arguments</h2>
+<p>templateName</p>
+<h2>Skintypes</h2>
+<p>
+pluginoptions
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%editplugoptionslist(admin/default)%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-defblogselect" name="adminskinvar-defblogselect"></a>
+<h1>AdminSkinvar: defblogselect</h1>
+<p>The select box from which blog in default is chosen is output.</p>
+<h2>Arguments</h2>
+<p>templateName</p>
+<h2>Skintypes</h2>
+<p>
+settingsedit
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%defblogselect(admin/default)%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-configsettingsedit" name="adminskinvar-configsettingsedit"></a>
+<h1>AdminSkinvar: configsettingsedit</h1>
+<p>The form about the setting of a site is output.</p>
+<h2>Arguments</h2>
+<p>Type(DefaultListSize or SessionCookie or URLMode)</p>
+<h2>Skintypes</h2>
+<p>
+settingsedit
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%configsettingsedit(URLMode)%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-configsettingsyesno" name="adminskinvar-configsettingsyesno"></a>
+<h1>AdminSkinvar: configsettingsyesno</h1>
+<p>The form answered at yes or no about the setting of a site is output.</p>
+<h2>Arguments</h2>
+<p>Type($CONF keys),tabindex</p>
+<h2>Skintypes</h2>
+<p>
+settingsedit
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%configsettingsyesno(DisableSite, 10060)%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-outputspecialdirs" name="adminskinvar-outputspecialdirs"></a>
+<h1>AdminSkinvar: outputspecialdirs</h1>
+<p>A path of a special directory is output.</p>
+<h2>Arguments</h2>
+<p>Type(nucleusdir or mediadir)</p>
+<h2>Skintypes</h2>
+<p>
+settingsedit
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%outputspecialdirs(mediadir)%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-jstoolbaroptions" name="adminskinvar-jstoolbaroptions"></a>
+<h1>AdminSkinvar: jstoolbaroptions</h1>
+<p>The select box from which the type of the tool bar of javascript is chosen is output.</p>
+<h2>Arguments</h2>
+<p>None</p>
+<h2>Skintypes</h2>
+<p>
+settingsedit
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%jstoolbaroptions%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-mediadirwarning" name="adminskinvar-mediadirwarning"></a>
+<h1>AdminSkinvar: mediadirwarning</h1>
+<p>Warning of a media directory is output.</p>
+<h2>Arguments</h2>
+<p>None</p>
+<h2>Skintypes</h2>
+<p>
+settingsedit
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%mediadirwarning%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-passrequestvars" name="adminskinvar-passrequestvars"></a>
+<h1>AdminSkinvar: passrequestvars</h1>
+<p>Place holder</p>
+<h2>Arguments</h2>
+<p>None</p>
+<h2>Skintypes</h2>
+<p>
+showlogin
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%passrequestvars%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-editskintype" name="adminskinvar-editskintype"></a>
+<h1>AdminSkinvar: editskintype</h1>
+<p>Information on the skintype which is being edited is output.</p>
+<h2>Arguments</h2>
+<p>Type(id or name or desc or type or content or skintype or skintyperaw or prefix or mode)</p>
+<h2>Skintypes</h2>
+<p>
+       <ul>
+               <li>skindelete</li>
+               <li>skinedittype</li>
+               <li>skinremovetype</li>
+       </ul>
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%editskintype(mode)%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-editskin" name="adminskinvar-editskin"></a>
+<h1>AdminSkinvar: editskin</h1>
+<p>Information on the skin which is being edited is output.</p>
+<h2>Arguments</h2>
+<p>Type(id or name or desc or type or prefix or mode)</p>
+<h2>Skintypes</h2>
+<p>
+skinedit
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%editskin(desc)%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-specialskinlist" name="adminskinvar-specialskinlist"></a>
+<h1>AdminSkinvar: specialskinlist</h1>
+<p>A list of special skins is output.</p>
+<h2>Arguments</h2>
+<p>templateName</p>
+<h2>Skintypes</h2>
+<p>
+skinedit
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%specialskinlist(admin/default)%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-allowedskinactions" name="adminskinvar-allowedskinactions"></a>
+<h1>AdminSkinvar: allowedskinactions</h1>
+<p>A list with a link to help in practicable skin vars is output by the skin type of skin which is being edited at present.</p>
+<h2>Arguments</h2>
+<p>None</p>
+<h2>Skintypes</h2>
+<p>
+skinedittype
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%allowedskinactions%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-skineditallowedlist" name="adminskinvar-skineditallowedlist"></a>
+<h1>AdminSkinvar: skineditallowedlist</h1>
+<p>A list of template or blogs is output as an argument of practicable skin vars by the skin type which is being edited at present.</p>
+<h2>Arguments</h2>
+<p>type(blog or temolate),templateName</p>
+<h2>Skintypes</h2>
+<p>
+skinedittype
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%skineditallowedlist(template,admin/default)%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-selectlocalskinfiles" name="adminskinvar-selectlocalskinfiles"></a>
+<h1>AdminSkinvar: selectlocalskinfiles</h1>
+<p>The select box from which imported skin is chosen is indicated.</p>
+<h2>Arguments</h2>
+<p>None</p>
+<h2>Skintypes</h2>
+<p>
+skinieoverview
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%selectlocalskinfiles%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-skinielist" name="adminskinvar-skinielist"></a>
+<h1>AdminSkinvar: skinielist</h1>
+<p>A list of extracted skin/template is shown to a file.</p>
+<h2>Arguments</h2>
+<p>type,templateName</p>
+<h2>Skintypes</h2>
+<p>
+skinieoverview
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%skinielist(template,admin/default)%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-skinoverview" name="adminskinvar-skinoverview"></a>
+<h1>AdminSkinvar: skinoverview</h1>
+<p>A list of skins.</p>
+<h2>Arguments</h2>
+<p>templateName</p>
+<h2>Skintypes</h2>
+<p>
+skinoverview
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%skinoverview(admin/default)%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-edittemplateinfo" name="adminskinvar-edittemplateinfo"></a>
+<h1>AdminSkinvar: edittemplateinfo</h1>
+<p>Information on the template which is being edited is output.</p>
+<h2>Arguments</h2>
+<p>type[,desc[,name[,help[,tabindex[,big[,tplt]]]]]]</p>
+<h2>Skintypes</h2>
+<p>
+       <ul>
+               <li>templatedelete</li>
+               <li>templateedit</li>
+       </ul>
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%edittemplateinfo(name)%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-templateoverview" name="adminskinvar-templateoverview"></a>
+<h1>AdminSkinvar: templateoverview</h1>
+<p>A list of templates.</p>
+<h2>Arguments</h2>
+<p>templateName</p>
+<h2>Skintypes</h2>
+<p>
+templateoverview
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%templateoverview(admin/default)%&gt;
+</pre>
+</div>
+
+
+<div class="page">
+<a id="adminskinvar-editmemberlist" name="adminskinvar-editmemberlist"></a>
+<h1>AdminSkinvar: editmemberlist</h1>
+<p>The members list which is being edited.</p>
+<h2>Arguments</h2>
+<p>templateName</p>
+<h2>Skintypes</h2>
+<p>
+usermanagement
+</p>
+<h2>Examples</h2>
+<pre>
+&lt;%editmemberlist(admin/default)%&gt;
+</pre>
+</div>
+
+<div class="page">
+<a name="skinpartactionlog" id="skinpartactionlog"></a>
+<h1>Admin skins: actionlog</h1>
+<p>
+This skinpart is used to actionlog.
+</p>
+<p>
+Very basic buildup for a [Action Log]page page.
+</p>
+<pre>
+
+       &lt;%pagehead%&gt;
+       
+       &lt;p&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=manage&quot;&gt;(&lt;%text(_BACKTOMANAGE)%&gt;)&lt;/a&gt;&lt;/p&gt;
+       
+       &lt;h2&gt;&lt;%text(_ACTIONLOG_CLEAR_TITLE)%&gt;&lt;/h2&gt;
+       &lt;p&gt;&lt;a href=&quot;&lt;%adminurl%&gt;&lt;%addtickettourl(index.php?action=clearactionlog)%&gt;&quot;&gt;&lt;%text(_ACTIONLOG_CLEAR_TEXT)%&gt;&lt;/a&gt;&lt;/p&gt;
+       
+       &lt;h2&gt;&lt;%text(_ACTIONLOG_TITLE)%&gt;&lt;/h2&gt;
+       &lt;%actionloglist(admin/default)%&gt;
+       &lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartactivate" id="skinpartactivate"></a>
+<h1>Admin skins: activate</h1>
+<p>
+This skinpart is used to activate.
+</p>
+<p>
+Very basic buildup for a [Account Activation]page page.
+</p>
+<pre>
+
+       &lt;%pagehead%&gt;
+       &lt;h2&gt;&lt;%activationmessage(title)%&gt;&lt;/h2&gt;
+       &lt;p&gt;&lt;%activationmessage(text)%&gt;&lt;/p&gt;
+       &lt;p class=&quot;error&quot;&gt;&lt;%headmessage%&gt;&lt;/p&gt;
+       &lt;%if(bechangepass)%&gt;
+               &lt;form action=&quot;&lt;%adminurl%&gt;index.php&quot; method=&quot;post&quot;&gt;
+               &lt;p&gt;
+               &lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;activatesetpwd&quot; /&gt;
+               &lt;%ticket%&gt;
+               &lt;input type=&quot;hidden&quot; name=&quot;key&quot; value=&quot;&lt;%activationmessage(ackey)%&gt;&quot; /&gt;
+               &lt;/p&gt;
+               &lt;table frame=&quot;box&quot; rules=&quot;all&quot; summary=&quot;&lt;%text(_MEMBERS_SETPWD_BTN)%&gt;&quot;&gt;
+               &lt;tr&gt;
+               &lt;td&gt;&lt;%text(_MEMBERS_PWD)%&gt;&lt;/td&gt;
+               &lt;td&gt;&lt;input type=&quot;password&quot; maxlength=&quot;40&quot; size=&quot;16&quot; name=&quot;password&quot; /&gt;&lt;/td&gt;
+               &lt;/tr&gt;
+               &lt;tr&gt;
+               &lt;td&gt;&lt;%text(_MEMBERS_REPPWD)%&gt;&lt;/td&gt;
+               &lt;td&gt;&lt;input type=&quot;password&quot; maxlength=&quot;40&quot; size=&quot;16&quot; name=&quot;repeatpassword&quot; /&gt;&lt;/td&gt;
+               &lt;%eventformextra(activation)%&gt;
+               &lt;/tr&gt;
+               &lt;tr&gt;
+               &lt;td&gt;&lt;%text(_MEMBERS_SETPWD)%&gt;&lt;/td&gt;
+               &lt;td&gt;&lt;input type=&quot;submit&quot; value=&quot;&lt;%text(_MEMBERS_SETPWD_BTN)%&gt;&quot; /&gt;&lt;/td&gt;
+               &lt;/tr&gt;
+               &lt;/table&gt;
+               &lt;/form&gt;
+               &lt;%endif%&gt;
+       &lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartactivatesetpwd" id="skinpartactivatesetpwd"></a>
+<h1>Admin skins: activatesetpwd</h1>
+<p>
+This skinpart is used to activatesetpwd.
+</p>
+<p>
+Very basic buildup for a [Set Password]page page.
+</p>
+<pre>
+
+       &lt;%pagehead%&gt;
+       &lt;h2&gt;&lt;%text(_ACTIVATE_SUCCESS_TITLE)%&gt;&lt;/h2&gt;
+       &lt;p&gt;&lt;%text(_ACTIVATE_SUCCESS_TEXT)%&gt;&lt;/p&gt;
+       &lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartaddnewlog" id="skinpartaddnewlog"></a>
+<h1>Admin skins: addnewlog</h1>
+<p>
+This skinpart is used to addnewlog.
+</p>
+<p>
+Very basic buildup for a [New weblog created]page page.
+</p>
+<pre>
+
+       &lt;%pagehead%&gt;
+       &lt;h2&gt;&lt;%text(_BLOGCREATED_TITLE)%&gt;&lt;/h2&gt;
+       &lt;p&gt;&lt;%sprinttext(_BLOGCREATED_ADDEDTXT,&lt;|%createdblogsetting(name)%|&gt;)%&gt;&lt;/p&gt;
+       &lt;ol&gt;
+       &lt;li&gt;&lt;a href=&quot;#index_php&quot;&gt;&lt;%sprinttext(_BLOGCREATED_SIMPLEWAY,&lt;|%getblogsetting(short)%|&gt;)%&gt;&lt;/a&gt;&lt;/li&gt;
+       &lt;li&gt;&lt;a href=&quot;#skins&quot;&gt;&lt;%text(_BLOGCREATED_ADVANCEDWAY)%&gt;&lt;/a&gt;&lt;/li&gt;
+       &lt;/ol&gt;
+       &lt;h3&gt;&lt;a id=&quot;index_php&quot;&gt;&lt;%sprinttext(_BLOGCREATED_SIMPLEDESC1,&lt;|%getblogsetting(short)%|&gt;)%&gt;&lt;/a&gt;&lt;/h3&gt;
+       &lt;p&gt;&lt;%sprinttext(_BLOGCREATED_SIMPLEDESC2,&lt;|%getblogsetting(short)%|&gt;)%&gt;&lt;/p&gt;
+       &lt;pre&gt;&lt;code&gt;&amp;lt;?php
+       
+       $CONF['Self'] = '&lt;b&gt;&lt;%blogsetting(short)%&gt;.php&lt;/b&gt;';
+       
+       include('&lt;i&gt;./config.php&lt;/i&gt;');
+       
+       selectBlog('&lt;b&gt;&lt;%blogsetting(short)%&gt;&lt;/b&gt;');
+       selector();
+       
+       ?&amp;gt;&lt;/code&gt;&lt;/pre&gt;
+       &lt;p&gt;&lt;%text(_BLOGCREATED_SIMPLEDESC3)%&gt;&lt;/p&gt;
+       &lt;p&gt;&lt;%text(_BLOGCREATED_SIMPLEDESC4)%&gt;&lt;/p&gt;
+       &lt;form action=&quot;&lt;%adminurl%&gt;index.php&quot; method=&quot;post&quot;&gt;
+       &lt;p&gt;
+       &lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;addnewlog2&quot; /&gt;
+       &lt;%ticket%&gt;
+       &lt;input type=&quot;hidden&quot; name=&quot;blogid&quot; value=&quot;&lt;%requestblogid%&gt;&quot; /&gt;
+       &lt;/p&gt;
+       &lt;table&gt;
+       &lt;tr&gt;
+       &lt;td&gt;&lt;%text(_EBLOG_URL)%&gt;&lt;/td&gt;
+       &lt;td&gt;&lt;input name=&quot;url&quot; maxlength=&quot;100&quot; size=&quot;40&quot; value=&quot;&lt;%sitevar(url)%&gt;&lt;%blogsetting(short)%&gt;.php&quot; /&gt;&lt;/td&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;td&gt;&lt;%text(_EBLOG_CREATE)%&gt;&lt;/td&gt;
+       &lt;td&gt;&lt;input type=&quot;submit&quot; value=&quot;&lt;%text(_EBLOG_CREATE_BTN)%&gt;&quot; onclick=&quot;return checkSubmit();&quot; /&gt;&lt;/td&gt;
+       &lt;/tr&gt;
+       &lt;/table&gt;
+       &lt;/form&gt;
+       
+       &lt;h3&gt;&lt;a id=&quot;skins&quot;&gt;&lt;%text(_BLOGCREATED_ADVANCEDWAY2)%&gt;&lt;/a&gt;&lt;/h3&gt;
+       &lt;p&gt;&lt;%text(_BLOGCREATED_ADVANCEDWAY3)%&gt;&lt;/p&gt;
+       
+       &lt;form action=&quot;&lt;%adminurl%&gt;index.php&quot; method=&quot;post&quot;&gt;
+       &lt;p&gt;
+       &lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;addnewlog2&quot; /&gt;
+       &lt;%ticket%&gt;
+       &lt;input type=&quot;hidden&quot; name=&quot;blogid&quot; value=&quot;&lt;%requestblogid%&gt;&quot; /&gt;
+       &lt;/p&gt;
+       &lt;table frame=&quot;box&quot; rules=&quot;all&quot; summary=&quot;&lt;%text(_BLOGCREATED_ADVANCEDWAY2)%&gt;&quot;&gt;
+       &lt;tr&gt;
+       &lt;td&gt;&lt;%text(_EBLOG_URL)%&gt;&lt;/td&gt;
+       &lt;td&gt;&lt;input name=&quot;url&quot; maxlength=&quot;100&quot; size=&quot;40&quot; /&gt;&lt;/td&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;td&gt;&lt;%text(_EBLOG_CREATE)%&gt;&lt;/td&gt;
+       &lt;td&gt;&lt;input type=&quot;submit&quot; value=&quot;&lt;%text(_EBLOG_CREATE_BTN)%&gt;&quot; onclick=&quot;return checkSubmit();&quot; /&gt;&lt;/td&gt;
+       &lt;/tr&gt;
+       &lt;/table&gt;
+       &lt;/div&gt;
+       &lt;/form&gt;&lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartadminerrorpage" id="skinpartadminerrorpage"></a>
+<h1>Admin skins: adminerrorpage</h1>
+<p>
+This skinpart is used to adminerrorpage.
+</p>
+<p>
+Very basic buildup for a Nucleus management...:[Error]page page.
+</p>
+<pre>
+
+       &lt;%pagehead%&gt;
+       &lt;h2&gt;Error!&lt;/h2&gt;
+       &lt;%headmessage%&gt;&lt;br /&gt;
+       &lt;a href=&quot;&lt;%adminurl%&gt;index.php&quot; onclick=&quot;history.back()&quot;&gt;&lt;%text(_BACK)%&gt;&lt;/a&gt;
+       &lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartadminskindelete" id="skinpartadminskindelete"></a>
+<h1>Admin skins: adminskindelete</h1>
+<p>
+This skinpart is used to adminskindelete.
+</p>
+<p>
+Very basic buildup for a Admin layout:[You're about to delete the skin named ]page page.
+</p>
+<pre>
+
+       &lt;%pagehead%&gt;
+       &lt;h2&gt;&lt;%text(_DELETE_CONFIRM)%&gt;&lt;/h2&gt;
+       
+       &lt;form method=&quot;post&quot; action=&quot;&lt;%adminurl%&gt;index.php&quot;&gt;
+       &lt;p&gt;&lt;%text(_CONFIRMTXT_SKIN)%&gt;&lt;b&gt;&lt;%editskintype(name)%&gt;&lt;/b&gt; (&lt;%editskintype(desc)%&gt;)&lt;/p&gt;
+       &lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;adminskindeleteconfirm&quot; /&gt;
+       &lt;%ticket%&gt;
+       &lt;input type=&quot;hidden&quot; name=&quot;skinid&quot; value=&quot;&lt;%editskintype(id)%&gt;&quot; /&gt;
+       &lt;input type=&quot;submit&quot; tabindex=&quot;10&quot; value=&quot;&lt;%text(_DELETE_CONFIRM_BTN)%&gt;&quot; /&gt;
+       &lt;/p&gt;
+       &lt;/form&gt;
+       &lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartadminskinedit" id="skinpartadminskinedit"></a>
+<h1>Admin skins: adminskinedit</h1>
+<p>
+This skinpart is used to adminskinedit.
+</p>
+<p>
+Very basic buildup for a Admin layout:[Edit skin]page page.
+</p>
+<pre>
+
+       &lt;%pagehead%&gt;
+       &lt;p&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=adminskinoverview&quot;&gt;(&lt;%text(_SKIN_BACK)%&gt;)&lt;/a&gt;&lt;/p&gt;
+       
+       &lt;h2&gt;&lt;%text(_SKIN_EDITONE_TITLE)%&gt; '&lt;%editskin(name)%&gt;'&lt;/h2&gt;
+       
+       &lt;h3&gt;&lt;%text(_SKIN_PARTS_TITLE)%&gt;&lt;/h3&gt;
+       &lt;%text(_SKIN_PARTS_MSG)%&gt;
+       &lt;%normalskinlist(admin/default)%&gt;
+       
+       &lt;h3&gt;&lt;%text(_SKIN_PARTS_SPECIAL)%&gt;&lt;/h3&gt;
+       &lt;form method=&quot;get&quot; action=&quot;&lt;%adminurl%&gt;index.php&quot;&gt;
+       &lt;p&gt;
+       &lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;adminskinedittype&quot; /&gt;
+       &lt;input type=&quot;hidden&quot; name=&quot;skinid&quot; value=&quot;&lt;%editskin(id)%&gt;&quot; /&gt;
+       &lt;input name=&quot;type&quot; tabindex=&quot;89&quot; size=&quot;30&quot; maxlength=&quot;64&quot; /&gt;
+       &lt;input type=&quot;submit&quot; tabindex=&quot;140&quot; value=&quot;&lt;%text(_SKIN_CREATE)%&gt;&quot; onclick=&quot;return checkSubmit();&quot; /&gt;
+       &lt;/p&gt;
+       &lt;/form&gt;
+       &lt;%specialskinlist(admin/default)%&gt;
+       
+       &lt;h3&gt;&lt;%text(_SKIN_GENSETTINGS_TITLE)%&gt;&lt;/h3&gt;
+       &lt;form method=&quot;post&quot; action=&quot;&lt;%adminurl%&gt;index.php&quot;&gt;
+       &lt;p&gt;
+       &lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;adminskineditgeneral&quot; /&gt;
+       &lt;%ticket%&gt;
+       &lt;input type=&quot;hidden&quot; name=&quot;skinid&quot; value=&quot;&lt;%editskin(id)%&gt;&quot; /&gt;
+       &lt;table frame=&quot;box&quot; rules=&quot;all&quot; summary=&quot;&lt;%text(_SKIN_GENSETTINGS_TITLE)%&gt;&quot;&gt;
+       &lt;tr&gt;
+       &lt;td&gt;&lt;%text(_SKIN_NAME)%&gt; &lt;%helplink(shortnames)%&gt;&lt;/td&gt;
+       &lt;td&gt;&lt;input name=&quot;name&quot; value=&quot;&lt;%editskin(name)%&gt;&quot; maxlength=&quot;64&quot; size=&quot;30&quot; tabindex=&quot;90&quot; /&gt;&lt;/td&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;td&gt;&lt;%text(_SKIN_DESC)%&gt;&lt;/td&gt;
+       &lt;td&gt;&lt;input name=&quot;desc&quot; value=&quot;&lt;%editskin(desc)%&gt;&quot; maxlength=&quot;200&quot; size=&quot;50&quot; tabindex=&quot;100&quot; /&gt;&lt;/td&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;td&gt;&lt;%text(_SKIN_TYPE)%&gt;&lt;/td&gt;
+       &lt;td&gt;&lt;input name=&quot;type&quot; value=&quot;&lt;%editskin(type)%&gt;&quot; maxlength=&quot;40&quot; size=&quot;20&quot; tabindex=&quot;110&quot; /&gt;&lt;/td&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;td&gt;&lt;%text(_SKIN_INCLUDE_MODE)%&gt; &lt;%helplink(includemode)%&gt;&lt;/td&gt;
+       &lt;td&gt;&lt;%editskin(mode)%&gt;&lt;/td&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;td&gt;&lt;%text(_SKIN_INCLUDE_PREFIX)%&gt; &lt;%helplink(includeprefix)%&gt;&lt;/td&gt;
+       &lt;td&gt;&lt;input name=&quot;inc_prefix&quot; value=&quot;&lt;%editskin(prefix)%&gt;&quot; maxlength=&quot;40&quot; size=&quot;20&quot; tabindex=&quot;130&quot; /&gt;&lt;/td&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;td&gt;&lt;%text(_SKIN_CHANGE)%&gt;&lt;/td&gt;
+       &lt;td&gt;&lt;input type=&quot;submit&quot; value=&quot;&lt;%text(_SKIN_CHANGE_BTN)%&gt;&quot; onclick=&quot;return checkSubmit();&quot; tabindex=&quot;140&quot; /&gt;&lt;/td&gt;
+       &lt;/tr&gt;
+       &lt;/table&gt;
+       &lt;/p&gt;
+       &lt;/form&gt;
+       &lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartadminskinedittype" id="skinpartadminskinedittype"></a>
+<h1>Admin skins: adminskinedittype</h1>
+<p>
+This skinpart is used to adminskinedittype.
+</p>
+<p>
+Very basic buildup for a Admin layout:[Edit Skin]page page.
+</p>
+<pre>
+
+       &lt;%pagehead%&gt;
+       &lt;p&gt;(&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=adminskinoverview&quot;&gt;&lt;%text(_SKIN_GOBACK)%&gt;&lt;/a&gt;)&lt;/p&gt;
+       
+       &lt;h2&gt;&lt;%text(_SKIN_EDITPART_TITLE)%&gt; '&lt;%editskintype(name)%&gt;': &lt;%editskintype(skintype)%&gt;&lt;/h2&gt;
+       &lt;%headmessage%&gt;
+       
+       &lt;form method=&quot;post&quot; action=&quot;&lt;%adminurl%&gt;index.php&quot;&gt;
+       &lt;p&gt;
+       &lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;adminskinupdate&quot; /&gt;
+       &lt;%ticket%&gt;
+       &lt;input type=&quot;hidden&quot; name=&quot;skinid&quot; value=&quot;&lt;%editskintype(id)%&gt;&quot; /&gt;
+       &lt;input type=&quot;hidden&quot; name=&quot;type&quot; value=&quot;&lt;%editskintype(skintyperaw)%&gt;&quot; /&gt;
+       &lt;input type=&quot;submit&quot; value=&quot;&lt;%text(_SKIN_UPDATE_BTN)%&gt;&quot; onclick=&quot;return checkSubmit();&quot; /&gt;
+       &lt;input type=&quot;reset&quot; value=&quot;&lt;%text(_SKIN_RESET_BTN)%&gt;&quot; /&gt;
+       (skin type: &lt;%editskintype(skintype)%&gt;)&lt;%skintypehelp%&gt;&lt;br /&gt;
+       &lt;textarea class=&quot;skinedit&quot; tabindex=&quot;10&quot; rows=&quot;20&quot; cols=&quot;80&quot; name=&quot;content&quot;&gt;&lt;%editskintype(content)%&gt;&lt;/textarea&gt;&lt;br /&gt;
+       &lt;input type=&quot;submit&quot; tabindex=&quot;20&quot; value=&quot;&lt;%text(_SKIN_UPDATE_BTN)%&gt;&quot; onclick=&quot;return checkSubmit();&quot; /&gt;
+       &lt;input type=&quot;reset&quot; value=&quot;&lt;%text(_SKIN_RESET_BTN)%&gt;&quot; /&gt;
+       (skin type: &lt;%editskintype(skintype)%&gt;)
+       &lt;br /&gt;
+       &lt;br /&gt;
+       &lt;%text(_SKIN_ALLOWEDVARS)%&gt;
+       &lt;%allowedskinactions%&gt;&lt;br /&gt;&lt;br /&gt;
+       &lt;%text(_SKINEDIT_ALLOWEDTEMPLATESS)%&gt;
+       &lt;%skineditallowedlist(template)%&gt;&lt;br /&gt;
+       &lt;/p&gt;
+       &lt;/form&gt;
+       &lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartadminskiniedoimport" id="skinpartadminskiniedoimport"></a>
+<h1>Admin skins: adminskiniedoimport</h1>
+<p>
+This skinpart is used to adminskiniedoimport.
+</p>
+<p>
+Very basic buildup for a Admin layout:[Done Importing]page page.
+</p>
+<pre>
+
+       &lt;%pagehead%&gt;
+       &lt;p&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=manage&quot;&gt;(&lt;%text(_BACKTOMANAGE)%&gt;)&lt;/a&gt;&lt;/p&gt;
+       
+       &lt;h2&gt;&lt;%text(_SKINIE_DONE)%&gt;&lt;/h2&gt;
+       
+       &lt;ul&gt;
+       &lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;%text(_SKINIE_INFO_GENERAL)%&gt;&lt;/strong&gt; &lt;%importskininfo(info)%&gt;&lt;/p&gt;&lt;/li&gt;
+       &lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;%text(_SKINIE_INFO_IMPORTEDSKINS)%&gt;&lt;/strong&gt; &lt;%importskininfo(snames)%&gt;&lt;/p&gt;&lt;/li&gt;
+       &lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;%text(_SKINIE_INFO_IMPORTEDTEMPLS)%&gt;&lt;/strong&gt; &lt;%importskininfo(tnames)%&gt;&lt;/p&gt;&lt;/li&gt;
+       &lt;/ul&gt;
+       &lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartadminskinieimport" id="skinpartadminskinieimport"></a>
+<h1>Admin skins: adminskinieimport</h1>
+<p>
+This skinpart is used to adminskinieimport.
+</p>
+<p>
+Very basic buildup for a Admin layout:[About to import skins and templates]page page.
+</p>
+<pre>
+
+       &lt;%pagehead%&gt;
+       &lt;p&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=adminskinieoverview&quot;&gt;(&lt;%text(_BACK)%&gt;)&lt;/a&gt;&lt;/p&gt;
+       &lt;h2&gt;&lt;%text(_SKINIE_CONFIRM_TITLE)%&gt;&lt;/h2&gt;
+       
+       &lt;ul&gt;
+       &lt;li&gt;&lt;strong&gt;&lt;%text(_SKINIE_INFO_GENERAL)%&gt;&lt;/strong&gt; &lt;%importskininfo(info)%&gt;&lt;/li&gt;
+       &lt;li&gt;&lt;strong&gt;&lt;%text(_SKINIE_INFO_SKINS)%&gt;&lt;/strong&gt; &lt;%importskininfo(snames)%&gt;&lt;/li&gt;
+       &lt;li&gt;&lt;strong&gt;&lt;%text(_SKINIE_INFO_TEMPLATES)%&gt;&lt;/strong&gt; &lt;%importskininfo(tnames)%&gt;&lt;/li&gt;
+       &lt;%if(nameclashes)%&gt;
+               &lt;li&gt;&lt;strong style=&quot;color: red;&quot;&gt;&lt;%text(_SKINIE_INFO_SKINCLASH)%&gt;&lt;/strong&gt; &lt;%importskininfo(sclashes)%&gt;&lt;/li&gt;
+               &lt;li&gt;&lt;strong style=&quot;color: red;&quot;&gt;&lt;%text(_SKINIE_INFO_TEMPLCLASH)%&gt;&lt;/strong&gt; &lt;%importskininfo(tclashes)%&gt;&lt;/li&gt;
+       &lt;%endif%&gt;
+       &lt;/ul&gt;
+       
+       &lt;form method=&quot;post&quot; action=&quot;&lt;%adminurl%&gt;index.php&quot;&gt;
+       &lt;p&gt;
+       &lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;adminskiniedoimport&quot; /&gt;
+       &lt;%ticket%&gt;
+       &lt;input type=&quot;hidden&quot; name=&quot;skinfile&quot; value=&quot;&lt;%importskininfo(skinfile)%&gt;&quot; /&gt;
+       &lt;input type=&quot;hidden&quot; name=&quot;mode&quot; value=&quot;&lt;%importskininfo(mode)%&gt;&quot; /&gt;
+       &lt;input type=&quot;submit&quot; value=&quot;&lt;%text(_SKINIE_CONFIRM_IMPORT)%&gt;&quot; /&gt;
+       &lt;%if(nameclashes)%&gt;
+               &lt;br /&gt;
+               &lt;input type=&quot;checkbox&quot; name=&quot;overwrite&quot; value=&quot;1&quot; id=&quot;cb_overwrite&quot; /&gt;
+               &lt;label for=&quot;cb_overwrite&quot;&gt;&lt;%text(_SKINIE_CONFIRM_OVERWRITE)%&gt;&lt;/label&gt;
+       &lt;%endif%&gt;
+       &lt;/p&gt;
+       &lt;/form&gt;
+       &lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartadminskinieoverview" id="skinpartadminskinieoverview"></a>
+<h1>Admin skins: adminskinieoverview</h1>
+<p>
+This skinpart is used to adminskinieoverview.
+</p>
+<p>
+Very basic buildup for a Admin layout:[Import/Export]page page.
+</p>
+<pre>
+
+       &lt;%pagehead%&gt;
+       &lt;p&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=manage&quot;&gt;(&lt;%text(_BACKTOMANAGE)%&gt;)&lt;/a&gt;&lt;/p&gt;
+       
+       &lt;h2&gt;&lt;%text(_SKINIE_TITLE_IMPORT)%&gt;&lt;/h2&gt;
+       
+       &lt;p&gt;
+       &lt;label for=&quot;skinie_import_local&quot;&gt;&lt;%text(_SKINIE_LOCAL)%&gt;&lt;/label&gt;
+       &lt;/p&gt;
+       
+       &lt;%if(superadmin)%&gt;
+               &lt;form method=&quot;post&quot; action=&quot;&lt;%adminurl%&gt;index.php&quot;&gt;
+               &lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;adminskinieimport&quot; /&gt;
+               &lt;%ticket%&gt;
+               &lt;input type=&quot;hidden&quot; name=&quot;mode&quot; value=&quot;file&quot; /&gt;
+               &lt;select name=&quot;skinfile&quot; id=&quot;skinie_import_local&quot;&gt;
+               &lt;%selectlocalskinfiles%&gt;
+               &lt;/select&gt;
+               &lt;input type=&quot;submit&quot; value=&quot;&lt;%text(_SKINIE_BTN_IMPORT)%&gt;&quot; /&gt;
+               &lt;/form&gt;
+       &lt;%else%&gt;
+               &lt;%text(_SKINIE_NOCANDIDATES)%&gt;
+       &lt;%endif%&gt;
+       &lt;/p&gt;
+       
+       &lt;form method=&quot;post&quot; action=&quot;&lt;%adminurl%&gt;index.php&quot;&gt;
+       &lt;p&gt;
+       &lt;em&gt;&lt;%text(_OR)%&gt;&lt;/em&gt;
+       &lt;%ticket%&gt;
+       &lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;adminskinieimport&quot; /&gt;
+       &lt;input type=&quot;hidden&quot; name=&quot;mode&quot; value=&quot;url&quot; /&gt;
+       &lt;label for=&quot;skinie_import_url&quot;&gt;&lt;%text(_SKINIE_FROMURL)%&gt;&lt;/label&gt;
+       &lt;input type=&quot;text&quot; name=&quot;skinfile&quot; id=&quot;skinie_import_url&quot; size=&quot;60&quot; value=&quot;http://&quot; /&gt;
+       &lt;input type=&quot;submit&quot; value=&quot;&lt;%text(_SKINIE_BTN_IMPORT)%&gt;&quot; /&gt;
+       &lt;/p&gt;
+       &lt;/form&gt;
+       
+       &lt;h2&gt;&lt;%text(_SKINIE_TITLE_EXPORT)%&gt;&lt;/h2&gt;
+       &lt;form method=&quot;post&quot; action=&quot;&lt;%adminurl%&gt;index.php&quot;&gt;
+       &lt;p&gt;
+       &lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;adminskinieexport&quot; /&gt;
+       &lt;%ticket%&gt;
+       &lt;%text(_SKINIE_EXPORT_INTRO)%&gt;
+       &lt;/p&gt;
+       
+       &lt;table frame=&quot;box&quot; rules=&quot;all&quot; summary=&quot;&lt;%text(_SKINIE_TITLE_EXPORT)%&gt;&quot;&gt;
+       &lt;tr&gt;
+       &lt;th colspan=&quot;2&quot;&gt;&lt;%text(_SKINIE_EXPORT_SKINS)%&gt;&lt;/th&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;%skinielist(skin,admin/default)%&gt;
+       &lt;th colspan=&quot;2&quot;&gt;&lt;%text(_SKINIE_EXPORT_TEMPLATES)%&gt;&lt;/th&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;%skinielist(template,admin/default)%&gt;
+       &lt;th colspan=&quot;2&quot;&gt;&lt;%text(_SKINIE_EXPORT_EXTRA)%&gt;&lt;/th&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;td colspan=&quot;2&quot;&gt;&lt;textarea cols=&quot;40&quot; rows=&quot;5&quot; name=&quot;info&quot;&gt;&lt;/textarea&gt;&lt;/td&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;th colspan=&quot;2&quot;&gt;&lt;%text(_SKINIE_TITLE_EXPORT)%&gt;&lt;/th&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;td colspan=&quot;2&quot;&gt;&lt;input type=&quot;submit&quot; value=&quot;&lt;%text(_SKINIE_BTN_EXPORT)%&gt;&quot; /&gt;&lt;/td&gt;
+       &lt;/tr&gt;
+       &lt;/table&gt;
+       &lt;/form&gt;
+       &lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartadminskinoverview" id="skinpartadminskinoverview"></a>
+<h1>Admin skins: adminskinoverview</h1>
+<p>
+This skinpart is used to adminskinoverview.
+</p>
+<p>
+Very basic buildup for a Admin layout:[Skins]page page.
+</p>
+<pre>
+
+       &lt;%pagehead%&gt;
+       &lt;p&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=manage&quot;&gt;(&lt;%text(_BACKTOMANAGE)%&gt;)&lt;/a&gt;&lt;/p&gt;
+       &lt;h2&gt;&lt;%text(_SKIN_EDIT_TITLE)%&gt;&lt;/h2&gt;
+       
+       &lt;h3&gt;&lt;%text(_SKIN_AVAILABLE_TITLE)%&gt;&lt;/h3&gt;
+       &lt;%skinoverview(admin/default)%&gt;
+       
+       &lt;h3&gt;&lt;%text(_SKIN_NEW_TITLE)%&gt;&lt;/h3&gt;
+       &lt;form method=&quot;post&quot; action=&quot;&lt;%adminurl%&gt;&quot;&gt;
+       &lt;p&gt;
+       &lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;adminskinnew&quot; /&gt;
+       &lt;%ticket%&gt;
+       &lt;table frame=&quot;box&quot; rules=&quot;all&quot; summary=&quot;&lt;%text(_SKIN_NEW_TITLE)%&gt;&quot;&gt;
+       &lt;tr&gt;
+       &lt;td&gt;&lt;%text(_SKIN_NAME)%&gt; &lt;%helplink(shortnames)%&gt;&lt;/td&gt;
+       &lt;td&gt;&lt;input name=&quot;name&quot; tabindex=&quot;10010&quot; maxlength=&quot;20&quot; size=&quot;20&quot; /&gt;&lt;/td&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;td&gt;&lt;%text(_SKIN_DESC)%&gt;&lt;/td&gt;
+       &lt;td&gt;&lt;input name=&quot;desc&quot; tabindex=&quot;10020&quot; maxlength=&quot;200&quot; size=&quot;50&quot; /&gt;&lt;/td&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;td&gt;&lt;%text(_SKIN_CREATE)%&gt;&lt;/td&gt;
+       &lt;td&gt;&lt;input type=&quot;submit&quot; tabindex=&quot;10030&quot; value=&quot;&lt;%text(_SKIN_CREATE_BTN)%&gt;&quot; onclick=&quot;return checkSubmit();&quot; /&gt;&lt;/td&gt;
+       &lt;/tr&gt;
+       &lt;/table&gt;
+       &lt;/p&gt;
+       &lt;/form&gt;
+       &lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartadminskinremovetype" id="skinpartadminskinremovetype"></a>
+<h1>Admin skins: adminskinremovetype</h1>
+<p>
+This skinpart is used to adminskinremovetype.
+</p>
+<p>
+Very basic buildup for a Admin layout:[Do you really want to delete this special skin part?]page page.
+</p>
+<pre>
+
+       &lt;%pagehead%&gt;
+       &lt;h2&gt;&lt;%text(_DELETE_CONFIRM)%&gt;&lt;/h2&gt;
+       &lt;p&gt;&lt;%text(_CONFIRMTXT_SKIN_PARTS_SPECIAL)%&gt;&lt;br /&gt;
+       &lt;b&gt;&lt;%editskintype(skintype)%&gt; (&lt;%editskintype(name)%&gt;)&lt;/b&gt; (&lt;%editskintype(desc)%&gt;)&lt;/p&gt;
+       &lt;form method=&quot;post&quot; action=&quot;&lt;%adminurl%&gt;index.php&quot;&gt;
+       &lt;p&gt;
+       &lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;adminskinremovetypeconfirm&quot; /&gt;
+       &lt;%ticket%&gt;
+       &lt;input type=&quot;hidden&quot; name=&quot;skinid&quot; value=&quot;&lt;%editskintype(id)%&gt;&quot; /&gt;
+       &lt;input type=&quot;hidden&quot; name=&quot;type&quot; value=&quot;&lt;%editskintype(skintype)%&gt;&quot; /&gt;
+       &lt;input type=&quot;submit&quot; tabindex=&quot;10&quot; value=&quot;&lt;%text(_DELETE_CONFIRM_BTN)%&gt;&quot; /&gt;
+       &lt;/p&gt;
+       &lt;/form&gt;
+       &lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartadmintemplatedelete" id="skinpartadmintemplatedelete"></a>
+<h1>Admin skins: admintemplatedelete</h1>
+<p>
+This skinpart is used to admintemplatedelete.
+</p>
+<p>
+Very basic buildup for a Admin layout:[You're about to delete the template named ]page page.
+</p>
+<pre>
+
+       &lt;%pagehead%&gt;
+       &lt;h2&gt;&lt;%text(_DELETE_CONFIRM)%&gt;&lt;/h2&gt;
+       &lt;p&gt;&lt;%text(_CONFIRMTXT_TEMPLATE)%&gt;&lt;b&gt;&lt;%edittemplateinfo(name)%&gt;&lt;/b&gt; (&lt;%edittemplateinfo(desc)%&gt;)&lt;/p&gt;
+       &lt;form method=&quot;post&quot; action=&quot;&lt;%adminurl%&gt;index.php&quot;&gt;
+       &lt;p&gt;
+       &lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;admintemplatedeleteconfirm&quot; /&gt;
+       &lt;%ticket%&gt;
+       &lt;input type=&quot;hidden&quot; name=&quot;templateid&quot; value=&quot;&lt;%edittemplateinfo(id)%&gt;&quot; /&gt;
+       &lt;input type=&quot;submit&quot; tabindex=&quot;10&quot; value=&quot;&lt;%text(_DELETE_CONFIRM_BTN)%&gt;&quot; /&gt;
+       &lt;/p&gt;
+       &lt;/form&gt;
+       &lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartadmintemplateedit" id="skinpartadmintemplateedit"></a>
+<h1>Admin skins: admintemplateedit</h1>
+<p>
+This skinpart is used to admintemplateedit.
+</p>
+<p>
+Very basic buildup for a Admin layout:[Edit Template]page page.
+</p>
+<pre>
+
+       &lt;%pagehead%&gt;
+       &lt;p&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=admintemplateoverview&quot;&gt;(&lt;%text(_TEMPLATE_BACK)%&gt;)&lt;/a&gt;&lt;/p&gt;
+       
+       &lt;h2&gt;&lt;%text(_TEMPLATE_EDIT_TITLE)%&gt; '&lt;%edittemplateinfo(name)%&gt;'&lt;/h2&gt;
+       &lt;%headmessage%&gt;
+       
+       &lt;p&gt;&lt;%text(_TEMPLATE_EDIT_MSG)%&gt;&lt;/p&gt;
+       
+       &lt;form method=&quot;post&quot; action=&quot;&lt;%adminurl%&gt;index.php&quot;&gt;
+       &lt;p&gt;
+       &lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;admintemplateupdate&quot; /&gt;
+       &lt;%ticket%&gt;
+       &lt;input type=&quot;hidden&quot; name=&quot;templateid&quot; value=&quot;&lt;%edittemplateinfo(id)%&gt;&quot; /&gt;
+       &lt;/p&gt;
+       &lt;table frame=&quot;box&quot; rules=&quot;all&quot; summary=&quot;&lt;%text(_TEMPLATE_EDIT_TITLE)%&gt;&quot;&gt;
+       &lt;tr&gt;
+       &lt;th colspan=&quot;2&quot;&gt;&lt;%text(_TEMPLATE_SETTINGS)%&gt;&lt;/th&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;td&gt;&lt;%text(_TEMPLATE_NAME)%&gt; &lt;%helplink(shortnames)%&gt;&lt;/td&gt;
+       &lt;td&gt;&lt;input name=&quot;tname&quot; tabindex=&quot;4&quot; size=&quot;20&quot; maxlength=&quot;20&quot; value=&quot;&lt;%edittemplateinfo(name)%&gt;&quot; /&gt;&lt;/td&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;td&gt;&lt;%text(_TEMPLATE_DESC)%&gt;&lt;/td&gt;
+       &lt;td&gt;&lt;input name=&quot;tdesc&quot; tabindex=&quot;5&quot; size=&quot;50&quot; maxlength=&quot;200&quot; value=&quot;&lt;%edittemplateinfo(desc)%&gt;&quot; /&gt;&lt;/td&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;th colspan=&quot;2&quot;&gt;&lt;%text(_TEMPLATE_UPDATE)%&gt;&lt;/th&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;td&gt;&lt;%text(_TEMPLATE_UPDATE)%&gt;&lt;/td&gt;
+       &lt;td&gt;
+       &lt;input type=&quot;submit&quot; tabindex=&quot;6&quot; value=&quot;&lt;%text(_TEMPLATE_UPDATE_BTN)%&gt;&quot; onclick=&quot;return checkSubmit();&quot; /&gt;
+       &lt;input type=&quot;reset&quot; tabindex=&quot;7&quot; value=&quot;&lt;%text(_TEMPLATE_RESET_BTN)%&gt;&quot; /&gt;
+       &lt;/td&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;th colspan=&quot;2&quot;&gt;&lt;%text(_QMENU_LAYOUT_SKINS)%&gt;&lt;/th&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_NORMALSKINLIST_HEAD, NORMALSKINLIST_HEAD, ,8)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_NORMALSKINLIST_BODY, NORMALSKINLIST_BODY, ,9)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_NORMALSKINLIST_FOOT, NORMALSKINLIST_FOOT, ,10)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SPECIALSKINLIST_HEAD, SPECIALSKINLIST_HEAD, , 11)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SPECIALSKINLIST_BODY, SPECIALSKINLIST_BODY, , 12)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SPECIALSKINLIST_FOOT, SPECIALSKINLIST_FOOT, , 13)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SKINIE_EXPORT_LIST, SKINIE_EXPORT_LIST, , 17)%&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;th colspan=&quot;2&quot;&gt;&lt;%text(_QMENU_LAYOUT_TEMPL)%&gt;&lt;/th&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_TEMPLATE_EDIT_EXPLUGNAME, TEMPLATE_EDIT_EXPLUGNAME, , 18)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_TEMPLATE_EDIT_ROW_HEAD, TEMPLATE_EDIT_ROW_HEAD, , 19)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_TEMPLATE_EDIT_ROW_TAIL, TEMPLATE_EDIT_ROW_TAIL, , 20)%&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;th colspan=&quot;2&quot;&gt;&lt;%text(_SKINABLEADMIN_ADMINAREAHEADLINK)%&gt;&lt;/th&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_ADMIN_BLOGLINK, ADMIN_BLOGLINK, , 21)%&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;th colspan=&quot;2&quot;&gt;&lt;%text(_SKINABLEADMIN_BATCH)%&gt;&lt;/th&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_ADMIN_BATCHLIST, ADMIN_BATCHLIST, , 22)%&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;th colspan=&quot;2&quot;&gt;&lt;%text(_QMENU_ACTIVATE)%&gt;&lt;/th&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_ACTIVATE_FORGOT_TITLE, ACTIVATE_FORGOT_TITLE, , 23)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_ACTIVATE_FORGOT_TEXT, ACTIVATE_FORGOT_TEXT, , 24)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_ACTIVATE_REGISTER_TITLE, ACTIVATE_REGISTER_TITLE, , 25)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_ACTIVATE_REGISTER_TEXT, ACTIVATE_REGISTER_TEXT, , 26)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_ACTIVATE_CHANGE_TITLE, ACTIVATE_CHANGE_TITLE, , 27)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_ACTIVATE_CHANGE_TEXT, ACTIVATE_CHANGE_TEXT, , 28)%&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;th colspan=&quot;2&quot;&gt;&lt;%text(_QMENU_MANAGE_SYSTEM)%&gt;&lt;/th&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SYSTEMINFO_GDSETTINGS, SYSTEMINFO_GDSETTINGS, , 29)%&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;th colspan=&quot;2&quot;&gt;&lt;%text(_BLOGLIST_BANS)%&gt;&lt;/th&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_BANLIST_DELETED_LIST, BANLIST_DELETED_LIST, , 30)%&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;th colspan=&quot;2&quot;&gt;&lt;%text(_SKINABLEADMIN_TPLSETTING_INGENERAL)%&gt;&lt;/th&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_INSERT_PLUGOPTION_TITLE, INSERT_PLUGOPTION_TITLE, , 31)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_INSERT_PLUGOPTION_BODY, INSERT_PLUGOPTION_BODY, , 32)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_INPUTYESNO_TEMPLATE_ADMIN, INPUTYESNO_TEMPLATE_ADMIN, , 33)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_INPUTYESNO_TEMPLATE_NORMAL, INPUTYESNO_TEMPLATE_NORMAL, , 34)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_ADMIN_CUSTOMHELPLINK_ICON, ADMIN_CUSTOMHELPLINK_ICON, , 35)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_ADMIN_CUSTOMHELPLINK_ANCHOR, ADMIN_CUSTOMHELPLINK_ANCHOR, , 36)%&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;th colspan=&quot;2&quot;&gt;&lt;%text(_SKINABLEADMIN_SHOWLIST_LISTPLUG_SELECT)%&gt;&lt;/th&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_SELECT_HEAD, SHOWLIST_LISTPLUG_SELECT_HEAD, , 37)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_SELECT_BODY, SHOWLIST_LISTPLUG_SELECT_BODY, , 38)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_SELECT_FOOT, SHOWLIST_LISTPLUG_SELECT_FOOT, , 39)%&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;th colspan=&quot;2&quot;&gt;&lt;%text(_SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE)%&gt;&lt;/th&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_HEAD, SHOWLIST_LISTPLUG_TABLE_HEAD, , 40)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BODY, SHOWLIST_LISTPLUG_TABLE_BODY, , 41)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_FOOT, SHOWLIST_LISTPLUG_TABLE_FOOT, , 42)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_MEMBLIST_HEAD, SHOWLIST_LISTPLUG_TABLE_MEMBLIST_HEAD, , 43)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_MEMBLIST_BODY, SHOWLIST_LISTPLUG_TABLE_MEMBLIST_BODY, , 44)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_MEMBLIST_FOOT, SHOWLIST_LISTPLUG_TABLE_MEMBLIST_FOOT, , 45)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_TEAMLIST_HEAD, SHOWLIST_LISTPLUG_TABLE_TEAMLIST_HEAD, , 46)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_TEAMLIST_BODY, SHOWLIST_LISTPLUG_TABLE_TEAMLIST_BODY, , 47)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_TEAMLIST_FOOT, SHOWLIST_LISTPLUG_TABLE_TEAMLIST_FOOT, , 48)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HEAD, SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HEAD, , 49)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY, SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY, , 50)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL, SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL, , 51)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST, SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST, , 52)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE, SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE, , 53)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND, SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND, , 54)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ, SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ, , 55)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE, SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE, , 56)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN, SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN, , 57)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN, SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN, , 58)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP, SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP, , 59)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL, SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL, , 60)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_FOOT, SHOWLIST_LISTPLUG_TABLE_PLUGLIST_FOOT, , 61)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_POPTLIST_HEAD, SHOWLIST_LISTPLUG_TABLE_POPTLIST_HEAD, , 62)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_POPTLIST_BODY, SHOWLIST_LISTPLUG_TABLE_POPTLIST_BODY, , 63)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLGOPT_OYESNO, SHOWLIST_LISTPLUG_TABLE_PLGOPT_OYESNO, , 64)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLGOPT_OPWORD, SHOWLIST_LISTPLUG_TABLE_PLGOPT_OPWORD, , 65)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLGOPT_OSELEP, SHOWLIST_LISTPLUG_TABLE_PLGOPT_OSELEP, , 66)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLGOPT_OSELEO, SHOWLIST_LISTPLUG_TABLE_PLGOPT_OSELEO, , 67)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLGOPT_OSELEC, SHOWLIST_LISTPLUG_TABLE_PLGOPT_OSELEC, , 68)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLGOPT_OTAREA, SHOWLIST_LISTPLUG_TABLE_PLGOPT_OTAREA, , 69)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLGOPT_OITEXT, SHOWLIST_LISTPLUG_TABLE_PLGOPT_OITEXT, , 70)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTN_FOOT, SHOWLIST_LISTPLUG_TABLE_PLUGOPTN_FOOT, , 71)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_POPTLIST_FOOT, SHOWLIST_LISTPLUG_TABLE_POPTLIST_FOOT, , 72)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_ITEMLIST_HEAD, SHOWLIST_LISTPLUG_TABLE_ITEMLIST_HEAD, , 73)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_ITEMLIST_BODY, SHOWLIST_LISTPLUG_TABLE_ITEMLIST_BODY, , 74)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_ITEMLIST_FOOT, SHOWLIST_LISTPLUG_TABLE_ITEMLIST_FOOT, , 75)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_CMNTLIST_HEAD, SHOWLIST_LISTPLUG_TABLE_CMNTLIST_HEAD, , 76)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_CMNTLIST_BODY, SHOWLIST_LISTPLUG_TABLE_CMNTLIST_BODY, , 77)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_CMNTLIST_ABAN, SHOWLIST_LISTPLUG_TABLE_CMNTLIST_ABAN, , 78)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_CMNTLIST_FOOT, SHOWLIST_LISTPLUG_TABLE_CMNTLIST_FOOT, , 79)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLOGLIST_HEAD, SHOWLIST_LISTPLUG_TABLE_BLOGLIST_HEAD, , 80)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLOGLIST_BODY, SHOWLIST_LISTPLUG_TABLE_BLOGLIST_BODY, , 81)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM, SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM, , 82)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM, SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM, , 83)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLOGLIST_FOOT, SHOWLIST_LISTPLUG_TABLE_BLOGLIST_FOOT, , 84)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLOGSNAM_HEAD, SHOWLIST_LISTPLUG_TABLE_BLOGSNAM_HEAD, , 85)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLOGSNAM_BODY, SHOWLIST_LISTPLUG_TABLE_BLOGSNAM_BODY, , 86)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLOGSNAM_FOOT, SHOWLIST_LISTPLUG_TABLE_BLOGSNAM_FOOT, , 87)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_SHORTNAM_HEAD, SHOWLIST_LISTPLUG_TABLE_SHORTNAM_HEAD, , 88)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_SHORTNAM_BODY, SHOWLIST_LISTPLUG_TABLE_SHORTNAM_BODY, , 89)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_SHORTNAM_FOOT, SHOWLIST_LISTPLUG_TABLE_SHORTNAM_FOOT, , 90)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_CATELIST_HEAD, SHOWLIST_LISTPLUG_TABLE_CATELIST_HEAD, , 91)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_CATELIST_BODY, SHOWLIST_LISTPLUG_TABLE_CATELIST_BODY, , 92)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_CATELIST_FOOT, SHOWLIST_LISTPLUG_TABLE_CATELIST_FOOT, , 93)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_TPLTLIST_HEAD, SHOWLIST_LISTPLUG_TABLE_TPLTLIST_HEAD, , 94)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_TPLTLIST_BODY, SHOWLIST_LISTPLUG_TABLE_TPLTLIST_BODY, , 95)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_TPLTLIST_FOOT, SHOWLIST_LISTPLUG_TABLE_TPLTLIST_FOOT, , 96)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_SKINLIST_HEAD, SHOWLIST_LISTPLUG_TABLE_SKINLIST_HEAD, , 97)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_SKINLIST_BODY, SHOWLIST_LISTPLUG_TABLE_SKINLIST_BODY, , 98)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_SKINLIST_FOOT, SHOWLIST_LISTPLUG_TABLE_SKINLIST_FOOT, , 99)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_DRFTLIST_HEAD, SHOWLIST_LISTPLUG_TABLE_DRFTLIST_HEAD, , 100)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_DRFTLIST_BODY, SHOWLIST_LISTPLUG_TABLE_DRFTLIST_BODY, , 101)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_DRFTLIST_FOOT, SHOWLIST_LISTPLUG_TABLE_DRFTLIST_FOOT, , 102)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_ACTNLIST_HEAD, SHOWLIST_LISTPLUG_TABLE_ACTNLIST_HEAD, , 103)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_ACTNLIST_BODY, SHOWLIST_LISTPLUG_TABLE_ACTNLIST_BODY, , 104)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_ACTNLIST_FOOT, SHOWLIST_LISTPLUG_TABLE_ACTNLIST_FOOT, , 105)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_IBANLIST_HEAD, SHOWLIST_LISTPLUG_TABLE_IBANLIST_HEAD, , 106)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_IBANLIST_BODY, SHOWLIST_LISTPLUG_TABLE_IBANLIST_BODY, , 107)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_IBANLIST_FOOT, SHOWLIST_LISTPLUG_TABLE_IBANLIST_FOOT, , 108)%&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;th colspan=&quot;2&quot;&gt;&lt;%text(_SKINABLEADMIN_PLUGIN_QUICKMENU)%&gt;&lt;/th&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_PLUGIN_QUICKMENU_TITLE, PLUGIN_QUICKMENU_TITLE, , 109)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_PLUGIN_QUICKMENU_HEAD, PLUGIN_QUICKMENU_HEAD, , 110)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_PLUGIN_QUICKMENU_BODY, PLUGIN_QUICKMENU_BODY, , 111)%&gt;
+       &lt;%edittemplateinfo(row, _ADM_TPLPT_PLUGIN_QUICKMENU_FOOT, PLUGIN_QUICKMENU_FOOT, , 112)%&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;th colspan=&quot;2&quot;&gt;&lt;%text(_TEMPLATE_PLUGIN_FIELDS)%&gt;&lt;/th&gt;
+       &lt;%edittemplateinfo(extratemplate,admin/default)%&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;th colspan=&quot;2&quot;&gt;&lt;%text(_TEMPLATE_UPDATE)%&gt;&lt;/th&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;td&gt;&lt;%text(_TEMPLATE_UPDATE)%&gt;&lt;/td&gt;
+       &lt;td&gt;
+       &lt;input type=&quot;submit&quot; tabindex=&quot;800&quot; value=&quot;&lt;%text(_TEMPLATE_UPDATE_BTN)%&gt;&quot; onclick=&quot;return checkSubmit();&quot; /&gt;
+       &lt;input type=&quot;reset&quot; tabindex=&quot;810&quot; value=&quot;&lt;%text(_TEMPLATE_RESET_BTN)%&gt;&quot; /&gt;
+       &lt;/td&gt;
+       &lt;/tr&gt;
+       &lt;/table&gt;
+       &lt;/form&gt;
+       &lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartadmntemplateoverview" id="skinpartadmntemplateoverview"></a>
+<h1>Admin skins: admntemplateoverview</h1>
+<p>
+This skinpart is used to admntemplateoverview.
+</p>
+<p>
+Very basic buildup for a Admin layout:[Template overview]page page.
+</p>
+<pre>
+
+       &lt;%pagehead%&gt;
+       &lt;p&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=manage&quot;&gt;(&lt;%text(_BACKTOMANAGE)%&gt;)&lt;/a&gt;&lt;/p&gt;
+       &lt;h2&gt;&lt;%text(_TEMPLATE_TITLE)%&gt;&lt;/h2&gt;
+       
+       &lt;h3&gt;&lt;%text(_TEMPLATE_AVAILABLE_TITLE)%&gt;&lt;/h3&gt;
+       &lt;%templateoverview(admin/default)%&gt;
+       
+       &lt;h3&gt;&lt;%text(_TEMPLATE_NEW_TITLE)%&gt;&lt;/h3&gt;
+       &lt;form method=&quot;post&quot; action=&quot;&lt;%adminurl%&gt;index.php&quot;&gt;
+       &lt;div&gt;
+       &lt;input name=&quot;action&quot; value=&quot;admintemplatenew&quot; type=&quot;hidden&quot; /&gt;
+       &lt;%ticket%&gt;
+       &lt;table frame=&quot;box&quot; rules=&quot;all&quot; summary=&quot;&lt;%text(_TEMPLATE_NEW_TITLE)%&gt;&quot;&gt;
+       &lt;tr&gt;
+       &lt;td&gt;&lt;%text(_TEMPLATE_NAME)%&gt; &lt;%helplink(shortnames)%&gt;&lt;/td&gt;
+       &lt;td&gt;&lt;input name=&quot;name&quot; tabindex=&quot;10010&quot; maxlength=&quot;20&quot; size=&quot;20&quot; /&gt;&lt;/td&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;td&gt;&lt;%text(_TEMPLATE_DESC)%&gt;&lt;/td&gt;
+       &lt;td&gt;&lt;input name=&quot;desc&quot; tabindex=&quot;10020&quot; maxlength=&quot;200&quot; size=&quot;50&quot; /&gt;&lt;/td&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;td&gt;&lt;%text(_TEMPLATE_CREATE)%&gt;&lt;/td&gt;
+       &lt;td&gt;&lt;input type=&quot;submit&quot; tabindex=&quot;10030&quot; value=&quot;&lt;%text(_TEMPLATE_CREATE_BTN)%&gt;&quot; onclick=&quot;return checkSubmit();&quot; /&gt;&lt;/td&gt;
+       &lt;/tr&gt;
+       &lt;/table&gt;
+       &lt;/div&gt;
+       &lt;/form&gt;
+       &lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartbackupoverview" id="skinpartbackupoverview"></a>
+<h1>Admin skins: backupoverview</h1>
+<p>
+This skinpart is used to backupoverview.
+</p>
+<p>
+Very basic buildup for a [Backups]page page.
+</p>
+<pre>
+
+       &lt;%pagehead%&gt;
+       &lt;p&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=manage&quot;&gt;(&lt;%text(_BACKTOMANAGE)%&gt;)&lt;/a&gt;&lt;/p&gt;
+       &lt;h2&gt;&lt;%text(_BACKUPS_TITLE)%&gt;&lt;/h2&gt;
+       &lt;h3&gt;&lt;%text(_BACKUP_TITLE)%&gt;&lt;/h3&gt;
+       &lt;p&gt;&lt;%text(_BACKUP_INTRO)%&gt;&lt;/p&gt;
+       &lt;form method=&quot;post&quot; action=&quot;&lt;%adminurl%&gt;index.php&quot;&gt;
+       &lt;p&gt;
+       &lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;backupcreate&quot; /&gt;
+       &lt;%ticket%&gt;
+       &lt;input type=&quot;radio&quot; name=&quot;gzip&quot; value=&quot;1&quot; checked=&quot;checked&quot; id=&quot;gzip_yes&quot; tabindex=&quot;10&quot; /&gt;&lt;label for=&quot;gzip_yes&quot;&gt;&lt;%text(_BACKUP_ZIP_YES)%&gt;&lt;/label&gt;&lt;br /&gt;
+       &lt;input type=&quot;radio&quot; name=&quot;gzip&quot; value=&quot;0&quot; id=&quot;gzip_no&quot; tabindex=&quot;10&quot; /&gt;&lt;label for=&quot;gzip_no&quot; &gt;&lt;%text(_BACKUP_ZIP_NO)%&gt;&lt;/label&gt;&lt;br /&gt;&lt;br /&gt;
+       &lt;input type=&quot;submit&quot; value=&quot;&lt;%text(_BACKUP_BTN)%&gt;&quot; tabindex=&quot;20&quot; /&gt;
+       &lt;/p&gt;
+       &lt;/form&gt;
+       &lt;div class=&quot;note&quot;&gt;&lt;%text(_BACKUP_NOTE)%&gt;&lt;/div&gt;
+       &lt;h3&gt;&lt;%text(_RESTORE_TITLE)%&gt;&lt;/h3&gt;
+       &lt;div class=&quot;note&quot;&gt;&lt;%text(_RESTORE_NOTE)%&gt;&lt;/div&gt;
+       &lt;p&gt;&lt;%text(_RESTORE_INTRO)%&gt;&lt;/p&gt;
+       &lt;form method=&quot;post&quot; action=&quot;&lt;%adminurl%&gt;index.php&quot; enctype=&quot;multipart/form-data&quot;&gt;
+       &lt;p&gt;
+       &lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;backuprestore&quot; /&gt;
+       &lt;%ticket%&gt;
+       &lt;input name=&quot;backup_file&quot; type=&quot;file&quot; tabindex=&quot;30&quot; /&gt;
+       &lt;br /&gt;&lt;br /&gt;
+       &lt;input type=&quot;submit&quot; value=&quot;&lt;%text(_RESTORE_BTN)%&gt;&quot; tabindex=&quot;40&quot; /&gt;&lt;br /&gt;
+       &lt;input type=&quot;checkbox&quot; name=&quot;letsgo&quot; value=&quot;1&quot; id=&quot;letsgo&quot; tabindex=&quot;50&quot; /&gt;&lt;label for=&quot;letsgo&quot;&gt;&lt;%text(_RESTORE_IMSURE)%&gt;&lt;/label&gt;&lt;br /&gt;
+       &lt;%text(_RESTORE_WARNING)%&gt;
+       &lt;/p&gt;
+       &lt;/form&gt;
+       &lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartbackuprestore" id="skinpartbackuprestore"></a>
+<h1>Admin skins: backuprestore</h1>
+<p>
+This skinpart is used to backuprestore.
+</p>
+<p>
+Very basic buildup for a [Restore Complete]page page.
+</p>
+<pre>
+
+       &lt;%pagehead%&gt;
+       &lt;h2&gt;&lt;%text(_RESTORE_COMPLETE)%&gt;&lt;/h2&gt;
+       &lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartbanlist" id="skinpartbanlist"></a>
+<h1>Admin skins: banlist</h1>
+<p>
+This skinpart is used to banlist.
+</p>
+<p>
+Very basic buildup for a [Ban List for]page page.
+</p>
+<pre>
+
+       &lt;%pagehead%&gt;
+       &lt;p&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=overview&quot;&gt;(&lt;%text(_BACKHOME)%&gt;)&lt;/a&gt;&lt;/p&gt;
+       &lt;h2&gt;&lt;%text(_BAN_TITLE)%&gt; '&lt;%adminbloglink(admin/default)%&gt;'&lt;/h2&gt;
+       &lt;%adminbanlist%&gt;
+       &lt;h2&gt;&lt;%text(_BAN_NEW_TITLE)%&gt;&lt;/h2&gt;
+       &lt;p&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=banlistnew&amp;amp;blogid=&lt;%requestblogid%&gt;&quot;&gt;&lt;%text(_BAN_NEW_TEXT)%&gt;&lt;/a&gt;&lt;/p&gt;&lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartbanlistdelete" id="skinpartbanlistdelete"></a>
+<h1>Admin skins: banlistdelete</h1>
+<p>
+This skinpart is used to banlistdelete.
+</p>
+<p>
+Very basic buildup for a [Remove Ban]page page.
+</p>
+<pre>
+
+       &lt;%pagehead%&gt;
+       &lt;h2&gt;&lt;%text(_BAN_REMOVE_TITLE)%&gt;&lt;/h2&gt;
+       
+       &lt;form method=&quot;post&quot; action=&quot;&lt;%adminurl%&gt;index.php&quot;&gt;
+       
+       &lt;h3&gt;&lt;%text(_BAN_IPRANGE)%&gt;&lt;/h3&gt;
+       
+       &lt;p&gt;
+       &lt;%text(_CONFIRMTXT_BAN)%&gt; &lt;%requestiprange%&gt;
+       &lt;input name=&quot;iprange&quot; type=&quot;hidden&quot; value=&quot;&lt;%requestiprange%&gt;&quot; /&gt;
+       &lt;/p&gt;
+       
+       &lt;h3&gt;&lt;%text(_BAN_BLOGS)%&gt;&lt;/h3&gt;
+       
+       &lt;div&gt;
+       &lt;input type=&quot;hidden&quot; name=&quot;blogid&quot; value=&quot;&lt;%requestblogid%&gt;&quot; /&gt;
+       &lt;input name=&quot;allblogs&quot; type=&quot;radio&quot; value=&quot;0&quot; id=&quot;allblogs_one&quot; /&gt;
+       &lt;label for=&quot;allblogs_one&quot;&gt;&lt;%sprinttext(_BAN_BANBLOGNAME,&lt;|%getblogsetting(name)%|&gt;)%&gt;&lt;/label&gt;
+       &lt;br /&gt;
+       &lt;input name=&quot;allblogs&quot; type=&quot;radio&quot; value=&quot;1&quot; checked=&quot;checked&quot; id=&quot;allblogs_all&quot; /&gt;&lt;label for=&quot;allblogs_all&quot;&gt;&lt;%text(_BAN_ALLBLOGS)%&gt;&lt;/label&gt;
+       &lt;/div&gt;
+       
+       &lt;h3&gt;&lt;%text(_BAN_DELETE_TITLE)%&gt;&lt;/h3&gt;
+       
+       &lt;div&gt;
+       &lt;%ticket%&gt;
+       &lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;banlistdeleteconfirm&quot; /&gt;
+       &lt;input type=&quot;submit&quot; value=&quot;&lt;%text(_DELETE_CONFIRM_BTN)%&gt;&quot; /&gt;
+       &lt;/div&gt;
+       
+       &lt;/form&gt;
+       &lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartbanlistdeleteconfirm" id="skinpartbanlistdeleteconfirm"></a>
+<h1>Admin skins: banlistdeleteconfirm</h1>
+<p>
+This skinpart is used to banlistdeleteconfirm.
+</p>
+<p>
+Very basic buildup for a [Ban Removed]page page.
+</p>
+<pre>
+
+       &lt;%pagehead%&gt;
+       &lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=banlist&amp;amp;blogid=&lt;%requestblogid%&gt;&quot;&gt;(&lt;%text(_BACK)%&gt;)&lt;/a&gt;
+       &lt;h2&gt;&lt;%text(_BAN_REMOVED_TITLE)%&gt;&lt;/h2&gt;
+       &lt;p&gt;&lt;%text(_BAN_REMOVED_TEXT)%&gt;&lt;/p&gt;
+       &lt;ul&gt;
+       &lt;%banlistdeletedlist%&gt;
+       &lt;/ul&gt;
+       &lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartbanlistnew" id="skinpartbanlistnew"></a>
+<h1>Admin skins: banlistnew</h1>
+<p>
+This skinpart is used to banlistnew.
+</p>
+<p>
+Very basic buildup for a [Add New Ban]page page.
+</p>
+<pre>
+
+       &lt;%pagehead%&gt;
+       &lt;h2&gt;&lt;%text(_BAN_ADD_TITLE)%&gt;&lt;/h2&gt;
+       &lt;form method=&quot;post&quot; action=&quot;&lt;%adminurl%&gt;index.php&quot;&gt;
+       &lt;h3&gt;&lt;%text(_BAN_IPRANGE)%&gt;&lt;/h3&gt;
+       &lt;p&gt;&lt;%text(_BAN_IPRANGE_TEXT)%&gt;&lt;/p&gt;
+       &lt;div class=&quot;note&quot;&gt;
+       &lt;strong&gt;&lt;%text(_BAN_EXAMPLE_TITLE)%&gt;&lt;/strong&gt;
+       &lt;%text(_BAN_EXAMPLE_TEXT)%&gt;
+       &lt;/div&gt;
+       &lt;div&gt;
+       &lt;%iprangeinput%&gt;
+       &lt;/div&gt;
+       &lt;h3&gt;&lt;%text(_BAN_BLOGS)%&gt;&lt;/h3&gt;
+       &lt;p&gt;&lt;%text(_BAN_BLOGS_TEXT)%&gt;&lt;/p&gt;
+       &lt;div&gt;
+       &lt;input type=&quot;hidden&quot; name=&quot;blogid&quot; value=&quot;&lt;%requestblogid%&gt;&quot; /&gt;
+       &lt;input name=&quot;allblogs&quot; type=&quot;radio&quot; value=&quot;0&quot; id=&quot;allblogs_one&quot; /&gt;&lt;label for=&quot;allblogs_one&quot;&gt;'&lt;%blogsetting(name)%&gt;'&lt;/label&gt;&lt;br /&gt;
+       &lt;input name=&quot;allblogs&quot; type=&quot;radio&quot; value=&quot;1&quot; checked=&quot;checked&quot; id=&quot;allblogs_all&quot; /&gt;&lt;label for=&quot;allblogs_all&quot;&gt;&lt;%text(_BAN_ALLBLOGS)%&gt;&lt;/label&gt;
+       &lt;/div&gt;
+       &lt;h3&gt;&lt;%text(_BAN_REASON_TITLE)%&gt;&lt;/h3&gt;
+       &lt;p&gt;&lt;%text(_BAN_REASON_TEXT)%&gt;&lt;/p&gt;
+       &lt;div&gt;&lt;textarea name=&quot;reason&quot; cols=&quot;40&quot; rows=&quot;5&quot;&gt;&lt;/textarea&gt;&lt;/div&gt;
+       &lt;h3&gt;&lt;%text(_BAN_ADD_TITLE)%&gt;&lt;/h3&gt;
+       &lt;div&gt;
+       &lt;input name=&quot;action&quot; type=&quot;hidden&quot; value=&quot;banlistadd&quot; /&gt;
+       &lt;%ticket%&gt;
+       &lt;input type=&quot;submit&quot; value=&quot;&lt;%text(_BAN_ADD_BTN)%&gt;&quot; /&gt;
+       &lt;/div&gt;
+       &lt;/form&gt;
+       &lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartbatchcategory" id="skinpartbatchcategory"></a>
+<h1>Admin skins: batchcategory</h1>
+<p>
+This skinpart is used to batchcategory.
+</p>
+<p>
+Very basic buildup for a [Batch operation on categories]page page.
+</p>
+<pre>
+
+       &lt;%pagehead%&gt;
+       &lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=overview&quot;&gt;&lt;%text(_BACKHOME)%&gt;&lt;/a&gt;
+       &lt;h2&gt;&lt;%text(_BATCH_CATEGORIES)%&gt;&lt;/h2&gt;
+       &lt;p&gt;&lt;%text(_BATCH_EXECUTING)%&gt;&lt;b&gt;&lt;%adminbatchaction%&gt;&lt;/b&gt;&lt;/p&gt;
+       &lt;ul&gt;
+       &lt;%adminbatchlist%&gt;
+       &lt;/ul&gt;
+       &lt;b&gt;&lt;%text(_BATCH_DONE)%&gt;&lt;/b&gt;
+       &lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartbatchcomment" id="skinpartbatchcomment"></a>
+<h1>Admin skins: batchcomment</h1>
+<p>
+This skinpart is used to batchcomment.
+</p>
+<p>
+Very basic buildup for a [Batch operation on comments]page page.
+</p>
+<pre>
+
+       &lt;%pagehead%&gt;
+       &lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=overview&quot;&gt;&lt;%text(_BACKHOME)%&gt;&lt;/a&gt;
+       &lt;h2&gt;&lt;%text(_BATCH_COMMENTS)%&gt;&lt;/h2&gt;
+       &lt;p&gt;&lt;%text(_BATCH_EXECUTING)%&gt;&lt;b&gt;&lt;%adminbatchaction%&gt;&lt;/b&gt;&lt;/p&gt;
+       &lt;ul&gt;
+       &lt;%adminbatchlist%&gt;
+       &lt;/ul&gt;
+       &lt;b&gt;&lt;%text(_BATCH_DONE)%&gt;&lt;/b&gt;&lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartbatchdelete" id="skinpartbatchdelete"></a>
+<h1>Admin skins: batchdelete</h1>
+<p>
+This skinpart is used to batchdelete.
+</p>
+<p>
+Very basic buildup for a [Confirm Batch Deletion]page page.
+</p>
+<pre>
+
+       &lt;%pagehead%&gt;
+       &lt;h2&gt;&lt;%text(_BATCH_DELETE_CONFIRM)%&gt;&lt;/h2&gt;
+       &lt;form method=&quot;post&quot; action=&quot;&lt;%adminurl%&gt;index.php&quot;&gt;
+       &lt;div&gt;
+       &lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;&lt;%batchdeletetype%&gt;&quot; /&gt;
+       &lt;input type=&quot;hidden&quot; name=&quot;batchaction&quot; value=&quot;delete&quot; /&gt;
+       &lt;input type=&quot;hidden&quot; name=&quot;confirmation&quot; value=&quot;yes&quot; /&gt;
+       &lt;%ticket%&gt;
+       &lt;%batchdeletelist%&gt;
+       &lt;input type=&quot;submit&quot; value=&quot;&lt;%text(_BATCH_DELETE_CONFIRM_BTN)%&gt;&quot; onclick=&quot;return checkSubmit();&quot; /&gt;
+       &lt;/div&gt;
+       &lt;/form&gt;
+       &lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartbatchitem" id="skinpartbatchitem"></a>
+<h1>Admin skins: batchitem</h1>
+<p>
+This skinpart is used to batchitem.
+</p>
+<p>
+Very basic buildup for a [Batch operation on items]page page.
+</p>
+<pre>
+
+       &lt;%pagehead%&gt;
+       &lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=overview&quot;&gt;&lt;%text(_BACKHOME)%&gt;&lt;/a&gt;
+       &lt;h2&gt;&lt;%text(_BATCH_ITEMS)%&gt;&lt;/h2&gt;
+       &lt;p&gt;&lt;%text(_BATCH_EXECUTING)%&gt;&lt;b&gt;&lt;%adminbatchaction%&gt;&lt;/b&gt;&lt;/p&gt;
+       &lt;ul&gt;
+       &lt;%adminbatchlist%&gt;
+       &lt;/ul&gt;
+       &lt;b&gt;&lt;%text(_BATCH_DONE)%&gt;&lt;/b&gt;&lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartbatchmember" id="skinpartbatchmember"></a>
+<h1>Admin skins: batchmember</h1>
+<p>
+This skinpart is used to batchmember.
+</p>
+<p>
+Very basic buildup for a [Batch operation on members]page page.
+</p>
+<pre>
+
+       &lt;%pagehead%&gt;
+       &lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=usermanagement&quot;&gt;&lt;%text(_MEMBERS_BACKTOOVERVIEW)%&gt;&lt;/a&gt;
+       &lt;h2&gt;&lt;%text(_BATCH_MEMBERS)%&gt;&lt;/h2&gt;
+       &lt;p&gt;&lt;%text(_BATCH_EXECUTING)%&gt;&lt;b&gt;&lt;%adminbatchaction%&gt;&lt;/b&gt;&lt;/p&gt;
+       &lt;ul&gt;
+       &lt;%adminbatchlist%&gt;
+       &lt;/ul&gt;
+       &lt;b&gt;&lt;%text(_BATCH_DONE)%&gt;&lt;/b&gt;&lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartbatchmove" id="skinpartbatchmove"></a>
+<h1>Admin skins: batchmove</h1>
+<p>
+This skinpart is used to batchmove.
+</p>
+<p>
+Very basic buildup for a [Item move other category/Category move other blog]page page.
+</p>
+<pre>
+
+       &lt;%pagehead%&gt;
+       &lt;h2&gt;&lt;%text(_MOVE_TITLE)%&gt;&lt;/h2&gt;
+       &lt;form method=&quot;post&quot; action=&quot;&lt;%adminurl%&gt;index.php&quot;&gt;
+       &lt;div&gt;
+       &lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;&lt;%batchmovetype%&gt;&quot; /&gt;
+       &lt;input type=&quot;hidden&quot; name=&quot;batchaction&quot; value=&quot;move&quot; /&gt;
+       &lt;%ticket%&gt;
+       &lt;%batchmovelist%&gt;
+       &lt;%movedistselect%&gt;
+       &lt;input type=&quot;submit&quot; value=&quot;&lt;%batchmovebtn%&gt;&quot; onclick=&quot;return checkSubmit();&quot; /&gt;
+       &lt;/div&gt;
+       &lt;/form&gt;
+       &lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartbatchmovecat" id="skinpartbatchmovecat"></a>
+<h1>Admin skins: batchmovecat</h1>
+<p>
+This skinpart is used to batchmovecat.
+</p>
+<p>
+Very basic buildup for a [Select blog to move category to]page page.
+</p>
+<pre>
+
+       &lt;%pagehead%&gt;
+       &lt;h2&gt;&lt;%text(_MOVECAT_TITLE)%&gt;&lt;/h2&gt;
+       &lt;form method=&quot;post&quot; action=&quot;&lt;%adminurl%&gt;index.php&quot;&gt;
+       &lt;div&gt;
+       &lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;&lt;%batchmovetype%&gt;&quot; /&gt;
+       &lt;input type=&quot;hidden&quot; name=&quot;batchaction&quot; value=&quot;move&quot; /&gt;
+       &lt;%ticket%&gt;
+       &lt;%batchmovelist%&gt;
+       &lt;%movedistselect%&gt;
+       &lt;input type=&quot;submit&quot; value=&quot;&lt;%batchmovebtn%&gt;&quot; onclick=&quot;return checkSubmit();&quot; /&gt;
+       &lt;/div&gt;
+       &lt;/form&gt;
+       &lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartbatchteam" id="skinpartbatchteam"></a>
+<h1>Admin skins: batchteam</h1>
+<p>
+This skinpart is used to batchteam.
+</p>
+<p>
+Very basic buildup for a [Batch operation on team members]page page.
+</p>
+<pre>
+
+&lt;%pagehead%&gt;
+&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=manageteam&amp;amp;blogid=&lt;%requestblogid%&gt;&quot;&gt;&lt;%text(_BACK)%&gt;&lt;/a&gt;
+&lt;h2&gt;&lt;%text(_BATCH_TEAM)%&gt;&lt;/h2&gt;
+&lt;p&gt;&lt;%text(_BATCH_EXECUTING)%&gt;&lt;b&gt;&lt;%adminbatchaction%&gt;&lt;/b&gt;&lt;/p&gt;
+&lt;ul&gt;
+&lt;%adminbatchlist%&gt;
+&lt;/ul&gt;
+&lt;b&gt;&lt;%text(_BATCH_DONE)%&gt;&lt;/b&gt;&lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartblogcommentlist" id="skinpartblogcommentlist"></a>
+<h1>Admin skins: blogcommentlist</h1>
+<p>
+This skinpart is used to blogcommentlist.
+</p>
+<p>
+Very basic buildup for a [All Comments for blog]page page.
+</p>
+<pre>
+
+&lt;%pagehead%&gt;
+&lt;p&gt;(&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=overview&quot;&gt;&lt;%text(_BACKHOME)%&gt;&lt;/a&gt;)&lt;/p&gt;
+&lt;h2&gt;&lt;%text(_COMMENTS_BLOG)%&gt; &lt;%adminbloglink(admin/default)%&gt;&lt;/h2&gt;
+&lt;%commentnavlist(admin/default)%&gt;&lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartblogsettings" id="skinpartblogsettings"></a>
+<h1>Admin skins: blogsettings</h1>
+<p>
+This skinpart is used to blogsettings.
+</p>
+<p>
+Very basic buildup for a [Edit Blog Settings]page page.
+</p>
+<pre>
+
+&lt;%pagehead%&gt;
+&lt;p&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=overview&quot;&gt;(&lt;%text(_BACKHOME)%&gt;)&lt;/a&gt;&lt;/p&gt;
+&lt;h2&gt;&lt;%text(_EBLOG_TITLE)%&gt;: '&lt;%adminbloglink(admin/default)%&gt;'&lt;/h2&gt;
+
+&lt;h3&gt;&lt;%text(_EBLOG_TEAM_TITLE)%&gt;&lt;/h3&gt;
+
+&lt;p&gt;
+&lt;%text(_EBLOG_CURRENT_TEAM_MEMBER)%&gt;
+&lt;%blogteammembers%&gt;
+&lt;/p&gt;
+&lt;p&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=manageteam&amp;amp;blogid=&lt;%requestblogid%&gt;&quot;&gt;&lt;%text(_EBLOG_TEAM_TEXT)%&gt;&lt;/a&gt;&lt;/p&gt;
+&lt;h3&gt;&lt;%text(_EBLOG_SETTINGS_TITLE)%&gt;&lt;/h3&gt;
+&lt;form method=&quot;post&quot; action=&quot;&lt;%adminurl%&gt;index.php&quot;&gt;
+&lt;div&gt;
+&lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;blogsettingsupdate&quot; /&gt;
+&lt;%ticket%&gt;
+&lt;input type=&quot;hidden&quot; name=&quot;blogid&quot; value=&quot;&lt;%requestblogid%&gt;&quot; /&gt;
+&lt;table&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_EBLOG_NAME)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;input name=&quot;name&quot; tabindex=&quot;10&quot; size=&quot;40&quot; maxlength=&quot;60&quot; value=&quot;&lt;%blogsetting(name)%&gt;&quot; /&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;
+&lt;%text(_EBLOG_SHORTNAME)%&gt; &lt;%helplink(shortblogname)%&gt;
+&lt;%text(_EBLOG_SHORTNAME_EXTRA)%&gt;
+&lt;/td&gt;
+&lt;td&gt;&lt;input name=&quot;shortname&quot; tabindex=&quot;20&quot; maxlength=&quot;15&quot; size=&quot;15&quot; value=&quot;&lt;%blogsetting(short)%&gt;&quot; /&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_EBLOG_DESC)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;input name=&quot;desc&quot; tabindex=&quot;30&quot; maxlength=&quot;200&quot; size=&quot;40&quot; value=&quot;&lt;%blogsetting(desc)%&gt;&quot; /&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_EBLOG_URL)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;input name=&quot;url&quot; tabindex=&quot;40&quot; size=&quot;40&quot; maxlength=&quot;100&quot; value=&quot;&lt;%blogsetting(url)%&gt;&quot; /&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_EBLOG_DEFSKIN)%&gt;&lt;%helplink(blogdefaultskin)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;%defskinselect(blog)%&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_EBLOG_LINEBREAKS)%&gt; &lt;%helplink(convertbreaks)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;%blogsettingyesno(convertbreaks)%&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_EBLOG_ALLOWPASTPOSTING)%&gt; &lt;%helplink(allowpastposting)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;%blogsettingyesno(allowpastposting)%&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_EBLOG_DISABLECOMMENTS)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;%blogsettingyesno(comments)%&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_EBLOG_ANONYMOUS)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;%blogsettingyesno(public)%&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_EBLOG_REQUIREDEMAIL)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;%blogsettingyesno(reqemail)%&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_EBLOG_NOTIFY)%&gt; &lt;%helplink(blognotify)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;input name=&quot;notify&quot; tabindex=&quot;80&quot; maxlength=&quot;60&quot; size=&quot;40&quot; value=&quot;&lt;%blogsetting(notifyaddress)%&gt;&quot; /&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_EBLOG_NOTIFY_ON)%&gt;&lt;/td&gt;
+&lt;td&gt;
+&lt;input name=&quot;notifyComment&quot; value=&quot;3&quot; type=&quot;checkbox&quot; tabindex=&quot;81&quot; id=&quot;notifyComment&quot;&lt;%blognotifysetting(comment)%&gt; /&gt;
+&lt;label for=&quot;notifyComment&quot;&gt;&lt;%text(_EBLOG_NOTIFY_COMMENT)%&gt;&lt;/label&gt;&lt;br /&gt;
+&lt;input name=&quot;notifyVote&quot; value=&quot;5&quot; type=&quot;checkbox&quot; tabindex=&quot;82&quot; id=&quot;notifyVote&quot;&lt;%blognotifysetting(vote)%&gt; /&gt;
+&lt;label for=&quot;notifyVote&quot;&gt;&lt;%text(_EBLOG_NOTIFY_KARMA)%&gt;&lt;/label&gt;&lt;br /&gt;
+&lt;input name=&quot;notifyNewItem&quot; value=&quot;7&quot; type=&quot;checkbox&quot; tabindex=&quot;83&quot; id=&quot;notifyNewItem&quot;&lt;%blognotifysetting(newitem)%&gt; /&gt;
+&lt;label for=&quot;notifyNewItem&quot;&gt;&lt;%text(_EBLOG_NOTIFY_ITEM)%&gt;&lt;/label&gt;
+&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_EBLOG_MAXCOMMENTS)%&gt; &lt;%helplink(blogmaxcomments)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;input name=&quot;maxcomments&quot; tabindex=&quot;90&quot; size=&quot;3&quot; value=&quot;&lt;%blogsetting(maxcomments)%&gt;&quot; /&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_EBLOG_UPDATE)%&gt; &lt;%helplink(blogupdatefile)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;input name=&quot;update&quot; tabindex=&quot;100&quot; size=&quot;40&quot; maxlength=&quot;60&quot; value=&quot;&lt;%blogsetting(updatefile)%&gt;&quot; /&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_EBLOG_DEFCAT)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;%defcatselect%&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;
+&lt;%text(_EBLOG_OFFSET)%&gt; &lt;%helplink(blogtimeoffset)%&gt;&lt;br /&gt;
+&lt;%text(_EBLOG_STIME)%&gt; &lt;b&gt;&lt;%blogtime(servertime,&quot;%H:%M&quot;)%&gt;&lt;/b&gt;&lt;br /&gt;
+&lt;%text(_EBLOG_BTIME)%&gt; &lt;b&gt;&lt;%blogtime(blogtime,&quot;%H:%M&quot;)%&gt;&lt;/b&gt;
+&lt;/td&gt;
+&lt;td&gt;&lt;input name=&quot;timeoffset&quot; tabindex=&quot;120&quot; size=&quot;3&quot; value=&quot;&lt;%blogsetting(timeoffset)%&gt;&quot; /&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_EBLOG_SEARCH)%&gt; &lt;%helplink(blogsearchable)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;%blogsettingyesno(searchable)%&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;%pluginoptions(blog)%&gt;
+&lt;tr&gt;
+&lt;th colspan=&quot;2&quot;&gt;&lt;%text(_EBLOG_CHANGE)%&gt;&lt;/th&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_EBLOG_CHANGE)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;input type=&quot;submit&quot; tabindex=&quot;130&quot; value=&quot;&lt;%text(_EBLOG_CHANGE_BTN)%&gt;&quot; onclick=&quot;return checkSubmit();&quot; /&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;/table&gt;
+&lt;/div&gt;
+&lt;/form&gt;
+&lt;h3&gt;&lt;%text(_EBLOG_CAT_TITLE)%&gt;&lt;/h3&gt;
+&lt;%blogcatlist%&gt;
+&lt;form action=&quot;&lt;%adminurl%&gt;index.php&quot; method=&quot;post&quot;&gt;
+&lt;div&gt;
+&lt;input name=&quot;action&quot; value=&quot;categorynew&quot; type=&quot;hidden&quot; /&gt;
+&lt;%ticket%&gt;
+&lt;input name=&quot;blogid&quot; value=&quot;&lt;%blogsetting(id)%&gt;&quot; type=&quot;hidden&quot; /&gt;
+&lt;table&gt;
+&lt;tr&gt;
+&lt;th colspan=&quot;2&quot;&gt;&lt;%text(_EBLOG_CAT_CREATE)%&gt;&lt;/th&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_EBLOG_CAT_NAME)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;input name=&quot;cname&quot; size=&quot;40&quot; maxlength=&quot;40&quot; tabindex=&quot;300&quot; /&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_EBLOG_CAT_DESC)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;input name=&quot;cdesc&quot; size=&quot;40&quot; maxlength=&quot;200&quot; tabindex=&quot;310&quot; /&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_EBLOG_CAT_CREATE)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;input type=&quot;submit&quot; value=&quot;&lt;%text(_EBLOG_CAT_CREATE)%&gt;&quot; tabindex=&quot;320&quot; /&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;/table&gt;
+&lt;/div&gt;
+&lt;/form&gt;
+&lt;h3&gt;&lt;%text(_PLUGINS_EXTRA)%&gt;&lt;/h3&gt;
+&lt;%pluginextras(blog)%&gt;&lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartbookmarklet" id="skinpartbookmarklet"></a>
+<h1>Admin skins: bookmarklet</h1>
+<p>
+This skinpart is used to bookmarklet.
+</p>
+<p>
+Very basic buildup for a [Bookmarklet<!-- and Right Click Menu -->]page page.
+</p>
+<pre>
+
+&lt;%pagehead%&gt;
+&lt;p&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=overview&quot;&gt;(&lt;%text(_BACKHOME)%&gt;)&lt;/a&gt;&lt;/p&gt;
+&lt;h2&gt;&lt;%text(_BOOKMARKLET_TITLE)%&gt;&lt;/h2&gt;
+&lt;p&gt;&lt;%text(_BOOKMARKLET_DESC1)%&gt;&lt;%text(_BOOKMARKLET_DESC2)%&gt;&lt;%text(_BOOKMARKLET_DESC3)%&gt;&lt;%text(_BOOKMARKLET_DESC4)%&gt;&lt;%text(_BOOKMARKLET_DESC5)%&gt;&lt;/p&gt;
+&lt;h3&gt;&lt;%text(_BOOKMARKLET_BOOKARKLET)%&gt;&lt;/h3&gt;
+&lt;p&gt;
+&lt;%text(_BOOKMARKLET_BMARKTEXT)%&gt;&lt;small&gt;&lt;%text(_BOOKMARKLET_BMARKTEST)%&gt;&lt;/small&gt;
+&lt;br /&gt;
+&lt;br /&gt;
+&lt;a href=&quot;&lt;%bookmarkletadmin(url)%&gt;&quot;&gt;&lt;%sprinttext(_BOOKMARKLET_ANCHOR,&lt;|%getblogsetting(name)%|&gt;)%&gt;&lt;/a&gt;&lt;%text(_BOOKMARKLET_BMARKFOLLOW)%&gt;
+&lt;/p&gt;
+&lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartbrowseowncomments" id="skinpartbrowseowncomments"></a>
+<h1>Admin skins: browseowncomments</h1>
+<p>
+This skinpart is used to browseowncomments.
+</p>
+<p>
+Very basic buildup for a [Your Comments]page page.
+</p>
+<pre>
+
+&lt;%pagehead%&gt;
+&lt;p&gt;(&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=overview&quot;&gt;&lt;%text(_BACKHOME)%&gt;&lt;/a&gt;)&lt;/p&gt;
+&lt;h2&gt;&lt;%text(_COMMENTS_YOUR)%&gt;&lt;/h2&gt;
+&lt;%commentnavlist(admin/default)%&gt;&lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartbrowseownitems" id="skinpartbrowseownitems"></a>
+<h1>Admin skins: browseownitems</h1>
+<p>
+This skinpart is used to browseownitems.
+</p>
+<p>
+Very basic buildup for a [Your items]page page.
+</p>
+<pre>
+
+&lt;%pagehead%&gt;
+&lt;p&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=overview&quot;&gt;&lt;%text(_BACKHOME)%&gt;&lt;/a&gt;&lt;/p&gt;
+&lt;h2&gt;&lt;%text(_ITEMLIST_YOUR)%&gt;&lt;/h2&gt;
+&lt;%itemnavlist(admin/default)%&gt;&lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartcategorydelete" id="skinpartcategorydelete"></a>
+<h1>Admin skins: categorydelete</h1>
+<p>
+This skinpart is used to categorydelete.
+</p>
+<p>
+Very basic buildup for a [You're about to delete the category (batch)]page page.
+</p>
+<pre>
+
+&lt;%pagehead%&gt;
+&lt;h2&gt;&lt;%text(_DELETE_CONFIRM)%&gt;&lt;/h2&gt;
+&lt;div&gt;
+&lt;%text(_CONFIRMTXT_CATEGORY)%&gt;&lt;b&gt;&lt;%categorysetting(name)%&gt;&lt;/b&gt;
+&lt;/div&gt;
+&lt;form method=&quot;post&quot; action=&quot;&lt;%adminurl%&gt;index.php&quot;&gt;
+&lt;div&gt;
+&lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;categorydeleteconfirm&quot; /&gt;
+&lt;%ticket%&gt;
+&lt;input type=&quot;hidden&quot; name=&quot;blogid&quot; value=&quot;&lt;%requestblogid%&gt;&quot; /&gt;
+&lt;input type=&quot;hidden&quot; name=&quot;catid&quot; value=&quot;&lt;%categorysetting(id)%&gt;&quot; /&gt;
+&lt;input type=&quot;submit&quot; tabindex=&quot;10&quot; value=&quot;&lt;%text(_DELETE_CONFIRM_BTN)%&gt;&quot; /&gt;
+&lt;/div&gt;
+&lt;/form&gt;&lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartcategoryedit" id="skinpartcategoryedit"></a>
+<h1>Admin skins: categoryedit</h1>
+<p>
+This skinpart is used to categoryedit.
+</p>
+<p>
+Very basic buildup for a [Update Category]page page.
+</p>
+<pre>
+
+&lt;%pagehead%&gt;
+&lt;p&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=blogsettings&amp;amp;blogid=&lt;%requestblogid%&gt;&quot;&gt;(&lt;%text(_BACK_TO_BLOGSETTINGS)%&gt;)&lt;/a&gt;&lt;/p&gt;
+&lt;h2&gt;&lt;%text(_EBLOG_CAT_UPDATE)%&gt; '&lt;%categorysetting(name)%&gt;'&lt;/h2&gt;
+&lt;form method='post' action='&lt;%adminurl%&gt;index.php'&gt;
+&lt;div&gt;
+&lt;input name=&quot;blogid&quot; type=&quot;hidden&quot; value=&quot;&lt;%requestblogid%&gt;&quot; /&gt;
+&lt;input name=&quot;catid&quot; type=&quot;hidden&quot; value=&quot;&lt;%categorysetting(id)%&gt;&quot; /&gt;
+&lt;input name=&quot;desturl&quot; type=&quot;hidden&quot; value=&quot;&lt;%editdesturl%&gt;&quot; /&gt;
+&lt;input name=&quot;action&quot; type=&quot;hidden&quot; value=&quot;categoryupdate&quot; /&gt;
+&lt;%ticket%&gt;
+&lt;table&gt;
+&lt;tr&gt;
+&lt;th colspan=&quot;2&quot;&gt;&lt;%text(_EBLOG_CAT_UPDATE)%&gt;&lt;/th&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_EBLOG_CAT_NAME)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;input type=&quot;text&quot; name=&quot;cname&quot; value=&quot;&lt;%categorysetting(name)%&gt;&quot; size=&quot;40&quot; maxlength=&quot;40&quot; /&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_EBLOG_CAT_DESC)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;input type=&quot;text&quot; name=&quot;cdesc&quot; value=&quot;&lt;%categorysetting(desc)%&gt;&quot; size=&quot;40&quot; maxlength=&quot;200&quot; /&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;%pluginoptions(category)%&gt;
+&lt;tr&gt;
+&lt;th colspan=&quot;2&quot;&gt;&lt;%text(_EBLOG_CAT_UPDATE)%&gt;&lt;/th&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_EBLOG_CAT_UPDATE)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;input type=&quot;submit&quot; value=&quot;&lt;%text(_EBLOG_CAT_UPDATE_BTN)%&gt;&quot; /&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;/table&gt;
+&lt;/div&gt;
+&lt;/form&gt;&lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartcommentdelete" id="skinpartcommentdelete"></a>
+<h1>Admin skins: commentdelete</h1>
+<p>
+This skinpart is used to commentdelete.
+</p>
+<p>
+Very basic buildup for a [You're about to delete the following comment:(batch)]page page.
+</p>
+<pre>
+
+&lt;%pagehead%&gt;
+&lt;h2&gt;&lt;%text(_DELETE_CONFIRM)%&gt;&lt;/h2&gt;
+&lt;p&gt;&lt;%text(_CONFIRMTXT_COMMENT)%&gt;&lt;/p&gt;
+&lt;div class=&quot;note&quot;&gt;
+&lt;b&gt;&lt;%text(_EDITC_WHO)%&gt;:&lt;/b&gt; &lt;%deletecomment(author)%&gt;
+&lt;br /&gt;
+&lt;b&gt;&lt;%text(_EDITC_TEXT)%&gt;:&lt;/b&gt; &lt;%deletecomment(body)%&gt;
+&lt;/div&gt;
+&lt;form method=&quot;post&quot; action=&quot;&lt;%adminurl%&gt;index.php&quot;&gt;&lt;div&gt;
+&lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;commentdeleteconfirm&quot; /&gt;
+&lt;%ticket%&gt;
+&lt;input type=&quot;hidden&quot; name=&quot;commentid&quot; value=&quot;&lt;%deletecomment(id)%&gt;&quot; /&gt;
+&lt;input type=&quot;submit&quot; tabindex=&quot;10&quot; value=&quot;&lt;%text(_DELETE_CONFIRM_BTN)%&gt;&quot; /&gt;
+&lt;/div&gt;&lt;/form&gt;&lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartcommentedit" id="skinpartcommentedit"></a>
+<h1>Admin skins: commentedit</h1>
+<p>
+This skinpart is used to commentedit.
+</p>
+<p>
+Very basic buildup for a [Edit Comments]page page.
+</p>
+<pre>
+
+&lt;%pagehead%&gt;
+&lt;h2&gt;&lt;%text(_EDITC_TITLE)%&gt;&lt;/h2&gt;
+&lt;form method=&quot;post&quot; action=&quot;&lt;%adminurl%&gt;index.php&quot;&gt;
+&lt;div&gt;
+&lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;commentupdate&quot; /&gt;
+&lt;%ticket%&gt;
+&lt;input type=&quot;hidden&quot; name=&quot;commentid&quot; value=&quot;&lt;%editcomment(id)%&gt;&quot; /&gt;
+&lt;table&gt;
+&lt;tr&gt;
+&lt;th colspan=&quot;2&quot;&gt;&lt;%text(_EDITC_TITLE)%&gt;&lt;/th&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_EDITC_WHO)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;%editcomment(user)%&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_EDITC_WHEN)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;%editcomment(date)%&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_EDITC_HOST)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;%editcomment(host)%&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_EDITC_URL)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;input type=&quot;text&quot; name=&quot;url&quot; size=&quot;30&quot; tabindex=&quot;6&quot; value=&quot;&lt;%editcomment(url)%&gt;&quot; /&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_EDITC_EMAIL)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;input type=&quot;text&quot; name=&quot;email&quot; size=&quot;30&quot; tabindex=&quot;8&quot; value=&quot;&lt;%editcomment(email)%&gt;&quot; /&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_EDITC_TEXT)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;textarea name=&quot;body&quot; tabindex=&quot;10&quot; rows=&quot;10&quot; cols=&quot;50&quot;&gt;&lt;%editcomment(body)%&gt;&lt;/textarea&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_EDITC_EDIT)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;input type=&quot;submit&quot;  tabindex=&quot;20&quot; value=&quot;&lt;%text(_EDITC_EDIT)%&gt;&quot; onclick=&quot;return checkSubmit();&quot; /&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;/table&gt;
+&lt;/div&gt;
+&lt;/form&gt;&lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartcreateaccountdisable" id="skinpartcreateaccountdisable"></a>
+<h1>Admin skins: createaccountdisable</h1>
+<p>
+This skinpart is used to createaccountdisable.
+</p>
+<p>
+Very basic buildup for a [Visitors are not allowed to create a Member Account.<br /><br />]page page.
+</p>
+<pre>
+
+       &lt;%pagehead%&gt;
+       &lt;h2&gt;&lt;%text(_CREATE_ACCOUNT0)%&gt;&lt;/h2&gt;
+       &lt;p&gt;&lt;%text(_CREATE_ACCOUNT1)%&gt;&lt;/p&gt;
+       &lt;p&gt;&lt;%text(_CREATE_ACCOUNT2)%&gt;&lt;/p&gt;
+       &lt;p&gt;&lt;%text(_BACK)%&gt; &lt;a href=&quot;&lt;%sitevar(IndexURL)%&gt;&quot; title=&quot;&lt;%sitevar(SiteName)%&gt;&quot;&gt;&lt;%sitevar(SiteName)%&gt;&lt;/a&gt;&lt;/p&gt;
+       &lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartcreateaccountinput" id="skinpartcreateaccountinput"></a>
+<h1>Admin skins: createaccountinput</h1>
+<p>
+This skinpart is used to createaccountinput.
+</p>
+<p>
+Very basic buildup for a [Create Member Account]page page.
+</p>
+<pre>
+
+       &lt;%pagehead%&gt;
+       &lt;h2&gt;&lt;%text(_CREATE_ACCOUNT0)%&gt;&lt;/h2&gt;
+       &lt;%headmessage%&gt;
+       &lt;form method=&quot;post&quot; action=&quot;&lt;%sitevar(url)%&gt;createaccount.php&quot;&gt;
+       &lt;dl&gt;
+       &lt;dt&gt;&lt;label for=&quot;name&quot;&gt;&lt;%text(_CREATE_ACCOUNT_LOGIN_NAME)%&gt;&lt;/label&gt;&lt;/dt&gt;
+       &lt;dd&gt;
+       &lt;input id=&quot;name&quot; name=&quot;name&quot; value=&quot;&lt;%contents(name)%&gt;&quot; size=&quot;32&quot; maxlength=&quot;32&quot; /&gt;
+       &lt;span style=&quot;\small&quot;&gt;&lt;%text(_CREATE_ACCOUNT_LOGIN_NAME_VALID)%&gt;&lt;/span&gt;
+       &lt;/dd&gt;
+       &lt;dt&gt;&lt;label for=&quot;realname&quot;&gt;&lt;%text(_CREATE_ACCOUNT_REAL_NAME)%&gt;&lt;/label&gt;&lt;/dt&gt;
+       &lt;dd&gt;&lt;input id=&quot;realname&quot; name=&quot;realname&quot; value=&quot;&lt;%contents(realname)%&gt;&quot; size=&quot;40&quot; /&gt;&lt;/dd&gt;
+       &lt;dt&gt;&lt;label for=&quot;email&quot;&gt;&lt;%text(_CREATE_ACCOUNT_EMAIL)%&gt;&lt;/label&gt;&lt;/dt&gt;
+       &lt;dd&gt;
+       &lt;input id=&quot;email&quot;name=&quot;email&quot; value=&quot;&lt;%contents(email)%&gt;&quot; size=&quot;40&quot; /&gt;
+       &lt;span style=&quot;\small&quot;&gt;&lt;%text(_CREATE_ACCOUNT_EMAIL2)%&gt;&lt;/span&gt;
+       &lt;/dd&gt;
+       &lt;dt&gt;&lt;label for=&quot;url&quot;&gt;&lt;%text(_CREATE_ACCOUNT_URL)%&gt;&lt;/label&gt;&lt;/dt&gt;
+       &lt;dd&gt;&lt;input id=&quot;url&quot;name=&quot;url&quot; value=&quot;&lt;%contents(url)%&gt;&quot; size=&quot;60&quot; /&gt;&lt;/dd&gt;
+       &lt;/dl&gt;
+       &lt;%pluginextras(createaccount)%&gt;
+       &lt;%eventformextra(membermailform-notloggedin)%&gt;
+       &lt;p&gt;
+       &lt;input type=&quot;hidden&quot; name=&quot;showform&quot; value=&quot;1&quot; /&gt;
+       &lt;button type=&quot;submit&quot; name=&quot;action&quot; value=&quot;createaccount&quot;&gt;&lt;%text(_CREATE_ACCOUNT_SUBMIT)%&gt;&lt;/button&gt;
+       &lt;/p&gt;
+       &lt;/form&gt;
+       &lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartcreateaccountsuccess" id="skinpartcreateaccountsuccess"></a>
+<h1>Admin skins: createaccountsuccess</h1>
+<p>
+This skinpart is used to createaccountsuccess.
+</p>
+<p>
+Very basic buildup for a [Create Account]page page.
+</p>
+<pre>
+
+       &lt;%pagehead%&gt;
+       &lt;h2&gt;&lt;%text(_CREATE_ACCOUNT)%&gt;&lt;/h2&gt;
+       &lt;%headmessage%&gt;
+       &lt;p&gt;&lt;%text(_MSG_ACTIVATION_SENT)%&gt;&lt;/p&gt;
+       &lt;p&gt;&lt;%text(_BACK)%&gt; &lt;a href=&quot;&lt;%sitevar(IndexURL)%&gt;&quot; title=&quot;&lt;%sitevar(SiteName)%&gt;&quot;&gt;&lt;%sitevar(SiteName)%&gt;&lt;/a&gt;&lt;/p&gt;
+       &lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartcreateitem" id="skinpartcreateitem"></a>
+<h1>Admin skins: createitem</h1>
+<p>
+This skinpart is used to createitem.
+</p>
+<p>
+Very basic buildup for a [Add new item to]page page.
+</p>
+<pre>
+
+       &lt;%pagehead%&gt;
+       &lt;h2&gt;&lt;%text(_ADD_ADDTO)%&gt; '&lt;%adminbloglink(admin/default)%&gt;'&lt;/h2&gt;
+       
+       &lt;%init%&gt;
+       &lt;script type=&quot;text/javascript&quot; src=&quot;&lt;%skinfile(/javascripts/numbercheck.js)%&gt;&quot;&gt;&lt;/script&gt;
+       &lt;%if(autosave)%&gt;&lt;script type=&quot;text/javascript&quot; src=&quot;&lt;%skinfile(/javascripts/xmlhttprequest.js)%&gt;&quot;&gt;&lt;/script&gt;&lt;%endif%&gt;
+       
+       &lt;form id=&quot;addform&quot; method=&quot;post&quot; action=&quot;&lt;%adminurl%&gt;index.php&quot; &gt;
+       
+       &lt;div&gt;
+       
+       &lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;additem&quot; /&gt;
+       &lt;input name=&quot;blogid&quot; value=&quot;&lt;%blogid%&gt;&quot; type=&quot;hidden&quot; /&gt;
+       &lt;input type=&quot;hidden&quot; name=&quot;draftid&quot; value=&quot;0&quot; /&gt;
+       &lt;%ticket%&gt;
+       
+       &lt;table&gt;
+               &lt;tr&gt;
+                       &lt;th colspan=&quot;2&quot;&gt;&lt;%text(_ADD_CREATENEW)%&gt;&lt;/th&gt;
+               &lt;/tr&gt;
+               &lt;%if(autosave)%&gt;&lt;tr&gt;
+                       &lt;td&gt;&lt;%text(_AUTOSAVEDRAFT)%&gt;&lt;/td&gt;
+                       &lt;td&gt;&lt;span id=&quot;info&quot;&gt;&lt;%text(_AUTOSAVEDRAFT_NOTYETSAVED)%&gt;&lt;/span&gt;&lt;/td&gt;
+               &lt;/tr&gt;&lt;%endif%&gt;
+               &lt;tr&gt;
+                       &lt;td&gt;&lt;%text(_ADD_TITLE)%&gt;&lt;/td&gt;
+                       &lt;td&gt;&lt;input id=&quot;inputtitle&quot; onkeyup=&quot;storeCaret(this); updPreview(title); doMonitor();&quot; onclick=&quot;storeCaret(this);&quot; onselect=&quot;storeCaret(this);&quot;
+                               name=&quot;title&quot;
+                               tabindex=&quot;10&quot;
+                               size=&quot;60&quot; 
+                               maxlength=&quot;160&quot; 
+                               value=&quot;&lt;%contents(title)%&gt;&quot;
+                               /&gt;&lt;/td&gt;
+               &lt;/tr&gt;
+       &lt;tr&gt;
+                       &lt;td&gt;
+                               &lt;%text(_ADD_BODY)%&gt; &lt;%helplink(additem)%&gt;
+                       &lt;/td&gt;
+                       &lt;td&gt;
+                       &lt;div class=&quot;jsbuttonbar&quot;&gt;
+       &lt;!--[if IE]&gt;
+                               &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;cutThis()&quot;&gt;
+                                       &lt;img src=&quot;&lt;%skinfile(/images/button-cut.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_CUT_TT)%&gt;(Ctrl + X)&quot; alt=&quot;&lt;%text(_ADD_CUT_TT)%&gt;(Ctrl + X)&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                               &lt;/span&gt;
+                               &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;copyThis()&quot;&gt;
+                                       &lt;img src=&quot;&lt;%skinfile(/images/button-copy.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_COPY_TT)%&gt;(Ctrl + C)&quot; alt=&quot;&lt;%text(_ADD_COPY_TT)%&gt;(Ctrl + C)&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                               &lt;/span&gt;
+                               &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;pasteThis()&quot;&gt;
+                                       &lt;img src=&quot;&lt;%skinfile(/images/button-paste.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_PASTE_TT)%&gt;(Ctrl + V)&quot; alt=&quot;&lt;%text(_ADD_PASTE_TT)%&gt;(Ctrl + V)&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                               &lt;/span&gt;
+                               &lt;span class=&quot;jsbuttonspacer&quot;&gt;&amp;nbsp;&lt;/span&gt;
+                               &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;boldThis()&quot;&gt;
+                                       &lt;img src=&quot;&lt;%skinfile(/images/button-bold.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_BOLD_TT)%&gt;(Ctrl + Shift + B)&quot; alt=&quot;&lt;%text(_ADD_BOLD_TT)%&gt;(Ctrl + Shift + B)&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                               &lt;/span&gt;
+                               &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;italicThis()&quot;&gt;
+                                       &lt;img src=&quot;&lt;%skinfile(/images/button-italic.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_ITALIC_TT)%&gt;(Ctrl + Shift + I)&quot; alt=&quot;&lt;%text(_ADD_ITALIC_TT)%&gt;(Ctrl + Shift + I)&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                               &lt;/span&gt;
+                               &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;ahrefThis()&quot;&gt;
+                                       &lt;img src=&quot;&lt;%skinfile(/images/button-link.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_HREF_TT)%&gt;(Ctrl + Shift + A)&quot; alt=&quot;&lt;%text(_ADD_HREF_TT)%&gt;(Ctrl + Shift + A)&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                               &lt;/span&gt;
+       &lt;![endif]--&gt;
+       &lt;!--[if ! IE]&gt;--&gt;
+                               &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;boldThis()&quot;&gt;
+                                       &lt;img src=&quot;&lt;%skinfile(/images/button-bold.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_BOLD_TT)%&gt;&quot; alt=&quot;&lt;%text(_ADD_BOLD_TT)%&gt;&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                               &lt;/span&gt;
+                               &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;italicThis()&quot;&gt;
+                                       &lt;img src=&quot;&lt;%skinfile(/images/button-italic.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_ITALIC_TT)%&gt;&quot; alt=&quot;&lt;%text(_ADD_ITALIC_TT)%&gt;&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                               &lt;/span&gt;
+                               &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;ahrefThis()&quot;&gt;
+                                       &lt;img src=&quot;&lt;%skinfile(/images/button-link.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_HREF_TT)%&gt;&quot; alt=&quot;&lt;%text(_ADD_HREF_TT)%&gt;&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                               &lt;/span&gt;
+       &lt;!--&lt;![endif]--&gt;
+                               &lt;span class=&quot;jsbuttonspacer&quot;&gt;&amp;nbsp;&lt;/span&gt;
+                               &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;alignleftThis()&quot;&gt;
+                                       &lt;img src=&quot;&lt;%skinfile(/images/button-alignleft.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_ALIGNLEFT_TT)%&gt;&quot; alt=&quot;&lt;%text(_ADD_ALIGNLEFT_TT)%&gt;&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                               &lt;/span&gt;
+                               &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;alignrightThis()&quot;&gt;
+                                       &lt;img src=&quot;&lt;%skinfile(/images/button-alignright.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_ALIGNRIGHT_TT)%&gt;&quot; alt=&quot;&lt;%text(_ADD_ALIGNRIGHT_TT)%&gt;&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                               &lt;/span&gt;
+                               &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;aligncenterThis()&quot;&gt;
+                                       &lt;img src=&quot;&lt;%skinfile(/images/button-aligncenter.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_ALIGNCENTER_TT)%&gt;&quot; alt=&quot;&lt;%text(_ADD_ALIGNCENTER_TT)%&gt;&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                               &lt;/span&gt;
+                               &lt;span class=&quot;jsbuttonspacer&quot;&gt;&amp;nbsp;&lt;/span&gt;
+                               &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;leftThis()&quot;&gt;
+                                       &lt;img src=&quot;&lt;%skinfile(/images/button-left.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_LEFT_TT)%&gt;&quot; alt=&quot;&lt;%text(_ADD_LEFT_TT)%&gt;&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                               &lt;/span&gt;
+                               &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;rightThis()&quot;&gt;
+                                       &lt;img src=&quot;&lt;%skinfile(/images/button-right.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_RIGHT_TT)%&gt;&quot; alt=&quot;&lt;%text(_ADD_RIGHT_TT)%&gt;&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                               &lt;/span&gt;
+                               &lt;span class=&quot;jsbuttonspacer&quot;&gt;&amp;nbsp;&lt;/span&gt;
+                               &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;addMedia()&quot;&gt;
+                                       &lt;img src=&quot;&lt;%skinfile(/images/button-media.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_MEDIA_TT)%&gt;&quot; alt=&quot;&lt;%text(_ADD_MEDIA_TT)%&gt;&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                               &lt;/span&gt;
+       &lt;!--[if IE]&gt;
+                               &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;showedit()&quot;&gt;
+                                       &lt;img src=&quot;&lt;%skinfile(/images/button-preview.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_PREVIEW_TT)%&gt;&quot; alt=&quot;&lt;%text(_ADD_PREVIEW_TT)%&gt;&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                               &lt;/span&gt;
+       &lt;![endif]--&gt;
+                               &lt;div class=&quot;jsbuttonend&quot;&gt;&lt;/div&gt;
+                       &lt;/div&gt;
+                               &lt;textarea id=&quot;inputbody&quot; onkeyup=&quot;storeCaret(this); updPreview(body); doMonitor();&quot; onclick=&quot;storeCaret(this);&quot; onselect=&quot;storeCaret(this);&quot;
+                                       name=&quot;body&quot;
+                                       tabindex=&quot;20&quot;
+                                       cols=&quot;60&quot;
+                                       rows=&quot;20&quot;&gt;&lt;%contents(body)%&gt;&lt;/textarea&gt;
+                       &lt;/td&gt;
+               &lt;/tr&gt;&lt;tr id=&quot;edit&quot; style=&quot;display:none;&quot;&gt;
+                       &lt;td&gt;&lt;%text(_ADD_PREVIEW)%&gt;&lt;/td&gt;
+                       &lt;td&gt;&lt;b&gt;&lt;span id=&quot;prevtitle&quot;&gt;&amp;#160;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
+                               &lt;span id=&quot;prevbody&quot;&gt;&amp;#160;&lt;/span&gt;&lt;br /&gt;
+                               &lt;span id=&quot;prevmore&quot;&gt;&amp;#160;&lt;/span&gt;&lt;br /&gt;
+                       &lt;/td&gt;
+               &lt;/tr&gt;
+       &lt;tr&gt;
+               
+       &lt;%if(blogsetting, bcomments)%&gt;
+                       &lt;td&gt;&lt;%text(_ADD_DISABLE_COMMENTS)%&gt;&lt;/td&gt;
+                       &lt;td&gt;
+                               &lt;input name=&quot;closed&quot; type=&quot;radio&quot; tabindex=&quot;30&quot; value=&quot;1&quot; id=&quot;closed_yes&quot; /&gt;&lt;label for=&quot;closed_yes&quot;&gt;&lt;%text(_YES)%&gt;&lt;/label&gt;
+                               &lt;input name=&quot;closed&quot; type=&quot;radio&quot; tabindex=&quot;30&quot; value=&quot;0&quot; checked=&quot;checked&quot; id=&quot;closed_no&quot; /&gt;&lt;label for=&quot;closed_no&quot;&gt;&lt;%text(_NO)%&gt;&lt;/label&gt;
+                       &lt;/td&gt;
+               &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;%endif%&gt;
+       
+       
+                       &lt;td&gt;&lt;%text(_ADD_CATEGORY)%&gt;&lt;/td&gt;
+                       &lt;td&gt;&lt;%categories(40)%&gt;&lt;/td&gt;
+               &lt;/tr&gt;
+       &lt;tr&gt;
+                       &lt;td&gt;&lt;%text(_SUBMIT)%&gt;&lt;/td&gt;
+                       &lt;td&gt;
+                               &lt;input tabindex=&quot;60&quot; type=&quot;submit&quot; value=&quot;&lt;%text(_ADD_ADDITEM)%&gt;&quot; 
+                                       onclick=&quot;return checkSubmit();&quot; /&gt;
+       
+                               &lt;br /&gt;&lt;br /&gt;
+       
+                               &lt;input name=&quot;actiontype&quot; value=&quot;addnow&quot; type=&quot;radio&quot; checked='checked' id=&quot;act_now&quot; tabindex=&quot;61&quot; /&gt;&lt;label for=&quot;act_now&quot;&gt;&lt;%text(_ADD_ADDNOW)%&gt;&lt;/label&gt;
+                               &lt;br /&gt;
+                               &lt;input name=&quot;actiontype&quot; value=&quot;addfuture&quot; type=&quot;radio&quot; id=&quot;act_future&quot; tabindex=&quot;61&quot; /&gt;&lt;label for=&quot;act_future&quot; &gt;&lt;%text(_ADD_ADDLATER)%&gt;&lt;/label&gt; &lt;%helplink(future)%&gt;
+                               &lt;div class=&quot;indent&quot;&gt;
+                                       &lt;%text(_ADD_PLACE_ON)%&gt;
+                                       &lt;input id=&quot;inputyear&quot; name=&quot;year&quot; tabindex=&quot;63&quot; size=&quot;4&quot; value=&quot;&lt;%currenttime(year)%&gt;&quot; onchange=&quot;document.forms[0].act_future.checked=true;&quot; /&gt;&lt;%text(_ITEM_ADDEDITTEMPLATE_YEAR)%&gt;
+                                       &lt;input id=&quot;inputmonth&quot; name=&quot;month&quot; tabindex=&quot;64&quot; size=&quot;2&quot; value=&quot;&lt;%currenttime(mon)%&gt;&quot; onchange=&quot;document.forms[0].act_future.checked=true;&quot; /&gt;&lt;%text(_ITEM_ADDEDITTEMPLATE_MONTH)%&gt;
+                                       &lt;input id=&quot;inputday&quot; name=&quot;day&quot; tabindex=&quot;65&quot; size=&quot;2&quot; value=&quot;&lt;%currenttime(mday)%&gt;&quot; onchange=&quot;document.forms[0].act_future.checked=true;&quot; /&gt;&lt;%text(_ITEM_ADDEDITTEMPLATE_DAY)%&gt;
+                                        
+                                       &lt;input id=&quot;inputhour&quot; name=&quot;hour&quot; tabindex=&quot;66&quot; size=&quot;2&quot; value=&quot;&lt;%currenttime(hours)%&gt;&quot; onchange=&quot;document.forms[0].act_future.checked=true;&quot; /&gt;&lt;%text(_ITEM_ADDEDITTEMPLATE_HOUR)%&gt;
+                                       &lt;input id=&quot;inputminutes&quot; name=&quot;minutes&quot; tabindex=&quot;67&quot; size=&quot;2&quot; value=&quot;&lt;%currenttime(minutes)%&gt;&quot; onchange=&quot;document.forms[0].act_future.checked=true;&quot; /&gt;&lt;%text(_ITEM_ADDEDITTEMPLATE_MINUTE)%&gt;
+                                       &lt;br /&gt;&lt;%text(_ITEM_ADDEDITTEMPLATE_FORMAT)%&gt;(yyyy)&lt;%text(_ITEM_ADDEDITTEMPLATE_YEAR)%&gt;(mm)&lt;%text(_ITEM_ADDEDITTEMPLATE_MONTH)%&gt;(dd)&lt;%text(_ITEM_ADDEDITTEMPLATE_DAY)%&gt; (hh)&lt;%text(_ITEM_ADDEDITTEMPLATE_HOUR)%&gt;(mm)&lt;%text(_ITEM_ADDEDITTEMPLATE_MINUTE)%&gt;
+                                       
+                                       &lt;%if(blogsetting, ballowpast,0)%&gt;
+                                               &lt;br /&gt;
+                                               &lt;%text(_ADD_NOPASTDATES)%&gt;
+                                       &lt;%endif%&gt;
+                               &lt;/div&gt;
+                               &lt;input name=&quot;actiontype&quot; tabindex=&quot;61&quot; value=&quot;adddraft&quot; type=&quot;radio&quot; id=&quot;act_draft&quot; /&gt;&lt;label for=&quot;act_draft&quot;&gt;&lt;%text(_ADD_ADDDRAFT)%&gt;&lt;/label&gt; &lt;%helplink(draft)%&gt;
+                       &lt;/td&gt;
+               &lt;/tr&gt;
+       &lt;tr&gt;
+                       &lt;td&gt;&lt;%text(_ADD_PLUGIN_EXTRAS)%&gt;&lt;/td&gt;
+                       &lt;td&gt;
+                               &lt;%pluginextras%&gt;
+                       &lt;/td&gt;
+               &lt;/tr&gt;
+                               &lt;%pluginoptions(item)%&gt;   
+       &lt;tr&gt;
+               &lt;th colspan=&quot;2&quot;&gt;&lt;%text(_ADD_MORE)%&gt;&lt;/th&gt;
+               &lt;/tr&gt;
+       &lt;tr&gt;
+                       &lt;td&gt;&lt;%text(_ADD_MORE)%&gt;
+                               &lt;br /&gt;&lt;%helplink(extended)%&gt;
+                       &lt;/td&gt;
+                       &lt;td&gt;
+                       &lt;div class=&quot;jsbuttonbar&quot;&gt;
+       &lt;!--[if IE]&gt;
+                               &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;cutThis()&quot;&gt;
+                                       &lt;img src=&quot;&lt;%skinfile(/images/button-cut.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_CUT_TT)%&gt;(Ctrl + X)&quot; alt=&quot;&lt;%text(_ADD_CUT_TT)%&gt;(Ctrl + X)&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                               &lt;/span&gt;
+                               &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;copyThis()&quot;&gt;
+                                       &lt;img src=&quot;&lt;%skinfile(/images/button-copy.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_COPY_TT)%&gt;(Ctrl + C)&quot; alt=&quot;&lt;%text(_ADD_COPY_TT)%&gt;(Ctrl + C)&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                               &lt;/span&gt;
+                               &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;pasteThis()&quot;&gt;
+                                       &lt;img src=&quot;&lt;%skinfile(/images/button-paste.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_PASTE_TT)%&gt;(Ctrl + V)&quot; alt=&quot;&lt;%text(_ADD_PASTE_TT)%&gt;(Ctrl + V)&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                               &lt;/span&gt;
+                               &lt;span class=&quot;jsbuttonspacer&quot;&gt;&amp;nbsp;&lt;/span&gt;
+                               &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;boldThis()&quot;&gt;
+                                       &lt;img src=&quot;&lt;%skinfile(/images/button-bold.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_BOLD_TT)%&gt;(Ctrl + Shift + B)&quot; alt=&quot;&lt;%text(_ADD_BOLD_TT)%&gt;(Ctrl + Shift + B)&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                               &lt;/span&gt;
+                               &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;italicThis()&quot;&gt;
+                                       &lt;img src=&quot;&lt;%skinfile(/images/button-italic.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_ITALIC_TT)%&gt;(Ctrl + Shift + I)&quot; alt=&quot;&lt;%text(_ADD_ITALIC_TT)%&gt;(Ctrl + Shift + I)&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                               &lt;/span&gt;
+                               &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;ahrefThis()&quot;&gt;
+                                       &lt;img src=&quot;&lt;%skinfile(/images/button-link.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_HREF_TT)%&gt;(Ctrl + Shift + A)&quot; alt=&quot;&lt;%text(_ADD_HREF_TT)%&gt;(Ctrl + Shift + A)&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                               &lt;/span&gt;
+       &lt;![endif]--&gt;
+       &lt;!--[if ! IE]&gt;--&gt;
+                               &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;boldThis()&quot;&gt;
+                                       &lt;img src=&quot;&lt;%skinfile(/images/button-bold.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_BOLD_TT)%&gt;&quot; alt=&quot;&lt;%text(_ADD_BOLD_TT)%&gt;&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                               &lt;/span&gt;
+                               &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;italicThis()&quot;&gt;
+                                       &lt;img src=&quot;&lt;%skinfile(/images/button-italic.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_ITALIC_TT)%&gt;&quot; alt=&quot;&lt;%text(_ADD_ITALIC_TT)%&gt;&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                               &lt;/span&gt;
+                               &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;ahrefThis()&quot;&gt;
+                                       &lt;img src=&quot;&lt;%skinfile(/images/button-link.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_HREF_TT)%&gt;&quot; alt=&quot;&lt;%text(_ADD_HREF_TT)%&gt;&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                               &lt;/span&gt;
+       &lt;!--&lt;![endif]--&gt;
+                               &lt;span class=&quot;jsbuttonspacer&quot;&gt;&amp;nbsp;&lt;/span&gt;
+                               &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;alignleftThis()&quot;&gt;
+                                       &lt;img src=&quot;&lt;%skinfile(/images/button-alignleft.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_ALIGNLEFT_TT)%&gt;&quot; alt=&quot;&lt;%text(_ADD_ALIGNLEFT_TT)%&gt;&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                               &lt;/span&gt;
+                               &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;alignrightThis()&quot;&gt;
+                                       &lt;img src=&quot;&lt;%skinfile(/images/button-alignright.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_ALIGNRIGHT_TT)%&gt;&quot; alt=&quot;&lt;%text(_ADD_ALIGNRIGHT_TT)%&gt;&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                               &lt;/span&gt;
+                               &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;aligncenterThis()&quot;&gt;
+                                       &lt;img src=&quot;&lt;%skinfile(/images/button-aligncenter.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_ALIGNCENTER_TT)%&gt;&quot; alt=&quot;&lt;%text(_ADD_ALIGNCENTER_TT)%&gt;&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                               &lt;/span&gt;
+                               &lt;span class=&quot;jsbuttonspacer&quot;&gt;&amp;nbsp;&lt;/span&gt;
+                               &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;leftThis()&quot;&gt;
+                                       &lt;img src=&quot;&lt;%skinfile(/images/button-left.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_LEFT_TT)%&gt;&quot; alt=&quot;&lt;%text(_ADD_LEFT_TT)%&gt;&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                               &lt;/span&gt;
+                               &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;rightThis()&quot;&gt;
+                                       &lt;img src=&quot;&lt;%skinfile(/images/button-right.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_RIGHT_TT)%&gt;&quot; alt=&quot;&lt;%text(_ADD_RIGHT_TT)%&gt;&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                               &lt;/span&gt;
+                               &lt;span class=&quot;jsbuttonspacer&quot;&gt;&amp;nbsp;&lt;/span&gt;
+                               &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;addMedia()&quot;&gt;
+                                       &lt;img src=&quot;&lt;%skinfile(/images/button-media.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_MEDIA_TT)%&gt;&quot; alt=&quot;&lt;%text(_ADD_MEDIA_TT)%&gt;&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                               &lt;/span&gt;
+       &lt;!--[if IE]&gt;
+                               &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;showedit()&quot;&gt;
+                                       &lt;img src=&quot;&lt;%skinfile(/images/button-preview.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_PREVIEW_TT)%&gt;&quot; alt=&quot;&lt;%text(_ADD_PREVIEW_TT)%&gt;&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                               &lt;/span&gt;
+       &lt;![endif]--&gt;
+                       &lt;/div&gt;
+                               &lt;textarea id=&quot;inputmore&quot; onkeyup=&quot;storeCaret(this); updPreview(more); doMonitor();&quot; onclick=&quot;storeCaret(this);&quot; onselect=&quot;storeCaret(this);&quot;
+                                       name=&quot;more&quot;
+                                       tabindex=&quot;70&quot;
+                                       cols=&quot;60&quot;
+                                       rows=&quot;20&quot;
+                                       &gt;&lt;%contents(more)%&gt;&lt;/textarea&gt;
+                       &lt;/td&gt;
+               &lt;/tr&gt;
+       &lt;tr&gt;
+                       &lt;td&gt;&lt;%text(_SUBMIT)%&gt;&lt;/td&gt;
+                       &lt;td&gt;
+                               &lt;input tabindex=&quot;60&quot; type=&quot;submit&quot; value=&quot;&lt;%text(_ADD_ADDITEM)%&gt;&quot; 
+                                       onclick=&quot;return checkSubmit();&quot; /&gt;
+                               &lt;%if(autosave)%&gt;
+                               &lt;input tabindex=&quot;80&quot; type=&quot;button&quot; name=&quot;autosavenow&quot; value=&quot;&lt;%text(_AUTOSAVEDRAFT_NOW)%&gt;&quot;
+                                       onclick=&quot;autoSaveDraft();&quot; /&gt;
+                               &lt;%endif%&gt;
+                       &lt;/td&gt;
+               &lt;/tr&gt;
+       &lt;/table&gt;
+       
+       &lt;/div&gt;
+       &lt;/form&gt;
+       &lt;%if(autosave)%&gt;
+               &lt;script type=&quot;text/javascript&quot;&gt;
+                       var xmlhttprequest = new Array();
+                       xmlhttprequest[0] = createHTTPHandler(); // AutoDraft handler
+                       xmlhttprequest[1] = createHTTPHandler(); // UpdateTicket handler
+                       var seconds = now(); // Last AutoDraft time
+                       var checks = 0; // Number of checks since last AutoDraft
+                       var addform = document.getElementById('addform'); // The form id
+                       var goal = document.getElementById('info'); // The html div id where 'Last saved: date time' must come
+                       var goalurl = '../action.php'; // The PHP file where the content must be posted to
+                       var lastsavedtext = '&lt;%text(_AUTOSAVEDRAFT_LASTSAVED)%&gt;'; // The language variable for 'Last saved'
+                       var formtype = 'add'; // Add or edit form
+               &lt;/script&gt; 
+       &lt;%endif%&gt;
+       &lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartcreatenewlog" id="skinpartcreatenewlog"></a>
+<h1>Admin skins: createnewlog</h1>
+<p>
+This skinpart is used to createnewlog.
+</p>
+<p>
+Very basic buildup for a [Create new weblog]page page.
+</p>
+<pre>
+
+&lt;%pagehead%&gt;
+&lt;p&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=manage&quot;&gt;(&lt;%text(_BACKTOMANAGE)%&gt;)&lt;/a&gt;&lt;/p&gt;
+&lt;h2&gt;&lt;%text(_EBLOG_CREATE_TITLE)%&gt;&lt;/h2&gt;
+&lt;h3&gt;&lt;%text(_ADMIN_NOTABILIA)%&gt;&lt;/h3&gt;
+&lt;p&gt;&lt;%text(_ADMIN_PLEASE_READ)%&gt;&lt;/p&gt;
+&lt;p&gt;&lt;%text(_ADMIN_HOW_TO_ACCESS)%&gt;&lt;/p&gt;
+&lt;ol&gt;
+&lt;li&gt;&lt;%text(_ADMIN_SIMPLE_WAY)%&gt;&lt;/li&gt;
+&lt;li&gt;&lt;%text(_ADMIN_ADVANCED_WAY)%&gt;&lt;/li&gt;
+&lt;/ol&gt;
+&lt;h3&gt;&lt;%text(_ADMIN_HOW_TO_CREATE)%&gt;&lt;/h3&gt;
+&lt;p&gt;&lt;%text(_EBLOG_CREATE_TEXT)%&gt;&lt;/p&gt;
+&lt;form method=&quot;post&quot; action=&quot;&lt;%adminurl%&gt;index.php&quot;&gt;
+&lt;div&gt;
+&lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;addnewlog&quot; /&gt;
+&lt;%ticket%&gt;
+&lt;table&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_EBLOG_NAME)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;input name=&quot;name&quot; tabindex=&quot;10&quot; size=&quot;40&quot; maxlength=&quot;60&quot; /&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;
+&lt;%text(_EBLOG_SHORTNAME)%&gt;
+&lt;%helplink(shortblogname)%&gt;
+&lt;/td&gt;
+&lt;td&gt;&lt;input name=&quot;shortname&quot; tabindex=&quot;20&quot; maxlength=&quot;15&quot; size=&quot;15&quot; /&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_EBLOG_DESC)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;input name=&quot;desc&quot; tabindex=&quot;30&quot; maxlength=&quot;200&quot; size=&quot;40&quot; /&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;
+&lt;%text(_EBLOG_DEFSKIN)%&gt;
+&lt;%helplink(blogdefaultskin)%&gt;
+&lt;/td&gt;
+&lt;td&gt;&lt;%defskinselect(blog,admin/default)%&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;
+&lt;%text(_EBLOG_OFFSET)%&gt;
+&lt;%helplink(blogtimeoffset)%&gt;&lt;br /&gt;
+&lt;%text(_EBLOG_STIME)%&gt; &lt;b&gt;&lt;%blogtime(servertime,&quot;%H:%M&quot;)%&gt;&lt;/b&gt;
+&lt;/td&gt;
+&lt;td&gt;&lt;input name=&quot;timeoffset&quot; tabindex=&quot;110&quot; size=&quot;3&quot; value=&quot;0&quot; /&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;
+&lt;%text(_EBLOG_ADMIN)%&gt;
+&lt;%helplink(teamadmin)%&gt;
+&lt;/td&gt;
+&lt;td&gt;&lt;%text(_EBLOG_ADMIN_MSG)%&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_EBLOG_CREATE)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;input type=&quot;submit&quot; tabindex=&quot;120&quot; value=&quot;&lt;%text(_EBLOG_CREATE_BTN)%&gt;&quot; onclick=&quot;return checkSubmit();&quot; /&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;/table&gt;
+&lt;/div&gt;
+&lt;/form&gt;&lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartdeleteblog" id="skinpartdeleteblog"></a>
+<h1>Admin skins: deleteblog</h1>
+<p>
+This skinpart is used to deleteblog.
+</p>
+<p>
+Very basic buildup for a [Warning! Deleting a blog will delete ALL items of that blog, and all comments. Please confirm to make clear that you are CERTAIN of what you're doing!<br />Also, don't interrupt Nucleus while removing your blog.]page page.
+</p>
+<pre>
+
+&lt;%pagehead%&gt;
+&lt;h2&gt;&lt;%text(_DELETE_CONFIRM)%&gt;&lt;/h2&gt;
+&lt;p&gt;&lt;%text(_WARNINGTXT_BLOGDEL)%&gt;
+&lt;/p&gt;
+&lt;div&gt;
+&lt;%text(_CONFIRMTXT_BLOG)%&gt;&lt;b&gt;&lt;%blogsetting(name)%&gt;&lt;/b&gt;
+&lt;/div&gt;
+&lt;form method=&quot;post&quot; action=&quot;&lt;%adminurl%&gt;index.php&quot;&gt;&lt;div&gt;
+&lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;deleteblogconfirm&quot; /&gt;
+&lt;%ticket%&gt;
+&lt;input type=&quot;hidden&quot; name=&quot;blogid&quot; value=&quot;&lt;%requestblogid%&gt;&quot; /&gt;
+&lt;input type=&quot;submit&quot; tabindex=&quot;10&quot; value=&quot;&lt;%text(_DELETE_CONFIRM_BTN)%&gt;&quot; /&gt;
+&lt;/div&gt;&lt;/form&gt;&lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinparteditmembersettings" id="skinparteditmembersettings"></a>
+<h1>Admin skins: editmembersettings</h1>
+<p>
+This skinpart is used to editmembersettings.
+</p>
+<p>
+Very basic buildup for a [Edit Member]page page.
+</p>
+<pre>
+
+&lt;%pagehead%&gt;
+&lt;%if(superadmin)%&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=usermanagement&quot;&gt;(&lt;%text(_MEMBERS_BACKTOOVERVIEW)%&gt;)&lt;%else%&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=overview&quot;&gt;(&lt;%text(_BACKHOME)%&gt;)&lt;%endif%&gt;&lt;/a&gt;
+&lt;h2&gt;&lt;%text(_MEMBERS_EDIT)%&gt;&lt;/h2&gt;
+&lt;form method=&quot;post&quot; action=&quot;&lt;%adminurl%&gt;index.php&quot; name=&quot;memberedit&quot;&gt;
+&lt;div&gt;
+&lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;changemembersettings&quot; /&gt;
+&lt;input type=&quot;hidden&quot; name=&quot;memberid&quot; value=&quot;&lt;%editmember(id)%&gt;&quot; /&gt;
+&lt;%ticket%&gt;
+&lt;table&gt;
+&lt;tr&gt;
+&lt;th colspan=&quot;2&quot;&gt;&lt;%text(_MEMBERS_EDIT)%&gt;&lt;/th&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;
+&lt;%text(_MEMBERS_DISPLAY)%&gt; &lt;%helplink(shortnames)%&gt;
+&lt;br /&gt;&lt;small&gt;&lt;%text(_MEMBERS_DISPLAY_INFO)%&gt;&lt;/small&gt;
+&lt;/td&gt;
+&lt;td&gt;&lt;%editmember(displayname)%&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_MEMBERS_REALNAME)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;input name=&quot;realname&quot; tabindex=&quot;20&quot; maxlength=&quot;60&quot; size=&quot;40&quot; value=&quot;&lt;%editmember(realname)%&gt;&quot; /&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;&lt;%if(allowloginedit)%&gt;
+&lt;td&gt;&lt;%text(_MEMBERS_PWD)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;input type=&quot;password&quot; tabindex=&quot;30&quot; maxlength=&quot;40&quot; size=&quot;16&quot; name=&quot;password&quot; /&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_MEMBERS_REPPWD)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;input type=&quot;password&quot; tabindex=&quot;35&quot; maxlength=&quot;40&quot; size=&quot;16&quot; name=&quot;repeatpassword&quot; /&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;&lt;%endif%&gt;
+&lt;td&gt;
+&lt;%text(_MEMBERS_EMAIL)%&gt;
+&lt;br /&gt;&lt;small&gt;&lt;%text(_MEMBERS_EMAIL_EDIT)%&gt;&lt;/small&gt;
+&lt;/td&gt;
+&lt;td&gt;&lt;input name=&quot;email&quot; tabindex=&quot;40&quot; size=&quot;40&quot; maxlength=&quot;60&quot; value=&quot;&lt;%editmember(email)%&gt;&quot; /&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_MEMBERS_URL)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;input name=&quot;url&quot; tabindex=&quot;50&quot; size=&quot;40&quot; maxlength=&quot;100&quot; value=&quot;&lt;%editmember(url)%&gt;&quot; /&gt;&lt;/td&gt;
+&lt;%if(superadmin)%&gt;&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_MEMBERS_SUPERADMIN)%&gt; &lt;%helplink(superadmin)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;%editmember(admin)%&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_MEMBERS_CANLOGIN)%&gt; &lt;%helplink(canlogin)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;%editmember(canlogin)%&gt;&lt;/td&gt;&lt;%endif%&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_MEMBERS_NOTES)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;input name=&quot;notes&quot; tabindex=&quot;80&quot; size=&quot;40&quot; maxlength=&quot;100&quot; value=&quot;&lt;%editmember(notes)%&gt;&quot; /&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_MEMBERS_LOCALE)%&gt; &lt;%helplink(locale)%&gt;&lt;/td&gt;
+&lt;td&gt;
+&lt;select name=&quot;locale&quot; tabindex=&quot;85&quot;&gt;
+&lt;%localeselectoptions%&gt;
+&lt;/select&gt;
+&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_MEMBERS_USEAUTOSAVE)%&gt; &lt;%helplink(autosave)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;%editmember(autosave)%&gt;&lt;/td&gt;
+&lt;/tr&gt;&lt;%if(superadmin)%&gt;&lt;tr&gt;
+&lt;td&gt;&lt;%text(_SKINABLEADMIN_MEMBERS_ADMINSKIN)%&gt; &lt;%customhelplink(useadminskin)%&gt;&lt;/td&gt;
+&lt;td&gt;
+&lt;%defskinselect(admin/default)%&gt;
+&lt;/td&gt;
+&lt;/tr&gt;&lt;%endif%&gt;
+&lt;%pluginoptions(member)%&gt;
+&lt;tr&gt;
+&lt;th colspan=&quot;2&quot;&gt;&lt;%text(_MEMBERS_EDIT)%&gt;&lt;/th&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_MEMBERS_EDIT)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;input type=&quot;submit&quot; tabindex=&quot;90&quot; value=&quot;&lt;%text(_MEMBERS_EDIT_BTN)%&gt;&quot; onclick=&quot;return checkSubmit();&quot; /&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;/table&gt;
+&lt;/div&gt;
+&lt;/form&gt;
+&lt;h3&gt;&lt;%text(_PLUGINS_EXTRA)%&gt;&lt;/h3&gt;
+&lt;%pluginextras(member)%&gt;&lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartforgotpassword" id="skinpartforgotpassword"></a>
+<h1>Admin skins: forgotpassword</h1>
+<p>
+This skinpart is used to forgotpassword.
+</p>
+<p>
+Very basic buildup for a [Forgot your password?]page page.
+</p>
+<pre>
+
+       &lt;%pagehead%&gt;
+       &lt;h2&gt;&lt;%text(_FORGOTPASSWORD_TITLE)%&gt;&lt;/h2&gt;
+       &lt;p&gt;&lt;%text(_FORGOTPASSWORD_MSG)%&gt;&lt;/p&gt;
+       &lt;form method=&quot;post&quot; action=&quot;&lt;%actionurl%&gt;&quot;&gt;
+       &lt;dl&gt;
+       &lt;dt&gt;&lt;label for=&quot;nucleus_pf_username&quot;&gt;&lt;%text(_CREATE_ACCOUNT_LOGIN_NAME)%&gt;&lt;/label&gt;&lt;/dt&gt;
+       &lt;dd&gt;&lt;input type=&quot;text&quot; name=&quot;name&quot; id=&quot;nucleus_pf_username&quot; /&gt;&lt;/dd&gt;
+       &lt;dt&gt;&lt;label for=&quot;nucleus_pf_email&quot;&gt;&lt;%text(_CREATE_ACCOUNT_EMAIL)%&gt;&lt;/label&gt;&lt;/dt&gt;
+       &lt;dd&gt;&lt;input type=&quot;text&quot; name=&quot;email&quot; id=&quot;nucleus_pf_email&quot; /&gt;&lt;/dd&gt;
+       &lt;/dl&gt;
+       &lt;p&gt;
+       &lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;forgotpassword&quot; /&gt;
+       &lt;input type=&quot;submit&quot; value=&quot;&lt;%text(_FORGOTPASSWORD_SUBMIT)%&gt;&quot; class=&quot;transparent&quot; /&gt;
+       &lt;/p&gt;
+       &lt;/form&gt;
+       &lt;p&gt;&lt;%text(_FORGOTPASSWORD_CONTACT)%&gt;&lt;/p&gt;
+       &lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartitemcommentlist" id="skinpartitemcommentlist"></a>
+<h1>Admin skins: itemcommentlist</h1>
+<p>
+This skinpart is used to itemcommentlist.
+</p>
+<p>
+Very basic buildup for a [Comments]page page.
+</p>
+<pre>
+
+&lt;%pagehead%&gt;
+&lt;p&gt;(&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=itemlist&amp;amp;blogid=&lt;%requestblogid%&gt;&quot;&gt;&lt;%text(_BACKTOOVERVIEW)%&gt;&lt;/a&gt;)&lt;/p&gt;
+&lt;h2&gt;&lt;%text(_COMMENTS)%&gt;&lt;/h2&gt;
+&lt;%commentnavlist(admin/default)%&gt;&lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartitemdelete" id="skinpartitemdelete"></a>
+<h1>Admin skins: itemdelete</h1>
+<p>
+This skinpart is used to itemdelete.
+</p>
+<p>
+Very basic buildup for a [You're about to delete the item following item:]page page.
+</p>
+<pre>
+
+&lt;%pagehead%&gt;
+&lt;h2&gt;&lt;%text(_DELETE_CONFIRM)%&gt;&lt;/h2&gt;
+&lt;p&gt;&lt;%text(_CONFIRMTXT_ITEM)%&gt;&lt;/p&gt;
+&lt;div class=&quot;note&quot;&gt;
+&lt;b&gt;&quot;&lt;%deleteitemtitle%&gt;&quot;&lt;/b&gt;
+&lt;br /&gt;
+&lt;%deleteitembody%&gt;
+&lt;/div&gt;
+&lt;form method=&quot;post&quot; action=&quot;&lt;%adminurl%&gt;index.php&quot;&gt;&lt;div&gt;
+&lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;itemdeleteconfirm&quot; /&gt;
+&lt;%ticket%&gt;
+&lt;input type=&quot;hidden&quot; name=&quot;itemid&quot; value=&quot;&lt;%deleteitemid%&gt;&quot; /&gt;
+&lt;input type=&quot;submit&quot; value=&quot;&lt;%text(_DELETE_CONFIRM_BTN)%&gt;&quot; tabindex=&quot;10&quot; /&gt;
+&lt;/div&gt;&lt;/form&gt;&lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartitemedit" id="skinpartitemedit"></a>
+<h1>Admin skins: itemedit</h1>
+<p>
+This skinpart is used to itemedit.
+</p>
+<p>
+Very basic buildup for a [Edit Item]page page.
+</p>
+<pre>
+
+&lt;%pagehead%&gt;
+&lt;h2&gt;&lt;%text(_EDIT_ITEM)%&gt;&lt;/h2&gt;
+
+&lt;%init%&gt;
+&lt;script type=&quot;text/javascript&quot; src=&quot;&lt;%skinfile(/javascripts/numbercheck.js)%&gt;&quot;&gt;&lt;/script&gt;
+&lt;%if(autosave)%&gt;&lt;script type=&quot;text/javascript&quot; src=&quot;&lt;%skinfile(/javascripts/xmlhttprequest.js)%&gt;&quot;&gt;&lt;/script&gt;&lt;%endif%&gt;
+
+&lt;form id=&quot;editform&quot; method=&quot;post&quot; action=&quot;&lt;%adminurl%&gt;index.php&quot;&gt;
+&lt;div&gt;
+
+&lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;itemupdate&quot; /&gt;
+&lt;input name=&quot;itemid&quot; value=&quot;&lt;%contents(itemid)%&gt;&quot; type=&quot;hidden&quot; /&gt;
+&lt;input type=&quot;hidden&quot; name=&quot;draftid&quot; value=&quot;0&quot; /&gt;
+&lt;%ticket%&gt;
+
+&lt;table&gt;&lt;tr&gt;
+       &lt;th colspan=&quot;2&quot;&gt;&lt;%text(_EDIT_ITEM)%&gt;&lt;/th&gt;
+&lt;/tr&gt;
+&lt;%if(autosave)%&gt;&lt;tr&gt;
+       &lt;td&gt;&lt;%text(_AUTOSAVEDRAFT)%&gt;&lt;/td&gt;
+       &lt;td&gt;&lt;span id=&quot;info&quot;&gt;&lt;%text(_AUTOSAVEDRAFT_NOTYETSAVED)%&gt;&lt;/span&gt;&lt;/td&gt;
+&lt;/tr&gt;&lt;%endif%&gt;
+&lt;tr&gt;
+       &lt;td&gt;&lt;%text(_EDIT_ORIG_AUTHOR)%&gt;&lt;/td&gt;
+       &lt;td&gt;&lt;%contents(author)%&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+       &lt;td&gt;&lt;%text(_ADD_TITLE)%&gt;&lt;/td&gt;
+       &lt;td&gt;&lt;input id=&quot;inputtitle&quot; onkeyup=&quot;storeCaret(this); updPreview(title); doMonitor();&quot; onclick=&quot;storeCaret(this);&quot; onselect=&quot;storeCaret(this);&quot;
+                       name=&quot;title&quot;
+                       tabindex=&quot;10&quot;
+                       size=&quot;60&quot; 
+                       maxlength=&quot;160&quot; 
+                       value=&quot;&lt;%contents(title)%&gt;&quot; /&gt;
+       &lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+       &lt;td&gt;
+               &lt;%text(_ADD_BODY)%&gt;
+       &lt;/td&gt;
+       &lt;td&gt;
+               &lt;div class=&quot;jsbuttonbar&quot;&gt;
+&lt;!--[if IE]&gt;
+                       &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;cutThis()&quot;&gt;
+                               &lt;img src=&quot;&lt;%skinfile(/images/button-cut.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_CUT_TT)%&gt;(Ctrl + X)&quot; alt=&quot;&lt;%text(_ADD_CUT_TT)%&gt;(Ctrl + X)&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                       &lt;/span&gt;
+                       &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;copyThis()&quot;&gt;
+                               &lt;img src=&quot;&lt;%skinfile(/images/button-copy.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_COPY_TT)%&gt;(Ctrl + C)&quot; alt=&quot;&lt;%text(_ADD_COPY_TT)%&gt;(Ctrl + C)&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                       &lt;/span&gt;
+                       &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;pasteThis()&quot;&gt;
+                               &lt;img src=&quot;&lt;%skinfile(/images/button-paste.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_PASTE_TT)%&gt;(Ctrl + V)&quot; alt=&quot;&lt;%text(_ADD_PASTE_TT)%&gt;(Ctrl + V)&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                       &lt;/span&gt;
+                       &lt;span class=&quot;jsbuttonspacer&quot;&gt;&amp;nbsp;&lt;/span&gt;
+                       &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;boldThis()&quot;&gt;
+                               &lt;img src=&quot;&lt;%skinfile(/images/button-bold.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_BOLD_TT)%&gt;(Ctrl + Shift + B)&quot; alt=&quot;&lt;%text(_ADD_BOLD_TT)%&gt;(Ctrl + Shift + B)&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                       &lt;/span&gt;
+                       &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;italicThis()&quot;&gt;
+                               &lt;img src=&quot;&lt;%skinfile(/images/button-italic.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_ITALIC_TT)%&gt;(Ctrl + Shift + I)&quot; alt=&quot;&lt;%text(_ADD_ITALIC_TT)%&gt;(Ctrl + Shift + I)&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                       &lt;/span&gt;
+                       &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;ahrefThis()&quot;&gt;
+                               &lt;img src=&quot;&lt;%skinfile(/images/button-link.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_HREF_TT)%&gt;(Ctrl + Shift + A)&quot; alt=&quot;&lt;%text(_ADD_HREF_TT)%&gt;(Ctrl + Shift + A)&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                       &lt;/span&gt;
+&lt;![endif]--&gt;
+&lt;!--[if ! IE]&gt;--&gt;
+                       &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;boldThis()&quot;&gt;
+                               &lt;img src=&quot;&lt;%skinfile(/images/button-bold.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_BOLD_TT)%&gt;&quot; alt=&quot;&lt;%text(_ADD_BOLD_TT)%&gt;&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                       &lt;/span&gt;
+                       &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;italicThis()&quot;&gt;
+                               &lt;img src=&quot;&lt;%skinfile(/images/button-italic.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_ITALIC_TT)%&gt;&quot; alt=&quot;&lt;%text(_ADD_ITALIC_TT)%&gt;&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                       &lt;/span&gt;
+                       &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;ahrefThis()&quot;&gt;
+                               &lt;img src=&quot;&lt;%skinfile(/images/button-link.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_HREF_TT)%&gt;&quot; alt=&quot;&lt;%text(_ADD_HREF_TT)%&gt;&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                       &lt;/span&gt;
+&lt;!--&lt;![endif]--&gt;
+                       &lt;span class=&quot;jsbuttonspacer&quot;&gt;&amp;nbsp;&lt;/span&gt;
+                       &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;alignleftThis()&quot;&gt;
+                               &lt;img src=&quot;&lt;%skinfile(/images/button-alignleft.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_ALIGNLEFT_TT)%&gt;&quot; alt=&quot;&lt;%text(_ADD_ALIGNLEFT_TT)%&gt;&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                       &lt;/span&gt;
+                       &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;alignrightThis()&quot;&gt;
+                               &lt;img src=&quot;&lt;%skinfile(/images/button-alignright.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_ALIGNRIGHT_TT)%&gt;&quot; alt=&quot;&lt;%text(_ADD_ALIGNRIGHT_TT)%&gt;&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                       &lt;/span&gt;
+                       &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;aligncenterThis()&quot;&gt;
+                               &lt;img src=&quot;&lt;%skinfile(/images/button-aligncenter.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_ALIGNCENTER_TT)%&gt;&quot; alt=&quot;&lt;%text(_ADD_ALIGNCENTER_TT)%&gt;&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                       &lt;/span&gt;
+                       &lt;span class=&quot;jsbuttonspacer&quot;&gt;&amp;nbsp;&lt;/span&gt;
+                       &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;leftThis()&quot;&gt;
+                               &lt;img src=&quot;&lt;%skinfile(/images/button-left.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_LEFT_TT)%&gt;&quot; alt=&quot;&lt;%text(_ADD_LEFT_TT)%&gt;&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                       &lt;/span&gt;
+                       &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;rightThis()&quot;&gt;
+                               &lt;img src=&quot;&lt;%skinfile(/images/button-right.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_RIGHT_TT)%&gt;&quot; alt=&quot;&lt;%text(_ADD_RIGHT_TT)%&gt;&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                       &lt;/span&gt;
+                       &lt;span class=&quot;jsbuttonspacer&quot;&gt;&amp;nbsp;&lt;/span&gt;
+                       &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;addMedia()&quot;&gt;
+                               &lt;img src=&quot;&lt;%skinfile(/images/button-media.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_MEDIA_TT)%&gt;&quot; alt=&quot;&lt;%text(_ADD_MEDIA_TT)%&gt;&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                       &lt;/span&gt;
+&lt;!--[if IE]&gt;
+                       &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;showedit()&quot;&gt;
+                               &lt;img src=&quot;&lt;%skinfile(/images/button-preview.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_PREVIEW_TT)%&gt;&quot; alt=&quot;&lt;%text(_ADD_PREVIEW_TT)%&gt;&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                       &lt;/span&gt;
+&lt;![endif]--&gt;
+               &lt;/div&gt;
+               &lt;textarea id=&quot;inputbody&quot; onkeyup=&quot;storeCaret(this); updPreview(body); doMonitor();&quot; onclick=&quot;storeCaret(this);&quot; onselect=&quot;storeCaret(this);&quot;
+                       name=&quot;body&quot;
+                       tabindex=&quot;20&quot;
+                       cols=&quot;60&quot;
+                       rows=&quot;20&quot;&gt;&lt;%contents(body)%&gt;&lt;/textarea&gt;
+       &lt;/td&gt;
+&lt;/tr&gt;&lt;tr id=&quot;edit&quot; style=&quot;display:none;&quot;&gt;
+       &lt;td&gt;&lt;%text(_ADD_PREVIEW)%&gt;&lt;/td&gt;
+       &lt;td&gt;&lt;b&gt;&lt;span id=&quot;prevtitle&quot;&gt;&amp;#160;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
+               &lt;span id=&quot;prevbody&quot;&gt;&amp;#160;&lt;/span&gt;&lt;br /&gt;
+               &lt;span id=&quot;prevmore&quot;&gt;&amp;#160;&lt;/span&gt;&lt;br /&gt;
+       &lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+
+&lt;%if(blogsetting, bcomments)%&gt;
+               &lt;td&gt;
+                       &lt;%text(_ADD_DISABLE_COMMENTS)%&gt;
+               &lt;/td&gt;
+               &lt;td&gt; 
+                       &lt;input type=&quot;radio&quot; name=&quot;closed&quot; value=&quot;1&quot; &lt;%checkedonval(1,closed)%&gt; tabindex=&quot;30&quot; id=&quot;closed_yes&quot; /&gt;&lt;label for=&quot;closed_yes&quot;&gt;&lt;%text(_YES)%&gt;&lt;/label&gt;
+                       &lt;input type=&quot;radio&quot; name=&quot;closed&quot; value=&quot;0&quot; &lt;%checkedonval(0,closed)%&gt; tabindex=&quot;30&quot; id=&quot;closed_no&quot; /&gt;&lt;label for=&quot;closed_no&quot;&gt;&lt;%text(_NO)%&gt;&lt;/label&gt;
+                       &lt;br /&gt;
+                       &lt;small&gt;&lt;%text(_EDIT_COMMENTSNOTE)%&gt;&lt;/small&gt;   
+               &lt;/td&gt;
+       &lt;/tr&gt;
+&lt;tr&gt;                             
+&lt;%endif%&gt;
+
+       &lt;td&gt;&lt;%text(_ADD_CATEGORY)%&gt;&lt;/td&gt;
+       &lt;td&gt;&lt;%categories(40)%&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+       &lt;td&gt;&lt;%text(_EDIT_SUBMIT)%&gt;&lt;/td&gt;
+       &lt;td&gt;
+
+               &lt;input type=&quot;submit&quot; tabindex=&quot;60&quot; value=&quot;&lt;%text(_EDIT_SUBMIT)%&gt;&quot; onclick=&quot;return checkSubmit();&quot; /&gt;
+
+&lt;%if(itemproperty, draft)%&gt;
+               &lt;br /&gt;&lt;br /&gt;
+               &lt;input name=&quot;actiontype&quot; value=&quot;addnow&quot; type=&quot;radio&quot; id=&quot;act_now&quot; /&gt;&lt;label for=&quot;act_now&quot; tabindex=&quot;61&quot;&gt;&lt;%text(_ADD_ADDNOW)%&gt;&lt;/label&gt;
+               &lt;br /&gt;
+               &lt;input name=&quot;actiontype&quot; value=&quot;addfuture&quot; type=&quot;radio&quot; id=&quot;act_future&quot; tabindex=&quot;61&quot; /&gt;&lt;label for=&quot;act_future&quot;&gt;&lt;%text(_ADD_ADDLATER)%&gt;&lt;/label&gt; &lt;%helplink(future)%&gt;
+               &lt;div class=&quot;indent&quot;&gt;
+                       &lt;%text(_ADD_PLACE_ON)%&gt;
+                       &lt;input id=&quot;inputyear&quot; name=&quot;year&quot; tabindex=&quot;71&quot; size=&quot;4&quot; value=&quot;&lt;%currenttime(year)%&gt;&quot; onchange=&quot;document.forms[0].act_future.checked=true;&quot; /&gt;&lt;%text(_ITEM_ADDEDITTEMPLATE_YEAR)%&gt;
+                       &lt;input id=&quot;inputmonth&quot; name=&quot;month&quot; tabindex=&quot;72&quot; size=&quot;2&quot; value=&quot;&lt;%currenttime(mon)%&gt;&quot; onchange=&quot;document.forms[0].act_future.checked=true;&quot; /&gt;&lt;%text(_ITEM_ADDEDITTEMPLATE_MONTH)%&gt;
+                       &lt;input id=&quot;inputday&quot; name=&quot;day&quot; tabindex=&quot;73&quot; size=&quot;2&quot; value=&quot;&lt;%currenttime(mday)%&gt;&quot; onchange=&quot;document.forms[0].act_future.checked=true;&quot; /&gt;&lt;%text(_ITEM_ADDEDITTEMPLATE_DAY)%&gt;
+                       
+                       &lt;input id=&quot;inputhour&quot; name=&quot;hour&quot; tabindex=&quot;74&quot; size=&quot;2&quot; value=&quot;&lt;%currenttime(hours)%&gt;&quot; onchange=&quot;document.forms[0].act_future.checked=true;&quot; /&gt;&lt;%text(_ITEM_ADDEDITTEMPLATE_HOUR)%&gt;
+                       &lt;input id=&quot;inputminutes&quot; name=&quot;minutes&quot; tabindex=&quot;75&quot; size=&quot;2&quot; value=&quot;&lt;%currenttime(minutes)%&gt;&quot; onchange=&quot;document.forms[0].act_future.checked=true;&quot; /&gt;&lt;%text(_ITEM_ADDEDITTEMPLATE_MINUTE)%&gt;
+                               &lt;br /&gt;&lt;%text(_ITEM_ADDEDITTEMPLATE_FORMAT)%&gt;(yyyy)&lt;%text(_ITEM_ADDEDITTEMPLATE_YEAR)%&gt;(mm)&lt;%text(_ITEM_ADDEDITTEMPLATE_MONTH)%&gt;(dd)&lt;%text(_ITEM_ADDEDITTEMPLATE_DAY)%&gt; (hh)&lt;%text(_ITEM_ADDEDITTEMPLATE_HOUR)%&gt;(mm)&lt;%text(_ITEM_ADDEDITTEMPLATE_MINUTE)%&gt;
+                       &lt;%if(blogsetting, ballowpast,0)%&gt;
+                               &lt;br /&gt;
+                               &lt;%text(_ADD_NOPASTDATES)%&gt;
+                       &lt;%endif%&gt;
+               &lt;/div&gt;
+               &lt;input name=&quot;actiontype&quot; value=&quot;adddraft&quot; type=&quot;radio&quot; checked='checked' id=&quot;act_draft&quot; tabindex=&quot;61&quot; /&gt;&lt;label for=&quot;act_draft&quot;&gt;&lt;%text(_EDIT_BACKTODRAFTS)%&gt;&lt;/label&gt; &lt;%helplink(draft)%&gt;
+               &lt;br /&gt;
+               &lt;input name=&quot;actiontype&quot; value=&quot;delete&quot; type=&quot;radio&quot; id=&quot;act_delete&quot; tabindex=&quot;61&quot; /&gt;&lt;label for=&quot;act_delete&quot;&gt;&lt;%text(_BMLET_DELETE)%&gt;&lt;/label&gt;
+&lt;%endif%&gt;
+
+&lt;%if(itemproperty, draft,0)%&gt;
+       &lt;br /&gt;&lt;br /&gt;
+       &lt;input name=&quot;actiontype&quot; value=&quot;edit&quot; type=&quot;radio&quot; checked=&quot;checked&quot; id=&quot;act_edit&quot; tabindex=&quot;61&quot; /&gt;&lt;label for=&quot;act_edit&quot;&gt;&lt;%text(_BMLET_EDIT)%&gt;&lt;/label&gt;
+       &lt;%if(blogsetting, ballowpast)%&gt;
+               &lt;br /&gt;
+               &lt;input name=&quot;actiontype&quot; value=&quot;changedate&quot; type=&quot;radio&quot; id=&quot;act_changedate&quot; tabindex=&quot;70&quot; /&gt;&lt;label for=&quot;act_changedate&quot;&gt;&lt;%text(_ADD_CHANGEDATE)%&gt;&lt;/label&gt; &lt;%helplink(changedate)%&gt;
+                       &lt;div class=&quot;indent&quot;&gt;
+                               &lt;input id=&quot;inputyear&quot; name=&quot;year&quot; tabindex=&quot;71&quot; size=&quot;4&quot; value=&quot;&lt;%itemtime(year)%&gt;&quot; onchange=&quot;document.forms[0].act_changedate.checked=true;&quot; /&gt;&lt;%text(_ITEM_ADDEDITTEMPLATE_YEAR)%&gt;
+                               &lt;input id=&quot;inputmonth&quot; name=&quot;month&quot; tabindex=&quot;72&quot; size=&quot;2&quot; value=&quot;&lt;%itemtime(mon)%&gt;&quot; onchange=&quot;document.forms[0].act_changedate.checked=true;&quot; /&gt;&lt;%text(_ITEM_ADDEDITTEMPLATE_MONTH)%&gt;
+                               &lt;input id=&quot;inputday&quot; name=&quot;day&quot; tabindex=&quot;73&quot; size=&quot;2&quot; value=&quot;&lt;%itemtime(mday)%&gt;&quot; onchange=&quot;document.forms[0].act_changedate.checked=true;&quot; /&gt;&lt;%text(_ITEM_ADDEDITTEMPLATE_DAY)%&gt;
+                                
+                               &lt;input id=&quot;inputhour&quot; name=&quot;hour&quot; tabindex=&quot;74&quot; size=&quot;2&quot; value=&quot;&lt;%itemtime(hours)%&gt;&quot; onchange=&quot;document.forms[0].act_changedate.checked=true;&quot; /&gt;&lt;%text(_ITEM_ADDEDITTEMPLATE_HOUR)%&gt;
+                               &lt;input id=&quot;inputminutes&quot; name=&quot;minutes&quot; tabindex=&quot;75&quot; size=&quot;2&quot; value=&quot;&lt;%itemtime(minutes)%&gt;&quot; onchange=&quot;document.forms[0].act_changedate.checked=true;&quot; /&gt;&lt;%text(_ITEM_ADDEDITTEMPLATE_MINUTE)%&gt;
+                               &lt;br /&gt;&lt;%text(_ITEM_ADDEDITTEMPLATE_FORMAT)%&gt;(yyyy)&lt;%text(_ITEM_ADDEDITTEMPLATE_YEAR)%&gt;(mm)&lt;%text(_ITEM_ADDEDITTEMPLATE_MONTH)%&gt;(dd)&lt;%text(_ITEM_ADDEDITTEMPLATE_DAY)%&gt; (hh)&lt;%text(_ITEM_ADDEDITTEMPLATE_HOUR)%&gt;(mm)&lt;%text(_ITEM_ADDEDITTEMPLATE_MINUTE)%&gt;
+                       &lt;/div&gt;
+       &lt;%endif%&gt; 
+       &lt;input name=&quot;actiontype&quot; value=&quot;backtodrafts&quot; type=&quot;radio&quot; id=&quot;act_backtodrafts&quot; tabindex=&quot;71&quot; /&gt;&lt;label for=&quot;act_backtodrafts&quot;&gt;&lt;%text(_BMLET_BACKTODRAFTS)%&gt;&lt;/label&gt; &lt;%helplink(draft)%&gt;
+       &lt;br /&gt;
+       &lt;input name=&quot;actiontype&quot; value=&quot;delete&quot; type=&quot;radio&quot; id=&quot;act_delete&quot; tabindex=&quot;61&quot; /&gt;&lt;label for=&quot;act_delete&quot;&gt;&lt;%text(_BMLET_DELETE)%&gt;&lt;/label&gt;
+&lt;%endif%&gt;
+
+       &lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+       &lt;td&gt;&lt;%text(_ADD_PLUGIN_EXTRAS)%&gt;&lt;/td&gt;
+       &lt;td&gt;
+               &lt;%pluginextras%&gt;
+       &lt;/td&gt;     
+&lt;/tr&gt;
+                       &lt;%pluginoptions(item)%&gt;   
+&lt;tr&gt;
+       &lt;th colspan=&quot;2&quot;&gt;&lt;%text(_ADD_MORE)%&gt;&lt;/th&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+       &lt;td&gt;&lt;%text(_ADD_MORE)%&gt;
+               &lt;br /&gt;&lt;%helplink(extended)%&gt;
+       &lt;/td&gt;
+       &lt;td&gt;
+               &lt;div class=&quot;jsbuttonbar&quot;&gt;
+&lt;!--[if IE]&gt;
+                       &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;cutThis()&quot;&gt;
+                               &lt;img src=&quot;&lt;%skinfile(/images/button-cut.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_CUT_TT)%&gt;(Ctrl + X)&quot; alt=&quot;&lt;%text(_ADD_CUT_TT)%&gt;(Ctrl + X)&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                       &lt;/span&gt;
+                       &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;copyThis()&quot;&gt;
+                               &lt;img src=&quot;&lt;%skinfile(/images/button-copy.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_COPY_TT)%&gt;(Ctrl + C)&quot; alt=&quot;&lt;%text(_ADD_COPY_TT)%&gt;(Ctrl + C)&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                       &lt;/span&gt;
+                       &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;pasteThis()&quot;&gt;
+                               &lt;img src=&quot;&lt;%skinfile(/images/button-paste.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_PASTE_TT)%&gt;(Ctrl + V)&quot; alt=&quot;&lt;%text(_ADD_PASTE_TT)%&gt;(Ctrl + V)&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                       &lt;/span&gt;
+                       &lt;span class=&quot;jsbuttonspacer&quot;&gt;&amp;nbsp;&lt;/span&gt;
+                       &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;boldThis()&quot;&gt;
+                               &lt;img src=&quot;&lt;%skinfile(/images/button-bold.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_BOLD_TT)%&gt;(Ctrl + Shift + B)&quot; alt=&quot;&lt;%text(_ADD_BOLD_TT)%&gt;(Ctrl + Shift + B)&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                       &lt;/span&gt;
+                       &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;italicThis()&quot;&gt;
+                               &lt;img src=&quot;&lt;%skinfile(/images/button-italic.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_ITALIC_TT)%&gt;(Ctrl + Shift + I)&quot; alt=&quot;&lt;%text(_ADD_ITALIC_TT)%&gt;(Ctrl + Shift + I)&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                       &lt;/span&gt;
+                       &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;ahrefThis()&quot;&gt;
+                               &lt;img src=&quot;&lt;%skinfile(/images/button-link.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_HREF_TT)%&gt;(Ctrl + Shift + A)&quot; alt=&quot;&lt;%text(_ADD_HREF_TT)%&gt;(Ctrl + Shift + A)&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                       &lt;/span&gt;
+&lt;![endif]--&gt;
+&lt;!--[if ! IE]&gt;--&gt;
+                       &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;boldThis()&quot;&gt;
+                               &lt;img src=&quot;&lt;%skinfile(/images/button-bold.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_BOLD_TT)%&gt;&quot; alt=&quot;&lt;%text(_ADD_BOLD_TT)%&gt;&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                       &lt;/span&gt;
+                       &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;italicThis()&quot;&gt;
+                               &lt;img src=&quot;&lt;%skinfile(/images/button-italic.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_ITALIC_TT)%&gt;&quot; alt=&quot;&lt;%text(_ADD_ITALIC_TT)%&gt;&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                       &lt;/span&gt;
+                       &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;ahrefThis()&quot;&gt;
+                               &lt;img src=&quot;&lt;%skinfile(/images/button-link.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_HREF_TT)%&gt;&quot; alt=&quot;&lt;%text(_ADD_HREF_TT)%&gt;&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                       &lt;/span&gt;
+&lt;!--&lt;![endif]--&gt;
+                       &lt;span class=&quot;jsbuttonspacer&quot;&gt;&amp;nbsp;&lt;/span&gt;
+                       &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;alignleftThis()&quot;&gt;
+                               &lt;img src=&quot;&lt;%skinfile(/images/button-alignleft.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_ALIGNLEFT_TT)%&gt;&quot; alt=&quot;&lt;%text(_ADD_ALIGNLEFT_TT)%&gt;&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                       &lt;/span&gt;
+                       &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;alignrightThis()&quot;&gt;
+                               &lt;img src=&quot;&lt;%skinfile(/images/button-alignright.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_ALIGNRIGHT_TT)%&gt;&quot; alt=&quot;&lt;%text(_ADD_ALIGNRIGHT_TT)%&gt;&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                       &lt;/span&gt;
+                       &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;aligncenterThis()&quot;&gt;
+                               &lt;img src=&quot;&lt;%skinfile(/images/button-aligncenter.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_ALIGNCENTER_TT)%&gt;&quot; alt=&quot;&lt;%text(_ADD_ALIGNCENTER_TT)%&gt;&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                       &lt;/span&gt;
+                       &lt;span class=&quot;jsbuttonspacer&quot;&gt;&amp;nbsp;&lt;/span&gt;
+                       &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;leftThis()&quot;&gt;
+                               &lt;img src=&quot;&lt;%skinfile(/images/button-left.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_LEFT_TT)%&gt;&quot; alt=&quot;&lt;%text(_ADD_LEFT_TT)%&gt;&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                       &lt;/span&gt;
+                       &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;rightThis()&quot;&gt;
+                               &lt;img src=&quot;&lt;%skinfile(/images/button-right.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_RIGHT_TT)%&gt;&quot; alt=&quot;&lt;%text(_ADD_RIGHT_TT)%&gt;&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                       &lt;/span&gt;
+                       &lt;span class=&quot;jsbuttonspacer&quot;&gt;&amp;nbsp;&lt;/span&gt;
+                       &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;addMedia()&quot;&gt;
+                               &lt;img src=&quot;&lt;%skinfile(/images/button-media.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_MEDIA_TT)%&gt;&quot; alt=&quot;&lt;%text(_ADD_MEDIA_TT)%&gt;&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                       &lt;/span&gt;
+&lt;!--[if IE]&gt;
+                       &lt;span class=&quot;jsbutton&quot; onmouseover=&quot;BtnHighlight(this);&quot; onmouseout=&quot;BtnNormal(this);&quot; onclick=&quot;showedit()&quot;&gt;
+                               &lt;img src=&quot;&lt;%skinfile(/images/button-preview.gif)%&gt;&quot; title=&quot;&lt;%text(_ADD_PREVIEW_TT)%&gt;&quot; alt=&quot;&lt;%text(_ADD_PREVIEW_TT)%&gt;&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;
+                       &lt;/span&gt;
+&lt;![endif]--&gt;
+               &lt;/div&gt;
+               &lt;textarea id=&quot;inputmore&quot; onkeyup=&quot;storeCaret(this); updPreview(more); doMonitor();&quot; onclick=&quot;storeCaret(this);&quot; onselect=&quot;storeCaret(this);&quot;
+                       name=&quot;more&quot;
+                       tabindex=&quot;90&quot;
+                       cols=&quot;60&quot; 
+                       rows=&quot;20&quot;&gt;&lt;%contents(more)%&gt;&lt;/textarea&gt;
+       &lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+               &lt;td&gt;&lt;%text(_SUBMIT)%&gt;&lt;/td&gt;
+               &lt;td&gt;
+                       &lt;input tabindex=&quot;60&quot; type=&quot;submit&quot; value=&quot;&lt;%text(_EDIT_SUBMIT)%&gt;&quot; 
+                               onclick=&quot;return checkSubmit();&quot; /&gt;
+                       &lt;%if(autosave)%&gt;&lt;input tabindex=&quot;80&quot; type=&quot;button&quot; name=&quot;autosavenow&quot; value=&quot;&lt;%text(_AUTOSAVEDRAFT_NOW)%&gt;&quot;
+                               onclick=&quot;autoSaveDraft();&quot; /&gt;&lt;%endif%&gt;
+               &lt;/td&gt;
+       
+&lt;/tr&gt;&lt;/table&gt;
+
+&lt;/div&gt;
+&lt;/form&gt;
+
+&lt;%if(autosave)%&gt;&lt;script type=&quot;text/javascript&quot;&gt;
+       var xmlhttprequest = new Array();
+       xmlhttprequest[0] = createHTTPHandler(); // AutoDraft handler
+       xmlhttprequest[1] = createHTTPHandler(); // UpdateTicket handler
+       var seconds = now(); // Last AutoDraft time
+       var checks = 0; // Number of checks since last AutoDraft
+       var addform = document.getElementById('editform'); // The form id
+       var goal = document.getElementById('info'); // The html div id where 'Last saved: date time' must come
+       var goalurl = '../action.php'; // The PHP file where the content must be posted to
+       var lastsavedtext = '&lt;%text(_AUTOSAVEDRAFT_LASTSAVED)%&gt;'; // The language variable for 'Last saved'
+       var formtype = 'edit'; // Add or edit form
+&lt;/script&gt;&lt;%endif%&gt;&lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartitemlist" id="skinpartitemlist"></a>
+<h1>Admin skins: itemlist</h1>
+<p>
+This skinpart is used to itemlist.
+</p>
+<p>
+Very basic buildup for a [Items for blog]page page.
+</p>
+<pre>
+
+&lt;%pagehead%&gt;
+&lt;p&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=overview&quot;&gt;(&lt;%text(_BACKHOME)%&gt;)&lt;/a&gt;&lt;/p&gt;
+&lt;h2&gt;&lt;%text(_ITEMLIST_BLOG)%&gt;&lt;%adminbloglink(admin/default)%&gt;&lt;/h2&gt;
+&lt;%ilistaddnew%&gt;
+&lt;%itemnavlist(admin/default)%&gt;&lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartitemmove" id="skinpartitemmove"></a>
+<h1>Admin skins: itemmove</h1>
+<p>
+This skinpart is used to itemmove.
+</p>
+<p>
+Very basic buildup for a [Move to which blog?]page page.
+</p>
+<pre>
+
+&lt;%pagehead%&gt;
+&lt;h2&gt;&lt;%text(_MOVE_TITLE)%&gt;&lt;/h2&gt;
+&lt;form method=&quot;post&quot; action=&quot;&lt;%adminurl%&gt;index.php&quot;&gt;&lt;div&gt;
+&lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;itemmoveto&quot; /&gt;
+&lt;input type=&quot;hidden&quot; name=&quot;itemid&quot; value=&quot;&lt;%moveitemid%&gt;&quot; /&gt;
+&lt;%ticket%&gt;
+&lt;%movedistselect%&gt;
+&lt;input type=&quot;submit&quot; value=&quot;&lt;%text(_MOVE_BTN)%&gt;&quot; tabindex=&quot;10000&quot; onclick=&quot;return checkSubmit();&quot; /&gt;
+&lt;/div&gt;&lt;/form&gt;&lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartmanage" id="skinpartmanage"></a>
+<h1>Admin skins: manage</h1>
+<p>
+This skinpart is used to manage.
+</p>
+<p>
+Very basic buildup for a [Nucleus management...]page page.
+</p>
+<pre>
+
+&lt;%pagehead%&gt;
+&lt;p&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=overview&quot;&gt;(&lt;%text(_BACKHOME)%&gt;)&lt;/a&gt;&lt;/p&gt;
+&lt;%headmessage%&gt;
+&lt;h2&gt;&lt;%text(_MANAGE_GENERAL)%&gt;&lt;/h2&gt;
+
+&lt;ul&gt;
+&lt;li&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=createnewlog&quot;&gt;&lt;%text(_OVERVIEW_NEWLOG)%&gt;&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=settingsedit&quot;&gt;&lt;%text(_OVERVIEW_SETTINGS)%&gt;&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=usermanagement&quot;&gt;&lt;%text(_OVERVIEW_MEMBERS)%&gt;&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=actionlog&quot;&gt;&lt;%text(_OVERVIEW_VIEWLOG)%&gt;&lt;/a&gt;&lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;h2&gt;&lt;%text(_MANAGE_SKINS)%&gt;&lt;/h2&gt;
+&lt;ul&gt;
+&lt;li&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=skinoverview&quot;&gt;&lt;%text(_OVERVIEW_SKINS)%&gt;&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=templateoverview&quot;&gt;&lt;%text(_OVERVIEW_TEMPLATES)%&gt;&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=skinieoverview&quot;&gt;&lt;%text(_OVERVIEW_SKINIMPORT)%&gt;&lt;/a&gt;&lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;h2&gt;&lt;%text(_MANAGE_EXTRA)%&gt;&lt;/h2&gt;
+&lt;ul&gt;
+&lt;li&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=backupoverview&quot;&gt;&lt;%text(_OVERVIEW_BACKUP)%&gt;&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=pluginlist&quot;&gt;&lt;%text(_OVERVIEW_PLUGINS)%&gt;&lt;/a&gt;&lt;/li&gt;
+&lt;/ul&gt;&lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartmanageteam" id="skinpartmanageteam"></a>
+<h1>Admin skins: manageteam</h1>
+<p>
+This skinpart is used to manageteam.
+</p>
+<p>
+Very basic buildup for a [Manage team for blog ]page page.
+</p>
+<pre>
+
+&lt;%pagehead%&gt;
+&lt;p&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=blogsettings&amp;amp;blogid=&lt;%requestblogid%&gt;&quot;&gt;(&lt;%text(_BACK_TO_BLOGSETTINGS)%&gt;)&lt;/a&gt;&lt;/p&gt;
+&lt;h2&gt;&lt;%text(_TEAM_TITLE)%&gt;&lt;%blogsetting(name)%&gt;&lt;/h2&gt;
+&lt;h3&gt;&lt;%text(_TEAM_CURRENT)%&gt;&lt;/h3&gt;
+&lt;%blogteamlist(admin/default)%&gt;
+&lt;h3&gt;&lt;%text(_TEAM_ADDNEW)%&gt;&lt;/h3&gt;
+&lt;form method='post' action='&lt;%adminurl%&gt;index.php'&gt;
+&lt;div&gt;
+&lt;input type='hidden' name='action' value='teamaddmember' /&gt;
+&lt;input type='hidden' name='blogid' value='&lt;%requestblogid%&gt;' /&gt;
+
+
+&lt;%ticket%&gt;
+&lt;table&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_TEAM_CHOOSEMEMBER)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;%newmemberselect%&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_TEAM_ADMIN)%&gt;&lt;%helplink(teamadmin)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;%inputyesno(admin,0,10020)%&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_TEAM_ADD)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;input type='submit' value='&lt;%text(_TEAM_ADD_BTN)%&gt;' tabindex=&quot;10030&quot; /&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;/table&gt;
+&lt;/div&gt;
+&lt;/form&gt;&lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartmemberdelete" id="skinpartmemberdelete"></a>
+<h1>Admin skins: memberdelete</h1>
+<p>
+This skinpart is used to memberdelete.
+</p>
+<p>
+Very basic buildup for a [You're about to delete the following member profile: ]page page.
+</p>
+<pre>
+
+&lt;%pagehead%&gt;
+&lt;h2&gt;&lt;%text(_DELETE_CONFIRM)%&gt;&lt;/h2&gt;
+&lt;p&gt;&lt;%text(_CONFIRMTXT_MEMBER%&gt;&lt;b&gt;&lt;%editmember(displayname)%&gt;&lt;/b&gt;&lt;/p&gt;
+&lt;p&gt;&lt;%text(_WARNINGTXT_NOTDELMEDIAFILES)%&gt;&lt;/p&gt;
+&lt;form method=&quot;post&quot; action=&quot;&lt;%adminurl%&gt;index.php&quot;&gt;
+&lt;div&gt;
+&lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;memberdeleteconfirm&quot; /&gt;
+&lt;%ticket%&gt;
+&lt;input type=&quot;hidden&quot; name=&quot;memberid&quot; value=&quot;&lt;%editmember(id)%&gt;&quot; /&gt;
+&lt;input type=&quot;submit&quot; tabindex=&quot;10&quot; value=&quot;&lt;%text(_DELETE_CONFIRM_BTN)%&gt;&quot; /&gt;
+&lt;/div&gt;
+&lt;/form&gt;&lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartoverview" id="skinpartoverview"></a>
+<h1>Admin skins: overview</h1>
+<p>
+This skinpart is used to overview.
+</p>
+<p>
+Very basic buildup for a [Home]page page.
+</p>
+<pre>
+
+&lt;%pagehead%&gt;
+&lt;%headmessage%&gt;
+&lt;h2&gt;&lt;%text(_OVERVIEW_YRBLOGS)%&gt;&lt;/h2&gt;
+&lt;%yrbloglist(admin/default)%&gt;
+&lt;h2&gt;&lt;%text(_OVERVIEW_YRSETTINGS)%&gt;&lt;/h2&gt;
+&lt;ul&gt;
+&lt;li&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=editmembersettings&quot;&gt;&lt;%text(_OVERVIEW_EDITSETTINGS)%&gt;&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=browseownitems&quot;&gt;&lt;%text(_OVERVIEW_BROWSEITEMS)%&gt;&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=browseowncomments&quot;&gt;&lt;%text(_OVERVIEW_BROWSECOMM)%&gt;&lt;/a&gt;&lt;/li&gt;
+&lt;/ul&gt;
+&lt;%if(superadmin)%&gt;&lt;h2&gt;&lt;%text(_OVERVIEW_MANAGEMENT)%&gt;&lt;/h2&gt;
+&lt;ul&gt;
+&lt;li&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=manage&quot;&gt;&lt;%text(_OVERVIEW_MANAGE)%&gt;&lt;/a&gt;&lt;/li&gt;
+&lt;/ul&gt;&lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartpagefoot" id="skinpartpagefoot"></a>
+<h1>Admin skins: pagefoot</h1>
+<p>
+This skinpart is used to pagefoot.
+</p>
+<p>
+Very basic buildup for a [Admin page foot] page.
+</p>
+<pre>
+
+       &lt;%if(loggedin)%&gt;
+               &lt;%ifnot(adminaction,showlogin)%&gt;
+                       &lt;h2&gt;&lt;%text(_LOGOUT)%&gt;&lt;/h2&gt;
+                       &lt;ul&gt;
+                       &lt;li&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=overview&quot;&gt;&lt;%text(_BACKHOME)%&gt;&lt;/a&gt;&lt;/li&gt;
+                       &lt;li&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=logout&quot;&gt;&lt;%text(_LOGOUT)%&gt;&lt;/a&gt;&lt;/li&gt;
+                       &lt;/ul&gt;
+               &lt;%endif%&gt;
+       &lt;%endif%&gt;
+       
+       &lt;div class=&quot;foot&quot;&gt;
+       &lt;a href=&quot;&lt;%text(_ADMINPAGEFOOT_OFFICIALURL)%&gt;&quot;&gt;Nucleus CMS&lt;/a&gt; &amp;copy; 2002- &lt;%date(%Y)%&gt; &lt;%text(_ADMINPAGEFOOT_COPYRIGHT)%&gt;
+        - &lt;a href=&quot;&lt;%text(_ADMINPAGEFOOT_DONATEURL)%&gt;&quot;&gt;&lt;%text(_ADMINPAGEFOOT_DONATE)%&gt;&lt;/a&gt;
+       &lt;/div&gt;
+       &lt;/div&gt;
+       
+       &lt;!-- content --&gt;
+       &lt;div id=&quot;quickmenu&quot;&gt;
+       
+       &lt;%if(loggedin)%&gt;
+               &lt;%ifnot(adminaction,showlogin)%&gt;
+                       &lt;ul&gt;
+                       &lt;li&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=overview&quot;&gt;&lt;%text(_QMENU_HOME)%&gt;&lt;/a&gt;&lt;/li&gt;
+                       &lt;/ul&gt;
+                       
+                       &lt;h2&gt;&lt;%text(_QMENU_ADD)%&gt;&lt;/h2&gt;
+                       &lt;form method=&quot;get&quot; action=&quot;&lt;%adminurl%&gt;index.php&quot;&gt;
+                       &lt;div&gt;
+                       &lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;createitem&quot; /&gt;
+                       &lt;%qmenuaddselect(admin/default)%&gt;
+                       &lt;/div&gt;
+                       &lt;/form&gt;
+                       
+                       &lt;h2&gt;&lt;%member(yourrealname)%&gt;&lt;/h2&gt;
+                       &lt;ul&gt;
+                       &lt;li&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=editmembersettings&quot;&gt;&lt;%text(_QMENU_USER_SETTINGS)%&gt;&lt;/a&gt;&lt;/li&gt;
+                       &lt;li&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=browseownitems&quot;&gt;&lt;%text(_QMENU_USER_ITEMS)%&gt;&lt;/a&gt;&lt;/li&gt;
+                       &lt;li&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=browseowncomments&quot;&gt;&lt;%text(_QMENU_USER_COMMENTS)%&gt;&lt;/a&gt;&lt;/li&gt;
+                       &lt;/ul&gt;
+                       
+                       &lt;%if(superadmin)%&gt;
+                               &lt;h2&gt;&lt;%text(_QMENU_MANAGE)%&gt;&lt;/h2&gt;
+                               &lt;ul&gt;
+                               &lt;li&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=actionlog&quot;&gt;&lt;%text(_QMENU_MANAGE_LOG)%&gt;&lt;/a&gt;&lt;/li&gt;
+                               &lt;li&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=settingsedit&quot;&gt;&lt;%text(_QMENU_MANAGE_SETTINGS)%&gt;&lt;/a&gt;&lt;/li&gt;
+                               &lt;li&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=systemoverview&quot;&gt;&lt;%text(_QMENU_MANAGE_SYSTEM)%&gt;&lt;/a&gt;&lt;/li&gt;
+                               &lt;li&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=usermanagement&quot;&gt;&lt;%text(_QMENU_MANAGE_MEMBERS)%&gt;&lt;/a&gt;&lt;/li&gt;
+                               &lt;li&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=createnewlog&quot;&gt;&lt;%text(_QMENU_MANAGE_NEWBLOG)%&gt;&lt;/a&gt;&lt;/li&gt;
+                               &lt;li&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=backupoverview&quot;&gt;&lt;%text(_QMENU_MANAGE_BACKUPS)%&gt;&lt;/a&gt;&lt;/li&gt;
+                               &lt;li&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=pluginlist&quot;&gt;&lt;%text(_QMENU_MANAGE_PLUGINS)%&gt;&lt;/a&gt;&lt;/li&gt;
+                               &lt;/ul&gt;
+                               &lt;h2&gt;&lt;%text(_QMENU_LAYOUT)%&gt;&lt;/h2&gt;
+                               &lt;ul&gt;
+                               &lt;li&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=skinoverview&quot;&gt;&lt;%text(_QMENU_LAYOUT_SKINS)%&gt;&lt;/a&gt;&lt;/li&gt;
+                               &lt;li&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=templateoverview&quot;&gt;&lt;%text(_QMENU_LAYOUT_TEMPL)%&gt;&lt;/a&gt;&lt;/li&gt;
+                               &lt;li&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=skinieoverview&quot;&gt;&lt;%text(_QMENU_LAYOUT_IEXPORT)%&gt;&lt;/a&gt;&lt;/li&gt;
+                               &lt;/ul&gt;
+                               &lt;h2&gt;&lt;%text(_SKINABLEADMIN_QMENU_LAYOUT)%&gt;&lt;/h2&gt;
+                               &lt;ul&gt;
+                               &lt;li&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=adminskinoverview&quot;&gt;&lt;%text(_QMENU_LAYOUT_SKINS)%&gt;&lt;/a&gt;&lt;/li&gt;
+                               &lt;li&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=admintemplateoverview&quot;&gt;&lt;%text(_QMENU_LAYOUT_TEMPL)%&gt;&lt;/a&gt;&lt;/li&gt;
+                               &lt;li&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=adminskinieoverview&quot;&gt;&lt;%text(_QMENU_LAYOUT_IEXPORT)%&gt;&lt;/a&gt;&lt;/li&gt;
+                               &lt;/ul&gt;
+                       &lt;%endif%&gt;
+                       
+                       &lt;%quickmenu(admin/default)%&gt;
+               &lt;%endif%&gt;
+               
+       &lt;%elseif(adminaction,activate)%&gt;
+               &lt;h2&gt;&lt;%text(_QMENU_ACTIVATE)%&gt;&lt;/h2&gt;
+               &lt;%text(_QMENU_ACTIVATE_TEXT)%&gt;
+       
+       &lt;%elseif(adminaction,activatesetpwd)%&gt;
+               &lt;h2&gt;&lt;%text(_QMENU_ACTIVATE)%&gt;&lt;/h2&gt;&lt;%text(_QMENU_ACTIVATE_TEXT)%&gt;
+       
+       &lt;%else%&gt;
+               &lt;h2&gt;&lt;%text(_QMENU_INTRO)%&gt;&lt;/h2&gt;&lt;%text(_QMENU_INTRO_TEXT)%&gt;
+       
+       &lt;%endif%&gt;
+       
+       &lt;/div&gt;
+       &lt;!-- content / quickmenu container --&gt;
+       &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;
+       &lt;!-- new --&gt;
+       &lt;/div&gt;
+       &lt;!-- adminwrapper --&gt;
+       &lt;!-- new --&gt;
+       &lt;/div&gt;
+       &lt;!-- new --&gt;
+       &lt;p style=&quot;text-align:right;&quot;&gt;&lt;%benchmark%&gt;&lt;/p&gt;
+       &lt;/body&gt;
+       &lt;/html&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartpagehead" id="skinpartpagehead"></a>
+<h1>Admin skins: pagehead</h1>
+<p>
+This skinpart is used to pagehead.
+</p>
+<p>
+Very basic buildup for a [Admin page head] page.
+</p>
+<pre>
+
+&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;&gt;
+&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; xml:lang=&quot;ja-JP&quot; lang=&quot;ja-JP&quot;&gt;
+&lt;head&gt;
+&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=&lt;%charset%&gt;&quot; /&gt;
+&lt;title&gt;&lt;%sitevar(name)%&gt; - Admin&lt;/title&gt;
+&lt;link rel=&quot;stylesheet&quot; title=&quot;Nucleus Admin Default&quot; type=&quot;text/css&quot; href=&quot;&lt;%skinfile(/styles/admin_contemporary_jp.css)%&gt;&quot; /&gt;
+&lt;link rel=&quot;stylesheet&quot; title=&quot;Nucleus Admin Default&quot; type=&quot;text/css&quot; href=&quot;&lt;%skinfile(/styles/addedit.css)%&gt;&quot; /&gt;
+
+&lt;script type=&quot;text/javascript&quot; src=&quot;&lt;%skinfile(/javascripts/edit.js)%&gt;&quot;&gt;&lt;/script&gt;
+&lt;script type=&quot;text/javascript&quot; src=&quot;&lt;%skinfile(/javascripts/admin.js)%&gt;&quot;&gt;&lt;/script&gt;
+&lt;script type=&quot;text/javascript&quot; src=&quot;&lt;%skinfile(/javascripts/compatibility.js)%&gt;&quot;&gt;&lt;/script&gt;
+
+&lt;meta http-equiv='Pragma' content='no-cache' /&gt;
+&lt;meta http-equiv='Cache-Control' content='no-cache, must-revalidate' /&gt;
+&lt;meta http-equiv='Expires' content='-1' /&gt;
+&lt;%extrahead%&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;div id=&quot;adminwrapper&quot;&gt;
+&lt;div class=&quot;header&quot;&gt;
+&lt;h1&gt;&lt;%sitevar(name)%&gt;&lt;/h1&gt;
+&lt;/div&gt;
+&lt;div id=&quot;container&quot;&gt;
+&lt;div id=&quot;content&quot;&gt;
+&lt;div class=&quot;loginname&quot;&gt;
+&lt;%if(loggedin)%&gt;&lt;%text(_LOGGEDINAS)%&gt; &lt;%member(yourrealname)%&gt; - &lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=logout&quot;&gt;&lt;%text(_LOGOUT)%&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=overview&quot;&gt;&lt;%text(_ADMINHOME)%&gt;&lt;/a&gt; - &lt;%else%&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=showlogin&quot; title=&quot;Log in&quot;&gt;&lt;%text(_NOTLOGGEDIN)%&gt;&lt;/a&gt;&lt;br /&gt;&lt;%endif%&gt;
+&lt;a href=&quot;&lt;%sitevar(url)%&gt;&quot;&gt;&lt;%text(_YOURSITE)%&gt;&lt;/a&gt;&lt;br /&gt;
+(&lt;%if(superadmin)%&gt;&lt;a href=&quot;&lt;%versioncheckurl%&gt;&quot; title=&quot;&lt;%text(_ADMIN_SYSTEMOVERVIEW_VERSIONCHECK_TITLE)%&gt;&quot;&gt;&lt;%version%&gt;&lt;%codename%&gt;&lt;/a&gt;&lt;%newestcompare%&gt;&lt;%else%&gt;&lt;%version%&gt;&lt;%codename%&gt;&lt;%endif%&gt;)
+&lt;/div&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartplugindelete" id="skinpartplugindelete"></a>
+<h1>Admin skins: plugindelete</h1>
+<p>
+This skinpart is used to plugindelete.
+</p>
+<p>
+Very basic buildup for a [Are you sure you want to delete the plugin named]page page.
+</p>
+<pre>
+
+&lt;%pagehead%&gt;
+&lt;h2&gt;&lt;%text(_DELETE_CONFIRM)%&gt;&lt;/h2&gt;
+
+&lt;p&gt;&lt;%text(_CONFIRMTXT_PLUGIN)%&gt; &lt;strong&gt;&lt;%editpluginfo(name)%&gt;&lt;/strong&gt;?&lt;/p&gt;
+&lt;form method=&quot;post&quot; action=&quot;&lt;%adminurl%&gt;index.php&quot;&gt;&lt;div&gt;
+&lt;%ticket%&gt;
+&lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;plugindeleteconfirm&quot; /&gt;
+&lt;input type=&quot;hidden&quot; name=&quot;plugid&quot; value=&quot;&lt;%editpluginfo(id)%&gt;&quot; /&gt;
+&lt;input type=&quot;submit&quot; tabindex=&quot;10&quot; value=&quot;&lt;%text(_DELETE_CONFIRM_BTN)%&gt;&quot; /&gt;
+&lt;/div&gt;&lt;/form&gt;
+&lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartpluginhelp" id="skinpartpluginhelp"></a>
+<h1>Admin skins: pluginhelp</h1>
+<p>
+This skinpart is used to pluginhelp.
+</p>
+<p>
+Very basic buildup for a [Helppage for plugin]page page.
+</p>
+<pre>
+
+&lt;p&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=pluginlist&quot;&gt;(&lt;%text(_PLUGS_BACK)%&gt;)&lt;/a&gt;&lt;/p&gt;
+&lt;h2&gt;&lt;%text(_PLUGS_HELP_TITLE)%&gt;: &lt;%helpplugname%&gt;&lt;/h2&gt;
+&lt;%pluginhelp%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartpluginlist" id="skinpartpluginlist"></a>
+<h1>Admin skins: pluginlist</h1>
+<p>
+This skinpart is used to pluginlist.
+</p>
+<p>
+Very basic buildup for a [Manage Plugins]page page.
+</p>
+<pre>
+
+&lt;%pagehead%&gt;
+&lt;p&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=manage&quot;&gt;(&lt;%text(_BACKTOMANAGE)%&gt;)&lt;/a&gt;&lt;/p&gt;
+&lt;h2&gt;&lt;%text(_PLUGS_TITLE_MANAGE)%&gt;&lt;%helplink(plugins)%&gt;&lt;/h2&gt;
+&lt;h3&gt;&lt;%text(_PLUGS_TITLE_INSTALLED)%&gt; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-size:smaller&quot;&gt;&lt;%helplink('getplugins')%&gt;&lt;%text(_PLUGS_TITLE_GETPLUGINS)%&gt;&lt;/a&gt;&lt;/span&gt;&lt;/h3&gt;
+&lt;%pluginlistlist(admin/default)%&gt;
+&lt;h3&gt;&lt;%text(_PLUGS_TITLE_UPDATE)%&gt;&lt;/h3&gt;
+&lt;p&gt;&lt;%text(_PLUGS_TEXT_UPDATE)%&gt;&lt;/p&gt;
+&lt;form method=&quot;post&quot; action=&quot;&lt;%adminurl%&gt;index.php&quot;&gt;
+&lt;div&gt;
+&lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;pluginupdate&quot; /&gt;
+&lt;%ticket%&gt;
+&lt;input type=&quot;submit&quot; value=&quot;&lt;%text(_PLUGS_BTN_UPDATE)%&gt;&quot; tabindex=&quot;20&quot; /&gt;
+&lt;/div&gt;
+&lt;/form&gt;
+&lt;h3&gt;&lt;%text(_PLUGS_TITLE_NEW)%&gt;&lt;/h3&gt;
+&lt;%if(existsnewplugin)%&gt;&lt;p&gt;&lt;%text(_PLUGS_ADD_TEXT)%&gt;&lt;/p&gt;
+&lt;form method='post' action='index.php'&gt;
+
+&lt;div&gt;
+&lt;input type='hidden' name='action' value='pluginadd' /&gt;
+&lt;%ticket%&gt;
+&lt;select name=&quot;filename&quot; tabindex=&quot;30&quot;&gt;
+&lt;%newpluginlist%&gt;
+&lt;/select&gt;
+&lt;input type='submit' tabindex=&quot;40&quot; value='&lt;%text(_PLUGS_BTN_INSTALL)%&gt;' /&gt;
+&lt;/div&gt;&lt;/form&gt;&lt;%else%&gt;&lt;p&gt;&lt;%text(_PLUGS_NOCANDIDATES)%&gt;&lt;/p&gt;&lt;%endif%&gt;&lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartpluginoptions" id="skinpartpluginoptions"></a>
+<h1>Admin skins: pluginoptions</h1>
+<p>
+This skinpart is used to pluginoptions.
+</p>
+<p>
+Very basic buildup for a [Options for Plugins]page page.
+</p>
+<pre>
+
+&lt;%pagehead%&gt;
+&lt;p&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=pluginlist&quot;&gt;(&lt;%text(_PLUGS_BACK)%&gt;)&lt;/a&gt;&lt;/p&gt;
+&lt;h2&gt;&lt;%sprinttext(_PLUGIN_OPTIONS_TITLE,&lt;|%geteditpluginfo(name)%|&gt;)%&gt;&lt;/h2&gt;
+&lt;%headmessage%&gt;
+&lt;form action=&quot;&lt;%adminurl%&gt;index.php&quot; method=&quot;post&quot;&gt;
+
+&lt;div&gt;
+&lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;pluginoptionsupdate&quot; /&gt;
+&lt;input type=&quot;hidden&quot; name=&quot;plugid&quot; value=&quot;&lt;%editpluginfo(id)%&gt;&quot; /&gt;
+&lt;%ticket%&gt;
+&lt;%editplugoptionslist(admin/default)%&gt;
+&lt;/div&gt;
+&lt;/form&gt;&lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartsettingsedit" id="skinpartsettingsedit"></a>
+<h1>Admin skins: settingsedit</h1>
+<p>
+This skinpart is used to settingsedit.
+</p>
+<p>
+Very basic buildup for a [General Settings]page page.
+</p>
+<pre>
+
+&lt;%pagehead%&gt;
+&lt;p&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=manage&quot;&gt;(&lt;%text(_BACKTOMANAGE)%&gt;)&lt;/a&gt;&lt;/p&gt;
+&lt;h2&gt;&lt;%text(_SETTINGS_TITLE)%&gt;&lt;/h2&gt;
+&lt;form action=&quot;&lt;%adminurl%&gt;index.php&quot; method=&quot;post&quot;&gt;
+&lt;div&gt;
+&lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;settingsupdate&quot; /&gt;
+&lt;%ticket%&gt;
+&lt;table&gt;
+&lt;tr&gt;
+&lt;th colspan=&quot;2&quot;&gt;&lt;%text(_SETTINGS_SUB_GENERAL)%&gt;&lt;/th&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_SETTINGS_DEFBLOG)%&gt; &lt;%helplink(defaultblog)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;%defblogselect(admin/default)%&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_SETTINGS_BASESKIN)%&gt; &lt;%helplink(baseskin)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;%defskinselect(,admin/default)%&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_SETTINGS_ADMINMAIL)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;input name=&quot;AdminEmail&quot; tabindex=&quot;10010&quot; size=&quot;40&quot; value=&quot;&lt;%configsettingsedit(AdminEmail)%&gt;&quot; /&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_SETTINGS_SITENAME)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;input name=&quot;SiteName&quot; tabindex=&quot;10020&quot; size=&quot;40&quot; value=&quot;&lt;%configsettingsedit(SiteName)%&gt;&quot; /&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_SETTINGS_SITEURL)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;input name=&quot;IndexURL&quot; tabindex=&quot;10030&quot; size=&quot;40&quot; value=&quot;&lt;%configsettingsedit(IndexURL)%&gt;&quot; /&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_SETTINGS_ADMINURL)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;input name=&quot;AdminURL&quot; tabindex=&quot;10040&quot; size=&quot;40&quot; value=&quot;&lt;%configsettingsedit(AdminURL)%&gt;&quot; /&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_SETTINGS_PLUGINURL)%&gt; &lt;%helplink(pluginurl)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;input name=&quot;PluginURL&quot; tabindex=&quot;10045&quot; size=&quot;40&quot; value=&quot;&lt;%configsettingsedit(PluginURL)%&gt;&quot; /&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_SETTINGS_SKINSURL)%&gt; &lt;%helplink(skinsurl)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;input name=&quot;SkinsURL&quot; tabindex=&quot;10046&quot; size=&quot;40&quot; value=&quot;&lt;%configsettingsedit(SkinsURL)%&gt;&quot; /&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_SETTINGS_ACTIONSURL)%&gt; &lt;%helplink(actionurl)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;input name=&quot;ActionURL&quot; tabindex=&quot;10047&quot; size=&quot;40&quot; value=&quot;&lt;%configsettingsedit(ActionURL)%&gt;&quot; /&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_SETTINGS_LOCALE)%&gt; &lt;%helplink(locale)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;select name=&quot;Locale&quot; tabindex=&quot;10050&quot;&gt;&lt;%localeselectoptions%&gt;&lt;/select&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_SETTINGS_DISABLESITE)%&gt; &lt;%helplink(disablesite)%&gt;&lt;/td&gt;
+&lt;td&gt;
+&lt;%configsettingsyesno(DisableSite, 10060)%&gt;&lt;br /&gt;
+&lt;%text(_SETTINGS_DISABLESITEURL)%&gt; &lt;input name=&quot;DisableSiteURL&quot; tabindex=&quot;10070&quot; size=&quot;40&quot; value=&quot;&lt;%configsettingsedit(DisableSiteURL)%&gt;&quot; /&gt;
+&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_SETTINGS_DIRS)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;%outputspecialdirs(nucleusdir)%&gt;&lt;i&gt;&lt;%text(_SETTINGS_SEECONFIGPHP)%&gt;&lt;/i&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_SETTINGS_DBLOGIN)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;i&gt;&lt;%text(_SETTINGS_SEECONFIGPHP)%&gt;&lt;/i&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_SETTINGS_JSTOOLBAR)%&gt;&lt;/td&gt;
+&lt;td&gt;
+&lt;select name=&quot;DisableJsTools&quot; tabindex=&quot;10075&quot;&gt;
+&lt;%jstoolbaroptions%&gt;
+&lt;/select&gt;
+&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_SETTINGS_URLMODE)%&gt; &lt;%helplink(urlmode)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;%configsettingsedit(URLMode)%&gt; &lt;%text(_SETTINGS_URLMODE_HELP)%&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_SETTINGS_DEBUGVARS)%&gt; &lt;%helplink(debugvars)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;%configsettingsyesno(DebugVars, 10078)%&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_SETTINGS_DEFAULTLISTSIZE)%&gt; &lt;%helplink(defaultlistsize)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;input name=&quot;DefaultListSize&quot; tabindex=&quot;10079&quot; size=&quot;40&quot; value=&quot;&lt;%configsettingsedit(DefaultListSize)%&gt;&quot; /&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_SETTINGS_ADMINCSS)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;select name=&quot;AdminCSS&quot; tabindex=&quot;10080&quot;&gt;&lt;%adminstyleselectoptions%&gt;&lt;/select&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;th colspan=&quot;2&quot;&gt;&lt;%text(_SETTINGS_MEDIA)%&gt; &lt;%helplink(media)%&gt;&lt;/th&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_SETTINGS_MEDIADIR)%&gt;&lt;/td&gt;
+&lt;td&gt;
+&lt;%outputspecialdirs(mediadir)%&gt;
+&lt;i&gt;&lt;%text(_SETTINGS_SEECONFIGPHP)%&gt;&lt;/i&gt;&lt;%mediadirwarning%&gt;
+&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_SETTINGS_MEDIAURL)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;input name=&quot;MediaURL&quot; tabindex=&quot;10080&quot; size=&quot;40&quot; value=&quot;&lt;%configsettingsedit(MediaURL)%&gt;&quot; /&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_SETTINGS_ALLOWUPLOAD)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;%configsettingsyesno(AllowUpload, 10090)%&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_SETTINGS_ALLOWUPLOADTYPES)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;input name=&quot;AllowedTypes&quot; tabindex=&quot;10100&quot; size=&quot;40&quot; value=&quot;&lt;%configsettingsedit(AllowedTypes)%&gt;&quot; /&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_SETTINGS_MAXUPLOADSIZE)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;input name=&quot;MaxUploadSize&quot; tabindex=&quot;10105&quot; size=&quot;40&quot; value=&quot;&lt;%configsettingsedit(MaxUploadSize)%&gt;&quot; /&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_SETTINGS_MEDIAPREFIX)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;%configsettingsyesno(MediaPrefix, 10110)%&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;th colspan=&quot;2&quot;&gt;&lt;%text(_SETTINGS_MEMBERS)%&gt;&lt;/th&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_SETTINGS_CHANGELOGIN)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;%configsettingsyesno(AllowLoginEdit, 10120)%&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_SETTINGS_ALLOWCREATE)%&gt; &lt;%helplink(allowaccountcreation)%&gt;
+&lt;/td&gt;
+&lt;td&gt;&lt;%configsettingsyesno(AllowMemberCreate, 10130)%&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_SETTINGS_NEWLOGIN)%&gt; &lt;%helplink(allownewmemberlogin)%&gt;&lt;br /&gt;&lt;%text(_SETTINGS_NEWLOGIN2)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;%configsettingsyesno(NewMemberCanLogon, 10140)%&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_SETTINGS_MEMBERMSGS)%&gt; &lt;%helplink(messageservice)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;%configsettingsyesno(AllowMemberMail, 10150)%&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_SETTINGS_NONMEMBERMSGS)%&gt; &lt;%helplink(messageservice)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;%configsettingsyesno(NonmemberMail, 10155%&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_SETTINGS_PROTECTMEMNAMES)%&gt; &lt;%helplink(protectmemnames)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;%configsettingsyesno(ProtectMemNames, 10156)%&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;th colspan=&quot;2&quot;&gt;&lt;%text(_SETTINGS_COOKIES_TITLE)%&gt; &lt;%helplink(cookies)%&gt;&lt;/th&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_SETTINGS_COOKIEPREFIX)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;input name=&quot;CookiePrefix&quot; tabindex=&quot;10159&quot; size=&quot;40&quot; value=&quot;&lt;%configsettingsedit(CookiePrefix)%&gt;&quot; /&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_SETTINGS_COOKIEDOMAIN)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;input name=&quot;CookieDomain&quot; tabindex=&quot;10160&quot; size=&quot;40&quot; value=&quot;&lt;%configsettingsedit(CookieDomain)%&gt;&quot; /&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_SETTINGS_COOKIEPATH)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;input name=&quot;CookiePath&quot; tabindex=&quot;10170&quot; size=&quot;40&quot; value=&quot;&lt;%configsettingsedit(CookiePath)%&gt;&quot; /&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_SETTINGS_COOKIESECURE)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;%configsettingsyesno(CookieSecure, 10180)%&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_SETTINGS_COOKIELIFE)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;%configsettingsedit(SessionCookie)%&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_SETTINGS_LASTVISIT)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;%configsettingsyesno(LastVisit, 10200)%&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;th colspan=&quot;2&quot;&gt;&lt;%text(_SETTINGS_UPDATE)%&gt;&lt;/th&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_SETTINGS_UPDATE)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;input type=&quot;submit&quot; tabindex=&quot;10210&quot; value=&quot;&lt;%text(_SETTINGS_UPDATE_BTN)%&gt;&quot; onclick=&quot;return checkSubmit();&quot; /&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;/table&gt;
+&lt;/div&gt;
+&lt;/form&gt;
+&lt;h2&gt;&lt;%text(_PLUGINS_EXTRA)%&gt;&lt;/h2&gt;
+&lt;%pluginextras%&gt;&lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartshowlogin" id="skinpartshowlogin"></a>
+<h1>Admin skins: showlogin</h1>
+<p>
+This skinpart is used to showlogin.
+</p>
+<p>
+Very basic buildup for a [Log In]page page.
+</p>
+<pre>
+
+&lt;%pagehead%&gt;
+&lt;h2&gt;&lt;%text(_LOGIN)%&gt;&lt;/h2&gt;
+&lt;%headmessage%&gt;
+&lt;form action=&quot;&lt;%adminurl%&gt;index.php&quot; method=&quot;post&quot;&gt;&lt;p&gt;
+&lt;%text(_LOGIN_NAME)%&gt; &lt;br /&gt;&lt;input name=&quot;login&quot;  tabindex=&quot;10&quot; /&gt;
+&lt;br /&gt;
+&lt;%text(_LOGIN_PASSWORD)%&gt; &lt;br /&gt;&lt;input name=&quot;password&quot;  tabindex=&quot;20&quot; type=&quot;password&quot; /&gt;
+&lt;br /&gt;
+&lt;input name=&quot;action&quot; value=&quot;login&quot; type=&quot;hidden&quot; /&gt;
+&lt;br /&gt;
+&lt;input type=&quot;submit&quot; value=&quot;&lt;%text(_LOGIN)%&gt;&quot; tabindex=&quot;30&quot; /&gt;
+&lt;br /&gt;
+&lt;small&gt;
+&lt;input type=&quot;checkbox&quot; value=&quot;1&quot; name=&quot;shared&quot; tabindex=&quot;40&quot; id=&quot;shared&quot; /&gt;&lt;label for=&quot;shared&quot;&gt;&lt;%text(_LOGIN_SHARED)%&gt;&lt;/label&gt;
+&lt;br /&gt;&lt;a href=&quot;forgotpassword.php&quot;&gt;&lt;%text(_LOGIN_FORGOT)%&gt;&lt;/a&gt;
+&lt;/small&gt;
+&lt;%passrequestvars%&gt;
+&lt;/p&gt;&lt;/form&gt;&lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartskindelete" id="skinpartskindelete"></a>
+<h1>Admin skins: skindelete</h1>
+<p>
+This skinpart is used to skindelete.
+</p>
+<p>
+Very basic buildup for a [You're about to delete the skin named ]page page.
+</p>
+<pre>
+
+&lt;%pagehead%&gt;
+&lt;h2&gt;&lt;%text(_DELETE_CONFIRM)%&gt;&lt;/h2&gt;
+&lt;p&gt;&lt;%text(_CONFIRMTXT_SKIN)%&gt;&lt;b&gt;&lt;%editskintype(name)%&gt;&lt;/b&gt; (&lt;%editskintype(desc)%&gt;)&lt;/p&gt;
+&lt;form method=&quot;post&quot; action=&quot;&lt;%adminurl%&gt;index.php&quot;&gt;
+&lt;div&gt;
+&lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;skindeleteconfirm&quot; /&gt;
+&lt;%ticket%&gt;
+&lt;input type=&quot;hidden&quot; name=&quot;skinid&quot; value=&quot;&lt;%editskintype(id)%&gt;&quot; /&gt;
+&lt;input type=&quot;submit&quot; tabindex=&quot;10&quot; value=&quot;&lt;%text(_DELETE_CONFIRM_BTN)%&gt;&quot; /&gt;
+&lt;/div&gt;
+&lt;/form&gt;&lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartskinedit" id="skinpartskinedit"></a>
+<h1>Admin skins: skinedit</h1>
+<p>
+This skinpart is used to skinedit.
+</p>
+<p>
+Very basic buildup for a [Edit skin]page page.
+</p>
+<pre>
+
+       &lt;%pagehead%&gt;
+       &lt;p&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=skinoverview&quot;&gt;(&lt;%text(_SKIN_BACK)%&gt;)&lt;/a&gt;&lt;/p&gt;
+       
+       &lt;h2&gt;&lt;%text(_SKIN_EDITONE_TITLE)%&gt; '&lt;%editskin(name)%&gt;'&lt;/h2&gt;
+       
+       &lt;h3&gt;&lt;%text(_SKIN_PARTS_TITLE)%&gt;&lt;/h3&gt;
+       &lt;%text(_SKIN_PARTS_MSG)%&gt;
+       &lt;%normalskinlist(admin/default)%&gt;
+       
+       &lt;h3&gt;&lt;%text(_SKIN_PARTS_SPECIAL)%&gt;&lt;/h3&gt;
+       &lt;form method=&quot;get&quot; action=&quot;&lt;%adminurl%&gt;index.php&quot;&gt;
+       &lt;p&gt;
+       &lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;skinedittype&quot; /&gt;
+       &lt;input type=&quot;hidden&quot; name=&quot;skinid&quot; value=&quot;&lt;%editskin(id)%&gt;&quot; /&gt;
+       &lt;input name=&quot;type&quot; tabindex=&quot;89&quot; size=&quot;20&quot; maxlength=&quot;20&quot; /&gt;
+       &lt;input type=&quot;submit&quot; tabindex=&quot;140&quot; value=&quot;&lt;%text(_SKIN_CREATE)%&gt;&quot; onclick=&quot;return checkSubmit();&quot; /&gt;
+       &lt;/p&gt;
+       &lt;/form&gt;
+       &lt;%specialskinlist(admin/default)%&gt;
+       
+       &lt;h3&gt;&lt;%text(_SKIN_GENSETTINGS_TITLE)%&gt;&lt;/h3&gt;
+       &lt;form method=&quot;post&quot; action=&quot;&lt;%adminurl%&gt;index.php&quot;&gt;
+       &lt;p&gt;
+       &lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;skineditgeneral&quot; /&gt;
+       &lt;%ticket%&gt;
+       &lt;input type=&quot;hidden&quot; name=&quot;skinid&quot; value=&quot;&lt;%editskin(id)%&gt;&quot; /&gt;
+       &lt;table frame=&quot;box&quot; rules=&quot;all&quot; summary=&quot;&lt;%text(_SKIN_GENSETTINGS_TITLE)%&gt;&quot;&gt;
+       &lt;tr&gt;
+       &lt;td&gt;&lt;%text(_SKIN_NAME)%&gt; &lt;%helplink(shortnames)%&gt;&lt;/td&gt;
+       &lt;td&gt;&lt;input name=&quot;name&quot; tabindex=&quot;90&quot; value=&quot;&lt;%editskin(name)%&gt;&quot; maxlength=&quot;20&quot; size=&quot;20&quot; /&gt;&lt;/td&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;td&gt;&lt;%text(_SKIN_DESC)%&gt;&lt;/td&gt;
+       &lt;td&gt;&lt;input name=&quot;desc&quot; tabindex=&quot;100&quot; value=&quot;&lt;%editskin(desc)%&gt;&quot; maxlength=&quot;200&quot; size=&quot;50&quot; /&gt;&lt;/td&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;td&gt;&lt;%text(_SKIN_TYPE)%&gt;&lt;/td&gt;
+       &lt;td&gt;&lt;input name=&quot;type&quot; tabindex=&quot;110&quot; value=&quot;&lt;%editskin(type)%&gt;&quot; maxlength=&quot;40&quot; size=&quot;20&quot; /&gt;&lt;/td&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;td&gt;&lt;%text(_SKIN_INCLUDE_MODE)%&gt; &lt;%helplink(includemode)%&gt;&lt;/td&gt;
+       &lt;td&gt;&lt;%editskin(mode)%&gt;&lt;/td&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;td&gt;&lt;%text(_SKIN_INCLUDE_PREFIX)%&gt; &lt;%helplink(includeprefix)%&gt;&lt;/td&gt;
+       &lt;td&gt;&lt;input name=&quot;inc_prefix&quot; tabindex=&quot;130&quot; value=&quot;&lt;%editskin(prefix)%&gt;&quot; maxlength=&quot;40&quot; size=&quot;20&quot; /&gt;&lt;/td&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;td&gt;&lt;%text(_SKIN_CHANGE)%&gt;&lt;/td&gt;
+       &lt;td&gt;&lt;input type=&quot;submit&quot; tabindex=&quot;140&quot; value=&quot;&lt;%text(_SKIN_CHANGE_BTN)%&gt;&quot; onclick=&quot;return checkSubmit();&quot; /&gt;&lt;/td&gt;
+       &lt;/tr&gt;
+       &lt;/table&gt;
+       &lt;/p&gt;
+       &lt;/form&gt;
+       &lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartskinedittype" id="skinpartskinedittype"></a>
+<h1>Admin skins: skinedittype</h1>
+<p>
+This skinpart is used to skinedittype.
+</p>
+<p>
+Very basic buildup for a [Edit Skin]page page.
+</p>
+<pre>
+
+       &lt;%pagehead%&gt;
+       &lt;p&gt;(&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=skinoverview&quot;&gt;&lt;%text(_SKIN_GOBACK)%&gt;&lt;/a&gt;)&lt;/p&gt;
+       
+       &lt;h2&gt;&lt;%text(_SKIN_EDITPART_TITLE)%&gt; '&lt;%editskintype(name)%&gt;': &lt;%editskintype(skintype)%&gt;&lt;/h2&gt;
+       &lt;%headmessage%&gt;
+       
+       &lt;form method=&quot;post&quot; action=&quot;&lt;%adminurl%&gt;index.php&quot;&gt;
+       &lt;p&gt;
+       &lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;skinupdate&quot; /&gt;
+       &lt;%ticket%&gt;
+       &lt;input type=&quot;hidden&quot; name=&quot;skinid&quot; value=&quot;&lt;%editskintype(id)%&gt;&quot; /&gt;
+       &lt;input type=&quot;hidden&quot; name=&quot;type&quot; value=&quot;&lt;%editskintype(skintyperaw)%&gt;&quot; /&gt;
+       &lt;input type=&quot;submit&quot; value=&quot;&lt;%text(_SKIN_UPDATE_BTN)%&gt;&quot; onclick=&quot;return checkSubmit();&quot; /&gt;
+       &lt;input type=&quot;reset&quot; value=&quot;&lt;%text(_SKIN_RESET_BTN)%&gt;&quot; /&gt;
+       (skin type: &lt;%editskintype(skintype)%&gt;)&lt;%skintypehelp%&gt;&lt;br /&gt;
+       &lt;textarea class=&quot;skinedit&quot; tabindex=&quot;10&quot; rows=&quot;20&quot; cols=&quot;80&quot; name=&quot;content&quot;&gt;&lt;%editskintype(content)%&gt;&lt;/textarea&gt;
+       &lt;br /&gt;
+       &lt;input type=&quot;submit&quot; tabindex=&quot;20&quot; value=&quot;&lt;%text(_SKIN_UPDATE_BTN)%&gt;&quot; onclick=&quot;return checkSubmit();&quot; /&gt;
+       &lt;input type=&quot;reset&quot; value=&quot;&lt;%text(_SKIN_RESET_BTN)%&gt;&quot; /&gt;
+       (skin type: &lt;%editskintype(skintype)%&gt;)
+       &lt;br /&gt;
+       &lt;br /&gt;
+       
+       &lt;%text(_SKIN_ALLOWEDVARS)%&gt;
+       &lt;%allowedskinactions%&gt;&lt;br /&gt;&lt;br /&gt;
+       &lt;%text(_SKINEDIT_ALLOWEDBLOGS)%&gt;
+       &lt;%skineditallowedlist(blog)%&gt;
+       &lt;%text(_SKINEDIT_ALLOWEDTEMPLATESS)%&gt;
+       &lt;%skineditallowedlist(template)%&gt;
+       &lt;/p&gt;
+       &lt;/form&gt;
+       &lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartskiniedoimport" id="skinpartskiniedoimport"></a>
+<h1>Admin skins: skiniedoimport</h1>
+<p>
+This skinpart is used to skiniedoimport.
+</p>
+<p>
+Very basic buildup for a [Done Importing]page page.
+</p>
+<pre>
+
+&lt;%pagehead%&gt;
+&lt;p&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=manage&quot;&gt;(&lt;%text(_BACKTOMANAGE)%&gt;)&lt;/a&gt;&lt;/p&gt;
+&lt;h2&gt;&lt;%text(_SKINIE_DONE)%&gt;&lt;/h2&gt;
+
+&lt;ul&gt;
+&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;%text(_SKINIE_INFO_GENERAL)%&gt;&lt;/strong&gt; &lt;%importskininfo(info)%&gt;&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;%text(_SKINIE_INFO_IMPORTEDSKINS)%&gt;&lt;/strong&gt; &lt;%importskininfo(snames)%&gt;&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;%text(_SKINIE_INFO_IMPORTEDTEMPLS)%&gt;&lt;/strong&gt; &lt;%importskininfo(tnames)%&gt;&lt;/p&gt;&lt;/li&gt;
+&lt;/ul&gt;&lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartskinieimport" id="skinpartskinieimport"></a>
+<h1>Admin skins: skinieimport</h1>
+<p>
+This skinpart is used to skinieimport.
+</p>
+<p>
+Very basic buildup for a [About to import skins and templates]page page.
+</p>
+<pre>
+
+&lt;%pagehead%&gt;
+&lt;p&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=skinieoverview&quot;&gt;(&lt;%text(_BACK)%&gt;)&lt;/a&gt;&lt;/p&gt;
+&lt;h2&gt;&lt;%text(_SKINIE_CONFIRM_TITLE)%&gt;&lt;/h2&gt;
+&lt;ul&gt;
+&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;%text(_SKINIE_INFO_GENERAL)%&gt;&lt;/strong&gt; &lt;%importskininfo(info)%&gt;&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;%text(_SKINIE_INFO_SKINS)%&gt;&lt;/strong&gt; &lt;%importskininfo(snames)%&gt;&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;%text(_SKINIE_INFO_TEMPLATES)%&gt;&lt;/strong&gt; &lt;%importskininfo(tnames)%&gt;&lt;/p&gt;&lt;/li&gt;
+&lt;%if(nameclashes)%&gt;&lt;li&gt;&lt;p&gt;&lt;strong style=&quot;color: red;&quot;&gt;&lt;%text(_SKINIE_INFO_SKINCLASH)%&gt;&lt;/strong&gt; &lt;%importskininfo(sclashes)%&gt;&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;&lt;strong style=&quot;color: red;&quot;&gt;&lt;%text(_SKINIE_INFO_TEMPLCLASH)%&gt;&lt;/strong&gt; &lt;%importskininfo(tclashes)%&gt;&lt;/p&gt;&lt;/li&gt;&lt;%endif%&gt;
+&lt;/ul&gt;
+
+&lt;form method=&quot;post&quot; action=&quot;&lt;%adminurl%&gt;index.php&quot;&gt;&lt;div&gt;
+&lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;skiniedoimport&quot; /&gt;
+&lt;%ticket%&gt;
+&lt;input type=&quot;hidden&quot; name=&quot;skinfile&quot; value=&quot;&lt;%importskininfo(skinfile)%&gt;&quot; /&gt;
+&lt;input type=&quot;hidden&quot; name=&quot;mode&quot; value=&quot;&lt;%importskininfo(mode)%&gt;&quot; /&gt;
+&lt;input type=&quot;submit&quot; value=&quot;&lt;%text(_SKINIE_CONFIRM_IMPORT)%&gt;&quot; /&gt;
+&lt;%if(nameclashes)%&gt;&lt;br /&gt;
+&lt;input type=&quot;checkbox&quot; name=&quot;overwrite&quot; value=&quot;1&quot; id=&quot;cb_overwrite&quot; /&gt;&lt;label for=&quot;cb_overwrite&quot;&gt;&lt;%text(_SKINIE_CONFIRM_OVERWRITE)%&gt;&lt;/label&gt;&lt;%endif%&gt;
+&lt;/div&gt;&lt;/form&gt;&lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartskinieoverview" id="skinpartskinieoverview"></a>
+<h1>Admin skins: skinieoverview</h1>
+<p>
+This skinpart is used to skinieoverview.
+</p>
+<p>
+Very basic buildup for a [Import/Export]page page.
+</p>
+<pre>
+
+&lt;%pagehead%&gt;
+&lt;p&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=manage&quot;&gt;(&lt;%text(_BACKTOMANAGE)%&gt;)&lt;/a&gt;&lt;/p&gt;
+&lt;h2&gt;&lt;%text(_SKINIE_TITLE_IMPORT)%&gt;&lt;/h2&gt;
+&lt;p&gt;
+&lt;label for=&quot;skinie_import_local&quot;&gt;&lt;%text(_SKINIE_LOCAL)%&gt;&lt;/label&gt;
+&lt;%if(skincandidates)%&gt;&lt;form method=&quot;post&quot; action=&quot;&lt;%adminurl%&gt;index.php&quot;&gt;
+&lt;p&gt;
+&lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;skinieimport&quot; /&gt;
+&lt;%ticket%&gt;
+&lt;input type=&quot;hidden&quot; name=&quot;mode&quot; value=&quot;file&quot; /&gt;
+&lt;select name=&quot;skinfile&quot; id=&quot;skinie_import_local&quot;&gt;
+&lt;%selectlocalskinfiles%&gt;
+&lt;/select&gt;
+&lt;input type=&quot;submit&quot; value=&quot;&lt;%text(_SKINIE_BTN_IMPORT)%&gt;&quot; /&gt;
+&lt;/p&gt;
+&lt;/form&gt;&lt;%else%&gt;&lt;%text(_SKINIE_NOCANDIDATES)%&gt;&lt;%endif%&gt;
+&lt;/p&gt;
+&lt;p&gt;&lt;em&gt;&lt;%text(_OR)%&gt;&lt;/em&gt;&lt;/p&gt;
+&lt;form method=&quot;post&quot; action=&quot;&lt;%adminurl%&gt;index.php&quot;&gt;
+&lt;p&gt;
+&lt;%ticket%&gt;
+&lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;skinieimport&quot; /&gt;
+&lt;input type=&quot;hidden&quot; name=&quot;mode&quot; value=&quot;url&quot; /&gt;
+&lt;label for=&quot;skinie_import_url&quot;&gt;&lt;%text(_SKINIE_FROMURL)%&gt;&lt;/label&gt;
+&lt;input type=&quot;text&quot; name=&quot;skinfile&quot; id=&quot;skinie_import_url&quot; size=&quot;60&quot; value=&quot;http://&quot; /&gt;
+&lt;input type=&quot;submit&quot; value=&quot;&lt;%text(_SKINIE_BTN_IMPORT)%&gt;&quot; /&gt;
+&lt;/p&gt;
+&lt;/form&gt;
+&lt;h2&gt;&lt;%text(_SKINIE_TITLE_EXPORT)%&gt;&lt;/h2&gt;
+&lt;form method=&quot;post&quot; action=&quot;&lt;%adminurl%&gt;index.php&quot;&gt;
+&lt;div&gt;
+&lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;skinieexport&quot; /&gt;
+&lt;%ticket%&gt;
+&lt;p&gt;&lt;%text(_SKINIE_EXPORT_INTRO)%&gt;&lt;/p&gt;
+&lt;table&gt;
+&lt;tr&gt;
+&lt;th colspan=&quot;2&quot;&gt;&lt;%text(_SKINIE_EXPORT_SKINS)%&gt;&lt;/th&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;%skinielist(skin,admin/default)%&gt;
+&lt;th colspan=&quot;2&quot;&gt;&lt;%text(_SKINIE_EXPORT_TEMPLATES)%&gt;&lt;/th&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;%skinielist(template,admin/default)%&gt;
+&lt;th colspan=&quot;2&quot;&gt;&lt;%text(_SKINIE_EXPORT_EXTRA)%&gt;&lt;/th&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td colspan=&quot;2&quot;&gt;&lt;textarea cols=&quot;40&quot; rows=&quot;5&quot; name=&quot;info&quot;&gt;&lt;/textarea&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;th colspan=&quot;2&quot;&gt;&lt;%text(_SKINIE_TITLE_EXPORT)%&gt;&lt;/th&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td colspan=&quot;2&quot;&gt;&lt;input type=&quot;submit&quot; value=&quot;&lt;%text(_SKINIE_BTN_EXPORT)%&gt;&quot; /&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;/table&gt;
+&lt;/div&gt;
+&lt;/form&gt;&lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartskinoverview" id="skinpartskinoverview"></a>
+<h1>Admin skins: skinoverview</h1>
+<p>
+This skinpart is used to skinoverview.
+</p>
+<p>
+Very basic buildup for a [Edit Skins]page page.
+</p>
+<pre>
+
+       &lt;%pagehead%&gt;
+       &lt;p&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=manage&quot;&gt;(&lt;%text(_BACKTOMANAGE)%&gt;)&lt;/a&gt;&lt;/p&gt;
+       
+       &lt;h2&gt;&lt;%text(_SKIN_EDIT_TITLE)%&gt;&lt;/h2&gt;
+       
+       &lt;h3&gt;&lt;%text(_SKIN_AVAILABLE_TITLE)%&gt;&lt;/h3&gt;
+       &lt;%skinoverview(admin/default)%&gt;
+       
+       &lt;h3&gt;&lt;%text(_SKIN_NEW_TITLE)%&gt;&lt;/h3&gt;
+       &lt;form method=&quot;post&quot; action=&quot;&lt;%adminurl%&gt;index.php&quot;&gt;
+       &lt;p&gt;
+       &lt;input name=&quot;action&quot; value=&quot;skinnew&quot; type=&quot;hidden&quot; /&gt;
+       &lt;%ticket%&gt;
+       &lt;table frame=&quot;box&quot; rules=&quot;all&quot; sumamry=&quot;&lt;%text(_SKIN_NEW_TITLE)%&gt;&quot;&gt;
+       &lt;tr&gt;
+       &lt;td&gt;&lt;%text(_SKIN_NAME)%&gt; &lt;%helplink(shortnames)%&gt;&lt;/td&gt;
+       &lt;td&gt;&lt;input name=&quot;name&quot; tabindex=&quot;10010&quot; maxlength=&quot;20&quot; size=&quot;20&quot; /&gt;&lt;/td&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;td&gt;&lt;%text(_SKIN_DESC)%&gt;&lt;/td&gt;
+       &lt;td&gt;&lt;input name=&quot;desc&quot; tabindex=&quot;10020&quot; maxlength=&quot;200&quot; size=&quot;50&quot; /&gt;&lt;/td&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;td&gt;&lt;%text(_SKIN_CREATE)%&gt;&lt;/td&gt;
+       &lt;td&gt;&lt;input type=&quot;submit&quot; tabindex=&quot;10030&quot; value=&quot;&lt;%text(_SKIN_CREATE_BTN)%&gt;&quot; onclick=&quot;return checkSubmit();&quot; /&gt;&lt;/td&gt;
+       &lt;/tr&gt;
+       &lt;/table&gt;
+       &lt;/p&gt;
+       &lt;/form&gt;
+       &lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartskinremovetype" id="skinpartskinremovetype"></a>
+<h1>Admin skins: skinremovetype</h1>
+<p>
+This skinpart is used to skinremovetype.
+</p>
+<p>
+Very basic buildup for a [Do you really want to delete this special skin part?]page page.
+</p>
+<pre>
+
+&lt;%pagehead%&gt;
+&lt;h2&gt;&lt;%text(_DELETE_CONFIRM)%&gt;&lt;/h2&gt;
+&lt;p&gt;&lt;%text(_CONFIRMTXT_SKIN_PARTS_SPECIAL)%&gt;&lt;br /&gt;
+&lt;b&gt;&lt;%editskintype(skintype)%&gt; (&lt;%editskintype(name)%&gt;)&lt;/b&gt; (&lt;%editskintype(desc)%&gt;)&lt;/p&gt;
+&lt;form method=&quot;post&quot; action=&quot;&lt;%adminurl%&gt;index.php&quot;&gt;
+&lt;div&gt;
+&lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;skinremovetypeconfirm&quot; /&gt;
+&lt;%ticket%&gt;
+&lt;input type=&quot;hidden&quot; name=&quot;skinid&quot; value=&quot;&lt;%editskintype(id)%&gt;&quot; /&gt;
+&lt;input type=&quot;hidden&quot; name=&quot;type&quot; value=&quot;&lt;%editskintype(skintype)%&gt;&quot; /&gt;
+&lt;input type=&quot;submit&quot; tabindex=&quot;10&quot; value=&quot;&lt;%text(_DELETE_CONFIRM_BTN)%&gt;&quot; /&gt;
+&lt;/div&gt;
+&lt;/form&gt;&lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartsystemoverview" id="skinpartsystemoverview"></a>
+<h1>Admin skins: systemoverview</h1>
+<p>
+This skinpart is used to systemoverview.
+</p>
+<p>
+Very basic buildup for a [System Overview]page page.
+</p>
+<pre>
+
+&lt;%pagehead%&gt;
+&lt;h2&gt;&lt;%text(_ADMIN_SYSTEMOVERVIEW_HEADING)%&gt;&lt;/h2&gt;
+&lt;%if(superadmin)%&gt;
+&lt;h3&gt;&lt;%text(_ADMIN_SYSTEMOVERVIEW_PHPANDMYSQL)%&gt;&lt;/h3&gt;
+&lt;table summary=&quot;Version of PHP MySQL&quot;&gt;
+&lt;tr&gt;
+&lt;th colspan=&quot;2&quot;&gt;&lt;%text(_ADMIN_SYSTEMOVERVIEW_VERSIONS)%&gt;&lt;/th&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td width=&quot;50%&quot;&gt;&lt;%text(_ADMIN_SYSTEMOVERVIEW_PHPVERSION)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;%systemsettings(phpversion)%&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_ADMIN_SYSTEMOVERVIEW_MYSQLVERSION)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;%systemsettings(sqlserverinfo)%&gt; (&lt;%systemsettings(sqlclientinfo)%&gt;)&lt;/td&gt;
+&lt;/tr&gt;
+&lt;/table&gt;
+&lt;table summary=&quot;Important PHP settings&quot;&gt;
+&lt;tr&gt;
+&lt;th colspan=&quot;2&quot;&gt;&lt;%text(_ADMIN_SYSTEMOVERVIEW_SETTINGS)%&gt;&lt;/th&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td width=&quot;50%&quot;&gt;magic_quotes_gpc&lt;/td&gt;
+&lt;td&gt;&lt;%systemsettings(magicquotesgpc)%&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td width=&quot;50%&quot;&gt;magic_quotes_runtime&lt;/td&gt;
+&lt;td&gt;&lt;%systemsettings(magicquotesruntime)%&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td width=&quot;50%&quot;&gt;register_globals&lt;/td&gt;
+&lt;td&gt;&lt;%systemsettings(registerglobals)%&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;/table&gt;
+&lt;table summary=&quot;Information about GD library&quot;&gt;
+&lt;tr&gt;
+&lt;th colspan=&quot;2&quot;&gt;&lt;%text(_ADMIN_SYSTEMOVERVIEW_GDLIBRALY)%&gt;&lt;/th&gt;
+&lt;/tr&gt;
+&lt;%systemsettings(gdinfo)%&gt;
+&lt;/table&gt;
+&lt;table summary=&quot;special modules are loaded&quot;&gt;
+&lt;tr&gt;
+&lt;th colspan=&quot;2&quot;&gt;&lt;%text(_ADMIN_SYSTEMOVERVIEW_MODULES)%&gt;&lt;/th&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td width=&quot;50%&quot;&gt;mod_rewrite&lt;/td&gt;
+&lt;td&gt;&lt;%systemsettings(modrewrite)%&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;/table&gt;
+
+&lt;h3&gt;&lt;%text(_ADMIN_SYSTEMOVERVIEW_NUCLEUSSYSTEM)%&gt;&lt;/h3&gt;
+&lt;table summary=&quot;Information about the used Nucleus CMS&quot;&gt;
+&lt;tr&gt;
+&lt;th colspan=&quot;2&quot;&gt;Nucleus CMS&lt;/th&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td width=&quot;50%&quot;&gt;&lt;%text(_ADMIN_SYSTEMOVERVIEW_NUCLEUSVERSION)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;%systemsettings(nucleusversion)%&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td width=&quot;50%&quot;&gt;&lt;%text(_ADMIN_SYSTEMOVERVIEW_NUCLEUSPATCHLEVEL)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;%systemsettings(nucleuspatchlevel)%&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;/table&gt;
+&lt;table summary=&quot;Important settings of the installation&quot;&gt;
+&lt;tr&gt;
+&lt;th colspan=&quot;2&quot;&gt;&lt;%text(_ADMIN_SYSTEMOVERVIEW_NUCLEUSSETTINGS)%&gt;&lt;/th&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td width=&quot;50%&quot;&gt;$CONF['Self']&lt;/td&gt;
+&lt;td&gt;&lt;%systemsettings(confself)%&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td width=&quot;50%&quot;&gt;$CONF['ItemURL']&lt;/td&gt;
+&lt;td&gt;&lt;%systemsettings(confitemurl)%&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td width=&quot;50%&quot;&gt;$CONF['alertOnHeadersSent']&lt;/td&gt;
+&lt;td&gt;&lt;%systemsettings(alertonheaderssent)%&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;/table&gt;
+
+&lt;h3&gt;&lt;%text(_ADMIN_SYSTEMOVERVIEW_VERSIONCHECK)%&gt;&lt;/h3&gt;
+&lt;!-- Link to the online version test at the Nucleus CMS website --&gt;
+&lt;%text(_ADMIN_SYSTEMOVERVIEW_VERSIONCHECK_TXT)%&gt;
+&lt;a href=&quot;&lt;%systemsettings(versioncheckurl)%&gt;&quot; title=&quot;&lt;%text(_ADMIN_SYSTEMOVERVIEW_VERSIONCHECK_TITLE)%&gt;&quot;&gt;
+Nucleus CMS &lt;%systemsettings(nucleusversion)%&gt; &lt;%systemsettings(nucleuscodename)%&gt;
+&lt;/a&gt;&lt;br /&gt;
+&lt;%else%&gt;
+&lt;%text(_ADMIN_SYSTEMOVERVIEW_NOT_ADMIN)%&gt;
+&lt;%endif%&gt;
+&lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartteamdelete" id="skinpartteamdelete"></a>
+<h1>Admin skins: teamdelete</h1>
+<p>
+This skinpart is used to teamdelete.
+</p>
+<p>
+Very basic buildup for a [You're about to delete  from the teamlist for blog ]page page.
+</p>
+<pre>
+
+&lt;%pagehead%&gt;
+&lt;h2&gt;&lt;%text(_DELETE_CONFIRM)%&gt;&lt;/h2&gt;
+&lt;p&gt;
+&lt;%text(_CONFIRMTXT_TEAM1)%&gt;
+&lt;b&gt;
+&lt;%editmember(displayname)%&gt;
+&lt;/b&gt;
+&lt;%text(_CONFIRMTXT_TEAM2)%&gt;
+&lt;b&gt;
+&lt;%blogsetting(name)%&gt;
+&lt;/b&gt;
+&lt;/p&gt;
+&lt;form method=&quot;post&quot; action=&quot;&lt;%adminurl%&gt;index.php&quot;&gt;
+&lt;div&gt;
+&lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;teamdeleteconfirm&quot; /&gt;
+&lt;%ticket%&gt;
+&lt;input type=&quot;hidden&quot; name=&quot;memberid&quot; value=&quot;&lt;%editmember(id)%&gt;&quot; /&gt;
+&lt;input type=&quot;hidden&quot; name=&quot;blogid&quot; value=&quot;&lt;%requestblogid%&gt;&quot; /&gt;
+&lt;input type=&quot;submit&quot; tabindex=&quot;10&quot; value=&quot;&lt;%text(_DELETE_CONFIRM_BTN)%&gt;&quot; /&gt;
+&lt;/div&gt;&lt;/form&gt;&lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinparttemplatedelete" id="skinparttemplatedelete"></a>
+<h1>Admin skins: templatedelete</h1>
+<p>
+This skinpart is used to templatedelete.
+</p>
+<p>
+Very basic buildup for a [You're about to delete the template named ]page page.
+</p>
+<pre>
+
+&lt;%pagehead%&gt;
+&lt;h2&gt;&lt;%text(_DELETE_CONFIRM)%&gt;&lt;/h2&gt;
+&lt;p&gt;&lt;%text(_CONFIRMTXT_TEMPLATE)%&gt;&lt;b&gt;&lt;%edittemplateinfo(name)%&gt;&lt;/b&gt; (&lt;%edittemplateinfo(desc)%&gt;)&lt;/p&gt;
+&lt;form method=&quot;post&quot; action=&quot;&lt;%adminurl%&gt;index.php&quot;&gt;
+&lt;div&gt;
+&lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;templatedeleteconfirm&quot; /&gt;
+&lt;%ticket%&gt;
+&lt;input type=&quot;hidden&quot; name=&quot;templateid&quot; value=&quot;&lt;%edittemplateinfo(id)%&gt;&quot; /&gt;
+&lt;input type=&quot;submit&quot; tabindex=&quot;10&quot; value=&quot;&lt;%text(_DELETE_CONFIRM_BTN)%&gt;&quot; /&gt;
+&lt;/div&gt;
+&lt;/form&gt;&lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinparttemplateedit" id="skinparttemplateedit"></a>
+<h1>Admin skins: templateedit</h1>
+<p>
+This skinpart is used to templateedit.
+</p>
+<p>
+Very basic buildup for a [Edit Template]page page.
+</p>
+<pre>
+
+       &lt;%pagehead%&gt;
+       &lt;p&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=templateoverview&quot;&gt;(&lt;%text(_TEMPLATE_BACK)%&gt;)&lt;/a&gt;&lt;/p&gt;
+       
+       &lt;h2&gt;&lt;%text(_TEMPLATE_EDIT_TITLE)%&gt; '&lt;%edittemplateinfo(name)%&gt;'&lt;/h2&gt;
+       &lt;%headmessage%&gt;
+       
+       &lt;p&gt;&lt;%text(_TEMPLATE_EDIT_MSG)%&gt;&lt;/p&gt;
+       
+       &lt;form method=&quot;post&quot; action=&quot;&lt;%adminurl%&gt;index.php&quot;&gt;
+       
+       &lt;p&gt;
+       &lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;templateupdate&quot; /&gt;
+       &lt;%ticket%&gt;
+       &lt;input type=&quot;hidden&quot; name=&quot;templateid&quot; value=&quot;&lt;%edittemplateinfo(id)%&gt;&quot; /&gt;
+       &lt;/p&gt;
+       
+       &lt;table frame=&quot;box&quot; rules=&quot;all&quot; summary=&quot;&lt;%text(_TEMPLATE_EDIT_TITLE)%&gt;&quot;&gt;
+       &lt;tr&gt;
+       &lt;th colspan=&quot;2&quot;&gt;&lt;%text(_TEMPLATE_SETTINGS)%&gt;&lt;/th&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;td&gt;&lt;%text(_TEMPLATE_NAME)%&gt; &lt;%helplink(shortnames)%&gt;&lt;/td&gt;
+       &lt;td&gt;&lt;input name=&quot;tname&quot; tabindex=&quot;4&quot; size=&quot;20&quot; maxlength=&quot;20&quot; value=&quot;&lt;%edittemplateinfo(name)%&gt;&quot; /&gt;&lt;/td&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;td&gt;&lt;%text(_TEMPLATE_DESC)%&gt;&lt;/td&gt;
+       &lt;td&gt;&lt;input name=&quot;tdesc&quot; tabindex=&quot;5&quot; size=&quot;50&quot; maxlength=&quot;200&quot; value=&quot;&lt;%edittemplateinfo(desc)%&gt;&quot; /&gt;&lt;/td&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;th colspan=&quot;2&quot;&gt;&lt;%text(_TEMPLATE_UPDATE)%&gt;&lt;/th&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;td&gt;&lt;%text(_TEMPLATE_UPDATE)%&gt;&lt;/td&gt;
+       &lt;td&gt;
+       &lt;input type=&quot;submit&quot; tabindex=&quot;6&quot; value=&quot;&lt;%text(_TEMPLATE_UPDATE_BTN)%&gt;&quot; onclick=&quot;return checkSubmit();&quot; /&gt;
+       &lt;input type=&quot;reset&quot; tabindex=&quot;7&quot; value=&quot;&lt;%text(_TEMPLATE_RESET_BTN)%&gt;&quot; /&gt;
+       &lt;/td&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;th colspan=&quot;2&quot;&gt;
+       &lt;%text(_TEMPLATE_ITEMS)%&gt; &lt;%helplink(templateitems)%&gt;&lt;/th&gt;
+       &lt;%edittemplateinfo(row,_TEMPLATE_ITEMHEADER,ITEM_HEADER,,8)%&gt;
+       &lt;%edittemplateinfo(row,_TEMPLATE_ITEMBODY,ITEM,,9,1)%&gt;
+       &lt;%edittemplateinfo(row,_TEMPLATE_ITEMFOOTER,ITEM_FOOTER,,10)%&gt;
+       &lt;%edittemplateinfo(row,_TEMPLATE_MORELINK,MORELINK,morelink, 20)%&gt;
+       &lt;%edittemplateinfo(row,_TEMPLATE_EDITLINK, EDITLINK, editlink, 25)%&gt;
+       &lt;%edittemplateinfo(row,_TEMPLATE_NEW, NEW, new, 30)%&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;th colspan=&quot;2&quot;&gt;
+       &lt;%text(_TEMPLATE_COMMENTS_ANY)%&gt; &lt;%helplink(templatecomments)%&gt;&lt;/th&gt;
+       &lt;%edittemplateinfo(row,_TEMPLATE_CHEADER, COMMENTS_HEADER, commentheaders, 40)%&gt;
+       &lt;%edittemplateinfo(row,_TEMPLATE_CBODY, COMMENTS_BODY, commentbody, 50, 1)%&gt;
+       &lt;%edittemplateinfo(row,_TEMPLATE_CFOOTER, COMMENTS_FOOTER, commentheaders, 60)%&gt;
+       &lt;%edittemplateinfo(row,_TEMPLATE_CONE, COMMENTS_ONE, commentwords, 70)%&gt;
+       &lt;%edittemplateinfo(row,_TEMPLATE_CMANY, COMMENTS_MANY, commentwords, 80)%&gt;
+       &lt;%edittemplateinfo(row,_TEMPLATE_CMORE, COMMENTS_CONTINUED, commentcontinued, 90)%&gt;
+       &lt;%edittemplateinfo(row,_TEMPLATE_CMEXTRA, COMMENTS_AUTH, memberextra, 100)%&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;th colspan=&quot;2&quot;&gt;
+       &lt;%text(_TEMPLATE_COMMENTS_NONE)%&gt; &lt;%helplink(templatecomments)%&gt;&lt;/th&gt;
+       &lt;%edittemplateinfo(row,_TEMPLATE_CNONE, COMMENTS_NONE, , 110)%&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;th colspan=&quot;2&quot;&gt;
+       &lt;%text(_TEMPLATE_COMMENTS_TOOMUCH)%&gt; &lt;%helplink(templatecomments)%&gt;&lt;/th&gt;
+       &lt;%edittemplateinfo(row,_TEMPLATE_CTOOMUCH, COMMENTS_TOOMUCH, , 120)%&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;th colspan=&quot;2&quot;&gt;
+       &lt;%text(_TEMPLATE_ARCHIVELIST)%&gt; &lt;%helplink(templatearchivelists)%&gt;&lt;/th&gt;
+       &lt;%edittemplateinfo(row,_TEMPLATE_AHEADER, ARCHIVELIST_HEADER, , 130)%&gt;
+       &lt;%edittemplateinfo(row,_TEMPLATE_AITEM, ARCHIVELIST_LISTITEM, , 140)%&gt;
+       &lt;%edittemplateinfo(row,_TEMPLATE_AFOOTER, ARCHIVELIST_FOOTER, , 150)%&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;th colspan=&quot;2&quot;&gt;
+       &lt;%text(_TEMPLATE_BLOGLIST)%&gt; &lt;%helplink(templatebloglists)%&gt;&lt;/th&gt;
+       &lt;%edittemplateinfo(row,_TEMPLATE_BLOGHEADER, BLOGLIST_HEADER, , 160)%&gt;
+       &lt;%edittemplateinfo(row,_TEMPLATE_BLOGITEM, BLOGLIST_LISTITEM, , 170)%&gt;
+       &lt;%edittemplateinfo(row,_TEMPLATE_BLOGFOOTER, BLOGLIST_FOOTER, , 180)%&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;th colspan=&quot;2&quot;&gt;
+       &lt;%text(_TEMPLATE_CATEGORYLIST)%&gt; &lt;%helplink(templatecategorylists)%&gt;&lt;/th&gt;
+       &lt;%edittemplateinfo(row,_TEMPLATE_CATHEADER, CATLIST_HEADER, , 190)%&gt;
+       &lt;%edittemplateinfo(row,_TEMPLATE_CATITEM, CATLIST_LISTITEM, , 200)%&gt;
+       &lt;%edittemplateinfo(row,_TEMPLATE_CATFOOTER, CATLIST_FOOTER, , 210)%&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;th colspan=&quot;2&quot;&gt;
+       &lt;%text(_TEMPLATE_DATETIME)%&gt;&lt;/th&gt;
+       &lt;%edittemplateinfo(row,_TEMPLATE_DHEADER, DATE_HEADER, dateheads, 220)%&gt;
+       &lt;%edittemplateinfo(row,_TEMPLATE_DFOOTER, DATE_FOOTER, dateheads, 230)%&gt;
+       &lt;%edittemplateinfo(row,_TEMPLATE_DFORMAT, FORMAT_DATE, datetime, 240)%&gt;
+       &lt;%edittemplateinfo(row,_TEMPLATE_TFORMAT, FORMAT_TIME, datetime, 250)%&gt;
+       &lt;%edittemplateinfo(row,_TEMPLATE_LOCALE, LOCALE, locale, 260)%&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;th colspan=&quot;2&quot;&gt;
+       &lt;%text(_TEMPLATE_IMAGE)%&gt; &lt;%helplink(templatepopups)%&gt;&lt;/th&gt;
+       &lt;%edittemplateinfo(row,_TEMPLATE_PCODE, POPUP_CODE, , 270)%&gt;
+       &lt;%edittemplateinfo(row,_TEMPLATE_ICODE, IMAGE_CODE, , 280)%&gt;
+       &lt;%edittemplateinfo(row,_TEMPLATE_MCODE, MEDIA_CODE, , 290)%&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;th colspan=&quot;2&quot;&gt;
+       &lt;%text(_TEMPLATE_SEARCH)%&gt;&lt;/th&gt;
+       &lt;%edittemplateinfo(row,_TEMPLATE_SHIGHLIGHT, SEARCH_HIGHLIGHT, highlight,300)%&gt;
+       &lt;%edittemplateinfo(row,_TEMPLATE_SNOTFOUND, SEARCH_NOTHINGFOUND, nothingfound,310)%&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;th colspan=&quot;2&quot;&gt;
+       &lt;%text(_TEMPLATE_PLUGIN_FIELDS)%&gt;&lt;/th&gt;
+       &lt;%edittemplateinfo(extratemplate,admin/default)%&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;th colspan=&quot;2&quot;&gt;
+       &lt;%text(_TEMPLATE_UPDATE)%&gt;&lt;/th&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;td&gt;&lt;%text(_TEMPLATE_UPDATE)%&gt;&lt;/td&gt;
+       &lt;td&gt;
+       &lt;input type=&quot;submit&quot; tabindex=&quot;800&quot; value=&quot;&lt;%text(_TEMPLATE_UPDATE_BTN)%&gt;&quot; onclick=&quot;return checkSubmit();&quot; /&gt;
+       &lt;input type=&quot;reset&quot; tabindex=&quot;810&quot; value=&quot;&lt;%text(_TEMPLATE_RESET_BTN)%&gt;&quot; /&gt;
+       &lt;/td&gt;
+       &lt;/tr&gt;
+       &lt;/table&gt;
+       &lt;/form&gt;
+       &lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinparttemplateoverview" id="skinparttemplateoverview"></a>
+<h1>Admin skins: templateoverview</h1>
+<p>
+This skinpart is used to templateoverview.
+</p>
+<p>
+Very basic buildup for a [Template overview]page page.
+</p>
+<pre>
+
+       &lt;%pagehead%&gt;
+       &lt;p&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=manage&quot;&gt;(&lt;%text(_BACKTOMANAGE)%&gt;)&lt;/a&gt;&lt;/p&gt;
+       &lt;h2&gt;&lt;%text(_TEMPLATE_TITLE)%&gt;&lt;/h2&gt;
+       
+       &lt;h3&gt;&lt;%text(_TEMPLATE_AVAILABLE_TITLE)%&gt;&lt;/h3&gt;
+       &lt;%templateoverview(admin/default)%&gt;
+       
+       &lt;h3&gt;&lt;%text(_TEMPLATE_NEW_TITLE)%&gt;&lt;/h3&gt;
+       &lt;form method=&quot;post&quot; action=&quot;&lt;%adminurl%&gt;index.php&quot;&gt;
+       &lt;p&gt;
+       &lt;input name=&quot;action&quot; value=&quot;templatenew&quot; type=&quot;hidden&quot; /&gt;
+       &lt;%ticket%&gt;
+       &lt;table frame=&quot;box&quot; rules=&quot;all&quot; summary=&quot;&lt;%text(_TEMPLATE_NEW_TITLE)%&gt;&quot;&gt;
+       &lt;tr&gt;
+       &lt;td&gt;&lt;%text(_TEMPLATE_NAME)%&gt; &lt;%helplink(shortnames)%&gt;&lt;/td&gt;
+       &lt;td&gt;&lt;input name=&quot;name&quot; tabindex=&quot;10010&quot; maxlength=&quot;20&quot; size=&quot;20&quot; /&gt;&lt;/td&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;td&gt;&lt;%text(_TEMPLATE_DESC)%&gt;&lt;/td&gt;
+       &lt;td&gt;&lt;input name=&quot;desc&quot; tabindex=&quot;10020&quot; maxlength=&quot;200&quot; size=&quot;50&quot; /&gt;&lt;/td&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+       &lt;td&gt;&lt;%text(_TEMPLATE_CREATE)%&gt;&lt;/td&gt;
+       &lt;td&gt;&lt;input type=&quot;submit&quot; tabindex=&quot;10030&quot; value=&quot;&lt;%text(_TEMPLATE_CREATE_BTN)%&gt;&quot; onclick=&quot;return checkSubmit();&quot; /&gt;&lt;/td&gt;
+       &lt;/tr&gt;
+       &lt;/table&gt;
+       &lt;/p&gt;
+       &lt;/form&gt;
+       &lt;%pagefoot%&gt;
+
+</pre>
+</div><div class="page">
+<a name="skinpartusermanagement" id="skinpartusermanagement"></a>
+<h1>Admin skins: usermanagement</h1>
+<p>
+This skinpart is used to usermanagement.
+</p>
+<p>
+Very basic buildup for a [Member Management]page page.
+</p>
+<pre>
+
+&lt;%pagehead%&gt;
+&lt;p&gt;&lt;a href=&quot;&lt;%adminurl%&gt;index.php?action=manage&quot;&gt;(&lt;%text(_BACKTOMANAGE)%&gt;)&lt;/a&gt;&lt;/p&gt;
+&lt;h2&gt;&lt;%text(_MEMBERS_TITLE)%&gt;&lt;/h2&gt;
+&lt;h3&gt;&lt;%text(_MEMBERS_CURRENT)%&gt;&lt;/h3&gt;
+&lt;%editmemberlist(admin/default)%&gt;
+&lt;h3&gt;&lt;%text(_MEMBERS_NEW)%&gt;&lt;/h3&gt;
+&lt;form method=&quot;post&quot; action=&quot;&lt;%adminurl%&gt;index.php&quot; name=&quot;memberedit&quot;&gt;
+&lt;div&gt;
+&lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;memberadd&quot; /&gt;
+&lt;%ticket%&gt;
+&lt;table&gt;&lt;tr&gt;
+&lt;th colspan=&quot;2&quot;&gt;&lt;%text(_MEMBERS_NEW)%&gt;&lt;/th&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;
+&lt;%text(_MEMBERS_DISPLAY)%&gt; &lt;%helplink(shortnames)%&gt;
+&lt;br /&gt;&lt;small&gt;&lt;%text(_MEMBERS_DISPLAY_INFO)%&gt;&lt;/small&gt;
+&lt;/td&gt;
+&lt;td&gt;&lt;input tabindex=&quot;10010&quot; name=&quot;name&quot; size=&quot;32&quot; maxlength=&quot;32&quot; /&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_MEMBERS_REALNAME)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;input name=&quot;realname&quot; tabindex=&quot;10020&quot; size=&quot;40&quot; maxlength=&quot;60&quot; /&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+   &lt;td&gt;&lt;%text(_MEMBERS_PWD)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;input name=&quot;password&quot; tabindex=&quot;10030&quot; size=&quot;16&quot; maxlength=&quot;40&quot; type=&quot;password&quot; /&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_MEMBERS_REPPWD)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;input name=&quot;repeatpassword&quot; tabindex=&quot;10035&quot; size=&quot;16&quot; maxlength=&quot;40&quot; type=&quot;password&quot; /&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_MEMBERS_EMAIL)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;input name=&quot;email&quot; tabindex=&quot;10040&quot; size=&quot;40&quot; maxlength=&quot;60&quot; /&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_MEMBERS_URL)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;input name=&quot;url&quot; tabindex=&quot;10050&quot; size=&quot;40&quot; maxlength=&quot;100&quot; /&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_MEMBERS_SUPERADMIN)%&gt; &lt;%helplink(superadmin)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;%inputyesno(admin,1,10060)%&gt; &lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_MEMBERS_CANLOGIN)%&gt; &lt;%helplink(canlogin)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;%inputyesno(canlogin,1,10070)%&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_MEMBERS_NOTES)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;input name=&quot;notes&quot; maxlength=&quot;100&quot; size=&quot;40&quot; tabindex=&quot;10080&quot; /&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;%text(_MEMBERS_NEW)%&gt;&lt;/td&gt;
+&lt;td&gt;&lt;input type=&quot;submit&quot; value=&quot;&lt;%text(_MEMBERS_NEW_BTN)%&gt;&quot; tabindex=&quot;10090&quot; onclick=&quot;return checkSubmit();&quot; /&gt;&lt;/td&gt;
+&lt;/tr&gt;&lt;/table&gt;
+&lt;/div&gt;
+&lt;/form&gt;&lt;%pagefoot%&gt;
+
+</pre>
+</div>
+
 </body>
 </html>
index aa5f95a..1817450 100644 (file)
@@ -2,7 +2,7 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en-us" xml:lang="en-us">
 <head>
-       <!-- $Id: history.html 1594 2011-11-01 20:18:32Z ftruscot $ -->
+       <!-- $Id: history.html 1721 2012-03-31 10:18:25Z sakamocchi $ -->
     <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
     <meta http-equiv="Content-Style-Type" content="text/css" />
     <meta http-equiv="Content-Script-Type" content="text/javascript" />
index dacac57..8ec61d6 100644 (file)
@@ -1,7 +1,7 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-       <!-- $Id: index.html 1457 2010-10-26 15:47:41Z ftruscot $ -->
+       <!-- $Id: index.html 1678 2012-02-26 07:31:36Z sakamocchi $ -->
        <title>Nucleus CMS - Manual</title>
        <link rel="stylesheet" type="text/css" href="styles/manual.css" />
 </head>
diff --git a/nucleus/forgotpassword.html b/nucleus/forgotpassword.html
deleted file mode 100644 (file)
index b10d854..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-       <!-- $Id: forgotpassword.html 1489 2010-12-22 23:00:39Z ftruscot $ -->
-       <title>Nucleus - Forgotten Password</title>
-       <style type="text/css">
-       <!--
-               @import url(styles/admin_original.css);
-       -->
-       </style>
-</head>
-<body>
-       <div class="header">
-       <h1>Nucleus CMS</h1>
-       </div>
-
-       <div id="content">
-
-               <h2>Forgot your password?</h2>
-
-               <p>Enter your username and email address below, and you'll be sent an e-mail with a link where you can choose a new password.</p>
-
-               <form method="post" action="../action.php">
-                       <p>
-                               <label for="nucleus_pf_username">Username:</label><br />
-                               <input type="text" name="name" id="nucleus_pf_username" /><br />
-
-                               <label for="nucleus_pf_email">Email address:</label><br />
-                               <input type="text" name="email" id="nucleus_pf_email" /><br />
-                               <br />
-
-                               <input type="hidden" name="action" value="forgotpassword" />
-                               <input type="submit" value="Send Activation Link" class="transparent" />
-                       </p>
-               </form>
-
-               <p>If you don't remember your exact username, contact the site administrator.</p>
-
-               <div class="foot">
-                       <a href="http://nucleuscms.org/">Nucleus &copy; 2001-2007 The Nucleus Group</a>
-               </div>
-
-       </div>
-
-</body>
-</html>
diff --git a/nucleus/forgotpassword.php b/nucleus/forgotpassword.php
new file mode 100644 (file)
index 0000000..e6b9963
--- /dev/null
@@ -0,0 +1,34 @@
+<?php
+/*
+ * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)
+ * Copyright (C) 2002-20011 The Nucleus Group
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * (see nucleus/documentation/index.html#license for more info)
+ */
+
+/**
+ * Registration form for new users
+ * @license http://nucleuscms.org/license.txt GNU General Public License
+ * @copyright Copyright (C) 2002-20011 The Nucleus Group
+ * @version $Id: forgotpassword.php 1888 2012-06-17 08:38:54Z sakamocchi $
+ */
+
+// we are using admin stuff:
+$CONF = array();
+$CONF['UsingAdminArea'] = 1;
+
+require_once "../config.php";
+include_libs('ACTION.php');
+
+if ( !Admin::initialize() )
+{
+       /* TODO: something to handling errors */
+       exit;
+}
+
+Admin::action('forgotpassword');
+exit;
index 47d65f4..47d6847 100644 (file)
@@ -1,30 +1,25 @@
-<script type="text/javascript">setMediaPopupURL('<%formdata(adminurl)%>');</script>
-
 <form method="post" action="<%formdata(adminurl)%>index.php">
- <div class="blogform">
-   <%ticket%>
-   <input type="hidden" name="action" value="additem" />
-   <input type="hidden" name="actiontype" value="addnow" />               
-   <input type="hidden" name="closed" value="0" />                
-   <input type="hidden" name="catid" value="<%formdata(catid)%>" />
-   <input type="submit" name="submit" value="<%text(_ADD_ADDITEM)%>" class="formbutton" />
-   <br />
-   <input type="text" 
-       name="title" 
-       id="inputtitle" 
-       onkeyup="storeCaret(this); updPreview('title');"
-       onclick="storeCaret(this);"
-       onselect="storeCaret(this);" 
-       onkeypress="shortCuts();"                          
-       class="formfield" size="45" value="" />
-   <br />
-   <textarea name="body" id="inputbody" class="formfield" cols="45" rows="12" 
-       onkeyup="storeCaret(this); updPreview('body');"
-       onclick="storeCaret(this);"
-       onselect="storeCaret(this);" 
-       onkeypress="shortCuts();"       ></textarea>
-   <br />
-   <span class="shortcuts">[ctrl+shift+A]&nbsp;=&nbsp;Link, [ctrl+shift+B]&nbsp;=&nbsp;Bold, [ctrl+shift+I]&nbsp;=&nbsp;Italic, [ctrl+shift+M]&nbsp;=&nbsp;Insert&nbsp;Media.</span>
-   <%callback(FormExtra,additemform)%> 
- </div>
+<div class="blogform">
+<%ticket%>
+<input type="hidden" name="action" value="additem" />
+<input type="hidden" name="actiontype" value="addnow" />
+<input type="hidden" name="closed" value="0" />
+<input type="hidden" name="catid" value="<%formdata(catid)%>" />
+<input type="submit" name="submit" value="<%text(_ADD_ADDITEM)%>" class="formbutton" /><br />
+<input type="text"
+ name="title"
+ id="inputtitle"
+ onkeyup="storeCaret(this); updPreview('title');"
+ onclick="storeCaret(this);"
+ onselect="storeCaret(this);"
+ onkeypress="shortCuts();"
+ class="formfield" size="45" value="" /><br />
+<textarea name="body" id="inputbody" class="formfield" cols="45" rows="12"
+ onkeyup="storeCaret(this); updPreview('body');"
+ onclick="storeCaret(this);"
+ onselect="storeCaret(this);"
+ onkeypress="shortCuts();"     ></textarea><br />
+<span class="shortcuts">[ctrl+shift+A]&nbsp;=&nbsp;Link, [ctrl+shift+B]&nbsp;=&nbsp;Bold, [ctrl+shift+I]&nbsp;=&nbsp;Italic, [ctrl+shift+M]&nbsp;=&nbsp;Insert&nbsp;Media.</span>
+<%callback(FormExtra,additemform)%>    
+</div>
 </form>
index f3d70ec..fed8f8d 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 /*
  * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)
- * Copyright (C) 2002-2012 The Nucleus Group
+ * Copyright (C) 2002-2009 The Nucleus Group
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
  */
 /**
  * @license http://nucleuscms.org/license.txt GNU General Public License
+<<<<<<< HEAD
  * @copyright Copyright (C) 2002-2012 The Nucleus Group
  * @version $Id: index.php 1748 2012-04-13 13:27:57Z sakamocchi $
+=======
+ * @copyright Copyright (C) 2002-2009 The Nucleus Group
+ * @version $Id: index.php 1888 2012-06-17 08:38:54Z sakamocchi $
+>>>>>>> skinnable-master
  */
 
 // we are using admin stuff:
@@ -78,7 +83,27 @@ if ( $bNeedsLogin )
        $action = 'showlogin';
 }
 
-sendContentType('text/html', 'admin-' . $action);
+if ( !Admin::initialize() )
+{
+       /* TODO: this is a bad way... */
+       sendContentType('text/html', 'admin-' . $action);
+       
+       $skin =& $manager->getSkin(0, 'AdminActions', 'AdminSkin');
+       if ( $bNeedsLogin )
+       {
+               $skin->parse('fileparse', $DIR_SKINS . 'admin/showlogin.skn');
+       }
+       else if ($action == 'adminskinieimport' )
+       {
+               Admin::action($action);
+       }
+       else
+       {
+               $skin->parse('importAdmin', $DIR_SKINS . 'admin/defaultimporter.skn');
+       }
+       /* TODO: something to handling errors */
+       exit;
+}
 
-$admin = new Admin();
-$admin->action($action);
+Admin::action($action);
+exit;
index 6b2c90b..7d3aaf1 100644 (file)
@@ -1,2 +1,2 @@
-Order allow,deny\r
-Deny from all\r
+Order allow,deny
+Deny from all
\ No newline at end of file
index 5ac9e75..a7b3363 100644 (file)
@@ -1,3 +1,4 @@
+<<<<<<< HEAD
 <?php\r
 \r
 /*\r
@@ -569,3 +570,585 @@ class Action
        }\r
 }\r
 \r
+=======
+<?php
+
+/*
+ * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)
+ * Copyright (C) 2002-2009 The Nucleus Group
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * (see nucleus/documentation/index.html#license for more info)
+ */
+/**
+ * Actions that can be called via action.php
+ *
+ * @license http://nucleuscms.org/license.txt GNU General Public License
+ * @copyright Copyright (C) 2002-2009 The Nucleus Group
+ * @version $Id: ACTION.php 1646 2012-01-29 10:47:32Z sakamocchi $
+ */
+class Action
+{
+       /**
+        * Action::__construct()
+        *  Constructor for an new ACTION object
+        * 
+        * @param       void
+        * @return      void
+        */
+       public function __construct()
+       {
+               return;
+       }
+       
+       /**
+        * Action::doAction()
+        *  Calls functions that handle an action called from action.php
+        * 
+        * @param       string  $action action type
+        * @return      mixed
+        */
+       public function doAction($action)
+       {
+               switch ( $action )
+               {
+                       case 'autodraft':
+                               return $this->autoDraft();
+                               break;
+                       case 'updateticket':
+                               return $this->updateTicket();
+                               break;
+                       case 'addcomment':
+                               return $this->addComment();
+                               break;
+                       case 'sendmessage':
+                               return $this->sendMessage();
+                               break;
+                       case 'createaccount':
+                               return $this->createAccount();
+                               break;
+                       case 'forgotpassword':
+                               return $this->forgotPassword();
+                               break;
+                       case 'votepositive':
+                               return $this->doKarma('pos');
+                               break;
+                       case 'votenegative':
+                               return $this->doKarma('neg');
+                               break;
+                       case 'plugin':
+                               return $this->callPlugin();
+                               break;
+                       default:
+                               doError(_ERROR_BADACTION);
+                               break;
+               }
+               return;
+       }
+       
+       /**
+        * Action::addComment()
+        * Adds a new comment to an item (if IP isn't banned)
+        * 
+        * @param       void
+        * @return      void
+        */
+       private function addComment()
+       {
+               global $CONF, $errormessage, $manager;
+               
+               $post['itemid'] = intPostVar('itemid');
+               $post['user']   = postVar('user');
+               $post['userid'] = postVar('userid');
+               $post['email']  = postVar('email');
+               $post['body']   = postVar('body');
+               $post['remember'] = intPostVar('remember');
+               
+               // begin if: "Remember Me" box checked
+               if ( $post['remember'] == 1 )
+               {
+                       $lifetime = time() + 2592000;
+                       setcookie($CONF['CookiePrefix'] . 'comment_user', $post['user'], $lifetime, '/', '', 0);
+                       setcookie($CONF['CookiePrefix'] . 'comment_userid', $post['userid'], $lifetime, '/', '', 0);
+                       setcookie($CONF['CookiePrefix'] . 'comment_email', $post['email'], $lifetime, '/', '', 0);
+               }
+               
+               $item =& $manager->getItem($post['itemid'], 0, 0);
+               $this->checkban($item['blogid']);
+               $blog =& $manager->getBlog($item['blogid']);
+               
+               // note: PreAddComment and PostAddComment gets called somewhere inside addComment
+               $comments = new Comments($post['itemid']);
+               $errormessage = $comments->addComment($blog->getCorrectTime(), $post);
+               
+               if ( $errormessage != '1' )
+               {
+                       // show error message using default skin for blo
+                       return array(
+                               'message'       => $errormessage,
+                               'skinid'        => $blog->getDefaultSkin()
+                       );
+               }
+               else
+               {
+                       // redirect when adding comments succeeded
+                       if ( postVar('url') )
+                       {
+                               redirect(postVar('url') );
+                       }
+                       else
+                       {
+                               $url = Link::create_item_link($post['itemid']);
+                               redirect($url);
+                       }
+               }
+               return;
+       }
+       
+       /**
+        * Action::sendMessage()
+        * Sends a message from the current member to the member given as argument
+        * 
+        * @param       void
+        * @return      void
+        */
+       private function sendMessage()
+       {
+               global $CONF, $member;
+               
+               $error = $this->validateMessage();
+               
+               if ( $error != '' )
+               {
+                       return array('message' => $error);
+               }
+               
+               if ( !$member->isLoggedIn() )
+               {
+                       $fromMail = postVar('frommail');
+                       $fromName = _MMAIL_FROMANON;
+               }
+               else
+               {
+                       $fromMail = $member->getEmail();
+                       $fromName = $member->getDisplayName();
+               }
+               
+               /* TODO: validation */
+               $memberid = postVar('memberid');
+               $tomem = new Member();
+               $tomem->readFromId($memberid);
+               
+               /* TODO: validation */
+               $message = postVar('message');
+               $message  = _MMAIL_MSG . ' ' . $fromName . "\n"
+                       . '(' . _MMAIL_FROMNUC. ' ' . $CONF['IndexURL'] .") \n\n"
+                       . _MMAIL_MAIL . " \n\n"
+                       . $message;
+               $message .= Notification::get_mail_footer();
+               
+               $title = _MMAIL_TITLE . ' ' . $fromName;
+               Notification::mail($tomem->getEmail(), $title, $message, $fromMail, i18n::get_current_charset());
+               
+               /* TODO: validation */
+               $url = postVar('url');
+               if ( empty($url) )
+               {
+                       $CONF['MemberURL'] = $CONF['IndexURL'];
+                       
+                       if ( $CONF['URLMode'] == 'pathinfo' )
+                       {
+                               $data = array(
+                                       'memberid'      => $tomem->getID(),
+                                       'name'          => $tomem->getDisplayName()
+                               );
+                               $url = Link::create_link('member', $data);
+                       }
+                       else
+                       {
+                               $url = $CONF['IndexURL'] . Link::create_member_link($tomem->getID());
+                       }
+               }
+               redirect($url );
+               
+               return;
+       }
+       
+       /**
+        * Action::validateMessage()
+        *  Checks if a mail to a member is allowed
+        *  Returns a string with the error message if the mail is disallowed
+        * 
+        * @param               void
+        * @return      String  Null character string
+        */
+       private function validateMessage()
+       {
+               global $CONF, $member, $manager;
+               
+               if ( !$CONF['AllowMemberMail'] )
+               {
+                       return _ERROR_MEMBERMAILDISABLED;
+               }
+               
+               if ( !$member->isLoggedIn() && !$CONF['NonmemberMail'] )
+               {
+                       return _ERROR_DISALLOWED;
+               }
+               
+               if ( !$member->isLoggedIn() && !Notification::address_validation(postVar('frommail')) )
+               {
+                       return _ERROR_BADMAILADDRESS;
+               }
+               
+               /*
+                * let plugins do verification (any plugin which thinks the comment is
+                * invalid can change 'error' to something other than '')
+                */
+               $result = '';
+               $data = array(
+                       'type'  => 'membermail',
+                       'error' => &$result
+               );
+               $manager->notify('ValidateForm', $data);
+               
+               return $result;
+       }
+       
+       /**
+        * Action::createAccount()
+        * Creates a new user account
+        *  
+        * @param       void
+        * @return      mixed
+        */
+       private function createAccount()
+       {
+               global $CONF, $manager;
+               
+               if ( array_key_exists('AllowMemberCreate', $CONF) && !$CONF['AllowMemberCreate'] )
+               {
+                       doError(_ERROR_MEMBERCREATEDISABLED);
+                       return;
+               }
+               
+               // evaluate content from FormExtra
+               $result = 1;
+               $data = array(
+                       'type'  => 'membermail',
+                       'error' => &$result
+               );
+               $manager->notify('ValidateForm', $data);
+               
+               if ( $result != 1 )
+               {
+                       return $result;
+               }
+               
+               // even though the member can not log in, set some random initial password. One never knows.
+               srand((double) microtime() * 1000000);
+               $initialPwd = md5(uniqid(rand(), TRUE) );
+               
+               // create member (non admin/can not login/no notes/random string as password)
+               $name           = Entity::shorten(postVar('name'), 32, '');
+               $relname        = postVar('realname');
+               $email          = postVar('email');
+               $url            = postVar('url');
+               
+               $r = Member::create($name, $realname, $initialPwd, $email, $url, 0, 0, '');
+               
+               if ( $r != 1 )
+               {
+                       return $r;
+               }
+               
+               // send message containing password.
+               $newmem = new Member();
+               $newmem->readFromName($name);
+               $newmem->sendActivationLink('register');
+
+               $data = array('member' => $newmem);
+               $manager->notify('PostRegister', $data);
+               
+               if ( postVar('desturl') )
+               {
+                       redirect(postVar('desturl') );
+               }
+               
+               return 1;
+       }
+       
+       /**
+        * Action::forgotPassword()
+        * Sends a new password
+        * 
+        * @param       void
+        * @return      void
+        */
+       private function forgotPassword()
+       {
+               $membername = trim(postVar('name') );
+               
+               if ( !Member::exists($membername) )
+               {
+                       doError(_ERROR_NOSUCHMEMBER);
+                       return;
+               }
+               
+               $mem = Member::createFromName($membername);
+               
+               // check if e-mail address is correct
+               $email = postVar('email');
+               if ( $mem->getEmail() != $email )
+               {
+                       doError(_ERROR_INCORRECTEMAIL);
+                       return;
+               }
+               
+               // send activation link
+               $mem->sendActivationLink('forgot');
+               
+               // redirection
+               $url = postVar('url');
+               if ( !empty($url) )
+               {
+                       redirect(postVar('url') );
+               }
+               else
+               {
+                       echo _MSG_ACTIVATION_SENT;
+                       echo "<br />"
+                           . "<br />"
+                           . "Return to <a href=\"{$CONF['IndexURL']}\" title=\"{$CONF['SiteName']}\">{$CONF['SiteName']}</a>\n";
+               }
+               
+               return;
+       }
+       
+       /**
+        * Action::doKarma()
+        * Handle karma votes
+        * 
+        * @param       string  $type   pos or neg
+        * @return      Void
+        */
+       private function doKarma($type)
+       {
+               global $itemid, $member, $CONF, $manager;
+               
+               // check if itemid exists
+               if ( !$manager->existsItem($itemid, 0, 0) )
+               {
+                       doError(_ERROR_NOSUCHITEM);
+                       return;
+               }
+               
+               $item =& $manager->getItem($itemid, 0, 0);
+               $this->checkban($item['blogid']);
+               
+               $karma =& $manager->getKarma($itemid);
+               
+               // check if not already voted
+               if ( !$karma->isVoteAllowed(serverVar('REMOTE_ADDR') ) )
+               {
+                       doError(_ERROR_VOTEDBEFORE);
+                       return;
+               }
+               
+               // check if item does allow voting
+               $item =& $manager->getItem($itemid, 0, 0);
+               
+               if ( $item['closed'] )
+               {
+                       doError(_ERROR_ITEMCLOSED);
+                       return;
+               }
+               
+               switch ( $type )
+               {
+                       case 'pos':
+                               $karma->votePositive();
+                       break;
+                       
+                       case 'neg':
+                               $karma->voteNegative();
+                       break;
+               }
+               
+               $blog =& $manager->getBlog($blogid);
+               
+               // send email to notification address, if any
+               if ( $blog->getNotifyAddress() && $blog->notifyOnVote() )
+               {
+                       $message = _NOTIFY_KV_MSG . ' ' . $itemid . "\n";
+                       $itemLink = Link::create_item_link((integer)$itemid);
+                       $temp = parse_url($itemLink);
+                       
+                       if ( !$temp['scheme'] )
+                       {
+                               $itemLink = $CONF['IndexURL'] . $itemLink;
+                       }
+                       
+                       $message .= $itemLink . "\n\n";
+                       
+                       if ( $member->isLoggedIn() )
+                       {
+                               $message .= _NOTIFY_MEMBER . ' ' . $member->getDisplayName() . ' (ID=' . $member->getID() . ")\n";
+                       }
+                       
+                       $message .= _NOTIFY_IP . ' ' . serverVar('REMOTE_ADDR') . "\n";
+                       $message .= _NOTIFY_HOST . ' ' .  gethostbyaddr(serverVar('REMOTE_ADDR'))  . "\n";
+                       $message .= _NOTIFY_VOTE . "\n " . $type . "\n";
+                       $message .= Notification::get_mail_footer();
+                       
+                       $subject = _NOTIFY_KV_TITLE . ' ' . strip_tags($item['title']) . ' (' . $itemid . ')';
+                       
+                       $from = $member->getNotifyFromMailAddress();
+                       
+                       Notification::mail($blog->getNotifyAddress(), $subject, $message, $from, i18n::get_current_charset());
+               }
+               
+               $refererUrl = serverVar('HTTP_REFERER');
+               
+               if ( !$refererUrl )
+               {
+                       $url = $itemLink;
+               }
+               else
+               {
+                       $url = $refererUrl;
+               }
+               
+               redirect($url);
+               return;
+       }
+       
+       /**
+        * Action::callPlugin()
+        * Calls a plugin action
+        * 
+        * @param       void
+        * @return      void
+        */
+       private function callPlugin()
+       {
+               global $manager;
+               
+               $name = requestVar('name');
+               $pluginName = "NP_{$name}";
+               $actionType = requestVar('type');
+               
+               // 1: check if plugin is installed
+               if ( !$manager->pluginInstalled($pluginName) )
+               {
+                       doError(_ERROR_NOSUCHPLUGIN);
+                       return;
+               }
+               
+               // 2: call plugin
+               $pluginObject =& $manager->getPlugin($pluginName);
+               if ( !$pluginObject )
+               {
+                       $error = 'Could not load plugin (see actionlog)';
+               }
+               else
+               {
+                       $error = $pluginObject->doAction($actionType);
+               }
+               
+               /*
+                * doAction returns error when:
+                *  - an error occurred (duh)
+                *  - no actions are allowed (doAction is not implemented)
+                */
+               if ( $error )
+               {
+                       doError($error);
+                       return;
+               }
+               
+               return;
+       }
+       
+       /**
+        * Action::checkban()
+        *  Checks if an IP or IP range is banned
+        * 
+        * @param       integer $blogid
+        * @return      void
+        */
+       private function checkban($blogid)
+       {
+               // check if banned
+               $ban = Ban::isBanned($blogid, serverVar('REMOTE_ADDR') );
+               
+               if ( $ban != 0 )
+               {
+                       doError(_ERROR_BANNED1 . $ban->iprange . _ERROR_BANNED2 . $ban->message . _ERROR_BANNED3);
+                       return;
+               }
+               
+               return;
+       }
+       
+       /**
+        * Action::updateTicket()
+        * Gets a new ticket
+        * 
+        * @param       void
+        * @return      boolean FALSE
+        */
+       private function updateTicket()
+       {
+               global $manager;
+               
+               if ( !$manager->checkTicket() )
+               {
+                       echo _ERROR . ':' . _ERROR_BADTICKET;
+               }
+               else
+               {
+                       echo $manager->getNewTicket();
+               }
+               
+               return FALSE;
+       }
+       
+       /**
+        * Action::autoDraft()
+        * Handles AutoSaveDraft
+        * 
+        * @param       void
+        * @return      boolean FALSE
+        */
+       private function autoDraft()
+       {
+               global $manager;
+               
+               if ( !$manager->checkTicket() )
+               {
+                       echo _ERROR . ':' . _ERROR_BADTICKET;
+               }
+               else
+               {
+                       $manager->loadClass('ITEM');
+                       $info = Item::createDraftFromRequest();
+                       
+                       if ( $info['status'] != 'error' )
+                       {
+                               echo $info['draftid'];
+                       }
+                       else
+                       {
+                               echo $info['message'];
+                       }
+               }
+               
+               return FALSE;
+       }
+}
+
+>>>>>>> skinnable-master
index a7c7055..8c4f1e0 100644 (file)
@@ -1,3 +1,4 @@
+<<<<<<< HEAD
 <?php\r
 /*\r
  * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)\r
@@ -100,3 +101,108 @@ class ActionLog
 }\r
 \r
 ?>\r
+=======
+<?php
+/*
+ * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)
+ * Copyright (C) 2002-2009 The Nucleus Group
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * (see nucleus/documentation/index.html#license for more info)
+ */
+/**
+ * Actionlog class for Nucleus
+ *
+ * @license http://nucleuscms.org/license.txt GNU General Public License
+ * @copyright Copyright (C) 2002-2009 The Nucleus Group
+ * @version $Id: ACTIONLOG.php 1822 2012-05-04 13:47:22Z sakamocchi $
+ */
+define('ERROR',1);             // only errors
+define('WARNING',2);   // errors and warnings
+define('INFO',3);              // info, errors and warnings
+define('DEBUG',4);             // everything
+$CONF['LogLevel'] = INFO;
+
+class ActionLog
+{
+       /**
+        * ActionLog::add()
+        * Method to add a message to the action log
+        * 
+        * @static
+        * @param       Integer $level  log level
+        * @param       String  $message        log message
+        * @return      
+        * 
+        */
+       function add($level, $message)
+       {
+               global $member, $CONF;
+               
+               if ( $CONF['LogLevel'] < $level )
+               {
+                       return;
+               }
+               
+               if ( $member && $member->isLoggedIn() )
+               {
+                       $message = "[" . $member->getDisplayName() . "] " . $message;
+               }
+               
+               $query = "INSERT INTO %s (timestamp, message) VALUES (%s, %s)";
+               $query = sprintf($query, sql_table('actionlog'), DB::formatDateTime(), DB::quoteValue($message));
+               DB::execute($query);
+               
+               self::trimLog();
+               return;
+       }
+       
+       /**
+         * (Static) Method to clear the whole action log
+         */
+       function clear() {
+               global $manager;
+
+               $query = sprintf('DELETE FROM %s', sql_table('actionlog'));
+
+               $data = array();
+               $manager->notify('ActionLogCleared', $data);
+
+               return DB::execute($query) !== FALSE;
+       }
+
+       /**
+         * (Static) Method to trim the action log (from over 500 back to 250 entries)
+         */
+       function trimLog() {
+               static $checked = 0;
+
+               // only check once per run
+               if ($checked) return;
+
+               // trim
+               $checked = 1;
+
+               $query = sprintf('SELECT COUNT(*) AS result FROM %s', sql_table('actionlog'));
+               $iTotal = DB::getValue($query);
+
+               // if size > 500, drop back to about 250
+               $iMaxSize = 500;
+               $iDropSize = 250;
+               if ($iTotal > $iMaxSize) {
+                       $query = sprintf('SELECT timestamp as result FROM %s ORDER BY timestamp DESC LIMIT %d,1',
+                               sql_table('actionlog'), intval($iDropSize));
+                       $tsChop = DB::getValue($query);
+                       $query = sprintf("DELETE FROM %s WHERE timestamp < '%s'", sql_table('actionlog'), $tsChop);
+                       DB::execute($query);
+               }
+
+       }
+
+}
+
+?>
+>>>>>>> skinnable-master
index 37cc913..db41cfc 100644 (file)
  *
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2012 The Nucleus Group
+<<<<<<< HEAD
  * @version $Id: ACTIONS.php 1863 2012-05-19 10:50:27Z sakamocchi $
+=======
+ * @version $Id: ACTIONS.php 1886 2012-06-17 08:27:27Z sakamocchi $
+>>>>>>> skinnable-master
  */
 
 class Actions extends BaseActions
@@ -69,10 +73,17 @@ class Actions extends BaseActions
        );
        
        /**
+<<<<<<< HEAD
         * Actions::$skin_type_friendly_names
         * friendly name for wrapped page types
         */
        static public $default_skin_types = array(
+=======
+        * Actions::$normal_skin_types
+        * friendly name for wrapped page types
+        */
+       static public $normal_skin_types = array(
+>>>>>>> skinnable-master
                'index'                 => _SKIN_PART_MAIN,
                'item'                  => _SKIN_PART_ITEM,
                'archivelist'   => _SKIN_PART_ALIST,
@@ -84,15 +95,25 @@ class Actions extends BaseActions
        );
        
        /**
+<<<<<<< HEAD
         * Actions::getAvailableSkinTypes()
+=======
+        * Actions::getNormalSkinTypes()
+>>>>>>> skinnable-master
         * 
         * @static
         * @param       void
         * @return      array   list of friendly names for page actions
         */
+<<<<<<< HEAD
        static public function getAvailableSkinTypes()
        {
                return self::$default_skin_types;
+=======
+       static public function getNormalSkinTypes()
+       {
+               return self::$normal_skin_types;
+>>>>>>> skinnable-master
        }
        
        /**
@@ -405,7 +426,11 @@ class Actions extends BaseActions
                $params = func_get_args();
                array_shift($params);
                
+<<<<<<< HEAD
                return call_user_func_array(array(&$plugin, 'doIf'), $params);
+=======
+               return call_user_func_array(array($plugin, 'doIf'), $params);
+>>>>>>> skinnable-master
        }
        
        /**
@@ -552,8 +577,13 @@ class Actions extends BaseActions
                // TODO: Move request uri to linkparams. this is ugly. sorry for that.
                $startpos       = (integer) $startpos;
                $parsed         = parse_url(serverVar('REQUEST_URI'));
+<<<<<<< HEAD
                $path           = $parsed['path'];
                $parsed         = $parsed['query'];
+=======
+               $path           = ( in_array('path', $parsed) ) ? $parsed['path'] : '';
+               $parsed         = ( in_array('query', $parsed) ) ? $parsed['query'] : '';
+>>>>>>> skinnable-master
                $url            = '';
                
                if ( $direction == 'prev' )
@@ -709,7 +739,12 @@ class Actions extends BaseActions
        private function preBlogContent($type, &$blog)
        {
                global $manager;
+<<<<<<< HEAD
                $manager->notify('PreBlogContent',array('blog' => &$blog, 'type' => $type));
+=======
+               $data = array('blog' => &$blog, 'type' => $type);
+               $manager->notify('PreBlogContent', $data);
+>>>>>>> skinnable-master
                return;
        }
 
@@ -724,7 +759,12 @@ class Actions extends BaseActions
        private function postBlogContent($type, &$blog)
        {
                global $manager;
+<<<<<<< HEAD
                $manager->notify('PostBlogContent', array('blog' => &$blog, 'type' => $type));
+=======
+               $data = array('blog' => &$blog, 'type' => $type);
+               $manager->notify('PostBlogContent', $data);
+>>>>>>> skinnable-master
                return;
        }
        
@@ -813,6 +853,7 @@ class Actions extends BaseActions
         * Actions::parse_archivedate()
         * %archivedate(locale,date format)%
         * 
+<<<<<<< HEAD
         * @param       string  $locale
         * @return      void
         */
@@ -832,6 +873,15 @@ class Actions extends BaseActions
                }
                 */
                
+=======
+        * @param       deprecated      $locale 
+        * @return      void
+        */
+       public function parse_archivedate($locale='')
+       {
+               global $archive;
+               
+>>>>>>> skinnable-master
                // get archive date
                sscanf($archive,'%d-%d-%d',$y,$m,$d);
                
@@ -1042,7 +1092,12 @@ class Actions extends BaseActions
        public function parse_callback($eventName, $type)
        {
                global $manager;
+<<<<<<< HEAD
                $manager->notify($eventName, array('type' => $type));
+=======
+               $data = array('type' => $type);
+               $manager->notify($eventName, $data);
+>>>>>>> skinnable-master
                return;
        }
        
@@ -1221,7 +1276,11 @@ class Actions extends BaseActions
                global $manager, $blog, $highlight, $itemid;
                
                $template =& $manager->getTemplate($template);
+<<<<<<< HEAD
                $item =& $manager->getItem($itemid, 0, 0);
+=======
+               $item =& $manager->getitem($itemid, 0, 0);
+>>>>>>> skinnable-master
                
                // create parser object & action handler
                $handler = new ItemActions($blog);
@@ -1422,7 +1481,11 @@ class Actions extends BaseActions
        public function parse_itemtitle($format = '')
        {
                global $manager, $itemid;
+<<<<<<< HEAD
                $item =& $manager->getItem($itemid,0,0);
+=======
+               $item =& $manager->getItem($itemid, 1, 1);
+>>>>>>> skinnable-master
                
                switch ( $format )
                {
@@ -1874,7 +1937,11 @@ class Actions extends BaseActions
                // add skin type on front
                array_unshift($params, $this->skintype);
                
+<<<<<<< HEAD
                call_user_func_array(array(&$plugin,'doSkinVar'), $params);
+=======
+               call_user_func_array(array($plugin,'doSkinVar'), $params);
+>>>>>>> skinnable-master
                return;
        }
        
@@ -2204,6 +2271,7 @@ class Actions extends BaseActions
         * @param       string  $template       name of template
         * @return      void
         */
+<<<<<<< HEAD
        public function parse_sticky($itemnumber = 0, $template = '')
        {
                global $manager;
@@ -2215,6 +2283,21 @@ class Actions extends BaseActions
                $this->preBlogContent('sticky',$b);
                $this->amountfound = $b->readLogFromList($itemarray, $template);
                $this->postBlogContent('sticky',$b);
+=======
+       public function parse_sticky($itemid = 0, $template = '')
+       {
+               global $manager;
+               
+               $itemid = (integer) $itemid;
+               $itemarray = array($itemid);
+               
+               $item =& $manager->getItem($post['itemid'], 1, 1);
+               $blog =& $manager->getBlog($item['blogid']);
+               
+               $this->preBlogContent('sticky', $blog);
+               $this->amountfound = $blog->readLogFromList($itemarray, $template);
+               $this->postBlogContent('sticky', $blog);
+>>>>>>> skinnable-master
                return;
        }
 }
index 747c599..2bbcc40 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/*
+/**
  * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)
  * Copyright (C) 2002-2009 The Nucleus Group
  *
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2009 The Nucleus Group
  * @version $Id: ADMIN.php 1661 2012-02-12 11:55:39Z sakamocchi $
-
  */
 
 if ( !function_exists('requestVar') ) exit;
 require_once dirname(__FILE__) . '/showlist.php';
 
-/**
- * Builds the admin area and executes admin actions
- */
 class Admin
 {
+<<<<<<< HEAD
        private $xml_version_info = '1.0';
        private $formal_public_identifier = '-//W3C//DTD XHTML 1.0 Strict//EN';
        private $system_identifier = 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd';
@@ -341,6 +338,355 @@ class Admin
         * @return      void
         */
        public function action_itemlist($blogid = '')
+=======
+       static private $skin;
+       
+       static public $action;
+       static public $aOptions;
+       static public $blog;
+       static public $contents;
+       static public $extrahead;
+       static public $headMess;
+       static public $passvar;
+       
+       static private $skinless_actions = array(
+               'plugindeleteconfirm',
+               'pluginoptionsupdate',
+               'blogsettingsupdate',
+               'settingsupdate',
+               'addnewlog2',
+               'additem',
+               'banlistnewfromitem',
+               'itemdeleteconfirm',
+               'itemupdate',
+               'changemembersettings',
+               'clearactionlog',
+               'memberedit',
+               'login',
+               
+               'skinremovetypeconfirm',
+               'skinclone',
+               'skindeleteconfirm',
+               'skinnew',
+               'skineditgeneral',
+               'skinupdate',
+               
+               'skinieexport',
+               
+               'templateupdate',
+               'templatedeleteconfirm',
+               'templatenew',
+               'templateclone',
+               
+               'adminskinremovetypeconfirm',
+               'adminskinclone',
+               'adminskindeleteconfirm',
+               'adminskinnew',
+               'adminskineditgeneral',
+               'adminskinupdate',
+               
+               'adminskinieexport',
+               
+               'admintemplateupdate',
+               'admintemplatedeleteconfirm',
+               'admintemplatenew',
+               'admintemplateclone'
+       );
+       
+       static private $ticketless_actions = array(
+               'showlogin',
+               'login',
+               'overview',
+               'itemlist',
+               'blogcommentlist',
+               'bookmarklet',
+               'blogsettings',
+               'banlist',
+               'createaccount',
+               'deleteblog',
+               'editmembersettings',
+               'createaccount',
+               'forgotpassword',
+               'browseowncomments',
+               'createitem',
+               'browseownitems',
+               'itemedit',
+               'itemmove',
+               'categoryedit',
+               'categorydelete',
+               'manage',
+               'actionlog',
+               'settingsedit',
+               'backupoverview',
+               'pluginlist',
+               'createnewlog',
+               'usermanagement',
+               'itemcommentlist',
+               'commentedit',
+               'commentdelete',
+               'banlistnewfromitem',
+               'banlistdelete',
+               'itemdelete',
+               'manageteam',
+               'teamdelete',
+               'banlistnew',
+               'memberedit',
+               'memberdelete',
+               'pluginhelp',
+               'pluginoptions',
+               'plugindelete',
+               
+               'activate',
+               'systemoverview',
+               'activatesetpwd',
+               
+               'skinoverview',
+               'skinclone',
+               'skindelete',
+               'skinedit',
+               'skinedittype',
+               'skinnew',
+               'skinremovetype',
+               
+               'skinieoverview',
+               
+               'templateoverview',
+               'templateclone',
+               'templateedit',
+               'templatedelete',
+               
+               'adminskinoverview',
+               'adminskinclone',
+               'adminskindelete',
+               'adminskinedit',
+               'adminskinedittype',
+               'adminskinnew',
+               'adminskinremovetype',
+               
+               'adminskinieoverview',
+               
+               'admintemplateoverview',
+               'admintemplateclone',
+               'admintemplateedit',
+               'admintemplatedelete'
+       );
+       
+       /**
+        * NOTE: This is for condition of admin/normal skin actions
+        */
+       static public $adminskin_actions = array(
+               /* ticketless */
+               'adminskinoverview',
+               'adminskinclone',
+               'adminskindelete',
+               'adminskinedit',
+               'adminskinedittype',
+               'adminskinnew',
+               'adminskinremovetype',
+               
+               'adminskinieoverview',
+               
+               'admintemplateoverview',
+               'admintemplateclone',
+               'admintemplateedit',
+               'admintemplatedelete',
+               
+               /* ticket needed */
+               'adminskineditgeneral',
+               'adminskinupdate',
+               'adminskindeleteconfirm',
+               'adminskinremovetypeconfirm',
+               
+               'adminskinieoverview',
+               'adminskiniedoimport',
+               'adminskinieexport',
+               'adminskinieimport',
+               
+               'admintemplatenew',
+               'admintemplatedeleteconfirm',
+               'admintemplateupdate'
+       );
+       
+       static public function initialize()
+       {
+               global $CONF, $manager, $member;
+               
+               /* NOTE: 1. decide which skinid to use */
+               $skinid = $CONF['AdminSkin'];
+               if ( $member->isLoggedIn() )
+               {
+                       $memskin = $member->getAdminSkin();
+                       if ( $memskin && Skin::existsID($memskin))
+                       {
+                               $skinid = $memskin;
+                       }
+               }
+               
+               /* NOTE: 2. make an instance of skin object */
+               if ( !Skin::existsID($skinid) )
+               {
+                       return FALSE;
+               }
+               
+               /* NOTE: 3. initializing each members */
+               self::$skin                     =& $manager->getSkin($skinid, 'AdminActions', 'AdminSkin');
+               self::$action           = '';
+               self::$extrahead        = '';
+               self::$passvar          = '';
+               self::$headMess         = '';
+               self::$aOptions         = '';
+               return TRUE;
+       }
+       
+       /**
+        * Admin::action()
+        * Executes an action
+        *
+        * @param       string  $action action to be performed
+        * @return      void
+        */
+       static public function action($action)
+       {
+               global $CONF, $manager, $member;
+               
+               /* 1. decide action name */
+               $customAction = postvar('customaction');
+               if ( empty($customAction) )
+               {
+                       $alias = array(
+                               'login' => 'overview',
+                               ''              => 'overview',
+                       );
+               }
+               else
+               {
+                       $alias = array(
+                               'login' => $customAction,
+                               ''              => $customAction
+                       );
+               }
+               if ( array_key_exists($action, $alias) && isset($alias[$action]) )
+               {
+                       $action = $alias[$action];
+               }
+               $method_name = "action_{$action}";
+               self::$action = strtolower($action);
+               
+               /* 2. check ticket-needed action */
+               if ( !in_array(self::$action, self::$ticketless_actions) && !$manager->checkTicket() )
+               {
+                       self::error(_ERROR_BADTICKET);
+                       return;
+               }
+               
+               /* 3. parse according to the action */
+               else if ( method_exists('Admin', $method_name) )
+               {
+                       call_user_func(array(__CLASS__, $method_name));
+                       return;
+               }
+               /* 4. parse special admin skin */
+               elseif ( in_array(self::$action, self::$skinless_actions) )
+               {
+                       /* TODO: need to be implemented or not?
+                       self::action_parseSpecialskin();
+                       */
+               }
+               else
+               {
+                       self::error(_BADACTION . ENTITY::hsc($action));
+                       return;
+               }
+               
+               return;
+       }
+       
+       /**
+        * Action::action_showlogin()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_showlogin()
+       {
+               global $error;
+               self::action_login($error);
+               return;
+       }
+       
+       /**
+        * Action::action_login()
+        * 
+        * @param       string  $msg            message for pageheader
+        * @param       integer $passvars       ???
+        */
+       static private function action_login($msg = '', $passvars = 1)
+       {
+               global $member;
+               
+               // skip to overview when allowed
+               if ( $member->isLoggedIn() && $member->canLogin() )
+               {
+                       self::action_overview();
+                       return;
+               }
+               
+               /* TODO: needless variable??? */
+               self::$passvar = $passvars;
+               if ( $msg )
+               {
+                       self::$headMess = $msg;
+               }
+               
+               self::$skin->parse('showlogin');
+       }
+       
+       /**
+        * Action::action_overview()
+        * provides a screen with the overview of the actions available
+        * 
+        * @param       string  $msg    message for pageheader
+        * @return      void
+        */
+       static private function action_overview($msg = '')
+       {
+               if ( $msg )
+               {
+                       self::$headMess = $msg;
+               }
+               
+               self::$skin->parse('overview');
+               return;
+       }
+       
+       /**
+        * Admin::action_manage()
+        * 
+        * @param       string  $msg    message for pageheader
+        * @retrn       void
+        */
+       static private function action_manage($msg = '')
+       {
+               global $member;
+               
+               if ( $msg )
+               {
+                       self::$headMess = $msg;
+               }
+               $member->isAdmin() or self::disallow();
+               
+               self::$skin->parse('manage');
+               return;
+       }
+       
+       /**
+        * Action::action_itemlist()
+        * 
+        * @param       integer id for weblod
+        * @return      void
+        */
+       static private function action_itemlist($blogid = '')
+>>>>>>> skinnable-master
        {
                global $member, $manager, $CONF;
                
@@ -349,6 +695,7 @@ class Admin
                        $blogid = intRequestVar('blogid');
                }
                
+<<<<<<< HEAD
                $member->teamRights($blogid) or $member->isAdmin() or $this->disallow();
                
                $this->pagehead();
@@ -970,217 +1317,296 @@ class Admin
                        }
                }
                echo "</select>\n";
+=======
+               $member->teamRights($blogid) or $member->isAdmin() or self::disallow();
+               
+               self::$skin->parse('itemlist');
                return;
        }
        
        /**
-        * Admin::action_browseownitems()
+        * Action::action_batchitem()
         * 
         * @param       void
         * @return      void
         */
-       public function action_browseownitems()
+       static private function action_batchitem()
        {
-               global $member, $manager, $CONF;
+               global $member, $manager;
                
-               $this->pagehead();
+               $member->isLoggedIn() or self::disallow();
                
-               echo '<p><a href="index.php?action=overview">(' . _BACKHOME . ")</a></p>\n";
-               echo '<h2>' . _ITEMLIST_YOUR . "</h2>\n";
+               $selected       = requestIntArray('batch');
+               $action         = requestVar('batchaction');
                
-               // start index
-               if ( postVar('start') )
-               {
-                       $start = intPostVar('start');
-               }
-               else
+               if ( !is_array($selected) || sizeof($selected) == 0 )
                {
-                       $start = 0;
+                       self::error(_BATCH_NOSELECTION);
+                       return;
                }
                
-               // amount of items to show
-               if ( postVar('amount') )
+               // On move: when no destination blog/category chosen, show choice now
+               $destCatid = intRequestVar('destcatid');
+               if ( ($action == 'move') && (!$manager->existsCategory($destCatid)) )
                {
-                       $amount = intPostVar('amount');
+                       self::batchMoveSelectDestination('item', $selected);
                }
-               else
+               
+               // On delete: check if confirmation has been given
+               if ( ($action == 'delete') && (requestVar('confirmation') != 'yes') )
                {
-                       $amount = (integer) $CONF['DefaultListSize'];
-                       if ( $amount < 1 )
-                       {
-                               $amount = 10;
-                       }
+                       self::batchAskDeleteConfirmation('item', $selected);
                }
                
-               $search = postVar('search');    // search through items
+               self::$skin->parse('batchitem');
+               return;
+       }
+       
+       /**
+        * Action::action_batchcomment()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_batchcomment()
+       {
+               global $member;
                
-               $query = 'SELECT bshortname, cname, mname, ititle, ibody, idraft, inumber, itime'
-                      . ' FROM '.sql_table('item').', '.sql_table('blog') . ', '.sql_table('member') . ', '.sql_table('category')
-                      . ' WHERE iauthor='. $member->getID() .' and iauthor=mnumber and iblog=bnumber and icat=catid';
+               $member->isLoggedIn() or self::disallow();
                
-               if ( $search )
+               $selected       = requestIntArray('batch');
+               $action         = requestVar('batchaction');
+               
+               // Show error when no items were selected
+               if ( !is_array($selected) || sizeof($selected) == 0 )
                {
-                       $query .= " and ((ititle LIKE " . DB::quoteValue('%'.$search.'%') . ") or (ibody LIKE " . DB::quoteValue('%'.$search.'%') . ") or (imore LIKE " . DB::quoteValue('%'.$search.'%') . "))";
+                       self::error(_BATCH_NOSELECTION);
+                       return;
                }
                
-               $query .= ' ORDER BY itime DESC'
-                       . " LIMIT $start, $amount";
-               
-               $template['content'] = 'itemlist';
-               $template['now'] = time();
-               
-               $manager->loadClass("ENCAPSULATE");
-               $navList = new NavList('browseownitems', $start, $amount, 0, 1000, /*$blogid*/ 0, $search, 0);
-               $navList->showBatchList('item',$query,'table',$template);
+               // On delete: check if confirmation has been given
+               if ( ($action == 'delete') && (requestVar('confirmation') != 'yes') )
+               {
+                       self::batchAskDeleteConfirmation('comment', $selected);
+               }
                
-               $this->pagefoot();
+               self::$skin->parse('batchcomment');
                return;
        }
        
        /**
-        * Admin::action_itemcommentlist()
+        * Admin::action_batchmember()
         * 
-        * Show all the comments for a given item
-        * @param       integer $itemid ID for item
+        * @param       void
         * @return      void
         */
-       public function action_itemcommentlist($itemid = '')
+       static private function action_batchmember()
        {
-               global $member, $manager, $CONF;
-               
-               if ( $itemid == '' )
-               {
-                       $itemid = intRequestVar('itemid');
-               }
-               
-               // only allow if user is allowed to alter item
-               $member->canAlterItem($itemid) or $this->disallow();
+               global $member;
                
-               $blogid = getBlogIdFromItemId($itemid);
+               ($member->isLoggedIn() && $member->isAdmin()) or self::disallow();
                
-               $this->pagehead();
+               $selected       = requestIntArray('batch');
+               $action         = requestVar('batchaction');
                
-               // start index
-               if ( postVar('start') )
-               {
-                       $start = intPostVar('start');
-               }
-               else
+               // Show error when no members selected
+               if ( !is_array($selected) || sizeof($selected) == 0 )
                {
-                       $start = 0;
+                       self::error(_BATCH_NOSELECTION);
+                       return;
                }
                
-               // amount of items to show
-               if ( postVar('amount') )
-               {
-                       $amount = intPostVar('amount');
-               }
-               else
+               // On delete: check if confirmation has been given
+               if ( ($action == 'delete') && (requestVar('confirmation') != 'yes') )
                {
-                       $amount = (integer) $CONF['DefaultListSize'];
-                       if ( $amount < 1 )
-                       {
-                               $amount = 10;
-                       }
+                       self::batchAskDeleteConfirmation('member',$selected);
                }
                
-               $search = postVar('search');
+               self::$skin->parse('batchmember');
+               return;
+       }
+       
+       /**
+        * Admin::action_batchteam()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_batchteam()
+       {
+               global $member;
                
-               echo '<p>(<a href="index.php?action=itemlist&amp;blogid=' . $blogid . '">' . _BACKTOOVERVIEW . "</a>)</p>\n";
-               echo '<h2>',_COMMENTS,'</h2>';
+               $blogid = intRequestVar('blogid');
                
-               $query = 'SELECT cbody, cuser, cmail, cemail, mname, ctime, chost, cnumber, cip, citem FROM ' . sql_table('comment') . ' LEFT OUTER JOIN ' . sql_table('member') . ' ON mnumber = cmember WHERE citem = ' . $itemid;
+               ($member->isLoggedIn() && $member->blogAdminRights($blogid)) or self::disallow();
                
-               if ( $search )
+               $selected       = requestIntArray('batch');
+               $action         = requestVar('batchaction');
+               
+               if ( !is_array($selected) || sizeof($selected) == 0 )
                {
-                       $query .= " and cbody LIKE " . DB::quoteValue('%'.$search.'%');
+                       self::error(_BATCH_NOSELECTION);
+                       return;
                }
                
-               $query .= ' ORDER BY ctime ASC'
-                       . " LIMIT $start,$amount";
-               
-               $template['content'] = 'commentlist';
-               $template['canAddBan'] = $member->blogAdminRights(getBlogIDFromItemID($itemid));
-               
-               $manager->loadClass("ENCAPSULATE");
-               $navList = new NavList('itemcommentlist', $start, $amount, 0, 1000, 0, $search, $itemid);
-               $navList->showBatchList('comment',$query,'table',$template,_NOCOMMENTS);
+               // On delete: check if confirmation has been given
+               if ( ($action == 'delete') && (requestVar('confirmation') != 'yes') )
+               {
+                       self::batchAskDeleteConfirmation('team',$selected);
+               }
                
-               $this->pagefoot();
+               self::$skin->parse('batchteam');
                return;
        }
        
        /**
-        * Admin::action_browseowncomments()
-        * Browse own comments
+        * Admin::action_batchcategory()
         * 
         * @param       void
         * @return      void
         */
-       public function action_browseowncomments()
+       static private function action_batchcategory()
        {
-               global $member, $manager, $CONF;
+               global $member, $manager;
                
-               // start index
-               if ( postVar('start') )
-               {
-                       $start = intPostVar('start');
-               }
-               else
+               $member->isLoggedIn() or self::disallow();
+               
+               $selected       = requestIntArray('batch');
+               $action         = requestVar('batchaction');
+               
+               if ( !is_array($selected) || sizeof($selected) == 0 )
                {
-                       $start = 0;
+                       self::error(_BATCH_NOSELECTION);
+                       return;
                }
                
-               // amount of items to show
-               if ( postVar('amount') )
+               // On move: when no destination blog chosen, show choice now
+               $destBlogId = intRequestVar('destblogid');
+               if ( ($action == 'move') && (!$manager->existsBlogID($destBlogId)) )
                {
-                       $amount = intPostVar('amount');
+                       self::batchMoveCategorySelectDestination('category', $selected);
                }
-               else
+               
+               // On delete: check if confirmation has been given
+               if ( ($action == 'delete') && (requestVar('confirmation') != 'yes') )
                {
-                       $amount = intval($CONF['DefaultListSize']);
-                       if ( $amount < 1 )
-                       {
-                               $amount = 10;
-                       }
+                       self::batchAskDeleteConfirmation('category', $selected);
                }
                
-               $search = postVar('search');
-               
-               $query =  'SELECT cbody, cuser, cmail, mname, ctime, chost, cnumber, cip, citem FROM '.sql_table('comment').' LEFT OUTER JOIN '.sql_table('member').' ON mnumber=cmember WHERE cmember=' . $member->getID();
+               self::$skin->parse('batchcategory');
+               return;
+       }
+       
+       /**
+        * Admin::batchMoveSelectDestination()
+        * 
+        * @param       string  $type   type of batch action
+        * @param       integer $ids    needless???
+        * @return      void
+        * 
+        * TODO: remove needless argument
+        */
+       static private function batchMoveSelectDestination($type, $ids)
+       {
+               $_POST['batchmove'] = $type;
+               self::$skin->parse('batchmove');
+               return;
+       }
+       
+       /**
+        * Admin::batchMoveCategorySelectDestination()
+        * 
+        * @param       string  $type   type of batch action
+        * @param       integer $ids    needless???
+        * @return      void
+        * 
+        * TODO: remove needless argument
+        */
+       static private function batchMoveCategorySelectDestination($type, $ids)
+       {
+               $_POST['batchmove'] = $type;
+               global $manager;
+               self::$skin->parse('batchmovecat');
+               return;
+       }
+       
+       /**
+        * Admin::batchAskDeleteConfirmation()
+        * 
+        * @param       string  $type   type of batch action
+        * @param       integer $ids    needless???
+        * @return      void
+        * 
+        * TODO: remove needless argument
+        */
+       static private function batchAskDeleteConfirmation($type, $ids)
+       {
+               self::$skin->parse('batchdelete');
+               return;
+       }
+       
+       /**
+        * Admin::action_browseownitems()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_browseownitems()
+       {
+               global $member, $manager, $CONF;
                
-               if ( $search )
+               self::$skin->parse('browseownitems');
+               return;
+       }
+       
+       /**
+        * Admin::action_itemcommentlist()
+        * Show all the comments for a given item
+        * 
+        * @param       integer $itemid ID for item
+        * @return      void
+        */
+       static private function action_itemcommentlist($itemid = '')
+       {
+               global $member, $manager, $CONF;
+               
+               if ( $itemid == '' )
                {
-                       $query .= " and cbody LIKE " . DB::quoteValue('%'.$search.'%');
+                       $itemid = intRequestVar('itemid');
                }
                
-               $query .= ' ORDER BY ctime DESC'
-                       . " LIMIT $start,$amount";
-               
-               $this->pagehead();
-               
-               echo '<p><a href="index.php?action=overview">(' . _BACKHOME . ")</a></p>\n";
-               echo '<h2>' . _COMMENTS_YOUR . "</h2>\n";
-               
-               $template['content'] = 'commentlist';
-               $template['canAddBan'] = 0; // doesn't make sense to allow banning yourself
+               // only allow if user is allowed to alter item
+               $member->canAlterItem($itemid) or self::disallow();
                
-               $manager->loadClass("ENCAPSULATE");
-               $navList = new NavList('browseowncomments', $start, $amount, 0, 1000, 0, $search, 0);
-               $navList->showBatchList('comment',$query,'table',$template,_NOCOMMENTS_YOUR);
+               $item =& $manager->getItem($itemid, 1, 1);
+               $_REQUEST['itemid'] = $item['itemid'];
+               $_REQUEST['blogid'] = $item['blogid'];
                
-               $this->pagefoot();
+               self::$skin->parse('itemcommentlist');
                return;
        }
        
        /**
-        * Admin::action_blogcommentlist()
+        * Admin::action_browseowncomments()
+        * Browse own comments
         * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_browseowncomments()
+       {
+               self::$skin->parse('browseowncomments');
+               return;
+       }
+       
+       /**
+        * Admin::action_blogcommentlist()
         * Browse all comments for a weblog
+        * 
         * @param       integer $blogid ID for weblog
         * @return      void
         */
-       function action_blogcommentlist($blogid = '')
+       static private function action_blogcommentlist($blogid = '')
        {
                global $member, $manager, $CONF;
                
@@ -1193,59 +1619,77 @@ class Admin
                        $blogid = intval($blogid);
                }
                
-               $member->teamRights($blogid) or $member->isAdmin() or $this->disallow();
+               $member->teamRights($blogid) or $member->isAdmin() or self::disallow();
                
-               // start index
-               if ( postVar('start') )
-               {
-                       $start = intPostVar('start');
-               }
-               else
-               {
-                       $start = 0;
-               }
+               /* TODO: we consider to use the other way insterad of this */
+               $_REQUEST['blogid'] = $blogid;
                
-               // amount of items to show
-               if ( postVar('amount') )
-               {
-                       $amount = intPostVar('amount');
-               }
-               else
+               self::$skin->parse('blogcommentlist');
+               return;
+       }
+       
+       /**
+        * Admin::action_createaccount()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_createaccount()
+       {
+               global $CONF;
+               
+               if ( $CONF['AllowMemberCreate'] != 1 )
                {
-                       $amount = intval($CONF['DefaultListSize']);
-                       if ( $amount < 1 )
-                       {
-                               $amount = 10;
-                       }
+                       self::$skin->parse('createaccountdisable');
+                       return;
                }
                
-               $search = postVar('search');            // search through comments
+               $name = '';
+               $realname ='';
+               $email = '';
+               $url = '';
                
-               $query =  'SELECT cbody, cuser, cemail, cmail, mname, ctime, chost, cnumber, cip, citem FROM '.sql_table('comment').' LEFT OUTER JOIN '.sql_table('member').' ON mnumber=cmember WHERE cblog=' . intval($blogid);
+               $contents = array(
+                       'name'          => '',
+                       'realname'      => '',
+                       'email'         => '',
+                       'url'           => ''
+               );
                
-               if ( $search != '' )
+               if ( array_key_exists('showform', $_POST) && $_POST['showform'] == 1 )
                {
-                       $query .= " and cbody LIKE " . DB::quoteValue('%'.$search.'%');
+                       $action = new Action();
+                       $message = $action->createAccount();
+                       if ( $message === 1 )
+                       {
+                               self::$headMess = $message;
+                               self::$skin->parse('createaccountsuccess');
+                               return;
+                       }
+                       
+                       /* TODO: validation */
+                       if ( array_key_exists('name', $_POST) )
+                       {
+                               $contents['name'] = $_POST['name'];
+                       }
+                       if ( array_key_exists('realname', $_POST) )
+                       {
+                               $contents['realname'] = $_POST['realname'];
+                       }
+                       if ( array_key_exists('email', $_POST) )
+                       {
+                               $contents['email'] = $_POST['email'];
+                       }
+                       if ( array_key_exists('url', $_POST) )
+                       {
+                               $contents['url'] = $_POST['url'];
+                       }
+                       
+                       self::$contents = $contents;
+                       
                }
                
-               $query .= ' ORDER BY ctime DESC'
-                       . " LIMIT $start,$amount";
-               
-               $blog =& $manager->getBlog($blogid);
-               
-               $this->pagehead();
-               
-               echo '<p><a href="index.php?action=overview">(' . _BACKHOME . ")</a></p>\n";
-               echo '<h2>', _COMMENTS_BLOG , ' ' , $this->bloglink($blog), '</h2>';
-               
-               $template['content'] = 'commentlist';
-               $template['canAddBan'] = $member->blogAdminRights($blogid);
-               
-               $manager->loadClass("ENCAPSULATE");
-               $navList = new NavList('blogcommentlist', $start, $amount, 0, 1000, $blogid, $search, 0);
-               $navList->showBatchList('comment',$query,'table',$template, _NOCOMMENTS_BLOG);
-               
-               $this->pagefoot();
+               self::$skin->parse('createaccountinput');
                return;
        }
        
@@ -1256,31 +1700,40 @@ class Admin
         * @param       void
         * @return      void
         */
-       public function action_createitem()
+       static private function action_createitem()
        {
                global $member, $manager;
                
                $blogid = intRequestVar('blogid');
                
                // check if allowed
-               $member->teamRights($blogid) or $this->disallow();
-               
-               $memberid = $member->getID();
+               $member->teamRights($blogid) or self::disallow();
                
                $blog =& $manager->getBlog($blogid);
+               $contents = array();
                
-               // generate the add-item form
-               $handler = new PageFactory($blog);
-               
-               $contents = $handler->getTemplateFor('admin', 'add');
-               $manager->notify('PreAddItemForm', array('contents' => &$contents, 'blog' => &$blog));
+               $data = array(
+                       'blog'          => &$blog,
+                       'contents'      => &$contents
+               );
+               $manager->notify('PreAddItemForm', $data);
                
-               $parser = new Parser($handler);
+               if ( $blog->convertBreaks() )
+               {
+                       if ( array_key_exists('body', $contents) && !empty($contents['body']) )
+                       {
+                               $contents['body'] = removeBreaks($contents['body']);
+                       }
+                       if ( array_key_exists('more', $contents) && !empty($contents['more']) )
+                       {
+                               $contents['more'] = removeBreaks($contents['more']);
+                       }
+               }
                
-               $this->pagehead();
-               $parser->parse($contents);
-               $this->pagefoot();
+               self::$blog = &$blog;
+               self::$contents = &$contents;
                
+               self::$skin->parse('createitem');
                return;
        }
        
@@ -1290,52 +1743,2422 @@ class Admin
         * @param       void
         * @return      void
         */
-       public function action_itemedit()
+       static private function action_itemedit()
        {
                global $member, $manager;
                
                $itemid = intRequestVar('itemid');
                
                // only allow if user is allowed to alter item
-               $member->canAlterItem($itemid) or $this->disallow();
-               
-               $variables =& $manager->getItem($itemid, 1, 1);
-               $blog =& $manager->getBlog(getBlogIDFromItemID($itemid));
+               $member->canAlterItem($itemid) or self::disallow();
                
-               $manager->notify('PrepareItemForEdit', array('item' => &$variables));
+               $item =& $manager->getItem($itemid, 1, 1);
+               $blog =& $manager->getBlog($item['blogid']);
+               $data = array('blog'=> &$blog, 'item' => &$item);
+               $manager->notify('PrepareItemForEdit', $data);
                
                if ( $blog->convertBreaks() )
                {
-                       $variables['body'] = removeBreaks($variables['body']);
-                       $variables['more'] = removeBreaks($variables['more']);
+                       if ( array_key_exists('body', $item) && !empty($item['body']) )
+                       {
+                               $item['body'] = removeBreaks($item['body']);
+                       }
+                       if ( array_key_exists('more', $item) && !empty($item['more']) )
+                       {
+                               $item['more'] = removeBreaks($item['more']);
+                       }
                }
                
-               // form to edit blog items
-               $handler = new PageFactory($blog);
-               $handler->setVariables($variables);
+               self::$blog = &$blog;
+               self::$contents = &$item;
                
-               $content = $handler->getTemplateFor('admin', 'edit');
+               self::$skin->parse('itemedit');
+               return;
+       }
+       
+       /**
+        * Admin::action_itemupdate()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_itemupdate()
+       {
+               global $member, $manager, $CONF;
                
-               $parser = new Parser($handler);
+               $itemid = intRequestVar('itemid');
+               $catid  = postVar('catid');
                
-               $this->pagehead();
-               $parser->parse($content);
-               $this->pagefoot();
+               // only allow if user is allowed to alter item
+               $member->canUpdateItem($itemid, $catid) or self::disallow();
+               
+               $actiontype = postVar('actiontype');
+               
+               // delete actions are handled by itemdelete (which has confirmation)
+               if ( $actiontype == 'delete' )
+               {
+                       self::action_itemdelete();
+                       return;
+               }
+               
+               $body           = postVar('body');
+               $title          = postVar('title');
+               $more           = postVar('more');
+               $closed         = intPostVar('closed');
+               $draftid        = intPostVar('draftid');
+               
+               // default action = add now
+               if ( !$actiontype )
+               {
+                       $actiontype='addnow';
+               }
+               
+               // create new category if needed
+               if ( i18n::strpos($catid,'newcat') === 0 )
+               {
+                       // get blogid
+                       list($blogid) = sscanf($catid,"newcat-%d");
+                       
+                       // create
+                       $blog =& $manager->getBlog($blogid);
+                       $catid = $blog->createNewCategory();
+                       
+                       // show error when sth goes wrong
+                       if ( !$catid )
+                       {
+                               self::doError(_ERROR_CATCREATEFAIL);
+                       }
+               }
+               
+               /**
+                * set some variables based on actiontype
+                * 
+                * actiontypes:
+                *      draft items -> addnow, addfuture, adddraft, delete
+                *      non-draft items -> edit, changedate, delete
+                * 
+                * variables set:
+                *      $timestamp: set to a nonzero value for future dates or date changes
+                *      $wasdraft: set to 1 when the item used to be a draft item
+                *      $publish: set to 1 when the edited item is not a draft
+                */
+               $blogid =  getBlogIDFromItemID($itemid);
+               $blog =& $manager->getBlog($blogid);
+               
+               $wasdrafts = array('adddraft', 'addfuture', 'addnow');
+               $wasdraft  = in_array($actiontype, $wasdrafts) ? 1 : 0;
+               $publish   = ($actiontype != 'adddraft' && $actiontype != 'backtodrafts') ? 1 : 0;
+               if ( $actiontype == 'addfuture' || $actiontype == 'changedate' )
+               {
+                       $timestamp = mktime(intPostVar('hour'), intPostVar('minutes'), 0, intPostVar('month'), intPostVar('day'), intPostVar('year'));
+               }
+               else
+               {
+                       $timestamp =0;
+               }
+               
+               // edit the item for real
+               Item::update($itemid, $catid, $title, $body, $more, $closed, $wasdraft, $publish, $timestamp);
+               
+               self::updateFuturePosted($blogid);
+               
+               if ( $draftid > 0 )
+               {
+                       // delete permission is checked inside Item::delete()
+                       Item::delete($draftid);
+               }
+               
+               if ( $catid != intPostVar('catid') )
+               {
+                       self::action_categoryedit(
+                               $catid,
+                               $blog->getID(),
+                               $CONF['AdminURL'] . 'index.php?action=itemlist&blogid=' . getBlogIDFromItemID($itemid)
+                       );
+               }
+               else
+               {
+                       // TODO: set start item correctly for itemlist
+                       $item =& $manager->getitem($itemid, 1, 1);
+                       $query = "SELECT COUNT(*) FROM %s WHERE unix_timestamp(itime) <= '%s';";
+                       $query = sprintf($query, sql_table('item'), $item['timestamp']);
+                       $cnt  = DB::getValue($query);
+                       $_REQUEST['start'] = $cnt + 1;
+                       self::action_itemlist(getBlogIDFromItemID($itemid));
+               }
                return;
        }
        
-    /**
-     * @todo document this
-     */
-    function action_itemupdate() {
-        global $member, $manager, $CONF;
-
-        $itemid = intRequestVar('itemid');
-        $catid = postVar('catid');
-
-        // only allow if user is allowed to alter item
-        $member->canUpdateItem($itemid, $catid) or $this->disallow();
-
+       /**
+        * Admin::action_itemdelete()
+        * Delete item
+        * 
+        * @param       Void
+        * @return      Void
+        */
+       static private function action_itemdelete()
+       {
+               global $member, $manager;
+               
+               $itemid = intRequestVar('itemid');
+               
+               // only allow if user is allowed to alter item
+               $member->canAlterItem($itemid) or self::disallow();
+               
+               if ( !$manager->existsItem($itemid,1,1) )
+               {
+                       self::error(_ERROR_NOSUCHITEM);
+                       return;
+               }
+               
+               self::$skin->parse('itemdelete');
+               return;
+       }
+       
+       /**
+        * Admin::action_itemdeleteconfirm()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_itemdeleteconfirm()
+       {
+               global $member, $manager;
+               
+               $itemid = intRequestVar('itemid');
+               
+               // only allow if user is allowed to alter item
+               $member->canAlterItem($itemid) or self::disallow();
+               
+               // get item first
+               $item =& $manager->getItem($itemid, 1, 1);
+               
+               // delete item (note: some checks will be performed twice)
+               self::deleteOneItem($item['itemid']);
+               
+               self::action_itemlist($item['blogid']);
+               return;
+       }
+       
+       /**
+        * Admin::deleteOneItem()
+        * Deletes one item and returns error if something goes wrong
+        * 
+        * @param       integer $itemid ID for item
+        * @return      void
+        */
+       static public function deleteOneItem($itemid)
+       {
+               global $member, $manager;
+               
+               // only allow if user is allowed to alter item (also checks if itemid exists)
+               if ( !$member->canAlterItem($itemid) )
+               {
+                       return _ERROR_DISALLOWED;
+               }
+               
+               // need to get blogid before the item is deleted
+               $item =& $manager->getItem($itemid, 1, 1);
+               
+               $manager->loadClass('ITEM');
+               Item::delete($item['itemid']);
+               
+               // update blog's futureposted
+               self::updateFuturePosted($item['itemid']);
+               return;
+       }
+       
+       /**
+        * Admin::updateFuturePosted()
+        * Update a blog's future posted flag
+        * 
+        * @param integer $blogid
+        * @return      void
+        */
+       static private function updateFuturePosted($blogid)
+       {
+               global $manager;
+               
+               $blogid                 =  intval($blogid);
+               $blog                   =& $manager->getBlog($blogid);
+               $currenttime    =  $blog->getCorrectTime(time());
+               
+               $query = "SELECT * FROM %s WHERE iblog=%d AND iposted=0 AND itime>'%s'";
+               $query = sprintf($query, sql_table('item'), (integer) $blogid, i18n::formatted_datetime('mysql', $currenttime));
+               $result = DB::getResult($query);
+               
+               if ( $result->rowCount() > 0 )
+               {
+                               $blog->setFuturePost();
+               }
+               else
+               {
+                               $blog->clearFuturePost();
+               }
+               return;
+       }
+
+       /**
+        * Admin::action_itemmove()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_itemmove()
+       {
+               global $member, $manager;
+               
+               $itemid = intRequestVar('itemid');
+               
+               $member->canAlterItem($itemid) or self::disallow();
+               
+               self::$skin->parse('itemmove');
+               return;
+       }
+       
+       /**
+        * Admin::action_itemmoveto()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_itemmoveto()
+       {
+               global $member, $manager;
+               
+               $itemid = intRequestVar('itemid');
+               $catid = requestVar('catid');
+               
+               // create new category if needed
+               if ( i18n::strpos($catid,'newcat') === 0 )
+               {
+                       // get blogid
+                       list($blogid) = sscanf($catid,'newcat-%d');
+                       
+                       // create
+                       $blog =& $manager->getBlog($blogid);
+                       $catid = $blog->createNewCategory();
+                       
+                       // show error when sth goes wrong
+                       if ( !$catid )
+                       {
+                               self::doError(_ERROR_CATCREATEFAIL);
+                       }
+               }
+               
+               // only allow if user is allowed to alter item
+               $member->canUpdateItem($itemid, $catid) or self::disallow();
+               
+               $old_blogid = getBlogIDFromItemId($itemid);
+               
+               Item::move($itemid, $catid);
+               
+               // set the futurePosted flag on the blog
+               self::updateFuturePosted(getBlogIDFromItemId($itemid));
+               
+               // reset the futurePosted in case the item is moved from one blog to another
+               self::updateFuturePosted($old_blogid);
+               
+               if ( $catid != intRequestVar('catid') )
+               {
+                       self::action_categoryedit($catid, $blog->getID());
+               }
+               else
+               {
+                       self::action_itemlist(getBlogIDFromCatID($catid));
+               }
+               return;
+       }
+       
+       /**
+        * Admin::moveOneItem()
+        * Moves one item to a given category (category existance should be checked by caller)
+        * errors are returned
+        * 
+        * @param       integer $itemid         ID for item
+        * @param       integer $destCatid      ID for category to which the item will be moved
+        * @return      void
+        */
+       static public function moveOneItem($itemid, $destCatid)
+       {
+               global $member;
+               
+               // only allow if user is allowed to move item
+               if ( !$member->canUpdateItem($itemid, $destCatid) )
+               {
+                       return _ERROR_DISALLOWED;
+               }
+               
+               Item::move($itemid, $destCatid);
+               return;
+       }
+       
+       /**
+        * Admin::action_additem()
+        * Adds a item to the chosen blog
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_additem()
+       {
+               global $manager, $CONF;
+               
+               $manager->loadClass('ITEM');
+               
+               $result = Item::createFromRequest();
+               
+               if ( $result['status'] == 'error' )
+               {
+                       self::error($result['message']);
+                       return;
+               }
+               
+               $item =& $manager->getItem($result['itemid'], 0, 0);
+               
+               if ( $result['status'] == 'newcategory' )
+               {
+                       $distURI = $manager->addTicketToUrl($CONF['AdminURL'] . 'index.php?action=itemList&blogid=' . $item['blogid']);
+                       self::action_categoryedit($result['catid'], $item['blogid'], $distURI);
+               }
+               else
+               {
+                       $methodName = 'action_itemlist';
+                       self::action_itemlist($item['blogid']);
+               }
+               return;
+       }
+       
+       /**
+        * Admin::action_commentedit()
+        * Allows to edit previously made comments
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_commentedit()
+       {
+               global $member, $manager;
+               
+               $commentid = intRequestVar('commentid');
+               
+               $member->canAlterComment($commentid) or self::disallow();
+               
+               $comment = Comment::getComment($commentid);
+               $data = array('comment' => &$comment);
+               $manager->notify('PrepareCommentForEdit', $data);
+               
+               self::$contents = $comment;
+               self::$skin->parse('commentedit');
+               return;
+       }
+       
+       /**
+        * Admin::action_commentupdate()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_commentupdate()
+       {
+               global $member, $manager;
+               
+               $commentid = intRequestVar('commentid');
+               
+               $member->canAlterComment($commentid) or self::disallow();
+               
+               $url    = postVar('url');
+               $email  = postVar('email');
+               $body   = postVar('body');
+               
+               // intercept words that are too long
+               if (preg_match('#[a-zA-Z0-9|\.,;:!\?=\/\\\\]{90,90}#', $body) != FALSE)
+               {
+                       self::error(_ERROR_COMMENT_LONGWORD);
+                       return;
+               }
+               
+               // check length
+               if ( i18n::strlen($body) < 3 )
+               {
+                       self::error(_ERROR_COMMENT_NOCOMMENT);
+                       return;
+               }
+               
+               if ( i18n::strlen($body) > 5000 )
+               {
+                       self::error(_ERROR_COMMENT_TOOLONG);
+                       return;
+               }
+               
+               // prepare body
+               $body = Comment::prepareBody($body);
+               
+               // call plugins
+               $data = array(
+                       'body' => &$body
+               );
+               $manager->notify('PreUpdateComment', $data);
+               
+               $query = "UPDATE %s SET cmail=%s, cemail=%s, cbody=%s WHERE cnumber=%d;";
+               $query = sprintf($query, sql_table('comment'), DB::quoteValue($url), DB::quoteValue($email), DB::quoteValue($body), (integer) $commentid);
+               DB::execute($query);
+               
+               // get itemid
+               $query = "SELECT citem FROM %s WHERE cnumber=%d;";
+               $query = sprintf($query, sql_table('comment'), (integer) $commentid);
+               
+               $itemid = DB::getValue($query);
+               
+               if ( $member->canAlterItem($itemid) )
+               {
+                       self::action_itemcommentlist($itemid);
+               }
+               else
+               {
+                       self::action_browseowncomments();
+               }
+               return;
+       }
+       
+       /**
+        * Admin::action_commentdelete()
+        * Update comment
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_commentdelete()
+       {
+               global $member, $manager;
+               
+               $commentid = intRequestVar('commentid');
+               $member->canAlterComment($commentid) or self::disallow();
+               
+               self::$skin->parse('commentdelete');
+               return;
+       }
+       
+       /**
+        * Admin::action_commentdeleteconfirm()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_commentdeleteconfirm()
+       {
+               global $member;
+               
+               $commentid = intRequestVar('commentid');
+               
+               // get item id first
+               $query = "SELECT citem FROM %s WHERE cnumber=%d;";
+               $query = sprintf($query, sql_table('comment'), (integer) $commentid);
+               
+               $itemid = DB::getValue($query);
+               
+               $error = self::deleteOneComment($commentid);
+               if ( $error )
+               {
+                       self::doError($error);
+               }
+               
+               if ( $member->canAlterItem($itemid) )
+               {
+                       self::action_itemcommentlist($itemid);
+               }
+               else
+               {
+                       self::action_browseowncomments();
+               }
+               return;
+       }
+       
+       /**
+        * Admin::deleteOneComment()
+        * 
+        * @param       integer $commentid      ID for comment
+        * @return      void
+        */
+       static public function deleteOneComment($commentid)
+       {
+               global $member, $manager;
+               
+               $commentid = (integer) $commentid;
+               
+               if ( !$member->canAlterComment($commentid) )
+               {
+                       return _ERROR_DISALLOWED;
+               }
+               
+               $data = array(
+                       'commentid' => $commentid
+               );
+               
+               $manager->notify('PreDeleteComment', $data);
+               
+               // delete the comments associated with the item
+               $query = "DELETE FROM %s WHERE cnumber=%d;";
+               $query = sprintf($query, sql_table('comment'), (integer) $commentid);
+               DB::execute($query);
+               
+               $data = array(
+                       'commentid' => $commentid
+               );
+               
+               $manager->notify('PostDeleteComment', $data);
+               
+               return '';
+       }
+       
+       /**
+        * Admin::action_usermanagement()
+        * Usermanagement main
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_usermanagement()
+       {
+               global $member, $manager;
+               
+               // check if allowed
+               $member->isAdmin() or self::disallow();
+               
+               self::$skin->parse('usermanagement');
+               return;
+       }
+       
+       /**
+        * Admin::action_memberedit()
+        * Edit member settings
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_memberedit()
+       {
+               self::action_editmembersettings(intRequestVar('memberid'));
+               return;
+       }
+       
+       /**
+        * Admin::action_editmembersettings()
+        * 
+        * @param       integer $memberid       ID for member
+        * @return      void
+        * 
+        */
+       static private function action_editmembersettings($memberid = '')
+       {
+               global $member, $manager, $CONF;
+               
+               if ( $memberid == '' )
+               {
+                       $memberid = $member->getID();
+               }
+               
+               /* TODO: we should consider to use the other way insterad of this */
+               $_REQUEST['memberid'] = $memberid;
+               
+               // check if allowed
+               ($member->getID() == $memberid) or $member->isAdmin() or self::disallow();
+               
+               self::$extrahead .= "<script type=\"text/javascript\" src=\"<%skinfile(/javascripts/numbercheck.js)%>\"></script>\n";
+               
+               self::$skin->parse('editmembersettings');
+               return;
+       }
+       
+       /**
+        * Admin::action_changemembersettings()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_changemembersettings()
+       {
+               global $member, $CONF, $manager;
+               
+               $memberid = intRequestVar('memberid');
+               
+               // check if allowed
+               ($member->getID() == $memberid) or $member->isAdmin() or self::disallow();
+               
+               $name                   = trim(strip_tags(postVar('name')));
+               $realname               = trim(strip_tags(postVar('realname')));
+               $password               = postVar('password');
+               $repeatpassword = postVar('repeatpassword');
+               $email                  = strip_tags(postVar('email'));
+               $url                    = strip_tags(postVar('url'));
+               $adminskin              = intPostVar('adminskin');
+               $bookmarklet    = intPostVar('bookmarklet');
+               
+               // begin if: sometimes user didn't prefix the URL with http:// or https://, this cause a malformed URL. Let's fix it.
+               if ( !preg_match('#^https?://#', $url) )
+               {
+                       $url = 'http://' . $url;
+               }
+               
+               $admin          = postVar('admin');
+               $canlogin       = postVar('canlogin');
+               $notes          = strip_tags(postVar('notes'));
+               $locale         = postVar('locale');
+               
+               $mem =& $manager->getMember($memberid);
+               
+               if ( $CONF['AllowLoginEdit'] || $member->isAdmin() )
+               {
+                       if ( !isValidDisplayName($name) )
+                       {
+                               self::error(_ERROR_BADNAME);
+                               return;
+                       }
+                       
+                       if ( ($name != $mem->getDisplayName()) && Member::exists($name) )
+                       {
+                               self::error(_ERROR_NICKNAMEINUSE);
+                               return;
+                       }
+                       
+                       if ( $password != $repeatpassword )
+                       {
+                               self::error(_ERROR_PASSWORDMISMATCH);
+                               return;
+                       }
+                       
+                       if ( $password && (i18n::strlen($password) < 6) )
+                       {
+                               self::error(_ERROR_PASSWORDTOOSHORT);
+                               return;
+                       }
+                               
+                       if ( $password )
+                       {
+                               $pwdvalid = true;
+                               $pwderror = '';
+                               
+                               $data = array(
+                                       'password'     => $password,
+                                       'errormessage' => &$pwderror,
+                                       'valid'        => &$pwdvalid
+                               );
+                               $manager->notify('PrePasswordSet', $data);
+                               
+                               if ( !$pwdvalid )
+                               {
+                                       self::error($pwderror);
+                                       return;
+                               }
+                       }
+               }
+               
+               if ( !NOTIFICATION::address_validation($email) )
+               {
+                       self::error(_ERROR_BADMAILADDRESS);
+                       return;
+               }
+               if ( !$realname )
+               {
+                       self::error(_ERROR_REALNAMEMISSING);
+                       return;
+               }
+               if ( ($locale != '') && (!in_array($locale, i18n::get_available_locale_list())) )
+               {
+                       self::error(_ERROR_NOSUCHTRANSLATION);
+                       return;
+               }
+               
+               // check if there will remain at least one site member with both the logon and admin rights
+               // (check occurs when taking away one of these rights from such a member)
+               if (    (!$admin && $mem->isAdmin() && $mem->canLogin())
+                       ||      (!$canlogin && $mem->isAdmin() && $mem->canLogin())
+                       )
+               {
+                       $r = DB::getResult('SELECT * FROM '.sql_table('member').' WHERE madmin=1 and mcanlogin=1');
+                       if ( $r->rowCount() < 2 )
+                       {
+                               self::error(_ERROR_ATLEASTONEADMIN);
+                               return;
+                       }
+               }
+               
+               if ( $CONF['AllowLoginEdit'] || $member->isAdmin() )
+               {
+                       $mem->setDisplayName($name);
+                       if ( $password )
+                       {
+                               $mem->setPassword($password);
+                       }
+               }
+               
+               $oldEmail = $mem->getEmail();
+               
+               $mem->setRealName($realname);
+               $mem->setEmail($email);
+               $mem->setURL($url);
+               $mem->setNotes($notes);
+               $mem->setLocale($locale);
+               $mem->setAdminSkin($adminskin);
+               $mem->setBookmarklet($bookmarklet);
+
+               // only allow super-admins to make changes to the admin status
+               if ( $member->isAdmin() )
+               {
+                       $mem->setAdmin($admin);
+                       $mem->setCanLogin($canlogin);
+               }
+               
+               $autosave = postVar('autosave');
+               $mem->setAutosave($autosave);
+               
+               $mem->write();
+               
+               // store plugin options
+               $aOptions = requestArray('plugoption');
+               NucleusPlugin::apply_plugin_options($aOptions);
+               $data = array(
+                       'context'  => 'member',
+                       'memberid' => $memberid,
+                       'member'   => &$mem
+               );
+               $manager->notify('PostPluginOptionsUpdate', $data);
+               
+               // if email changed, generate new password
+               if ( $oldEmail != $mem->getEmail() )
+               {
+                       $mem->sendActivationLink('addresschange', $oldEmail);
+                       // logout member
+                       $mem->newCookieKey();
+                       
+                       // only log out if the member being edited is the current member.
+                       if ( $member->getID() == $memberid )
+                       {
+                               $member->logout();
+                       }
+                       self::action_login(_MSG_ACTIVATION_SENT, 0);
+                       return;
+               }
+               
+               if ( ($mem->getID() == $member->getID())
+                       && ($mem->getDisplayName() != $member->getDisplayName()) )
+               {
+                       $mem->newCookieKey();
+                       $member->logout();
+                       self::action_login(_MSG_LOGINAGAIN, 0);
+               }
+               else
+               {
+                       self::action_overview(_MSG_SETTINGSCHANGED);
+               }
+               return;
+       }
+
+       /**
+        * Admin::action_memberadd()
+        * 
+        * @param       void
+        * @return      void
+        * 
+        */
+       static private function action_memberadd()
+       {
+               global $member, $manager;
+               
+               // check if allowed
+               $member->isAdmin() or self::disallow();
+               
+               if ( postVar('password') != postVar('repeatpassword') )
+               {
+                       self::error(_ERROR_PASSWORDMISMATCH);
+                       return;
+               }
+               
+               if ( i18n::strlen(postVar('password')) < 6 )
+               {
+                       self::error(_ERROR_PASSWORDTOOSHORT);
+                       return;
+               }
+               
+               $res = Member::create(
+                       postVar('name'),
+                       postVar('realname'),
+                       postVar('password'),
+                       postVar('email'),
+                       postVar('url'),
+                       postVar('admin'),
+                       postVar('canlogin'),
+                       postVar('notes')
+               );
+               
+               if ( $res != 1 )
+               {
+                       self::error($res);
+                       return;
+               }
+               
+               // fire PostRegister event
+               $newmem = new Member();
+               $newmem->readFromName(postVar('name'));
+               $data = array(
+                       'member' => &$newmem
+               );
+               $manager->notify('PostRegister', $data);
+               
+               self::action_usermanagement();
+               return;
+       }
+       
+       /**
+        * Admin::action_forgotpassword()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_forgotpassword()
+       {
+               self::$skin->parse('forgotpassword');
+               return;
+       }
+       
+       /**
+        * Admin::action_activate()
+        * Account activation
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_activate()
+       {
+               $key = getVar('key');
+               self::showActivationPage($key);
+               return;
+       }
+       
+       /**
+        * Admin::showActivationPage()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function showActivationPage($key, $message = '')
+       {
+               global $manager;
+               
+               // clean up old activation keys
+               Member::cleanupActivationTable();
+               
+               // get activation info
+               $info = Member::getActivationInfo($key);
+               
+               if ( !$info )
+               {
+                       self::error(_ERROR_ACTIVATE);
+                       return;
+               }
+               
+               $mem =& $manager->getMember($info->vmember);
+               
+               if ( !$mem )
+               {
+                       self::error(_ERROR_ACTIVATE);
+                       return;
+               }
+               
+               /* TODO: we should consider to use the other way insterad of this */
+               $_POST['ackey']                                 = $key;
+               $_POST['bNeedsPasswordChange']  = TRUE;
+               
+               self::$headMess = $message;
+               self::$skin->parse('activate');
+               return;
+       }
+       
+       /**
+        * Admin::action_activatesetpwd()
+        * Account activation - set password part
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_activatesetpwd()
+       {
+               global $manager;
+               $key = postVar('key');
+               
+               // clean up old activation keys
+               Member::cleanupActivationTable();
+               
+               // get activation info
+               $info = Member::getActivationInfo($key);
+               
+               if ( !$info || ($info->type == 'addresschange') )
+               {
+                       return self::showActivationPage($key, _ERROR_ACTIVATE);
+               }
+               
+               $mem =& $manager->getMember($info->vmember);
+               
+               if ( !$mem )
+               {
+                       return self::showActivationPage($key, _ERROR_ACTIVATE);
+               }
+               
+               $password               = postVar('password');
+               $repeatpassword = postVar('repeatpassword');
+               
+               if ( $password != $repeatpassword )
+               {
+                       return self::showActivationPage($key, _ERROR_PASSWORDMISMATCH);
+               }
+               
+               if ( $password && (i18n::strlen($password) < 6) )
+               {
+                       return self::showActivationPage($key, _ERROR_PASSWORDTOOSHORT);
+               }
+                       
+               if ( $password )
+               {
+                       $pwdvalid = true;
+                       $pwderror = '';
+                       
+                       $data = array(
+                               'password'              => $password,
+                               'errormessage'  => &$pwderror,
+                               'valid'                 => &$pwdvalid
+                       );
+                       $manager->notify('PrePasswordSet', $data);
+                       if ( !$pwdvalid )
+                       {
+                               return self::showActivationPage($key,$pwderror);
+                       }
+               }
+               
+               $error = '';
+               
+               $data = array(
+                       'type'   => 'activation',
+                       'member' => $mem,
+                       'error'  => &$error
+               );
+               $manager->notify('ValidateForm', $data);
+               if ( $error != '' )
+               {
+                       return self::showActivationPage($key, $error);
+               }
+               
+               // set password
+               $mem->setPassword($password);
+               $mem->write();
+               
+               // do the activation
+               Member::activate($key);
+               
+               self::$skin->parse('activatesetpwd');
+               return;
+       }
+       
+       /**
+        * Admin::action_manageteam()
+        * Manage team
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_manageteam()
+       {
+               global $member, $manager;
+               
+               $blogid = intRequestVar('blogid');
+               
+               // check if allowed
+               $member->blogAdminRights($blogid) or self::disallow();
+               
+               self::$skin->parse('manageteam');
+               return;
+       }
+       
+       /**
+        * Admin::action_teamaddmember()
+        * Add member to team
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_teamaddmember()
+       {
+               global $member, $manager;
+               
+               $memberid       = intPostVar('memberid');
+               $blogid         = intPostVar('blogid');
+               $admin          = intPostVar('admin');
+               
+               // check if allowed
+               $member->blogAdminRights($blogid) or self::disallow();
+               
+               $blog =& $manager->getBlog($blogid);
+               if ( !$blog->addTeamMember($memberid, $admin) )
+               {
+                       self::error(_ERROR_ALREADYONTEAM);
+                       return;
+               }
+               
+               self::action_manageteam();
+               return;
+       }
+       
+       /**
+        * Admin::action_teamdelete()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_teamdelete()
+       {
+               global $member, $manager;
+               
+               $memberid       = intRequestVar('memberid');
+               $blogid         = intRequestVar('blogid');
+               
+               // check if allowed
+               $member->blogAdminRights($blogid) or self::disallow();
+               
+               $teammem =& $manager->getMember($memberid);
+               $blog =& $manager->getBlog($blogid);
+               
+               self::$skin->parse('teamdelete');
+               return;
+       }
+       
+       /**
+        * Admin::action_teamdeleteconfirm()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_teamdeleteconfirm()
+       {
+               global $member;
+               
+               $memberid = intRequestVar('memberid');
+               $blogid = intRequestVar('blogid');
+               
+               $error = self::deleteOneTeamMember($blogid, $memberid);
+               if ( $error )
+               {
+                       self::error($error);
+                       return;
+               }
+               self::action_manageteam();
+               return;
+       }
+       
+       /**
+        * Admin::deleteOneTeamMember()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static public function deleteOneTeamMember($blogid, $memberid)
+       {
+               global $member, $manager;
+               
+               $blogid   = intval($blogid);
+               $memberid = intval($memberid);
+               
+               // check if allowed
+               if ( !$member->blogAdminRights($blogid) )
+               {
+                       return _ERROR_DISALLOWED;
+               }
+               
+               // check if: - there remains at least one blog admin
+               //           - (there remains at least one team member)
+               $tmem =& $manager->getMember($memberid);
+               
+               
+               $data = array(
+                       'member' => &$tmem,
+                       'blogid' => $blogid
+               );
+               $manager->notify('PreDeleteTeamMember', $data);
+               
+               if ( $tmem->isBlogAdmin($blogid) )
+               {
+                       /* TODO: why we did double check? */
+                       // check if there are more blog members left and at least one admin
+                       // (check for at least two admins before deletion)
+                       $query = "SELECT * FROM %s WHERE tblog=%d and tadmin=1;";
+                       $query = sprintf($query, sql_table('team'), (integer) $blogid);
+                       $r     = DB::getResult($query);
+                       if ( $r->rowCount() < 2 )
+                       {
+                               return _ERROR_ATLEASTONEBLOGADMIN;
+                       }
+               }
+               
+               $query = "DELETE FROM %s WHERE tblog=%d AND tmember=%d;";
+               $query = sprintf($query, sql_table('team'), (integer) $blogid, (integer) $memberid);
+               DB::execute($query);
+               
+               $data = array(
+                       'member' => &$tmem,
+                       'blogid' => $blogid
+               );
+               $manager->notify('PostDeleteTeamMember', $data);
+               
+               return '';
+       }
+       
+       /**
+        * Admin::action_teamchangeadmin()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_teamchangeadmin()
+       {
+               global $manager, $member;
+               
+               $blogid         = intRequestVar('blogid');
+               $memberid       = intRequestVar('memberid');
+               
+               // check if allowed
+               $member->blogAdminRights($blogid) or self::disallow();
+               
+               $mem =& $manager->getMember($memberid);
+               
+               // don't allow when there is only one admin at this moment
+               if ( $mem->isBlogAdmin($blogid) )
+               {
+                       $query = "SELECT * FROM %s WHERE tblog=%d AND tadmin=1;";
+                       $query = sprintf($query, sql_table('team'), (integer) $blogid);
+                       $r = DB::getResult($query);
+                       if ( $r->rowCount() == 1 )
+                       {
+                               self::error(_ERROR_ATLEASTONEBLOGADMIN);
+                               return;
+                       }
+               }
+               
+               if ( $mem->isBlogAdmin($blogid) )
+               {
+                       $newval = 0;
+               }
+               else
+               {
+                       $newval = 1;
+               }
+               
+               $query = "UPDATE %s SET tadmin=%d WHERE tblog=%d and tmember=%d;";
+               $query = sprintf($query, (integer) $blogid, (integer) $newval, (integer) $blogid, (integer) $memberid);
+               DB::execute($query);
+               
+               // only show manageteam if member did not change its own admin privileges
+               if ( $member->isBlogAdmin($blogid) )
+               {
+                       self::action_manageteam();
+               }
+               else
+               {
+                       self::action_overview(_MSG_ADMINCHANGED);
+               }
+               return;
+       }
+       
+       /**
+        * Admin::action_blogsettings()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_blogsettings()
+       {
+               global $member, $manager;
+               
+               $blogid = intRequestVar('blogid');
+               
+               // check if allowed
+               $member->blogAdminRights($blogid) or self::disallow();
+               
+               $blog =& $manager->getBlog($blogid);
+               
+               self::$extrahead .= "<script type=\"text/javascript\" src=\"<%skinfile(/javascripts/numbercheck.js)%>\"></script>\n";
+               
+               self::$skin->parse('blogsettings');
+               return;
+       }
+       
+       /**
+        * Admin::action_categorynew()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_categorynew()
+       {
+               global $member, $manager;
+               
+               $blogid = intRequestVar('blogid');
+               
+               $member->blogAdminRights($blogid) or self::disallow();
+               
+               $cname = postVar('cname');
+               $cdesc = postVar('cdesc');
+               
+               if ( !isValidCategoryName($cname) )
+               {
+                       self::error(_ERROR_BADCATEGORYNAME);
+                       return;
+               }
+               
+               $query = "SELECT * FROM %s WHERE cname=%s AND cblog=%d;";
+               $query = sprintf($query, sql_table('category'), DB::quoteValue($cname), (integer) $blogid);
+               $res = DB::getResult($query);
+               if ( $res->rowCount() > 0 )
+               {
+                       self::error(_ERROR_DUPCATEGORYNAME);
+                       return;
+               }
+               
+               $blog           =& $manager->getBlog($blogid);
+               $newCatID       =  $blog->createNewCategory($cname, $cdesc);
+               
+               self::action_blogsettings();
+               return;
+       }
+       
+       /**
+        * Admin::action_categoryedit()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_categoryedit($catid = '', $blogid = '', $desturl = '')
+       {
+               global $member, $manager;
+               
+               if ( $blogid == '' )
+               {
+                       $blogid = intGetVar('blogid');
+               }
+               else
+               {
+                       $blogid = intval($blogid);
+               }
+               if ( $catid == '' )
+               {
+                       $catid = intGetVar('catid');
+               }
+               else
+               {
+                       $catid = intval($catid);
+               }
+               
+               /* TODO: we should consider to use the other way insterad of this */
+               $_REQUEST['blogid']             = $blogid;
+               $_REQUEST['catid']              = $catid;
+               $_REQUEST['desturl']    = $desturl;
+               $member->blogAdminRights($blogid) or self::disallow();
+               
+               self::$extrahead .= "<script type=\"text/javascript\" src=\"<%skinfile(/javascripts/numbercheck.js)%>\"></script>\n";
+               
+               self::$skin->parse('categoryedit');
+               return;
+       }
+       
+       /**
+        * Admin::action_categoryupdate()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_categoryupdate()
+       {
+               global $member, $manager;
+               
+               $blogid         = intPostVar('blogid');
+               $catid          = intPostVar('catid');
+               $cname          = postVar('cname');
+               $cdesc          = postVar('cdesc');
+               $desturl        = postVar('desturl');
+               
+               $member->blogAdminRights($blogid) or self::disallow();
+               
+               if ( !isValidCategoryName($cname) )
+               {
+                       self::error(_ERROR_BADCATEGORYNAME);
+                       return;
+               }
+               
+               $query  = "SELECT * FROM %s WHERE cname=%s AND cblog=%d AND not(catid=%d);";
+               $query  = sprintf($query, sql_table('category'), DB::quoteValue($cname), (integer) $blogid, (integer) $catid);
+               $res    = DB::getResult($query);
+               if ( $res->rowCount() > 0 )
+               {
+                       self::error(_ERROR_DUPCATEGORYNAME);
+                       return;
+               }
+               
+               $query =  "UPDATE %s SET cname=%s, cdesc=%s WHERE catid=%d;";
+               $query = sprintf($query, sql_table('category'), DB::quoteValue($cname), DB::quoteValue($cdesc), (integer) $catid);
+               DB::execute($query);
+               
+               // store plugin options
+               $aOptions = requestArray('plugoption');
+               NucleusPlugin::apply_plugin_options($aOptions);
+               $data = array(
+                       'context'       => 'category',
+                       'catid'         => $catid
+               );
+               $manager->notify('PostPluginOptionsUpdate', $data);
+               
+               if ( $desturl )
+               {
+                       redirect($desturl);
+                       return;
+               }
+               
+               self::action_blogsettings();
+               
+               return;
+       }
+       
+       /**
+        * Admin::action_categorydelete()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_categorydelete()
+       {
+               global $member, $manager;
+               
+               $blogid = intRequestVar('blogid');
+               $catid  = intRequestVar('catid');
+               
+               $member->blogAdminRights($blogid) or self::disallow();
+               
+               $blog =& $manager->getBlog($blogid);
+               
+               // check if the category is valid
+               if ( !$blog->isValidCategory($catid) )
+               {
+                       self::error(_ERROR_NOSUCHCATEGORY);
+                       return;
+               }
+               
+               // don't allow deletion of default category
+               if ( $blog->getDefaultCategory() == $catid )
+               {
+                       self::error(_ERROR_DELETEDEFCATEGORY);
+                       return;
+               }
+               
+               // check if catid is the only category left for blogid
+               $query = "SELECT catid FROM %s WHERE cblog=%d;";
+               $query = sprintf($query, sql_table('category'), $blogid);
+               $res = DB::getResult($query);
+               if ( $res->rowCount() == 1 )
+               {
+                       self::error(_ERROR_DELETELASTCATEGORY);
+                       return;
+               }
+               
+               self::$skin->parse('categorydelete');
+>>>>>>> skinnable-master
+               return;
+       }
+       
+       /**
+<<<<<<< HEAD
+        * Admin::action_browseownitems()
+=======
+        * Admin::action_categorydeleteconfirm()
+>>>>>>> skinnable-master
+        * 
+        * @param       void
+        * @return      void
+        */
+<<<<<<< HEAD
+       public function action_browseownitems()
+       {
+               global $member, $manager, $CONF;
+               
+               $this->pagehead();
+               
+               echo '<p><a href="index.php?action=overview">(' . _BACKHOME . ")</a></p>\n";
+               echo '<h2>' . _ITEMLIST_YOUR . "</h2>\n";
+               
+               // start index
+               if ( postVar('start') )
+               {
+                       $start = intPostVar('start');
+               }
+               else
+               {
+                       $start = 0;
+               }
+               
+               // amount of items to show
+               if ( postVar('amount') )
+               {
+                       $amount = intPostVar('amount');
+               }
+               else
+               {
+                       $amount = (integer) $CONF['DefaultListSize'];
+                       if ( $amount < 1 )
+                       {
+                               $amount = 10;
+                       }
+               }
+               
+               $search = postVar('search');    // search through items
+               
+               $query = 'SELECT bshortname, cname, mname, ititle, ibody, idraft, inumber, itime'
+                      . ' FROM '.sql_table('item').', '.sql_table('blog') . ', '.sql_table('member') . ', '.sql_table('category')
+                      . ' WHERE iauthor='. $member->getID() .' and iauthor=mnumber and iblog=bnumber and icat=catid';
+               
+               if ( $search )
+               {
+                       $query .= " and ((ititle LIKE " . DB::quoteValue('%'.$search.'%') . ") or (ibody LIKE " . DB::quoteValue('%'.$search.'%') . ") or (imore LIKE " . DB::quoteValue('%'.$search.'%') . "))";
+               }
+               
+               $query .= ' ORDER BY itime DESC'
+                       . " LIMIT $start, $amount";
+               
+               $template['content'] = 'itemlist';
+               $template['now'] = time();
+               
+               $manager->loadClass("ENCAPSULATE");
+               $navList = new NavList('browseownitems', $start, $amount, 0, 1000, /*$blogid*/ 0, $search, 0);
+               $navList->showBatchList('item',$query,'table',$template);
+               
+               $this->pagefoot();
+=======
+       static private function action_categorydeleteconfirm()
+       {
+               global $member, $manager;
+               
+               $blogid = intRequestVar('blogid');
+               $catid  = intRequestVar('catid');
+               
+               $member->blogAdminRights($blogid) or self::disallow();
+               
+               $error = self::deleteOneCategory($catid);
+               if ( $error )
+               {
+                       self::error($error);
+                       return;
+               }
+               
+               self::action_blogsettings();
+               return;
+       }
+       
+       /**
+        * Admin::deleteOneCategory()
+        * Delete a category by its id
+        * 
+        * @param       String  $catid  category id for deleting
+        * @return      Void
+        */
+       static public function deleteOneCategory($catid)
+       {
+               global $manager, $member;
+               
+               $catid  = intval($catid);
+               $blogid = getBlogIDFromCatID($catid);
+               
+               if ( !$member->blogAdminRights($blogid) )
+               {
+                       return ERROR_DISALLOWED;
+               }
+               
+               // get blog
+               $blog =& $manager->getBlog($blogid);
+               
+               // check if the category is valid
+               if ( !$blog || !$blog->isValidCategory($catid) )
+               {
+                       return _ERROR_NOSUCHCATEGORY;
+               }
+               
+               $destcatid = $blog->getDefaultCategory();
+               
+               // don't allow deletion of default category
+               if ( $blog->getDefaultCategory() == $catid )
+               {
+                       return _ERROR_DELETEDEFCATEGORY;
+               }
+               
+               // check if catid is the only category left for blogid
+               $query = "SELECT catid FROM %s WHERE cblog=%d;";
+               $query = sprintf($query, sql_table('category'), (integer) $blogid);
+               
+               $res = DB::getResult($query);
+               if ( $res->rowCount() == 1 )
+               {
+                       return _ERROR_DELETELASTCATEGORY;
+               }
+               
+               $data = array('catid' => $catid);
+               $manager->notify('PreDeleteCategory', $data);
+               
+               // change category for all items to the default category
+               $query = "UPDATE %s SET icat=%d WHERE icat=%d;";
+               $query =sprintf($query, sql_table('item'), (integer) $destcatid, (integer) $catid);
+               DB::execute($query);
+               
+               // delete all associated plugin options
+               NucleusPlugin::delete_option_values('category', (integer) $catid);
+               
+               // delete category
+               $query = "DELETE FROM %s WHERE catid=%d;";
+               $query = sprintf($query, sql_table('category'), (integer) $catid);
+               DB::execute($query);
+               
+               $data = array('catid' => $catid);
+               $manager->notify('PostDeleteCategory', $data);
+>>>>>>> skinnable-master
+               return;
+       }
+       
+       /**
+<<<<<<< HEAD
+        * Admin::action_itemcommentlist()
+        * 
+        * Show all the comments for a given item
+        * @param       integer $itemid ID for item
+        * @return      void
+        */
+       public function action_itemcommentlist($itemid = '')
+       {
+               global $member, $manager, $CONF;
+               
+               if ( $itemid == '' )
+               {
+                       $itemid = intRequestVar('itemid');
+               }
+               
+               // only allow if user is allowed to alter item
+               $member->canAlterItem($itemid) or $this->disallow();
+               
+               $blogid = getBlogIdFromItemId($itemid);
+               
+               $this->pagehead();
+               
+               // start index
+               if ( postVar('start') )
+               {
+                       $start = intPostVar('start');
+               }
+               else
+               {
+                       $start = 0;
+               }
+               
+               // amount of items to show
+               if ( postVar('amount') )
+               {
+                       $amount = intPostVar('amount');
+               }
+               else
+               {
+                       $amount = (integer) $CONF['DefaultListSize'];
+                       if ( $amount < 1 )
+                       {
+                               $amount = 10;
+                       }
+               }
+               
+               $search = postVar('search');
+               
+               echo '<p>(<a href="index.php?action=itemlist&amp;blogid=' . $blogid . '">' . _BACKTOOVERVIEW . "</a>)</p>\n";
+               echo '<h2>',_COMMENTS,'</h2>';
+               
+               $query = 'SELECT cbody, cuser, cmail, cemail, mname, ctime, chost, cnumber, cip, citem FROM ' . sql_table('comment') . ' LEFT OUTER JOIN ' . sql_table('member') . ' ON mnumber = cmember WHERE citem = ' . $itemid;
+               
+               if ( $search )
+               {
+                       $query .= " and cbody LIKE " . DB::quoteValue('%'.$search.'%');
+               }
+               
+               $query .= ' ORDER BY ctime ASC'
+                       . " LIMIT $start,$amount";
+               
+               $template['content'] = 'commentlist';
+               $template['canAddBan'] = $member->blogAdminRights(getBlogIDFromItemID($itemid));
+               
+               $manager->loadClass("ENCAPSULATE");
+               $navList = new NavList('itemcommentlist', $start, $amount, 0, 1000, 0, $search, $itemid);
+               $navList->showBatchList('comment',$query,'table',$template,_NOCOMMENTS);
+               
+               $this->pagefoot();
+=======
+        * Admin::moveOneCategory()
+        * Delete a category by its id
+        * 
+        * @param       int     $catid          category id for move
+        * @param       int     $destblogid     blog id for destination
+        * @return      void
+        */
+       static public function moveOneCategory($catid, $destblogid)
+       {
+               global $manager, $member;
+               $catid      = intval($catid);
+               $destblogid = intval($destblogid);
+               $blogid     = getBlogIDFromCatID($catid);
+               // mover should have admin rights on both blogs
+               if (!$member->blogAdminRights($blogid)) {
+                       return _ERROR_DISALLOWED;
+               }
+               if (!$member->blogAdminRights($destblogid)) {
+                       return _ERROR_DISALLOWED;
+               }
+               // cannot move to self
+               if ($blogid == $destblogid) {
+                       return _ERROR_MOVETOSELF;
+               }
+               // get blogs
+               $blog     =& $manager->getBlog($blogid);
+               $destblog =& $manager->getBlog($destblogid);
+               // check if the category is valid
+               if (!$blog || !$blog->isValidCategory($catid)) {
+                       return _ERROR_NOSUCHCATEGORY;
+               }
+               // don't allow default category to be moved
+               if ($blog->getDefaultCategory() == $catid) {
+                       return _ERROR_MOVEDEFCATEGORY;
+               }
+               $data = array(
+                       'catid'                 => &$catid,
+                       'sourceblog'    => &$blog,
+                       'destblog'              => &$destblog
+               );
+               $manager->notify('PreMoveCategory', $data);
+               // update comments table (cblog)
+               $query = 'SELECT '
+               . '    inumber '
+               . 'FROM '
+               .      sql_table('item') . ' '
+               . 'WHERE '
+               . '    icat = %d';
+               $items = sql_query(sprintf($query, $catid));
+               while ($oItem = sql_fetch_object($items)) {
+                       $query = 'UPDATE '
+                       .      sql_table('comment') . ' '
+                       . 'SET '
+                       . '    cblog = %d' . ' '
+                       . 'WHERE '
+                       . '    citem = %d';
+                       sql_query(sprintf($query, $destblogid, $oItem->inumber));
+               }
+       
+               // update items (iblog)
+               $query = 'UPDATE '
+               .      sql_table('item') . ' '
+               . 'SET '
+               . '    iblog = %d '
+               . 'WHERE '
+               . '    icat = %d';
+               sql_query(sprintf($query, $destblogid, $catid));
+       
+               // move category
+               $query = 'UPDATE '
+               .      sql_table('category') . ' '
+               . 'SET '
+               . '    cblog = %d' . ' '
+               . 'WHERE '
+               . '    catid = %d';
+               sql_query(sprintf($query, $destblogid, $catid));
+               
+               $data = array(
+                       'catid'                 => &$catid,
+                       'sourceblog'    => &$blog,
+                       'destblog'              =>  $destblog
+               );
+               $manager->notify('PostMoveCategory', $data);
+               return;
+       }
+
+       /**
+        * Admin::action_blogsettingsupdate
+        * Updating blog settings
+        * 
+        * @param       Void
+        * @return      Void
+        */
+       static private function action_blogsettingsupdate()
+       {
+               global $member, $manager;
+               
+               $blogid = intRequestVar('blogid');
+               
+               $member->blogAdminRights($blogid) or self::disallow();
+               
+               $blog =& $manager->getBlog($blogid);
+               
+               $notify_address = trim(postVar('notify'));
+               $shortname              = trim(postVar('shortname'));
+               $updatefile             = trim(postVar('update'));
+               
+               $notifyComment  = intPostVar('notifyComment');
+               $notifyVote             = intPostVar('notifyVote');
+               $notifyNewItem  = intPostVar('notifyNewItem');
+               
+               if ( $notifyComment == 0 )
+               {
+                       $notifyComment = 1;
+               }
+               if ( $notifyVote == 0 )
+               {
+                       $notifyVote = 1;
+               }
+               if ( $notifyNewItem == 0 )
+               {
+                       $notifyNewItem = 1;
+               }
+               $notifyType = $notifyComment * $notifyVote * $notifyNewItem;
+               
+               if ( $notify_address && !NOTIFICATION::address_validation($notify_address) )
+               {
+                       self::error(_ERROR_BADNOTIFY);
+                       return;
+               }
+               
+               if ( !isValidShortName($shortname) )
+               {
+                       self::error(_ERROR_BADSHORTBLOGNAME);
+                       return;
+               }
+               
+               if ( ($blog->getShortName() != $shortname) && $manager->existsBlog($shortname) )
+               {
+                       self::error(_ERROR_DUPSHORTBLOGNAME);
+                       return;
+               }
+               // check if update file is writable
+               if ( $updatefile && !is_writeable($updatefile) )
+               {
+                       self::error(_ERROR_UPDATEFILE);
+                       return;
+               }
+               
+               $blog->setName(trim(postVar('name')));
+               $blog->setShortName($shortname);
+               $blog->setNotifyAddress($notify_address);
+               $blog->setNotifyType($notifyType);
+               $blog->setMaxComments(postVar('maxcomments'));
+               $blog->setCommentsEnabled(postVar('comments'));
+               $blog->setTimeOffset(postVar('timeoffset'));
+               $blog->setUpdateFile($updatefile);
+               $blog->setURL(trim(postVar('url')));
+               $blog->setDefaultSkin(intPostVar('defskin'));
+               $blog->setDescription(trim(postVar('desc')));
+               $blog->setPublic(postVar('public'));
+               $blog->setConvertBreaks(intPostVar('convertbreaks'));
+               $blog->setAllowPastPosting(intPostVar('allowpastposting'));
+               $blog->setDefaultCategory(intPostVar('defcat'));
+               $blog->setSearchable(intPostVar('searchable'));
+               $blog->setEmailRequired(intPostVar('reqemail'));
+               $blog->writeSettings();
+               
+               // store plugin options
+               $aOptions = requestArray('plugoption');
+               NucleusPlugin::apply_plugin_options($aOptions);
+               
+               $data = array(
+                       'context' => 'blog',
+                       'blogid'  => $blogid,
+                       'blog'    => &$blog
+               );
+               $manager->notify('PostPluginOptionsUpdate', $data);
+               
+               self::action_overview(_MSG_SETTINGSCHANGED);
+>>>>>>> skinnable-master
+               return;
+       }
+       
+       /**
+<<<<<<< HEAD
+        * Admin::action_browseowncomments()
+        * Browse own comments
+=======
+        * Admin::action_deleteblog()
+>>>>>>> skinnable-master
+        * 
+        * @param       void
+        * @return      void
+        */
+<<<<<<< HEAD
+       public function action_browseowncomments()
+       {
+               global $member, $manager, $CONF;
+               
+               // start index
+               if ( postVar('start') )
+               {
+                       $start = intPostVar('start');
+               }
+               else
+               {
+                       $start = 0;
+               }
+               
+               // amount of items to show
+               if ( postVar('amount') )
+               {
+                       $amount = intPostVar('amount');
+               }
+               else
+               {
+                       $amount = intval($CONF['DefaultListSize']);
+                       if ( $amount < 1 )
+                       {
+                               $amount = 10;
+                       }
+               }
+               
+               $search = postVar('search');
+               
+               $query =  'SELECT cbody, cuser, cmail, mname, ctime, chost, cnumber, cip, citem FROM '.sql_table('comment').' LEFT OUTER JOIN '.sql_table('member').' ON mnumber=cmember WHERE cmember=' . $member->getID();
+               
+               if ( $search )
+               {
+                       $query .= " and cbody LIKE " . DB::quoteValue('%'.$search.'%');
+               }
+               
+               $query .= ' ORDER BY ctime DESC'
+                       . " LIMIT $start,$amount";
+               
+               $this->pagehead();
+               
+               echo '<p><a href="index.php?action=overview">(' . _BACKHOME . ")</a></p>\n";
+               echo '<h2>' . _COMMENTS_YOUR . "</h2>\n";
+               
+               $template['content'] = 'commentlist';
+               $template['canAddBan'] = 0; // doesn't make sense to allow banning yourself
+               
+               $manager->loadClass("ENCAPSULATE");
+               $navList = new NavList('browseowncomments', $start, $amount, 0, 1000, 0, $search, 0);
+               $navList->showBatchList('comment',$query,'table',$template,_NOCOMMENTS_YOUR);
+               
+               $this->pagefoot();
+=======
+       static private function action_deleteblog()
+       {
+               global $member, $CONF, $manager;
+               
+               $blogid = intRequestVar('blogid');
+               
+               $member->blogAdminRights($blogid) or self::disallow();
+               
+               // check if blog is default blog
+               if ( $CONF['DefaultBlog'] == $blogid )
+               {
+                       self::error(_ERROR_DELDEFBLOG);
+                       return;
+               }
+               
+               $blog =& $manager->getBlog($blogid);
+               
+               self::$skin->parse('deleteblog');
+               return;
+       }
+       
+       /**
+        * Admin::action_deleteblogconfirm()
+        * Delete Blog
+        * 
+        * @param       Void
+        * @return      Void
+        */
+       static private function action_deleteblogconfirm()
+       {
+               global $member, $CONF, $manager;
+               
+               $blogid = intRequestVar('blogid');
+               
+               $data = array('blogid' => $blogid);
+               $manager->notify('PreDeleteBlog', $data);
+               
+               $member->blogAdminRights($blogid) or self::disallow();
+               
+               // check if blog is default blog
+               if ( $CONF['DefaultBlog'] == $blogid )
+               {
+                       self::error(_ERROR_DELDEFBLOG);
+                       return;
+               }
+               
+               // delete all comments
+               $query = 'DELETE FROM ' . sql_table('comment') . ' WHERE cblog='.$blogid;
+               DB::execute($query);
+               
+               // delete all items
+               $query = 'DELETE FROM ' . sql_table('item') . ' WHERE iblog=' . $blogid;
+               DB::execute($query);
+               
+               // delete all team members
+               $query = 'DELETE FROM ' . sql_table('team') . ' WHERE tblog=' . $blogid;
+               DB::execute($query);
+               
+               // delete all bans
+               $query = 'DELETE FROM ' . sql_table('ban') . ' WHERE blogid=' . $blogid;
+               DB::execute($query);
+               
+               // delete all categories
+               $query = 'DELETE FROM ' . sql_table('category') . ' WHERE cblog=' . $blogid;
+               DB::execute($query);
+               
+               // delete all associated plugin options
+               NucleusPlugin::delete_option_values('blog', $blogid);
+               
+               // delete the blog itself
+               $query = 'DELETE FROM ' . sql_table('blog') . ' WHERE bnumber=' . $blogid;
+               DB::execute($query);
+               
+               $data = array('blogid' => $blogid);
+               $manager->notify('PostDeleteBlog', $data);
+               
+               self::action_overview(_DELETED_BLOG);
+>>>>>>> skinnable-master
+               return;
+       }
+       
+       /**
+<<<<<<< HEAD
+        * Admin::action_blogcommentlist()
+        * 
+        * Browse all comments for a weblog
+        * @param       integer $blogid ID for weblog
+        * @return      void
+        */
+       function action_blogcommentlist($blogid = '')
+       {
+               global $member, $manager, $CONF;
+               
+               if ( $blogid == '' )
+               {
+                       $blogid = intRequestVar('blogid');
+               }
+               else
+               {
+                       $blogid = intval($blogid);
+               }
+               
+               $member->teamRights($blogid) or $member->isAdmin() or $this->disallow();
+               
+               // start index
+               if ( postVar('start') )
+               {
+                       $start = intPostVar('start');
+               }
+               else
+               {
+                       $start = 0;
+               }
+               
+               // amount of items to show
+               if ( postVar('amount') )
+               {
+                       $amount = intPostVar('amount');
+               }
+               else
+               {
+                       $amount = intval($CONF['DefaultListSize']);
+                       if ( $amount < 1 )
+                       {
+                               $amount = 10;
+                       }
+               }
+               
+               $search = postVar('search');            // search through comments
+               
+               $query =  'SELECT cbody, cuser, cemail, cmail, mname, ctime, chost, cnumber, cip, citem FROM '.sql_table('comment').' LEFT OUTER JOIN '.sql_table('member').' ON mnumber=cmember WHERE cblog=' . intval($blogid);
+               
+               if ( $search != '' )
+               {
+                       $query .= " and cbody LIKE " . DB::quoteValue('%'.$search.'%');
+               }
+               
+               $query .= ' ORDER BY ctime DESC'
+                       . " LIMIT $start,$amount";
+               
+               $blog =& $manager->getBlog($blogid);
+               
+               $this->pagehead();
+               
+               echo '<p><a href="index.php?action=overview">(' . _BACKHOME . ")</a></p>\n";
+               echo '<h2>', _COMMENTS_BLOG , ' ' , $this->bloglink($blog), '</h2>';
+               
+               $template['content'] = 'commentlist';
+               $template['canAddBan'] = $member->blogAdminRights($blogid);
+               
+               $manager->loadClass("ENCAPSULATE");
+               $navList = new NavList('blogcommentlist', $start, $amount, 0, 1000, $blogid, $search, 0);
+               $navList->showBatchList('comment',$query,'table',$template, _NOCOMMENTS_BLOG);
+               
+               $this->pagefoot();
+=======
+        * Admin::action_memberdelete()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_memberdelete()
+       {
+               global $member, $manager;
+               
+               $memberid = intRequestVar('memberid');
+               
+               ($member->getID() == $memberid) or $member->isAdmin() or self::disallow();
+               
+               $mem =& $manager->getMember($memberid);
+               
+               self::$skin->parse('memberdelete');
+               return;
+       }
+       
+       /**
+        * Admin::action_memberdeleteconfirm()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_memberdeleteconfirm()
+       {
+               global $member;
+               
+               $memberid = intRequestVar('memberid');
+               
+               ($member->getID() == $memberid) or $member->isAdmin() or self::disallow();
+               
+               $error = self::deleteOneMember($memberid);
+               if ( $error )
+               {
+                       self::error($error);
+                       return;
+               }
+               
+               if ( $member->isAdmin() )
+               {
+                       self::action_usermanagement();
+                       return;
+               }
+               else
+               {
+                       self::action_overview(_DELETED_MEMBER);
+                       return;
+               }
+               return;
+       }
+       
+       /**
+        * Admin::deleteOneMember()
+        * Delete a member by id
+        * 
+        * @static
+        * @params      Integer $memberid       member id
+        * @return      String  null string or error messages
+        */
+       static public function deleteOneMember($memberid)
+       {
+               global $manager;
+               
+               $memberid = intval($memberid);
+               $mem =& $manager->getMember($memberid);
+               
+               if ( !$mem->canBeDeleted() )
+               {
+                       return _ERROR_DELETEMEMBER;
+               }
+               
+               $data = array('member' => &$mem);
+               $manager->notify('PreDeleteMember', $data);
+               
+               /* unlink comments from memberid */
+               if ( $memberid )
+               {
+                       $query = "UPDATE %s SET cmember=0, cuser=%s WHERE cmember=%d;";
+                       $query = sprintf($query, sql_table('comment'), DB::quoteValue($mem->getDisplayName()), $memberid);
+                       DB::execute($query);
+               }
+               
+               $query = 'DELETE FROM ' . sql_table('member') . ' WHERE mnumber=' . $memberid;
+               DB::execute($query);
+               
+               $query = 'DELETE FROM ' . sql_table('team') . ' WHERE tmember=' . $memberid;
+               DB::execute($query);
+               
+               $query = 'DELETE FROM ' . sql_table('activation') . ' WHERE vmember=' . $memberid;
+               DB::execute($query);
+               
+               // delete all associated plugin options
+               NucleusPlugin::delete_option_values('member', $memberid);
+               
+               $data = array('member' => &$mem);
+               $manager->notify('PostDeleteMember', $data);
+               
+               return '';
+       }
+       
+       /**
+        * Admin::action_createnewlog()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_createnewlog()
+       {
+               global $member, $CONF, $manager;
+               
+               // Only Super-Admins can do this
+               $member->isAdmin() or self::disallow();
+               
+               self::$skin->parse('createnewlog');
+               return;
+       }
+       
+       /**
+        * Admin::action_addnewlog()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_addnewlog()
+       {
+               global $member, $manager, $CONF;
+               
+               // Only Super-Admins can do this
+               $member->isAdmin() or self::disallow();
+               
+               $bname                  = trim(postVar('name'));
+               $bshortname             = trim(postVar('shortname'));
+               $btimeoffset    = postVar('timeoffset');
+               $bdesc                  = trim(postVar('desc'));
+               $bdefskin               = postVar('defskin');
+               
+               if ( !isValidShortName($bshortname) )
+               {
+                       self::error(_ERROR_BADSHORTBLOGNAME);
+                       return;
+               }
+               
+               if ( $manager->existsBlog($bshortname) )
+               {
+                       self::error(_ERROR_DUPSHORTBLOGNAME);
+                       return;
+               }
+               
+               $data = array(
+                       'name'        => &$bname,
+                       'shortname'   => &$bshortname,
+                       'timeoffset'  => &$btimeoffset,
+                       'description' => &$bdesc,
+                       'defaultskin' => &$bdefskin
+               );
+               $manager->notify('PreAddBlog', $data);
+               
+               // add slashes for sql queries
+               $bname                  = DB::quoteValue($bname);
+               $bshortname             = DB::quoteValue($bshortname);
+               $btimeoffset    = DB::quoteValue($btimeoffset);
+               $bdesc                  = DB::quoteValue($bdesc);
+               $bdefskin               = DB::quoteValue($bdefskin);
+               
+               // create blog
+               $query = "INSERT INTO %s (bname, bshortname, bdesc, btimeoffset, bdefskin) VALUES (%s, %s, %s, %s, %s);";
+               $query = sprintf($query, sql_table('blog'), $bname, $bshortname, $bdesc, $btimeoffset, $bdefskin);
+               DB::execute($query);
+               
+               $blogid = DB::getInsertId();
+               $blog   =& $manager->getBlog($blogid);
+               
+               // create new category
+               $catdefname = (!defined('_EBLOGDEFAULTCATEGORY_NAME') ? 'General' : _EBLOGDEFAULTCATEGORY_NAME);
+               $catdefdesc = (!defined('_EBLOGDEFAULTCATEGORY_DESC') ? 'Items that do not fit in other categories' : _EBLOGDEFAULTCATEGORY_DESC);
+               
+               $query = 'INSERT INTO %s (cblog, cname, cdesc) VALUES (%d, %s, %s)';
+               DB::execute(sprintf($query, sql_table('category'), (integer) $blogid, DB::quoteValue($catdefname), DB::quoteValue($catdefdesc)));
+               $catid = DB::getInsertId();
+               
+               // set as default category
+               $blog->setDefaultCategory($catid);
+               $blog->writeSettings();
+               
+               // create team member
+               $query = "INSERT INTO %s (tmember, tblog, tadmin) VALUES (%d, %d, 1);";
+               $query = sprintf($query, sql_table('team'), (integer) $member->getID(), (integer) $blogid);
+               DB::execute($query);
+               
+               $itemdeftitle = (defined('_EBLOG_FIRSTITEM_TITLE') ? _EBLOG_FIRSTITEM_TITLE : 'First Item');
+               $itemdefbody  = (defined('_EBLOG_FIRSTITEM_BODY')  ? _EBLOG_FIRSTITEM_BODY  : 'This is the first item in your weblog. Feel free to delete it.');
+               
+               $blog->additem(
+                       $blog->getDefaultCategory(),
+                       $itemdeftitle,$itemdefbody,
+                       '',
+                       $blogid,
+                       $member->getID(),
+                       $blog->getCorrectTime(),
+                       0,
+                       0,
+                       0
+               );
+               
+               $data = array('blog' => &$blog);
+               $manager->notify('PostAddBlog', $data);
+               
+               $data = array(
+                       'blog'                  => &$blog,
+                       'name'                  => _EBLOGDEFAULTCATEGORY_NAME,
+                       'description'   => _EBLOGDEFAULTCATEGORY_DESC,
+                       'catid'                 => $catid
+               );
+               $manager->notify('PostAddCategory', $data);
+               
+               /* TODO: we should consider to use the other way insterad of this */
+               $_REQUEST['blogid'] = $blogid;
+               $_REQUEST['catid']  = $catid;
+               self::$skin->parse('addnewlog');
+>>>>>>> skinnable-master
+               return;
+       }
+       
+       /**
+<<<<<<< HEAD
+        * Admin::action_createitem()
+        * Provide a page to item a new item to the given blog
+=======
+        * Admin::action_addnewlog2()
+>>>>>>> skinnable-master
+        * 
+        * @param       void
+        * @return      void
+        */
+<<<<<<< HEAD
+       public function action_createitem()
+       {
+               global $member, $manager;
+               
+               $blogid = intRequestVar('blogid');
+               
+               // check if allowed
+               $member->teamRights($blogid) or $this->disallow();
+               
+               $memberid = $member->getID();
+               
+               $blog =& $manager->getBlog($blogid);
+               
+               // generate the add-item form
+               $handler = new PageFactory($blog);
+               
+               $contents = $handler->getTemplateFor('admin', 'add');
+               $manager->notify('PreAddItemForm', array('contents' => &$contents, 'blog' => &$blog));
+               
+               $parser = new Parser($handler);
+               
+               $this->pagehead();
+               $parser->parse($contents);
+               $this->pagefoot();
+               
+=======
+       static private function action_addnewlog2()
+       {
+               global $member, $manager;
+               $blogid = intRequestVar('blogid');
+               
+               $member->blogAdminRights($blogid) or self::disallow();
+               
+               $burl = requestVar('url');
+               
+               $blog =& $manager->getBlog($blogid);
+               $blog->setURL(trim($burl));
+               $blog->writeSettings();
+               
+               self::action_overview(_MSG_NEWBLOG);
+               return;
+       }
+       
+       /**
+        * Admin::action_skinieoverview()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_skinieoverview()
+       {
+               global $member, $DIR_LIBS, $manager;
+               
+               $member->isAdmin() or self::disallow();
+               
+               include_once($DIR_LIBS . 'skinie.php');
+               
+               self::$skin->parse('skinieoverview');
+>>>>>>> skinnable-master
+               return;
+       }
+       
+       /**
+<<<<<<< HEAD
+        * Admin::action_itemedit()
+=======
+        * Admin::action_skinieimport()
+>>>>>>> skinnable-master
+        * 
+        * @param       void
+        * @return      void
+        */
+<<<<<<< HEAD
+       public function action_itemedit()
+       {
+               global $member, $manager;
+               
+               $itemid = intRequestVar('itemid');
+               
+               // only allow if user is allowed to alter item
+               $member->canAlterItem($itemid) or $this->disallow();
+               
+               $variables =& $manager->getItem($itemid, 1, 1);
+               $blog =& $manager->getBlog(getBlogIDFromItemID($itemid));
+               
+               $manager->notify('PrepareItemForEdit', array('item' => &$variables));
+               
+               if ( $blog->convertBreaks() )
+               {
+                       $variables['body'] = removeBreaks($variables['body']);
+                       $variables['more'] = removeBreaks($variables['more']);
+               }
+               
+               // form to edit blog items
+               $handler = new PageFactory($blog);
+               $handler->setVariables($variables);
+               
+               $content = $handler->getTemplateFor('admin', 'edit');
+               
+               $parser = new Parser($handler);
+               
+               $this->pagehead();
+               $parser->parse($content);
+               $this->pagefoot();
+               return;
+       }
+       
+    /**
+     * @todo document this
+     */
+    function action_itemupdate() {
+        global $member, $manager, $CONF;
+
+        $itemid = intRequestVar('itemid');
+        $catid = postVar('catid');
+
+        // only allow if user is allowed to alter item
+        $member->canUpdateItem($itemid, $catid) or $this->disallow();
+
         $actiontype = postVar('actiontype');
 
         // delete actions are handled by itemdelete (which has confirmation)
@@ -1415,123 +4238,327 @@ class Admin
             $this->action_itemlist(getBlogIDFromItemID($itemid));
         }
     }
+=======
+       static private function action_skinieimport()
+       {
+               global $member;
+               
+               $member->isAdmin() or self::disallow();
+               
+               $skinFileRaw = postVar('skinfile');
+               $mode = postVar('mode');
+               
+               $error = self::skinieimport($mode, $skinFileRaw);
+               if ( $error )
+               {
+                       self::error($error);
+                       return;
+               }
+               
+               self::$skin->parse('skinieimport');
+               return;
+       }
        
        /**
-        * Admin::action_itemdelete()
-        * Delete item
+        * Admin::action_skiniedoimport()
         * 
-        * @param       Void
-        * @return      Void
+        * @param       void
+        * @return      void
+        */
+       static private function action_skiniedoimport()
+       {
+               global $member, $DIR_LIBS, $DIR_SKINS;
+               
+               $member->isAdmin() or self::disallow();
+               
+               // load skinie class
+               include_once($DIR_LIBS . 'skinie.php');
+               
+               $mode = postVar('mode');
+               $skinFileRaw = postVar('skinfile');
+               $allowOverwrite = intPostVar('overwrite');
+               
+               $error = self::skiniedoimport($mode, $skinFileRaw, $allowOverwrite);
+               if ( $error )
+               {
+                       self::error($msg);
+                       return;
+               }
+               
+               self::$skin->parse('skiniedoimport');
+               return;
+       }
+       
+       /**
+        * Admin::action_skinieexport()
+        * 
+        * @param       void
+        * @return      void
         */
-       function action_itemdelete()
+       static private function action_skinieexport()
+       {
+               global $member;
+               
+               $member->isAdmin() or self::disallow();
+               
+               $aSkins = requestIntArray('skin');
+               $aTemplates = requestIntArray('template');
+               $info = postVar('info');
+               
+               self::skinieexport($aSkins, $aTemplates, $info);
+               
+               return;
+       }
+       
+       /**
+        * Admin::action_templateoverview()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_templateoverview()
        {
                global $member, $manager;
                
-               $itemid = intRequestVar('itemid');
+               $member->isAdmin() or self::disallow();
                
-               // only allow if user is allowed to alter item
-               $member->canAlterItem($itemid) or $this->disallow();
+               self::$skin->parse('templateoverview');
+               return;
+       }
+       
+       /**
+        * Admin::action_templateedit()
+        * 
+        * @param       string  $msg    message for pageheader
+        * @return      void
+        */
+       static private function action_templateedit($msg = '')
+       {
+               global $member, $manager;
+               if ( $msg )
+               {
+                       self::$headMess = $msg;
+               }
                
-               if ( !$manager->existsItem($itemid,1,1) )
+               $templateid = intRequestVar('templateid');
+               
+               $member->isAdmin() or self::disallow();
+               
+               self::$extrahead .= "<script type=\"text/javascript\" src=\"<%skinfile(/javascripts/templateEdit.js)%>\"></script>\n";
+               self::$extrahead .= "<script type=\"text/javascript\">setTemplateEditText('" . Entity::hsc(_EDITTEMPLATE_EMPTY) . "');</script>\n";
+               
+               self::$skin->parse('templateedit');
+               return;
+       }
+       
+       /**
+        * Admin::action_templateupdate()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_templateupdate()
+       {
+               global $member,$manager;
+               
+               $templateid = intRequestVar('templateid');
+               
+               $member->isAdmin() or self::disallow();
+               
+               $name = postVar('tname');
+               $desc = postVar('tdesc');
+               
+               if ( !isValidTemplateName($name) )
+               {
+                       self::error(_ERROR_BADTEMPLATENAME);
+                       return;
+               }
+               
+               if ( (Template::getNameFromId($templateid) != $name) && Template::exists($name) )
                {
-                       $this->error(_ERROR_NOSUCHITEM);
+                       self::error(_ERROR_DUPTEMPLATENAME);
+                       return;
                }
                
-               $item =& $manager->getItem($itemid,1,1);
-               $title = Entity::hsc(strip_tags($item['title']));
-               $body = strip_tags($item['body']);
-               $body = Entity::hsc(Entity::shorten($body,300,'...'));
+               // 1. Remove all template parts
+               $query = "DELETE FROM %s WHERE tdesc=%d;";
+               $query = sprintf($query, sql_table('template'), (integer) $templateid);
+               DB::execute($query);
                
-               $this->pagehead();
-               echo '<h2>' . _DELETE_CONFIRM . "</h2>\n";
-               echo '<p>' . _CONFIRMTXT_ITEM . "</p>\n";
-               echo "<div class=\"note\">\n";
-               echo "<b>{$title}</b>\n";
-               echo "<br />\n";
-               echo "{$body}\n";
-               echo "</div>\n";
-               echo "<form method=\"post\" action=\"index.php\">\n";
-               echo "<div>\n";
-               echo "<input type=\"hidden\" name=\"action\" value=\"itemdeleteconfirm\" />\n";
-               echo $manager->addTicketHidden() . "\n";
-               echo "<input type=\"hidden\" name=\"itemid\" value=\"{$itemid}\" />\n";
-               echo '<input type="submit" value="' . _DELETE_CONFIRM_BTN . "\"  tabindex=\"10\" />\n";
-               echo "</div>\n";
-               echo "</form>\n";
-               $this->pagefoot();
+               // 2. Update description
+               $query = "UPDATE %s SET tdname=%s, tddesc=%s WHERE tdnumber=%d;";
+               $query = sprintf($query, sql_table('template_desc'), DB::quoteValue($name), DB::quoteValue($desc), (integer) $templateid);
+               DB::execute($query);
+               
+               // 3. Add non-empty template parts
+               self::addToTemplate($templateid, 'ITEM_HEADER',                 postVar('ITEM_HEADER'));
+               self::addToTemplate($templateid, 'ITEM',                                postVar('ITEM'));
+               self::addToTemplate($templateid, 'ITEM_FOOTER',                 postVar('ITEM_FOOTER'));
+               self::addToTemplate($templateid, 'MORELINK',                    postVar('MORELINK'));
+               self::addToTemplate($templateid, 'EDITLINK',                    postVar('EDITLINK'));
+               self::addToTemplate($templateid, 'NEW',                                 postVar('NEW'));
+               self::addToTemplate($templateid, 'COMMENTS_HEADER',             postVar('COMMENTS_HEADER'));
+               self::addToTemplate($templateid, 'COMMENTS_BODY',               postVar('COMMENTS_BODY'));
+               self::addToTemplate($templateid, 'COMMENTS_FOOTER',             postVar('COMMENTS_FOOTER'));
+               self::addToTemplate($templateid, 'COMMENTS_CONTINUED',  postVar('COMMENTS_CONTINUED'));
+               self::addToTemplate($templateid, 'COMMENTS_TOOMUCH',    postVar('COMMENTS_TOOMUCH'));
+               self::addToTemplate($templateid, 'COMMENTS_AUTH',               postVar('COMMENTS_AUTH'));
+               self::addToTemplate($templateid, 'COMMENTS_ONE',                postVar('COMMENTS_ONE'));
+               self::addToTemplate($templateid, 'COMMENTS_MANY',               postVar('COMMENTS_MANY'));
+               self::addToTemplate($templateid, 'COMMENTS_NONE',               postVar('COMMENTS_NONE'));
+               self::addToTemplate($templateid, 'ARCHIVELIST_HEADER',  postVar('ARCHIVELIST_HEADER'));
+               self::addToTemplate($templateid, 'ARCHIVELIST_LISTITEM', postVar('ARCHIVELIST_LISTITEM'));
+               self::addToTemplate($templateid, 'ARCHIVELIST_FOOTER',  postVar('ARCHIVELIST_FOOTER'));
+               self::addToTemplate($templateid, 'BLOGLIST_HEADER',             postVar('BLOGLIST_HEADER'));
+               self::addToTemplate($templateid, 'BLOGLIST_LISTITEM',   postVar('BLOGLIST_LISTITEM'));
+               self::addToTemplate($templateid, 'BLOGLIST_FOOTER',             postVar('BLOGLIST_FOOTER'));
+               self::addToTemplate($templateid, 'CATLIST_HEADER',              postVar('CATLIST_HEADER'));
+               self::addToTemplate($templateid, 'CATLIST_LISTITEM',    postVar('CATLIST_LISTITEM'));
+               self::addToTemplate($templateid, 'CATLIST_FOOTER',              postVar('CATLIST_FOOTER'));
+               self::addToTemplate($templateid, 'DATE_HEADER',                 postVar('DATE_HEADER'));
+               self::addToTemplate($templateid, 'DATE_FOOTER',                 postVar('DATE_FOOTER'));
+               self::addToTemplate($templateid, 'FORMAT_DATE',                 postVar('FORMAT_DATE'));
+               self::addToTemplate($templateid, 'FORMAT_TIME',                 postVar('FORMAT_TIME'));
+               self::addToTemplate($templateid, 'SEARCH_HIGHLIGHT',    postVar('SEARCH_HIGHLIGHT'));
+               self::addToTemplate($templateid, 'SEARCH_NOTHINGFOUND', postVar('SEARCH_NOTHINGFOUND'));
+               self::addToTemplate($templateid, 'POPUP_CODE',                  postVar('POPUP_CODE'));
+               self::addToTemplate($templateid, 'MEDIA_CODE',                  postVar('MEDIA_CODE'));
+               self::addToTemplate($templateid, 'IMAGE_CODE',                  postVar('IMAGE_CODE'));
+               
+               $data = array('fields' => array());
+               $manager->notify('TemplateExtraFields', $data);
+               foreach ( $data['fields'] as $pfkey=>$pfvalue )
+               {
+                       foreach ( $pfvalue as $pffield => $pfdesc )
+                       {
+                               self::addToTemplate($templateid, $pffield, postVar($pffield));
+                       }
+               }
+               
+               // jump back to template edit
+               self::action_templateedit(_TEMPLATE_UPDATED);
                return;
        }
        
-    /**
-     * @todo document this
-     */
-    function action_itemdeleteconfirm() {
-        global $member;
-
-        $itemid = intRequestVar('itemid');
-
-        // only allow if user is allowed to alter item
-        $member->canAlterItem($itemid) or $this->disallow();
-
-        // get blogid first
-        $blogid = getBlogIdFromItemId($itemid);
-
-        // delete item (note: some checks will be performed twice)
-        $this->deleteOneItem($itemid);
-
-        $this->action_itemlist($blogid);
-    }
-
-    /**
-     * Deletes one item and returns error if something goes wrong
-     * @param int $itemid
-     */
-    function deleteOneItem($itemid) {
-        global $member, $manager;
-
-        // only allow if user is allowed to alter item (also checks if itemid exists)
-        if (!$member->canAlterItem($itemid))
-            return _ERROR_DISALLOWED;
-
-        // need to get blogid before the item is deleted
-        $blogid = getBlogIDFromItemId($itemid);
-
-        $manager->loadClass('ITEM');
-        Item::delete($itemid);
-
-        // update blog's futureposted
-        $this->updateFuturePosted($blogid);
-    }
-
        /**
-        * Admin::updateFuturePosted()
-        * Update a blog's future posted flag
+        * Admin::addToTemplate()
         * 
-        * @param integer $blogid
+        * @param       Integer $id     ID for template
+        * @param       String  $partname       parts name
+        * @param       String  $content        template contents
+        * @return      Integer record index
+        * 
+        */
+       static private function addToTemplate($id, $partname, $content)
+       {
+               // don't add empty parts:
+               if ( !trim($content) )
+               {
+                       return -1;
+               }
+               
+               $query = "INSERT INTO %s (tdesc, tpartname, tcontent) VALUES (%d, %s, %s);";
+               $query = sprintf($query, sql_table('template'), (integer) $id, DB::quoteValue($partname), DB::quoteValue($content));
+               if ( DB::execute($query) === FALSE )
+               {
+                       $err = DB::getError();
+                       exit(_ADMIN_SQLDIE_QUERYERROR . $err[2]);
+               }
+               return DB::getInsertId();
+       }
+       
+       /**
+        * Admin::action_templatedelete()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_templatedelete()
+       {
+               global $member, $manager;
+               
+               $member->isAdmin() or self::disallow();
+               
+               $templateid = intRequestVar('templateid');
+               // TODO: check if template can be deleted
+               
+               self::$skin->parse('templatedelete');
+               return;
+       }
+>>>>>>> skinnable-master
+       
+       /**
+        * Admin::action_templatedeleteconfirm()
+        * 
+        * @param       void
         * @return      void
+        */
+       static private function action_templatedeleteconfirm()
+       {
+               global $member, $manager;
+               
+               $templateid = intRequestVar('templateid');
+               
+               $member->isAdmin() or self::disallow();
+               
+               $data = array('templateid' => $templateid);
+               $manager->notify('PreDeleteTemplate', $data);
+               
+               // 1. delete description
+               DB::execute('DELETE FROM ' . sql_table('template_desc') . ' WHERE tdnumber=' . $templateid);
+               
+               // 2. delete parts
+               DB::execute('DELETE FROM ' . sql_table('template') . ' WHERE tdesc=' . $templateid);
+               
+               
+               $data = array('templateid' => $templateid);
+               $manager->notify('PostDeleteTemplate', $data);
+               
+               self::action_templateoverview();
+               return;
+       }
+       
+       /**
+        * Admin::action_templatenew()
         * 
+        * @param       void
+        * @return      void
         */
-       function updateFuturePosted($blogid)
+       static private function action_templatenew()
        {
-               global $manager;
+               global $member;
                
-               $blog =& $manager->getBlog($blogid);
-               $currenttime = $blog->getCorrectTime(time());
+               $member->isAdmin() or self::disallow();
                
+<<<<<<< HEAD
                $query = "SELECT * FROM %s WHERE iblog=%d AND iposted=0 AND itime>%s";
                $query = sprintf($query, sql_table('item'), (integer) $blogid, DB::formatDateTime($currenttime));
                $result = DB::getResult($query);
                
                if ( $result->rowCount() > 0 )
+=======
+               $name = postVar('name');
+               $desc = postVar('desc');
+               
+               if ( !isValidTemplateName($name) )
+>>>>>>> skinnable-master
                {
-                               $blog->setFuturePost();
+                       self::error(_ERROR_BADTEMPLATENAME);
+                       return;
                }
-               else
+               
+               if ( Template::exists($name) )
                {
-                               $blog->clearFuturePost();
+                       self::error(_ERROR_DUPTEMPLATENAME);
+                       return;
                }
+               
+               $newTemplateId = Template::createNew($name, $desc);
+               
+               self::action_templateoverview();
                return;
        }
+<<<<<<< HEAD
 
     /**
      * @todo document this
@@ -1746,20 +4773,86 @@ class Admin
 
                // intercept words that are too long
                if (preg_match('#[a-zA-Z0-9|\.,;:!\?=\/\\\\]{90,90}#', $body) != FALSE)
+=======
+       
+       /**
+        * Admin::action_templateclone()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_templateclone()
+       {
+               global $member;
+               
+               $templateid = intRequestVar('templateid');
+               
+               $member->isAdmin() or self::disallow();
+               
+               // 1. read old template
+               $name = Template::getNameFromId($templateid);
+               $desc = Template::getDesc($templateid);
+               
+               // 2. create desc thing
+               $name = "cloned" . $name;
+               
+               // if a template with that name already exists:
+               if ( Template::exists($name) )
+>>>>>>> skinnable-master
                {
-                       $this->error(_ERROR_COMMENT_LONGWORD);
+                       $i = 1;
+                       while (Template::exists($name . $i))
+                       {
+                               $i++;
+                       }
+                       $name .= $i;
                }
-
-               // check length
-               if (i18n::strlen($body) < 3)
+               
+               $newid = Template::createNew($name, $desc);
+               
+               // 3. create clone
+               // go through parts of old template and add them to the new one
+               $query = "SELECT tpartname, tcontent FROM %s WHERE tdesc=%d;";
+               $query = sprintf($query, sql_table('template'), (integer) $templateid);
+               
+               $res = DB::getResult($query);
+               foreach ( $res as $row)
                {
-                       $this->error(_ERROR_COMMENT_NOCOMMENT);
+                       self::addToTemplate($newid, $row['tpartname'], $row['tcontent']);
                }
-
-               if (i18n::strlen($body) > 5000)
+               
+               self::action_templateoverview();
+               return;
+       }
+       
+       /**
+        * Admin::action_admintemplateoverview()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_admintemplateoverview()
+       {
+               global $member;
+               $member->isAdmin() or self::disallow();
+               self::$skin->parse('admntemplateoverview');
+               return;
+       }
+       
+       /**
+        * Admin::action_admintemplateedit()
+        * 
+        * @param       string  $msg    message for pageheader
+        * @return      void
+        */
+       static private function action_admintemplateedit($msg = '')
+       {
+               global $member, $manager;
+               if ( $msg )
                {
-                       $this->error(_ERROR_COMMENT_TOOLONG);
+                       self::$headMess = $msg;
                }
+<<<<<<< HEAD
 
                // prepare body
                $body = Comment::prepareBody($body);
@@ -1782,54 +4875,193 @@ class Admin
                        $this->action_browseowncomments();
 
     }
+=======
+               $member->isAdmin() or self::disallow();
+               
+               self::$extrahead .= "<script type=\"text/javascript\" src=\"<%skinfile(/javascripts/templateEdit.js)%>\"></script>\n";
+               self::$extrahead .= '<script type="text/javascript">setTemplateEditText("' . Entity::hsc(_EDITTEMPLATE_EMPTY) . '");</script>' . "\n";
+               
+               self::$skin->parse('admintemplateedit');
+               return;
+       }
+>>>>>>> skinnable-master
        
        /**
-        * Admin::action_commentdelete()
-        * Update comment
+        * Admin::action_admintemplateupdate()
         * 
-        * @param       Void
-        * @return      Void
+        * @param       void
+        * @return      void
         */
-       function action_commentdelete()
+       static private function action_admintemplateupdate()
        {
                global $member, $manager;
+               $templateid = intRequestVar('templateid');
+               $member->isAdmin() or self::disallow();
+               $name = postVar('tname');
+               $desc = postVar('tdesc');
                
-               $commentid = intRequestVar('commentid');
-               $member->canAlterComment($commentid) or $this->disallow();
-               $comment = Comment::getComment($commentid);
-               
-               $body = strip_tags($comment['body']);
-               $body = Entity::hsc(Entity::shorten($body, 300, '...'));
-               
-               if ( $comment['member'] )
+               if ( !isValidTemplateName($name) )
                {
-                       $author = $comment['member'];
+                       self::error(_ERROR_BADTEMPLATENAME);
+                       return;
                }
-               else
+               
+               if ( (Template::getNameFromId($templateid) != $name) && Template::exists($name) )
                {
-                       $author = $comment['user'];
+                       self::error(_ERROR_DUPTEMPLATENAME);
+                       return;
                }
                
-               $this->pagehead();
+               // 1. Remove all template parts
+               $query = "DELETE FROM %s WHERE tdesc=%d;";
+               $query = sprintf($query, sql_table('template'), (integer) $templateid);
+               DB::execute($query);
                
-               echo '<h2>' . _DELETE_CONFIRM . "</h2>\n";
-               echo '<p>' . _CONFIRMTXT_COMMENT . "</p>\n";
-               echo "<div class=\"note\">\n";
-               echo '<b>' . _EDITC_WHO . ":</b>{$author}<br />\n";
-               echo '<b>' . _EDITC_TEXT . ":</b>{$body}\n";
-               echo "</div>\n";
-               echo "<form method=\"post\" action=\"index.php\">\n";
-               echo "<div>\n";
-               echo "<input type=\"hidden\" name=\"action\" value=\"commentdeleteconfirm\" />\n";
-               echo $manager->addTicketHidden() . "\n";
-               echo "<input type=\"hidden\" name=\"commentid\" value=\"{$commentid}\" />\n";
-               echo '<input type="submit" tabindex="10" value="'. _DELETE_CONFIRM_BTN . "\" />\n";
-               echo "</div>\n";
-               echo "</form>\n";
-               $this->pagefoot();
+               // 2. Update description
+               $query = "UPDATE %s SET tdname=%s, tddesc=%s WHERE tdnumber=%d;";
+               $query = sprintf($query, sql_table('template_desc'), DB::quoteValue($name), DB::quoteValue($desc), (integer) $templateid);
+               DB::execute($query);
+               
+               // 3. Add non-empty template parts
+               self::addToTemplate($templateid, 'NORMALSKINLIST_HEAD',                                         postVar('NORMALSKINLIST_HEAD'));
+               self::addToTemplate($templateid, 'NORMALSKINLIST_BODY',                                         postVar('NORMALSKINLIST_BODY'));
+               self::addToTemplate($templateid, 'NORMALSKINLIST_FOOT',                                         postVar('NORMALSKINLIST_FOOT'));
+               self::addToTemplate($templateid, 'ADMIN_CUSTOMHELPLINK_ICON',                           postVar('ADMIN_CUSTOMHELPLINK_ICON'));
+               self::addToTemplate($templateid, 'ADMIN_CUSTOMHELPLINK_ANCHOR',                         postVar('ADMIN_CUSTOMHELPLINK_ANCHOR'));
+               self::addToTemplate($templateid, 'ADMIN_BLOGLINK',                                                      postVar('ADMIN_BLOGLINK'));
+               self::addToTemplate($templateid, 'ADMIN_BATCHLIST',                                                     postVar('ADMIN_BATCHLIST'));
+               self::addToTemplate($templateid, 'ACTIVATE_FORGOT_TITLE',                                       postVar('ACTIVATE_FORGOT_TITLE'));
+               self::addToTemplate($templateid, 'ACTIVATE_FORGOT_TEXT',                                        postVar('ACTIVATE_FORGOT_TEXT'));
+               self::addToTemplate($templateid, 'ACTIVATE_REGISTER_TITLE',                                     postVar('ACTIVATE_REGISTER_TITLE'));
+               self::addToTemplate($templateid, 'ACTIVATE_REGISTER_TEXT',                                      postVar('ACTIVATE_REGISTER_TEXT'));
+               self::addToTemplate($templateid, 'ACTIVATE_CHANGE_TITLE',                                       postVar('ACTIVATE_CHANGE_TITLE'));
+               self::addToTemplate($templateid, 'ACTIVATE_CHANGE_TEXT',                                        postVar('ACTIVATE_CHANGE_TEXT'));
+               self::addToTemplate($templateid, 'TEMPLATE_EDIT_EXPLUGNAME',                            postVar('TEMPLATE_EDIT_EXPLUGNAME'));
+               self::addToTemplate($templateid, 'TEMPLATE_EDIT_ROW_HEAD',                                      postVar('TEMPLATE_EDIT_ROW_HEAD'));
+               self::addToTemplate($templateid, 'TEMPLATE_EDIT_ROW_TAIL',                                      postVar('TEMPLATE_EDIT_ROW_TAIL'));
+               self::addToTemplate($templateid, 'SPECIALSKINLIST_HEAD',                                        postVar('SPECIALSKINLIST_HEAD'));
+               self::addToTemplate($templateid, 'SPECIALSKINLIST_BODY',                                        postVar('SPECIALSKINLIST_BODY'));
+               self::addToTemplate($templateid, 'SPECIALSKINLIST_FOOT',                                        postVar('SPECIALSKINLIST_FOOT'));
+               self::addToTemplate($templateid, 'SYSTEMINFO_GDSETTINGS',                                       postVar('SYSTEMINFO_GDSETTINGS'));
+               self::addToTemplate($templateid, 'BANLIST_DELETED_LIST',                                        postVar('BANLIST_DELETED_LIST'));
+               self::addToTemplate($templateid, 'INSERT_PLUGOPTION_TITLE',                                     postVar('INSERT_PLUGOPTION_TITLE'));
+               self::addToTemplate($templateid, 'INSERT_PLUGOPTION_BODY',                                      postVar('INSERT_PLUGOPTION_BODY'));
+               self::addToTemplate($templateid, 'INPUTYESNO_TEMPLATE_ADMIN',                           postVar('INPUTYESNO_TEMPLATE_ADMIN'));
+               self::addToTemplate($templateid, 'INPUTYESNO_TEMPLATE_NORMAL',                          postVar('INPUTYESNO_TEMPLATE_NORMAL'));
+               self::addToTemplate($templateid, 'ADMIN_SPECIALSKINLIST_HEAD',                          postVar('ADMIN_SPECIALSKINLIST_HEAD'));
+               self::addToTemplate($templateid, 'ADMIN_SPECIALSKINLIST_BODY',                          postVar('ADMIN_SPECIALSKINLIST_BODY'));
+               self::addToTemplate($templateid, 'ADMIN_SPECIALSKINLIST_FOOT',                          postVar('ADMIN_SPECIALSKINLIST_FOOT'));
+               self::addToTemplate($templateid, 'SKINIE_EXPORT_LIST',                                          postVar('SKINIE_EXPORT_LIST'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_SELECT_HEAD',                       postVar('SHOWLIST_LISTPLUG_SELECT_HEAD'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_SELECT_BODY',                       postVar('SHOWLIST_LISTPLUG_SELECT_BODY'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_SELECT_FOOT',                       postVar('SHOWLIST_LISTPLUG_SELECT_FOOT'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_HEAD',                        postVar('SHOWLIST_LISTPLUG_TABLE_HEAD'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_BODY',                        postVar('SHOWLIST_LISTPLUG_TABLE_BODY'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_FOOT',                        postVar('SHOWLIST_LISTPLUG_TABLE_FOOT'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_MEMBLIST_HEAD',       postVar('SHOWLIST_LISTPLUG_TABLE_MEMBLIST_HEAD'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_MEMBLIST_BODY',       postVar('SHOWLIST_LISTPLUG_TABLE_MEMBLIST_BODY'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_MEMBLIST_FOOT',       postVar('SHOWLIST_LISTPLUG_TABLE_MEMBLIST_FOOT'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_TEAMLIST_HEAD',       postVar('SHOWLIST_LISTPLUG_TABLE_TEAMLIST_HEAD'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_TEAMLIST_BODY',       postVar('SHOWLIST_LISTPLUG_TABLE_TEAMLIST_BODY'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_TEAMLIST_FOOT',       postVar('SHOWLIST_LISTPLUG_TABLE_TEAMLIST_FOOT'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HEAD',       postVar('SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HEAD'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY',       postVar('SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL',       postVar('SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST',       postVar('SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE',       postVar('SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND',       postVar('SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ',       postVar('SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE',       postVar('SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN',       postVar('SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN',       postVar('SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP',       postVar('SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL',       postVar('SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_PLUGLIST_FOOT',       postVar('SHOWLIST_LISTPLUG_TABLE_PLUGLIST_FOOT'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_POPTLIST_HEAD',       postVar('SHOWLIST_LISTPLUG_TABLE_POPTLIST_HEAD'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_POPTLIST_BODY',       postVar('SHOWLIST_LISTPLUG_TABLE_POPTLIST_BODY'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_PLGOPT_OYESNO',       postVar('SHOWLIST_LISTPLUG_TABLE_PLGOPT_OYESNO'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_PLGOPT_OPWORD',       postVar('SHOWLIST_LISTPLUG_TABLE_PLGOPT_OPWORD'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_PLGOPT_OSELEP',       postVar('SHOWLIST_LISTPLUG_TABLE_PLGOPT_OSELEP'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_PLGOPT_OSELEO',       postVar('SHOWLIST_LISTPLUG_TABLE_PLGOPT_OSELEO'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_PLGOPT_OSELEC',       postVar('SHOWLIST_LISTPLUG_TABLE_PLGOPT_OSELEC'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_PLGOPT_OTAREA',       postVar('SHOWLIST_LISTPLUG_TABLE_PLGOPT_OTAREA'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_PLGOPT_OITEXT',       postVar('SHOWLIST_LISTPLUG_TABLE_PLGOPT_OITEXT'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_PLUGOPTN_FOOT',       postVar('SHOWLIST_LISTPLUG_TABLE_PLUGOPTN_FOOT'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_POPTLIST_FOOT',       postVar('SHOWLIST_LISTPLUG_TABLE_POPTLIST_FOOT'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_ITEMLIST_HEAD',       postVar('SHOWLIST_LISTPLUG_TABLE_ITEMLIST_HEAD'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_ITEMLIST_BODY',       postVar('SHOWLIST_LISTPLUG_TABLE_ITEMLIST_BODY'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_ITEMLIST_FOOT',       postVar('SHOWLIST_LISTPLUG_TABLE_ITEMLIST_FOOT'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_CMNTLIST_HEAD',       postVar('SHOWLIST_LISTPLUG_TABLE_CMNTLIST_HEAD'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_CMNTLIST_BODY',       postVar('SHOWLIST_LISTPLUG_TABLE_CMNTLIST_BODY'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_CMNTLIST_ABAN',       postVar('SHOWLIST_LISTPLUG_TABLE_CMNTLIST_ABAN'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_CMNTLIST_FOOT',       postVar('SHOWLIST_LISTPLUG_TABLE_CMNTLIST_FOOT'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_BLOGLIST_HEAD',       postVar('SHOWLIST_LISTPLUG_TABLE_BLOGLIST_HEAD'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_BLOGLIST_BODY',       postVar('SHOWLIST_LISTPLUG_TABLE_BLOGLIST_BODY'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM',       postVar('SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM',       postVar('SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_BLOGLIST_FOOT',       postVar('SHOWLIST_LISTPLUG_TABLE_BLOGLIST_FOOT'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_BLOGSNAM_HEAD',       postVar('SHOWLIST_LISTPLUG_TABLE_BLOGSNAM_HEAD'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_BLOGSNAM_BODY',       postVar('SHOWLIST_LISTPLUG_TABLE_BLOGSNAM_BODY'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_BLOGSNAM_FOOT',       postVar('SHOWLIST_LISTPLUG_TABLE_BLOGSNAM_FOOT'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_SHORTNAM_HEAD',       postVar('SHOWLIST_LISTPLUG_TABLE_SHORTNAM_HEAD'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_SHORTNAM_BODY',       postVar('SHOWLIST_LISTPLUG_TABLE_SHORTNAM_BODY'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_SHORTNAM_FOOT',       postVar('SHOWLIST_LISTPLUG_TABLE_SHORTNAM_FOOT'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_CATELIST_HEAD',       postVar('SHOWLIST_LISTPLUG_TABLE_CATELIST_HEAD'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_CATELIST_BODY',       postVar('SHOWLIST_LISTPLUG_TABLE_CATELIST_BODY'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_CATELIST_FOOT',       postVar('SHOWLIST_LISTPLUG_TABLE_CATELIST_FOOT'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_TPLTLIST_HEAD',       postVar('SHOWLIST_LISTPLUG_TABLE_TPLTLIST_HEAD'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_TPLTLIST_BODY',       postVar('SHOWLIST_LISTPLUG_TABLE_TPLTLIST_BODY'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_TPLTLIST_FOOT',       postVar('SHOWLIST_LISTPLUG_TABLE_TPLTLIST_FOOT'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_SKINLIST_HEAD',       postVar('SHOWLIST_LISTPLUG_TABLE_SKINLIST_HEAD'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_SKINLIST_BODY',       postVar('SHOWLIST_LISTPLUG_TABLE_SKINLIST_BODY'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_SKINLIST_FOOT',       postVar('SHOWLIST_LISTPLUG_TABLE_SKINLIST_FOOT'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_DRFTLIST_HEAD',       postVar('SHOWLIST_LISTPLUG_TABLE_DRFTLIST_HEAD'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_DRFTLIST_BODY',       postVar('SHOWLIST_LISTPLUG_TABLE_DRFTLIST_BODY'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_DRFTLIST_FOOT',       postVar('SHOWLIST_LISTPLUG_TABLE_DRFTLIST_FOOT'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_ACTNLIST_HEAD',       postVar('SHOWLIST_LISTPLUG_TABLE_ACTNLIST_HEAD'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_ACTNLIST_BODY',       postVar('SHOWLIST_LISTPLUG_TABLE_ACTNLIST_BODY'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_ACTNLIST_FOOT',       postVar('SHOWLIST_LISTPLUG_TABLE_ACTNLIST_FOOT'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_IBANLIST_HEAD',       postVar('SHOWLIST_LISTPLUG_TABLE_IBANLIST_HEAD'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_IBANLIST_BODY',       postVar('SHOWLIST_LISTPLUG_TABLE_IBANLIST_BODY'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_IBANLIST_FOOT',       postVar('SHOWLIST_LISTPLUG_TABLE_IBANLIST_FOOT'));
+               self::addToTemplate($templateid, 'SHOWLIST_LISTPLUG_TABLE_NAVILIST',            postVar('SHOWLIST_LISTPLUG_TABLE_NAVILIST'));
+               self::addToTemplate($templateid, 'PLUGIN_QUICKMENU_TITLE',                                      postVar('PLUGIN_QUICKMENU_TITLE'));
+               self::addToTemplate($templateid, 'PLUGIN_QUICKMENU_HEAD',                                       postVar('PLUGIN_QUICKMENU_HEAD'));
+               self::addToTemplate($templateid, 'PLUGIN_QUICKMENU_BODY',                                       postVar('PLUGIN_QUICKMENU_BODY'));
+               self::addToTemplate($templateid, 'PLUGIN_QUICKMENU_FOOT',                                       postVar('PLUGIN_QUICKMENU_FOOT'));
+               
+               $data = array('fields' => array());
+               $manager->notify('AdminTemplateExtraFields', $data);
+               foreach ( $data['fields'] as $pfkey => $pfvalue )
+               {
+                       foreach ( $pfvalue as $pffield => $pfdesc )
+                       {
+                               self::addToTemplate($templateid, $pffield, postVar($pffield));
+                       }
+               }
+               
+               // jump back to template edit
+               self::action_admintemplateedit(_TEMPLATE_UPDATED);
+               return;
+       }
+       
+       /**
+        * Admin::action_admintemplatedelete()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_admintemplatedelete()
+       {
+               global $member, $manager;
+               $member->isAdmin() or self::disallow();
+               
+               // TODO: check if template can be deleted
+               self::$skin->parse('admintemplatedelete');
                return;
        }
        
+<<<<<<< HEAD
     /**
      * @todo document this
      */
@@ -1981,23 +5213,30 @@ class Admin
         $this->action_editmembersettings(intRequestVar('memberid'));
     }
 
+=======
+>>>>>>> skinnable-master
        /**
-        * @todo document this
+        * Admin::action_admintemplatedeleteconfirm()
+        * 
+        * @param       void
+        * @return      void
         */
-       function action_editmembersettings($memberid = '') {
-               global $member, $manager, $CONF;
+       static private function action_admintemplatedeleteconfirm()
+       {
+               global $member, $manager;
                
-               if ($memberid == '')
-               {
-                       $memberid = $member->getID();
-               }
+               $templateid = intRequestVar('templateid');
+               $member->isAdmin() or self::disallow();
                
-               // check if allowed
-               ($member->getID() == $memberid) or $member->isAdmin() or $this->disallow();
+               $data = array('templateid' => $templateid);
+               $manager->notify('PreDeleteAdminTemplate', $data);
                
-               $extrahead = '<script type="text/javascript" src="javascript/numbercheck.js"></script>';
-               $this->pagehead($extrahead);
+               // 1. delete description
+               $query = "DELETE FROM %s WHERE tdnumber=%s;";
+               $query = sprintf($query, sql_table('template_desc'), (integer) $templateid);
+               DB::execute($query);
                
+<<<<<<< HEAD
                // show message to go back to member overview (only for admins)
                if ($member->isAdmin())
                {
@@ -2124,32 +5363,36 @@ class Admin
                                )
                        );
                $this->pagefoot();
+=======
+               // 2. delete parts
+               $query = "DELETE FROM %s WHERE tdesc=%d;";
+               $query = sprintf($query, sql_table('template'), (integer) $templateid);
+               DB::execute($query);
+               
+               $data = array('templateid' => $templateid);
+               $manager->notify('PostDeleteAdminTemplate', $data);
+               
+               self::action_admintemplateoverview();
+               return;
+>>>>>>> skinnable-master
        }
        
-    /**
-     * @todo document this
-     */
-    function action_changemembersettings() {
-        global $member, $CONF, $manager;
-
-        $memberid = intRequestVar('memberid');
-
-        // check if allowed
-        ($member->getID() == $memberid) or $member->isAdmin() or $this->disallow();
-
-        $name           = trim(strip_tags(postVar('name')));
-        $realname       = trim(strip_tags(postVar('realname')));
-        $password       = postVar('password');
-        $repeatpassword = postVar('repeatpassword');
-        $email          = strip_tags(postVar('email'));
-        $url            = strip_tags(postVar('url'));
-
-               # replaced eregi() below with preg_match(). ereg* functions are deprecated in PHP 5.3.0
-               # original eregi: !eregi("^https?://", $url)
-
-               // begin if: sometimes user didn't prefix the URL with http:// or https://, this cause a malformed URL. Let's fix it.
-               if (!preg_match('#^https?://#', $url) )
+       /**
+        * Admin::action_admintemplatenew()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_admintemplatenew()
+       {
+               global $member;
+               $member->isAdmin() or self::disallow();
+               $name = postVar('name');
+               $desc = postVar('desc');
+               
+               if ( !isValidTemplateName($name) )
                {
+<<<<<<< HEAD
                        $url = 'http://' . $url;
                }
 
@@ -2182,16 +5425,22 @@ class Admin
                                        $this->error($pwderror);
                                }
                        }
+=======
+                       self::error(_ERROR_BADTEMPLATENAME);
+                       return;
+>>>>>>> skinnable-master
                }
-               
-               if ( !NOTIFICATION::address_validation($email) )
+               else if ( !preg_match('#^admin/#', $name) )
                {
-                       $this->error(_ERROR_BADMAILADDRESS);
+                       self::error(_ERROR_BADADMINTEMPLATENAME);
+                       return;
                }
-               if ( !$realname )
+               else if ( Template::exists($name) )
                {
-                       $this->error(_ERROR_REALNAMEMISSING);
+                       self::error(_ERROR_DUPTEMPLATENAME);
+                       return;
                }
+<<<<<<< HEAD
         if ( ($locale != '') && (!in_array($locale, i18n::get_available_locale_list())) )
             $this->error(_ERROR_NOSUCHTRANSLATION);
 
@@ -2263,44 +5512,109 @@ class Admin
         }
     }
 
+=======
+               
+               $newTemplateId = Template::createNew($name, $desc);
+               self::action_admintemplateoverview();
+               return;
+       }
+       
+>>>>>>> skinnable-master
        /**
-        * Admin::action_memberadd()
+        * Admin::action_admintemplateclone()
         * 
         * @param       void
         * @return      void
-        * 
-       */
-       function action_memberadd()
+        */
+       static private function action_admintemplateclone()
        {
-               global $member, $manager;
+               global $member;
+               $templateid = intRequestVar('templateid');
+               $member->isAdmin() or self::disallow();
                
-               // check if allowed
-               $member->isAdmin() or $this->disallow();
+               // 1. read old template
+               $name = Template::getNameFromId($templateid);
+               $desc = Template::getDesc($templateid);
                
-               if ( postVar('password') != postVar('repeatpassword') )
+               // 2. create desc thing
+               $name = $name . "cloned";
+               
+               // if a template with that name already exists:
+               if ( Template::exists($name) )
                {
-                       $this->error(_ERROR_PASSWORDMISMATCH);
+                       $i = 1;
+                       while ( Template::exists($name . $i) )
+                       {
+                               $i++;
+                       }
+                       $name .= $i;
                }
                
-               if ( i18n::strlen(postVar('password')) < 6 )
+               $newid = Template::createNew($name, $desc);
+               
+               // 3. create clone
+               // go through parts of old template and add them to the new one
+               $query = "SELECT tpartname, tcontent FROM %s WHERE tdesc=%d;";
+               $query = sprintf($query, sql_table('template'), (integer) $templateid);
+               
+               $res = DB::getResult($query);
+               foreach ( $res as $row )
                {
-                       $this->error(_ERROR_PASSWORDTOOSHORT);
+                       self::addToTemplate($newid, $row['tpartname'], $row['tcontent']);
                }
                
-               $res = Member::create(postVar('name'), postVar('realname'), postVar('password'), postVar('email'), postVar('url'), postVar('admin'), postVar('canlogin'), postVar('notes'));
-               if ( $res != 1 )
+               self::action_admintemplateoverview();
+               return;
+       }
+
+       /**
+        * Admin::action_skinoverview()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_skinoverview()
+       {
+               global $member, $manager;
+               
+               $member->isAdmin() or self::disallow();
+               
+               self::$skin->parse('skinoverview');
+               return;
+       }
+       
+       /**
+        * Admin::action_skinnew()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_skinnew()
+       {
+               global $member;
+               
+               $member->isAdmin() or self::disallow();
+               
+               $name = trim(postVar('name'));
+               $desc = trim(postVar('desc'));
+               
+               if ( !isValidSkinName($name) )
+               {
+                       self::error(_ERROR_BADSKINNAME);
+                       return;
+               }
+               else if ( SKIN::exists($name) )
                {
-                       $this->error($res);
+                       self::error(_ERROR_DUPSKINNAME);
+                       return;
                }
                
-               // fire PostRegister event
-               $newmem = new Member();
-               $newmem->readFromName(postVar('name'));
-               $manager->notify('PostRegister',array('member' => &$newmem));
+               SKIN::createNew($name, $desc);
                
-               $this->action_usermanagement();
+               self::action_skinoverview();
                return;
        }
+<<<<<<< HEAD
 
     /**
      * Account activation
@@ -3166,154 +6480,515 @@ class Admin
 
         $this->action_blogsettings();
     }
+=======
        
        /**
-        * Admin::deleteOneCategory()
-        * Delete a category by its id
+        * Admin::action_skinedit()
         * 
-        * @param       String  $catid  category id for deleting
-        * @return      Void
+        * @param       void
+        * @return      void
         */
-       function deleteOneCategory($catid)
+       static private function action_skinedit()
+       {
+               global $member;
+               
+               $member->isAdmin() or self::disallow();
+               
+               self::$skin->parse('skinedit');
+               return;
+       }
+       
+       /**
+        * Admin::action_skineditgeneral()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_skineditgeneral()
+       {
+               global $member;
+               
+               $skinid = intRequestVar('skinid');
+               
+               $member->isAdmin() or self::disallow();
+               
+               $error = self::skineditgeneral($skinid);
+               if ( $error )
+               {
+                       self::error($error);
+                       return;
+               }
+               
+               self::action_skinedit();
+               return;
+       }
+       
+       static private function action_skinedittype($msg = '')
+       {
+               global $member;
+               
+               $member->isAdmin() or self::disallow();
+               
+               if ( $msg )
+               {
+                       self::$headMess = $msg;
+               }
+               
+               $type = requestVar('type');
+               $type = trim($type);
+               $type = strtolower($type);
+               
+               if ( !isValidShortName($type) )
+               {
+                       self::error(_ERROR_SKIN_PARTS_SPECIAL_FORMAT);
+                       return;
+               }
+               
+               self::$skin->parse('skinedittype');
+               return;
+       }
+>>>>>>> skinnable-master
+       
+       /**
+        * Admin::action_skinupdate()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_skinupdate()
        {
                global $manager, $member;
                
-               $catid = intval($catid);
-               $blogid = getBlogIDFromCatID($catid);
+               $skinid = intRequestVar('skinid');
+               $content = trim(postVar('content'));
+               $type = postVar('type');
                
-               if ( !$member->blogAdminRights($blogid) )
+               $member->isAdmin() or self::disallow();
+               
+               $skin =& $manager->getSKIN($skinid);
+               $skin->update($type, $content);
+               
+               self::action_skinedittype(_SKIN_UPDATED);
+               return;
+       }
+       
+       /**
+        * Admin::action_skindelete()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_skindelete()
+       {
+               global $CONF, $member;
+               
+               $member->isAdmin() or self::disallow();
+               
+               $skinid = intRequestVar('skinid');
+               
+               // don't allow default skin to be deleted
+               if ( $skinid == $CONF['BaseSkin'] )
                {
-                       return ERROR_DISALLOWED;
+                       self::error(_ERROR_DEFAULTSKIN);
+                       return;
                }
                
-               // get blog
-               $blog =& $manager->getBlog($blogid);
+               // don't allow deletion of default skins for blogs
+               $query = "SELECT bname FROM %s WHERE bdefskin=%d";
+               $query = sprintf($query, sql_table('blog'), (integer) $skinid);
                
-               // check if the category is valid
-               if ( !$blog || !$blog->isValidCategory($catid) )
+               $name = DB::getValue($query);
+               if ( $name )
                {
-                       return _ERROR_NOSUCHCATEGORY;
+                       self::error(_ERROR_SKINDEFDELETE . Entity::hsc($name));
+                       return;
                }
                
-               $destcatid = $blog->getDefaultCategory();
+               self::$skin->parse('skindelete');
+               return;
+       }
+       
+       /**
+        * Admin::action_skindeleteconfirm()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_skindeleteconfirm()
+       {
+               global $member, $CONF;
                
-               // don't allow deletion of default category
-               if ( $blog->getDefaultCategory() == $catid )
+               $member->isAdmin() or self::disallow();
+               
+               $skinid = intRequestVar('skinid');
+               
+               // don't allow default skin to be deleted
+               if ( $skinid == $CONF['BaseSkin'] )
                {
-                       return _ERROR_DELETEDEFCATEGORY;
+                       self::error(_ERROR_DEFAULTSKIN);
+                       return;
                }
                
+<<<<<<< HEAD
                // check if catid is the only category left for blogid
                $query = 'SELECT catid FROM '.sql_table('category').' WHERE cblog=' . $blogid;
                $res = DB::getResult($query);
                if ( $res->rowCount() == 1 )
+=======
+               // don't allow deletion of default skins for blogs
+               $query = "SELECT bname FROM %s WHERE bdefskin=%d;";
+               $query = sprintf($query, sql_table('blog'), (integer) $skinid);
+               
+               $name = DB::getValue($query);
+               if ( $name )
+                               {
+                       self::error(_ERROR_SKINDEFDELETE . Entity::hsc($name));
+                       return;
+               }
+               
+               self::skindeleteconfirm($skinid);
+               
+               self::action_skinoverview();
+               return;
+       }
+       
+       /**
+        * Admin::action_skinremovetype()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_skinremovetype()
+       {
+               global $member, $CONF;
+               
+               $member->isAdmin() or self::disallow();
+               
+               $skinid = intRequestVar('skinid');
+               $skintype = requestVar('type');
+               
+               if ( !isValidShortName($skintype) )
+>>>>>>> skinnable-master
                {
-                       return _ERROR_DELETELASTCATEGORY;
+                       self::error(_ERROR_SKIN_PARTS_SPECIAL_DELETE);
+                       return;
                }
                
-               $manager->notify('PreDeleteCategory', array('catid' => $catid));
+               self::$skin->parse('skinremovetype');
+               return;
+       }
+       
+       /**
+        * Admin::action_skinremovetypeconfirm()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_skinremovetypeconfirm()
+       {
+               global $member;
                
+<<<<<<< HEAD
                // change category for all items to the default category
                $query = 'UPDATE '.sql_table('item')." SET icat=$destcatid WHERE icat=$catid";
                DB::execute($query);
+=======
+               $member->isAdmin() or self::disallow();
+>>>>>>> skinnable-master
                
-               // delete all associated plugin options
-               NucleusPlugin::delete_option_values('category', $catid);
+               $skinid = intRequestVar('skinid');
+               $skintype = requestVar('type');
                
+<<<<<<< HEAD
                // delete category
                $query = 'DELETE FROM '.sql_table('category').' WHERE catid=' .$catid;
                DB::execute($query);
+=======
+               $error = self::skinremovetypeconfirm($skinid, $skintype);
+               if ( $error )
+               {
+                       self::error($error);
+                       return;
+               }
+>>>>>>> skinnable-master
                
-               $manager->notify('PostDeleteCategory', array('catid' => $catid));
+               self::action_skinedit();
                return;
        }
        
        /**
-        * Admin::action_blogsettingsupdate
-        * Updating blog settings
+        * Admin::action_skinclone()
         * 
-        * @param       Void
-        * @return      Void
+        * @param       void
+        * @return      void
         */
-       function action_blogsettingsupdate()
+       static private function action_skinclone()
        {
-               global $member, $manager;
+               global $member;
                
-               $blogid = intRequestVar('blogid');
+               $member->isAdmin() or self::disallow();
                
-               $member->blogAdminRights($blogid) or $this->disallow();
+               $skinid = intRequestVar('skinid');
                
-               $blog =& $manager->getBlog($blogid);
+               self::skinclone($skinid);
                
-               $notify_address = trim(postVar('notify'));
-               $shortname              = trim(postVar('shortname'));
-               $updatefile     = trim(postVar('update'));
+               self::action_skinoverview();
+               return;
+       }
+       
+       /**
+        * Admin::action_adminskinoverview()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_adminskinoverview()
+       {
+               global $member;
                
-               $notifyComment  = intPostVar('notifyComment');
-               $notifyVote             = intPostVar('notifyVote');
-               $notifyNewItem  = intPostVar('notifyNewItem');
+               $member->isAdmin() or self::disallow();
                
-               if ( $notifyComment == 0 )
+               self::$skin->parse('adminskinoverview');
+               return;
+       }
+       
+       /**
+        * Admin::action_adminskinnew()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_adminskinnew()
+       {
+               global $member;
+               
+               $member->isAdmin() or self::disallow();
+               
+               $name = trim(postVar('name'));
+               $desc = trim(postVar('desc'));
+               
+               if ( !isValidSkinName($name) )
                {
-                       $notifyComment = 1;
+                       self::error(_ERROR_BADSKINNAME);
+                       return;
                }
-               if ( $notifyVote == 0 )
+               else if ( !preg_match('#^admin/#', $name) )
                {
-                       $notifyVote = 1;
+                       self::error(_ERROR_BADADMINSKINNAME);
+                       return;
                }
-               if ( $notifyNewItem == 0 )
+               else if ( Skin::exists($name) )
                {
-                       $notifyNewItem = 1;
+                       self::error(_ERROR_DUPSKINNAME);
+                       return;
                }
-               $notifyType = $notifyComment * $notifyVote * $notifyNewItem;
                
-               if ( $notify_address && !NOTIFICATION::address_validation($notify_address) )
+               Skin::createNew($name, $desc);
+               
+               self::action_adminskinoverview();
+               return;
+       }
+       
+       /**
+        * Admin::action_adminskinedit()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_adminskinedit()
+       {
+               global $member;
+               
+               $member->isAdmin() or self::disallow();
+               
+               self::$skin->parse('adminskinedit');
+               
+               return;
+       }
+       
+       /**
+        * Admin::action_adminskineditgeneral()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_adminskineditgeneral()
+       {
+               global $member;
+               
+               $skinid = intRequestVar('skinid');
+               
+               $member->isAdmin() or self::disallow();
+               
+               $error = self::skineditgeneral($skinid, 'AdminActions');
+               if ( $error )
                {
-                       $this->error(_ERROR_BADNOTIFY);
+                       self::error($error);
+                       return;
                }
                
-               if ( !isValidShortName($shortname) )
+               self::action_adminskinedit();
+               return;
+       }
+       
+       /**
+        * Admin::action_adminskinedittype()
+        * 
+        * @param       string  $msg    message for pageheader
+        * @return      void
+        */
+       static private function action_adminskinedittype($msg = '')
+       {
+               global $member;
+               
+               $member->isAdmin() or self::disallow();
+               
+               if ( $msg )
                {
-                       $this->error(_ERROR_BADSHORTBLOGNAME);
+                       self::$headMess = $msg;
                }
+               $type = requestVar('type');
+               $type = trim($type);
+               $type = strtolower($type);
                
-               if ( ($blog->getShortName() != $shortname) && $manager->existsBlog($shortname) )
+               if ( !isValidShortName($type) )
                {
-                       $this->error(_ERROR_DUPSHORTBLOGNAME);
+                       self::error(_ERROR_SKIN_PARTS_SPECIAL_FORMAT);
+                       return;
                }
-               // check if update file is writable
-               if ( $updatefile && !is_writeable($updatefile) )
+               
+               self::$skin->parse('adminskinedittype');
+               return;
+       }
+       
+       /**
+        * Admin::action_adminskinupdate()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_adminskinupdate()
+       {
+               global $manager, $member;
+               
+               $skinid = intRequestVar('skinid');
+               $content = trim(postVar('content'));
+               $type = postVar('type');
+               
+               $member->isAdmin() or self::disallow();
+               
+               $skin =& $manager->getSkin($skinid, 'AdminActions', 'AdminSkin');
+               $skin->update($type, $content);
+               
+               self::action_adminskinedittype(_SKIN_UPDATED);
+               return;
+       }
+       
+       /**
+        * Admin::action_adminskindelete()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_adminskindelete()
+       {
+               global $CONF, $member;
+               
+               $member->isAdmin() or self::disallow();
+               
+               $skinid = intRequestVar('skinid');
+               
+               // don't allow default skin to be deleted
+               if ( $skinid == $CONF['AdminSkin'] || $skinid == $CONF['BookmarkletSkin'] )
                {
-                       $this->error(_ERROR_UPDATEFILE);
+                       self::error(_ERROR_DEFAULTSKIN);
+                       return;
                }
                
-               $blog->setName(trim(postVar('name')));
-               $blog->setShortName($shortname);
-               $blog->setNotifyAddress($notify_address);
-               $blog->setNotifyType($notifyType);
-               $blog->setMaxComments(postVar('maxcomments'));
-               $blog->setCommentsEnabled(postVar('comments'));
-               $blog->setTimeOffset(postVar('timeoffset'));
-               $blog->setUpdateFile($updatefile);
-               $blog->setURL(trim(postVar('url')));
-               $blog->setDefaultSkin(intPostVar('defskin'));
-               $blog->setDescription(trim(postVar('desc')));
-               $blog->setPublic(postVar('public'));
-               $blog->setConvertBreaks(intPostVar('convertbreaks'));
-               $blog->setAllowPastPosting(intPostVar('allowpastposting'));
-               $blog->setDefaultCategory(intPostVar('defcat'));
-               $blog->setSearchable(intPostVar('searchable'));
-               $blog->setEmailRequired(intPostVar('reqemail'));
-               $blog->writeSettings();
+               /* don't allow if someone use it as a default*/
+               $query = 'SELECT * FROM %s WHERE madminskin = %d or mbkmklt = %d;';
+               $res = DB::getResult(sprintf($query, sql_table('member'), $skinid, $skinid));
                
-               // store plugin options
-               $aOptions = requestArray('plugoption');
-               NucleusPlugin::apply_plugin_options($aOptions);
-               $manager->notify('PostPluginOptionsUpdate',array('context' => 'blog', 'blogid' => $blogid, 'blog' => &$blog));
+               $members = array();
+               while ( $row = $res->fetch() ) {
+                       $members[] = $row['mrealname'];
+               }
+               if ( count($members) )
+               {
+                       self::error(_ERROR_SKINDEFDELETE . implode(' ' . _AND . ' ', $members));
+                       return;
+               }
+               
+               self::$skin->parse('adminskindelete');
+               return;
+       }
+
+       /**
+        * Admin::action_adminskindeleteconfirm()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_adminskindeleteconfirm()
+       {
+               global $member, $CONF;
+               
+               $member->isAdmin() or self::disallow();
+               
+               $skinid = intRequestVar('skinid');
+               
+               // don't allow default skin to be deleted
+               if ( $skinid == $CONF['AdminSkin'] || $skinid == $CONF['BookmarkletSkin'] )
+               {
+                       self::error(_ERROR_DEFAULTSKIN);
+                       return;
+               }
+               
+               /* don't allow if someone use it as a default*/
+               $query = 'SELECT * FROM %s WHERE madminskin = %d or mbkmklt = %d;';
+               $res = DB::getResult(sprintf($query, sql_table('member'), $skinid, $skinid));
+               
+               $members = array();
+               while ( $row = $res->fetch() ) {
+                       $members[] = $row['mrealname'];
+               }
+               if ( count($members) )
+               {
+                       self::error(_ERROR_SKINDEFDELETE . implode(' ' . _AND . ' ', $members));
+                       return;
+               }
+               
+               self::skindeleteconfirm($skinid);
+               
+               self::action_adminskinoverview();
+               return;
+       }
+       
+       /**
+        * Admin::action_adminskinremovetype()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_adminskinremovetype()
+       {
+               global $member, $CONF;
+
+               $member->isAdmin() or self::disallow();
+               
+               $skinid = intRequestVar('skinid');
+               $skintype = requestVar('type');
                
-               $this->action_overview(_MSG_SETTINGSCHANGED);
+               if ( !isValidShortName($skintype) )
+               {
+                       self::error(_ERROR_SKIN_PARTS_SPECIAL_DELETE);
+                       return;
+               }
+               
+               self::$skin->parse('adminskinremovetype');
                return;
        }
+<<<<<<< HEAD
 
     /**
      * @todo document this
@@ -3351,28 +7026,32 @@ class Admin
         <?php
         $this->pagefoot();
     }
+=======
+>>>>>>> skinnable-master
        
        /**
-        * Admin::action_deleteblogconfirm()
-        * Delete Blog
+        * Admin::action_adminskinremovetypeconfirm()
         * 
-        * @param       Void
-        * @return      Void
+        * @param       void
+        * @return      void
         */
-       function action_deleteblogconfirm()
+       static private function action_adminskinremovetypeconfirm()
        {
-               global $member, $CONF, $manager;
+               global $member;
                
-               $blogid = intRequestVar('blogid');
-               $manager->notify('PreDeleteBlog', array('blogid' => $blogid));
-               $member->blogAdminRights($blogid) or $this->disallow();
+               $member->isAdmin() or self::disallow();
                
-               // check if blog is default blog
-               if ( $CONF['DefaultBlog'] == $blogid )
+               $skinid = intRequestVar('skinid');
+               $skintype = requestVar('type');
+               
+               $error = self::skinremovetypeconfirm($skinid, $skintype);
+               if ( $error )
                {
-                       $this->error(_ERROR_DELDEFBLOG);
+                       self::error($error);
+                       return;
                }
                
+<<<<<<< HEAD
                // delete all comments
                $query = 'DELETE FROM '.sql_table('comment').' WHERE cblog='.$blogid;
                DB::execute($query);
@@ -3392,19 +7071,54 @@ class Admin
                // delete all categories
                $query = 'DELETE FROM '.sql_table('category').' WHERE cblog='.$blogid;
                DB::execute($query);
+=======
+               self::action_adminskinedit();
+               return;
+       }
+
+       /**
+        * Admin::action_adminskinclone()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_adminskinclone()
+       {
+               global $member;
                
-               // delete all associated plugin options
-               NucleusPlugin::delete_option_values('blog', $blogid);
+               $member->isAdmin() or self::disallow();
+               
+               $skinid = intRequestVar('skinid');
+>>>>>>> skinnable-master
+               
+               self::skinclone($skinid, 'AdminActions');
                
+<<<<<<< HEAD
                // delete the blog itself
                $query = 'DELETE FROM '.sql_table('blog').' WHERE bnumber='.$blogid;
                DB::execute($query);
+=======
+               self::action_adminskinoverview();
+               return;
+       }
+       
+       /**
+        * Admin::action_adminskinieoverview()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_adminskinieoverview()
+       {
+               global $member;
+>>>>>>> skinnable-master
                
-               $manager->notify('PostDeleteBlog', array('blogid' => $blogid));
+               $member->isAdmin() or self::disallow();
                
-               $this->action_overview(_DELETED_BLOG);
+               self::$skin->parse('adminskinieoverview');
                return;
        }
+<<<<<<< HEAD
        
     /**
      * @todo document this
@@ -3444,33 +7158,20 @@ class Admin
      */
     function action_memberdeleteconfirm() {
         global $member;
+=======
+>>>>>>> skinnable-master
 
-        $memberid = intRequestVar('memberid');
-
-        ($member->getID() == $memberid) or $member->isAdmin() or $this->disallow();
-
-        $error = $this->deleteOneMember($memberid);
-        if ($error)
-            $this->error($error);
-
-        if ($member->isAdmin())
-            $this->action_usermanagement();
-        else
-            $this->action_overview(_DELETED_MEMBER);
-    }
-       
        /**
-        * Admin::deleteOneMember()
-        * Delete a member by id
+        * Admin::action_adminskinieimport()
         * 
-        * @static
-        * @params      Integer $memberid       member id
-        * @return      String  null string or error messages
+        * @param       void
+        * @return      void
         */
-       function deleteOneMember($memberid)
+       static private function action_adminskinieimport()
        {
-               global $manager;
+               global $member;
                
+<<<<<<< HEAD
                $memberid = intval($memberid);
                $mem =& $manager->getMember($memberid);
                
@@ -3478,12 +7179,17 @@ class Admin
                {
                        return _ERROR_DELETEMEMBER;
                }
+=======
+               $member->isAdmin() or self::disallow();
+>>>>>>> skinnable-master
                
-               $manager->notify('PreDeleteMember', array('member' => &$mem));
+               $skinFileRaw = postVar('skinfile');
+               $mode = postVar('mode');
                
-               /* unlink comments from memberid */
-               if ( $memberid )
+               $error = self::skinieimport($mode, $skinFileRaw);
+               if ( $error )
                {
+<<<<<<< HEAD
                        $query = "UPDATE %s SET cmember=0, cuser=%s WHERE cmember=%d";
                        $query = sprintf($query, sql_table('comment'), DB::quoteValue($mem->getDisplayName()), $memberid);
                        DB::execute($query);
@@ -4327,23 +8033,47 @@ selector();
 
     }
 
+=======
+                       self::error($error);
+                       return;
+               }
+               
+               if ( !is_object(self::$skin) )
+               {
+                       self::action_adminskiniedoimport();
+               }
+               else
+               {
+                       self::$skin->parse('adminskinieimport');
+               }
+               return;
+       }
+       
+>>>>>>> skinnable-master
        /**
-        * Admin::addToTemplate()
-        * 
-        * @param       Integer $id     ID for template
-        * @param       String  $partname       parts name
-        * @param       String  $content        template contents
-        * @return      Integer record index
+        * Admin::action_adminskiniedoimport()
         * 
+        * @param       void
+        * @return      void
         */
-       function addToTemplate($id, $partname, $content)
+       static private function action_adminskiniedoimport()
        {
-               // don't add empty parts:
-               if ( !trim($content) )
+               global $DIR_SKINS, $member, $CONF;
+               
+               $member->isAdmin() or self::disallow();
+               
+               $mode = postVar('mode');
+               $skinFileRaw = postVar('skinfile');
+               $allowOverwrite = intPostVar('overwrite');
+               
+               $error = self::skiniedoimport($mode, $skinFileRaw, $allowOverwrite);
+               if ( $error )
                {
-                       return -1;
+                       self::error($error);
+                       return;
                }
                
+<<<<<<< HEAD
                $partname = DB::quoteValue($partname);
                $content = DB::quoteValue($content);
                
@@ -5068,17 +8798,41 @@ selector();
         $this->action_skinoverview();
 
     }
+=======
+               if ( !is_object(self::$skin) )
+               {
+                       global $DIR_SKINS;
+                       $query  = "SELECT min(sdnumber) FROM %s WHERE sdname != 'admin/bookmarklet' AND sdname LIKE 'admin/%%'";
+                       $query  = sprintf($query, sql_table('skin_desc'));
+                       $res    = intval(DB::getValue($query));
+                       $query  = "UPDATE %s SET value = %d WHERE name = 'AdminSkin'";
+                       $query  = sprintf($query, sql_table('config'), $res);
+                       DB::execute($query);
+                       if ( $res )
+                       {
+                               redirect($CONF['AdminURL']);
+                               exit;
+                       }
+                       $skin   = new Skin(0, 'AdminActions', 'AdminSkin');
+                       $skin->parse('importAdmin', $DIR_SKINS . 'admin/defaultimporter.skn');
+               }
+               else
+               {
+                       self::$skin->parse('adminskiniedoimport');
+               }
+               return;
+       }
+>>>>>>> skinnable-master
 
        /**
-        * Admin::skinclonetype()
+        * Admin::action_adminskinieexport()
         * 
-        * @param       String  $skin   Skin object
-        * @param       Integer $newid  ID for this clone
-        * @param       String  $type   type of skin
-        * @return      Void
+        * @param       void
+        * @return      void
         */
-       function skinclonetype($skin, $newid, $type)
+       static private function action_adminskinieexport()
        {
+<<<<<<< HEAD
                $newid = intval($newid);
                $content = $skin->getContentFromDB($type);
                
@@ -5088,6 +8842,19 @@ selector();
                        $query = sprintf($query, sql_table('skin'), (integer) $newid, $content, $type);
                        DB::execute($query);
                }
+=======
+               global $member;
+               
+               $member->isAdmin() or self::disallow();
+               
+               // load skinie class
+               $aSkins = requestIntArray('skin');
+               $aTemplates = requestIntArray('template');
+               $info = postVar('info');
+               
+               self::skinieexport($aSkins, $aTemplates, $info);
+               
+>>>>>>> skinnable-master
                return;
        }
        
@@ -5097,8 +8864,10 @@ selector();
         * @param       Void
         * @return      Void
         */
-       function action_settingsedit() {
+       static private function action_settingsedit()
+       {
                global $member, $manager, $CONF, $DIR_NUCLEUS, $DIR_MEDIA;
+<<<<<<< HEAD
 
                $member->isAdmin() or $this->disallow();
 
@@ -5428,6 +9197,13 @@ selector();
                        );
 
                $this->pagefoot();
+=======
+               
+               $member->isAdmin() or self::disallow();
+               
+               self::$skin->parse('settingsedit');
+               return;
+>>>>>>> skinnable-master
        }
        
        /**
@@ -5437,61 +9213,65 @@ selector();
         * @param       void
         * @return      void
         */
-       function action_settingsupdate() {
+       static private function action_settingsupdate()
+       {
                global $member, $CONF;
                
-               $member->isAdmin() or $this->disallow();
+               $member->isAdmin() or self::disallow();
                
                // check if email address for admin is valid
                if ( !NOTIFICATION::address_validation(postVar('AdminEmail')) )
                {
-                       $this->error(_ERROR_BADMAILADDRESS);
+                       self::error(_ERROR_BADMAILADDRESS);
+                       return;
                }
                
                // save settings
-               $this->updateConfig('DefaultBlog',        postVar('DefaultBlog'));
-               $this->updateConfig('BaseSkin',          postVar('BaseSkin'));
-               $this->updateConfig('IndexURL',          postVar('IndexURL'));
-               $this->updateConfig('AdminURL',          postVar('AdminURL'));
-               $this->updateConfig('PluginURL',                postVar('PluginURL'));
-               $this->updateConfig('SkinsURL',          postVar('SkinsURL'));
-               $this->updateConfig('ActionURL',                postVar('ActionURL'));
-               $this->updateConfig('Locale',              postVar('Locale'));
-               $this->updateConfig('AdminEmail',          postVar('AdminEmail'));
-               $this->updateConfig('SessionCookie',    postVar('SessionCookie'));
-               $this->updateConfig('AllowMemberCreate',postVar('AllowMemberCreate'));
-               $this->updateConfig('AllowMemberMail',  postVar('AllowMemberMail'));
-               $this->updateConfig('NonmemberMail',    postVar('NonmemberMail'));
-               $this->updateConfig('ProtectMemNames',  postVar('ProtectMemNames'));
-               $this->updateConfig('SiteName',          postVar('SiteName'));
-               $this->updateConfig('NewMemberCanLogon',postVar('NewMemberCanLogon'));
-               $this->updateConfig('DisableSite',        postVar('DisableSite'));
-               $this->updateConfig('DisableSiteURL',   postVar('DisableSiteURL'));
-               $this->updateConfig('LastVisit',                postVar('LastVisit'));
-               $this->updateConfig('MediaURL',          postVar('MediaURL'));
-               $this->updateConfig('AllowedTypes',      postVar('AllowedTypes'));
-               $this->updateConfig('AllowUpload',        postVar('AllowUpload'));
-               $this->updateConfig('MaxUploadSize',    postVar('MaxUploadSize'));
-               $this->updateConfig('MediaPrefix',        postVar('MediaPrefix'));
-               $this->updateConfig('AllowLoginEdit',   postVar('AllowLoginEdit'));
-               $this->updateConfig('DisableJsTools',   postVar('DisableJsTools'));
-               $this->updateConfig('CookieDomain',      postVar('CookieDomain'));
-               $this->updateConfig('CookiePath',          postVar('CookiePath'));
-               $this->updateConfig('CookieSecure',      postVar('CookieSecure'));
-               $this->updateConfig('URLMode',            postVar('URLMode'));
-               $this->updateConfig('CookiePrefix',      postVar('CookiePrefix'));
-               $this->updateConfig('DebugVars',                        postVar('DebugVars'));
-               $this->updateConfig('DefaultListSize',            postVar('DefaultListSize'));
-               $this->updateConfig('AdminCSS',           postVar('AdminCSS'));
-               
+               self::updateConfig('DefaultBlog',               postVar('DefaultBlog'));
+               self::updateConfig('BaseSkin',                  postVar('BaseSkin'));
+               self::updateConfig('IndexURL',                  postVar('IndexURL'));
+               self::updateConfig('AdminURL',                  postVar('AdminURL'));
+               self::updateConfig('PluginURL',                 postVar('PluginURL'));
+               self::updateConfig('SkinsURL',                  postVar('SkinsURL'));
+               self::updateConfig('ActionURL',                 postVar('ActionURL'));
+               self::updateConfig('Locale',                    postVar('Locale'));
+               self::updateConfig('AdminEmail',                postVar('AdminEmail'));
+               self::updateConfig('SessionCookie',             postVar('SessionCookie'));
+               self::updateConfig('AllowMemberCreate', postVar('AllowMemberCreate'));
+               self::updateConfig('AllowMemberMail',   postVar('AllowMemberMail'));
+               self::updateConfig('NonmemberMail',             postVar('NonmemberMail'));
+               self::updateConfig('ProtectMemNames',   postVar('ProtectMemNames'));
+               self::updateConfig('SiteName',                  postVar('SiteName'));
+               self::updateConfig('NewMemberCanLogon', postVar('NewMemberCanLogon'));
+               self::updateConfig('DisableSite',               postVar('DisableSite'));
+               self::updateConfig('DisableSiteURL',    postVar('DisableSiteURL'));
+               self::updateConfig('LastVisit',                 postVar('LastVisit'));
+               self::updateConfig('MediaURL',                  postVar('MediaURL'));
+               self::updateConfig('AllowedTypes',              postVar('AllowedTypes'));
+               self::updateConfig('AllowUpload',               postVar('AllowUpload'));
+               self::updateConfig('MaxUploadSize',             postVar('MaxUploadSize'));
+               self::updateConfig('MediaPrefix',               postVar('MediaPrefix'));
+               self::updateConfig('AllowLoginEdit',    postVar('AllowLoginEdit'));
+               self::updateConfig('DisableJsTools',    postVar('DisableJsTools'));
+               self::updateConfig('CookieDomain',              postVar('CookieDomain'));
+               self::updateConfig('CookiePath',                postVar('CookiePath'));
+               self::updateConfig('CookieSecure',              postVar('CookieSecure'));
+               self::updateConfig('URLMode',                   postVar('URLMode'));
+               self::updateConfig('CookiePrefix',              postVar('CookiePrefix'));
+               self::updateConfig('DebugVars',                 postVar('DebugVars'));
+               self::updateConfig('DefaultListSize',   postVar('DefaultListSize'));
+               self::updateConfig('AdminCSS',                  postVar('AdminCSS'));
+               self::updateConfig('AdminSkin',                 postVar('adminskin'));
+               self::updateConfig('BookmarkletSkin',   postVar('bookmarklet'));
+
                // load new config and redirect (this way, the new locale will be used is necessary)
                // note that when changing cookie settings, this redirect might cause the user
                // to have to log in again.
                getConfig();
                redirect($CONF['AdminURL'] . '?action=manage');
-               exit;
+               return;
        }
-
+       
        /**
         * Admin::action_systemoverview()
         * Output system overview
@@ -5499,8 +9279,9 @@ selector();
         * @param       void
         * @return      void
         */
-       function action_systemoverview()
+       static private function action_systemoverview()
        {
+<<<<<<< HEAD
                global $member, $nucleus, $CONF;
                
                $this->pagehead();
@@ -5679,8 +9460,12 @@ selector();
                        echo _ADMIN_SYSTEMOVERVIEW_NOT_ADMIN;
                }
                $this->pagefoot();
+=======
+               self::$skin->parse('systemoverview');
+               return;
+>>>>>>> skinnable-master
        }
-
+       
        /**
         * Admin::updateConfig()
         * 
@@ -5688,8 +9473,9 @@ selector();
         * @param       string  $val    
         * @return      integer return the ID in which the latest query posted
         */
-       function updateConfig($name, $val)
+       static private function updateConfig($name, $val)
        {
+<<<<<<< HEAD
                $name = DB::quoteValue($name);
                $val = DB::quoteValue(trim($val));
                
@@ -5699,24 +9485,30 @@ selector();
                {
                        $err = DB::getError();
                        die("Query error: " . $err[2]);
+=======
+               $query = "UPDATE %s SET value=%s WHERE name=%s";
+               $query = sprintf($query, sql_table('config'), DB::quoteValue($val), DB::quoteValue($name));
+               if ( DB::execute($query) === FALSE )
+               {
+                       $err = DB::getError();
+                       die(_ADMIN_SQLDIE_QUERYERROR . $err[2]);
+>>>>>>> skinnable-master
                }
                return DB::getInsertId();
        }
        
        /**
+        * Admin::error()
         * Error message
-        * @param string $msg message that will be shown
+        * 
+        * @param       string  $msg    message that will be shown
+        * @return      void
         */
-       function error($msg)
+       static public function error($msg)
        {
-               $this->pagehead();
-               
-               echo "<h2>Error!</h2>\n";
-               echo $msg;
-               echo "<br />\n";
-               echo '<a href="index.php" onclick="history.back()">' . _BACK . "</a>\n";
-               $this->pagefoot();
-               exit;
+               self::$headMess = $msg;
+               self::$skin->parse('adminerrorpage');
+               return;
        }
        
        /**
@@ -5726,19 +9518,35 @@ selector();
         * @param       void
         * @return      void
         */
-       function disallow()
+       static public function disallow()
        {
                ActionLog::add(WARNING, _ACTIONLOG_DISALLOWED . serverVar('REQUEST_URI'));
-               $this->error(_ERROR_DISALLOWED);
+               self::error(_ERROR_DISALLOWED);
+               return;
+       }
+
+       /**
+        * Admin::action_PluginAdmin()
+        * Output pluginadmin
+        *
+        * @param       string  $skinContents
+        * @param       string  $extrahead
+        * @return      void
+        */
+       static public function action_PluginAdmin($skinContents, $extrahead = '')
+       {
+               self::$extrahead .= $extrahead;
+               self::$skin->parse('pluginadmin', $skinContents);
+               return;
        }
        
        /**
-        * Admin::pagehead()
-        * Output admin page head
+        * Admin::action_bookmarklet()
         * 
         * @param       void
         * @return      void
         */
+<<<<<<< HEAD
        function pagehead($extrahead = '')
        {
                global $member, $nucleus, $CONF, $manager;
@@ -5795,194 +9603,131 @@ selector();
                }
                echo "<a href='".$CONF['IndexURL']."'>"._YOURSITE."</a><br />\n";
                echo '(';
+=======
+       static private function action_bookmarklet()
+       {
+               global $member, $manager;
+>>>>>>> skinnable-master
                
-               if (array_key_exists('codename', $nucleus) && $nucleus['codename'] != '' )
-               {
-                       $codenamestring = ' &quot;' . $nucleus['codename'].'&quot;';
-               }
-               else
-               {
-                       $codenamestring = '';
-               }
+               $blogid = intRequestVar('blogid');
+               $member->teamRights($blogid) or self::disallow();
                
-               if ( $member->isLoggedIn() && $member->isAdmin() )
-               {
-                       $checkURL = sprintf(_ADMIN_SYSTEMOVERVIEW_VERSIONCHECK_URL, getNucleusVersion(), getNucleusPatchLevel());
-                       echo '<a href="' . $checkURL . '" title="' . _ADMIN_SYSTEMOVERVIEW_VERSIONCHECK_TITLE . '">Nucleus CMS ' . $nucleus['version'] . $codenamestring . '</a>';
-                       
-                       $newestVersion = getLatestVersion();
-                       $newestCompare = str_replace('/','.',$newestVersion);
-                       $currentVersion = str_replace(array('/','v'),array('.',''),$nucleus['version']);
-                       if ( $newestVersion && version_compare($newestCompare, $currentVersion) > 0 )
-                       {
-                               echo "<br />\n";
-                               echo '<a style="color:red" href="http://nucleuscms.org/upgrade.php" title="' . _ADMIN_SYSTEMOVERVIEW_LATESTVERSION_TITLE . '">';
-                               echo _ADMIN_SYSTEMOVERVIEW_LATESTVERSION_TEXT . $newestVersion;
-                               echo "</a>";
-                       }
-               }
-               else
-               {
-                       echo 'Nucleus CMS ' . $nucleus['version'] . $codenamestring;
-               }
-               echo ')';
-               echo '</div>';
+               self::$skin->parse('bookmarklet');
+               return;
+       }
+       
+       /**
+        * Admin::action_actionlog()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_actionlog()
+       {
+               global $member, $manager;
+               
+               $member->isAdmin() or self::disallow();
+               
+               self::$skin->parse('actionlog');
                return;
        }
        
        /**
-        * Admin::pagefoot()
-        * Output admin page foot include quickmenu
+        * Admin::action_banlist()
         * 
         * @param       void
         * @return      void
         */
-       function pagefoot()
+       static private function action_banlist()
        {
-               global $action, $member, $manager;
+               global $member, $manager;
                
-               $manager->notify(
-                       'AdminPrePageFoot',
-                       array('action' => $this->action)
-               );
+               $blogid = intRequestVar('blogid');
+               $member->blogAdminRights($blogid) or self::disallow();
                
-               if ( $member->isLoggedIn() && ($action != 'showlogin') )
-               {
-                       echo '<h2>' . _LOGOUT . "</h2>\n";
-                       echo "<ul>\n";
-                       echo '<li><a href="index.php?action=overview">' . _BACKHOME . "</a></li>\n";
-                       echo '<li><a href="index.php?action=logout">' .  _LOGOUT . "</a></li>\n";
-                       echo "</ul>\n";
-               }
+               self::$skin->parse('banlist');
+               return;
+       }
+       
+       /**
+        * Admin::action_banlistdelete()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_banlistdelete()
+       {
+               global $member, $manager;
                
-               echo "<div class=\"foot\">\n";
-               echo '<a href="' . _ADMINPAGEFOOT_OFFICIALURL . '">Nucleus CMS</a> &copy; 2002-' . date('Y') . ' ' . _ADMINPAGEFOOT_COPYRIGHT;
-               echo '-';
-               echo '<a href="' . _ADMINPAGEFOOT_DONATEURL . '">' . _ADMINPAGEFOOT_DONATE . "</a>\n";
-               echo "</div>\n";
+               $blogid = intRequestVar('blogid');
+               $member->blogAdminRights($blogid) or self::disallow();
+               
+               self::$skin->parse('banlistdelete');
+               return;
+       }
+       
+       /**
+        * Admin::action_banlistdeleteconfirm()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_banlistdeleteconfirm()
+       {
+               global $member, $manager;
                
-               echo "<!-- content -->\n";
-               echo "<div id=\"quickmenu\">\n";
+               $blogid         = intPostVar('blogid');
+               $allblogs       = postVar('allblogs');
+               $iprange        = postVar('iprange');
                
-               if ( ($action != 'showlogin') && ($member->isLoggedIn()) )
+               $member->blogAdminRights($blogid) or self::disallow();
+               
+               $deleted = array();
+               
+               if ( !$allblogs )
                {
-                       echo "<ul>\n";
-                       echo '<li><a href="index.php?action=overview">' . _QMENU_HOME . "</a></li>\n";
-                       echo "</ul>\n";
-                       
-                       echo '<h2>' . _QMENU_ADD . "</h2>\n";
-                       echo "<form method=\"get\" action=\"index.php\">\n";
-                       echo "<p>\n";
-                       echo "<input type=\"hidden\" name=\"action\" value=\"createitem\" />\n";
-                       
-                       $showAll = requestVar('showall');
-                       
-                       if ( ($member->isAdmin()) && ($showAll == 'yes') )
-                       {
-                               // Super-Admins have access to all blogs! (no add item support though)
-                               $query =  'SELECT bnumber as value, bname as text'
-                                               . ' FROM ' . sql_table('blog')
-                                               . ' ORDER BY bname';
-                       }
-                       else
+                       if ( Ban::removeBan($blogid, $iprange) )
                        {
-                               $query =  'SELECT bnumber as value, bname as text'
-                                               . ' FROM ' . sql_table('blog') . ', ' . sql_table('team')
-                                               . ' WHERE tblog=bnumber and tmember=' . $member->getID()
-                                               . ' ORDER BY bname';
+                               $deleted[] = $blogid;
                        }
-                       $template['name'] = 'blogid';
-                       $template['tabindex'] = 15000;
-                       $template['extra'] = _QMENU_ADD_SELECT;
-                       $template['selected'] = -1;
-                       $template['shorten'] = 10;
-                       $template['shortenel'] = '';
-                       $template['javascript'] = 'onchange="return form.submit()"';
-                       showlist($query,'select',$template);
-                       
-                       echo "</p>\n";
-                       echo "</form>\n";
-                       
-                       echo "<h2>{$member->getDisplayName()}</h2>\n";
-                       echo "<ul>\n";
-                       echo '<li><a href="index.php?action=editmembersettings">' . _QMENU_USER_SETTINGS . "</a></li>\n";
-                       echo '<li><a href="index.php?action=browseownitems">' . _QMENU_USER_ITEMS . "</a></li>\n";
-                       echo '<li><a href="index.php?action=browseowncomments">' . _QMENU_USER_COMMENTS . "</a></li>\n";
-                       echo "</ul>\n";
-                       
-                       // ---- general settings ----
-                       if ( $member->isAdmin() )
-                       {
-                               echo '<h2>' . _QMENU_MANAGE . "</h2>\n";
-                               echo "<ul>\n";
-                               echo '<li><a href="index.php?action=actionlog">' . _QMENU_MANAGE_LOG . "</a></li>\n";
-                               echo '<li><a href="index.php?action=settingsedit">' . _QMENU_MANAGE_SETTINGS . "</a></li>\n";
-                               echo '<li><a href="index.php?action=systemoverview">' . _QMENU_MANAGE_SYSTEM . "</a></li>\n";
-                               echo '<li><a href="index.php?action=usermanagement">' . _QMENU_MANAGE_MEMBERS . "</a></li>\n";
-                               echo '<li><a href="index.php?action=createnewlog">' . _QMENU_MANAGE_NEWBLOG . "</a></li>\n";
-                               echo '<li><a href="index.php?action=backupoverview">' . _QMENU_MANAGE_BACKUPS . "</a></li>\n";
-                               echo '<li><a href="index.php?action=pluginlist">' . _QMENU_MANAGE_PLUGINS . "</a></li>\n";
-                               echo "</ul>\n";
-                               
-                               echo "<h2>" . _QMENU_LAYOUT . "</h2>\n";
-                               echo "<ul>\n";
-                               echo '<li><a href="index.php?action=skinoverview">' . _QMENU_LAYOUT_SKINS . "</a></li>\n";
-                               echo '<li><a href="index.php?action=templateoverview">' . _QMENU_LAYOUT_TEMPL . "</a></li>\n";
-                               echo '<li><a href="index.php?action=skinieoverview">' . _QMENU_LAYOUT_IEXPORT . "</a></li>\n";
-                               echo "</ul>\n";
-                       }
-                       
-                       $aPluginExtras = array();
-                       $manager->notify(
-                               'QuickMenu',
-                               array(
-                                       'options' => &$aPluginExtras));
-                       
-                       if ( count($aPluginExtras) > 0 )
+               }
+               else
+               {
+                       // get blogs fot which member has admin rights
+                       $adminblogs = $member->getAdminBlogs();
+                       foreach ($adminblogs as $blogje)
                        {
-                               echo "<h2>" . _QMENU_PLUGINS . "</h2>\n";
-                               echo "<ul>\n";
-                               foreach ( $aPluginExtras as $aInfo )
+                               if ( Ban::removeBan($blogje, $iprange) )
                                {
-                                       echo '<li><a href="' . Entity::hsc($aInfo['url']) . '" title="' . Entity::hsc($aInfo['tooltip']) . '">' . Entity::hsc($aInfo['title']) . "</a></li>\n";
+                                       $deleted[] = $blogje;
                                }
-                               echo "</ul>\n";
                        }
                }
-               else if ( ($action == 'activate') || ($action == 'activatesetpwd') )
-               {
                
-                       echo '<h2>' . _QMENU_ACTIVATE . '</h2>' . _QMENU_ACTIVATE_TEXT;
-               }
-               else
+               if ( sizeof($deleted) == 0 )
                {
-                       // introduction text on login screen
-                       echo '<h2>' . _QMENU_INTRO . '</h2>' . _QMENU_INTRO_TEXT;
+                       self::error(_ERROR_DELETEBAN);
+                       return;
                }
                
-               echo "<!-- quickmenu -->\n";
-               echo "</div>\n";
-               
-               echo "<!-- content -->\n";
-               echo "</div>\n";
-               
-               echo "<!-- container -->\n";
-               echo "</div>\n";
-               
-               echo "<!-- adminwrapper -->\n";
-               echo "</div>\n";
+               /* TODO: we should use other ways */
+               $_REQUEST['delblogs'] = $deleted;
                
-               echo "</body>\n";
-               echo "</html>\n";
+               self::$skin->parse('banlistdeleteconfirm');
                return;
        }
        
        /**
+<<<<<<< HEAD
         * Admin::action_bookmarklet()
+=======
+        * Admin::action_banlistnewfromitem()
+>>>>>>> skinnable-master
         * 
         * @param       void
         * @return      void
         */
+<<<<<<< HEAD
        public function action_bookmarklet()
        {
                global $member, $manager;
@@ -6354,9 +10099,132 @@ selector();
             <br /><input type="checkbox" name="letsgo" value="1" id="letsgo" tabindex="50" /><label for="letsgo"><?php echo _RESTORE_IMSURE ?></label>
             <br /><?php echo _RESTORE_WARNING ?>
         </p></form>
+=======
+       static private function action_banlistnewfromitem()
+       {
+               global $manager;
+               
+               $itemid = intRequestVar('itemid');
+               $item =& $manager->getItem($itemid, 1, 1);
+               self::action_banlistnew($item['blogid']);
+               return;
+       }
+       
+       /**
+        * Admin::action_banlistnew()
+        * 
+        * @param       integer $blogid ID for weblog
+        * @return      void
+        */
+       static private function action_banlistnew($blogid = '')
+       {
+               global $member, $manager;
+               
+               if ( $blogid == '' )
+               {
+                       $blogid = intRequestVar('blogid');
+               }
+               
+               $ip = requestVar('ip');
+               
+               $member->blogAdminRights($blogid) or self::disallow();
+               
+               /* TODO: we should consider to use the other way instead of this */
+               $_REQUEST['blogid'] = $blogid;          
+               
+               self::$skin->parse('banlistnew');
+               
+               return;
+       }
+>>>>>>> skinnable-master
 
-        <?php       $this->pagefoot();
-    }
+       /**
+        * Admin::action_banlistadd()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_banlistadd()
+       {
+               global $member;
+               
+               $blogid         = intPostVar('blogid');
+               $allblogs       = postVar('allblogs');
+               $iprange        = postVar('iprange');
+               
+               if ( $iprange == "custom" )
+               {
+                       $iprange = postVar('customiprange');
+               }
+               $reason   = postVar('reason');
+               
+               $member->blogAdminRights($blogid) or self::disallow();
+               
+               // TODO: check IP range validity
+               
+               if ( !$allblogs )
+               {
+                       if ( !Ban::addBan($blogid, $iprange, $reason) )
+                       {
+                               self::error(_ERROR_ADDBAN);
+                               return;
+                       }
+               }
+               else
+               {
+                       // get blogs fot which member has admin rights
+                       $adminblogs = $member->getAdminBlogs();
+                       $failed = 0;
+                       foreach ($adminblogs as $blogje)
+                       {
+                               if ( !Ban::addBan($blogje, $iprange, $reason) )
+                               {
+                                       $failed = 1;
+                               }
+                       }
+                       if ( $failed )
+                       {
+                               self::error(_ERROR_ADDBAN);
+                               return;
+                       }
+               }
+               self::action_banlist();
+               return;
+       }
+       
+       /**
+        * Admin::action_clearactionlog()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_clearactionlog()
+       {
+               global $member;
+               
+               $member->isAdmin() or self::disallow();
+               
+               ActionLog::clear();
+               
+               self::action_manage(_MSG_ACTIONLOGCLEARED);
+               return;
+       }
+       
+       /**
+        * Admin::action_backupoverview()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_backupoverview()
+       {
+               global $member, $manager;
+               
+               $member->isAdmin() or self::disallow();
+               
+               self::$skin->parse('backupoverview');
+               return;
+       }
 
        /**
         * Admin::action_backupcreate()
@@ -6366,11 +10234,11 @@ selector();
         * @return      void
         * 
         */
-       function action_backupcreate()
+       static private function action_backupcreate()
        {
                global $member, $DIR_LIBS;
                
-               $member->isAdmin() or $this->disallow();
+               $member->isAdmin() or self::disallow();
                
                // use compression ?
                $useGzip = (integer) postVar('gzip');
@@ -6382,7 +10250,7 @@ selector();
                @set_time_limit(1200);
                
                Backup::do_backup($useGzip);
-               exit;
+               return;
        }
        
        /**
@@ -6392,15 +10260,16 @@ selector();
         * @param               void
         * @return      void
         */
-       function action_backuprestore()
+       static private function action_backuprestore()
        {
                global $member, $DIR_LIBS;
                
-               $member->isAdmin() or $this->disallow();
+               $member->isAdmin() or self::disallow();
                
                if ( intPostVar('letsgo') != 1 )
                {
-                       $this->error(_ERROR_BACKUP_NOTSURE);
+                       self::error(_ERROR_BACKUP_NOTSURE);
+                       return;
                }
                
                include($DIR_LIBS . 'backup.php');
@@ -6412,11 +10281,10 @@ selector();
                $message = Backup::do_restore();
                if ( $message != '' )
                {
-                       $this->error($message);
+                       self::error($message);
+                       return;
                }
-               $this->pagehead();
-               echo '<h2>' . _RESTORE_COMPLETE . "</h2>\n";
-               $this->pagefoot();
+               self::$skin->parse('backuprestore');
                return;
        }
        
@@ -6428,43 +10296,28 @@ selector();
         * @return      void
         * 
         */
-       function action_pluginlist()
+       static private function action_pluginlist()
        {
                global $DIR_PLUGINS, $member, $manager;
                
                // check if allowed
-               $member->isAdmin() or $this->disallow();
+               $member->isAdmin() or self::disallow();
                
-               $this->pagehead();
-               
-               echo '<p><a href="index.php?action=manage">(',_BACKTOMANAGE,')</a></p>';
-               
-               echo '<h2>' , _PLUGS_TITLE_MANAGE , ' ', help('plugins'), '</h2>';
-               
-               echo '<h3>' , _PLUGS_TITLE_INSTALLED , ' &nbsp;&nbsp;<span style="font-size:smaller">', helplink('getplugins'), _PLUGS_TITLE_GETPLUGINS, '</a></span></h3>';
-               
-               $query =  'SELECT * FROM '.sql_table('plugin').' ORDER BY porder ASC';
-               
-               $template['content'] = 'pluginlist';
-               $template['tabindex'] = 10;
-               showlist($query, 'table', $template);
-               
-               echo '<h3>' . _PLUGS_TITLE_UPDATE . "</h3>\n";
-               echo '<p>' . _PLUGS_TEXT_UPDATE . "</p>\n";
-               echo '<form method="post" action="index.php">' . "\n";
-               echo "<div>\n";
-               echo '<input type="hidden" name="action" value="pluginupdate" />' . "\n";
-               $manager->addTicketHidden();
-               echo '<input type="submit" value="' . _PLUGS_BTN_UPDATE . '" tabindex="20" />' . "\n";
-               echo "</div>\n";
-               echo "</form>\n";
-               
-               echo '<h3>' . _PLUGS_TITLE_NEW . "</h3>\n";
-               
-               // find a list of possibly non-installed plugins
-               $candidates = array();
-               $dirhandle = opendir($DIR_PLUGINS);
+               self::$skin->parse('pluginlist');
+               return;
+       }
+       
+       /**
+        * Admin::action_pluginhelp()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_pluginhelp()
+       {
+               global $member, $manager, $DIR_PLUGINS, $CONF;
                
+<<<<<<< HEAD
                while ( $filename = readdir($dirhandle) )
                {
                        if ( preg_match('#^NP_(.*)\.php$#', $filename, $matches) )
@@ -6482,38 +10335,24 @@ selector();
                                }
                        }
                }
+=======
+               // check if allowed
+               $member->isAdmin() or self::disallow();
+>>>>>>> skinnable-master
                
-               closedir($dirhandle);
+               $plugid = intGetVar('plugid');
                
-               if ( sizeof($candidates) > 0 )
-               {
-                       echo '<p>' . _PLUGS_ADD_TEXT . "</p>\n";
-                       
-                       echo '<form method="post" action="index.php">' . "\n";
-                       echo "<div>\n";
-                       echo '<input type="hidden" name="action" value="pluginadd" />' . "\n";
-                       $manager->addTicketHidden();
-                       echo '<select name="filename" tabindex="30">' . "\n";
-                       
-                       foreach ( $candidates as $name )
-                       {
-                               echo '<option value="NP_',$name,'">',Entity::hsc($name),'</option>';
-                       }
-                       
-                       echo "</select>\n";
-                       echo '<input type="submit" tabindex="40" value="' . _PLUGS_BTN_INSTALL ."\" />\n";
-                       echo "</div>\n";
-                       echo "</form>\n";
-               }
-               else
+               if ( !$manager->pidInstalled($plugid) )
                {
-                       echo '<p>', _PLUGS_NOCANDIDATES, '</p>';
+                       self::error(_ERROR_NOSUCHPLUGIN);
+                       return;
                }
                
-               $this->pagefoot();
+               self::$skin->parse('pluginhelp');
                return;
        }
        
+<<<<<<< HEAD
     /**
      * @todo document this
      */
@@ -6550,6 +10389,8 @@ selector();
         $this->pagefoot();
     }
 
+=======
+>>>>>>> skinnable-master
        /**
         * Admin::action_pluginadd()
         * 
@@ -6557,80 +10398,312 @@ selector();
         * @return      Void
         * 
         */
-       function action_pluginadd()
+       static private function action_pluginadd()
        {
                global $member, $manager, $DIR_PLUGINS;
                
                // check if allowed
-               $member->isAdmin() or $this->disallow();
+               $member->isAdmin() or self::disallow();
+               
+               $name = postVar('filename');
+               
+               if ( $manager->pluginInstalled($name) )
+               {
+                       self::error(_ERROR_DUPPLUGIN);
+                       return;
+               }
+               
+               if ( !checkPlugin($name) )
+               {
+                       self::error(_ERROR_PLUGFILEERROR . ' (' . Entity::hsc($name) . ')');
+                       return;
+               }
+               
+               // get number of currently installed plugins
+<<<<<<< HEAD
+               $res = DB::getResult('SELECT * FROM '.sql_table('plugin'));
+=======
+               $res = DB::getResult('SELECT * FROM ' . sql_table('plugin'));
+>>>>>>> skinnable-master
+               $numCurrent = $res->rowCount();
+               
+               // plugin will be added as last one in the list
+               $newOrder = $numCurrent + 1;
+               
+               $data = array('file' => &$name);
+               $manager->notify('PreAddPlugin', $data);
+               
+               // do this before calling getPlugin (in case the plugin id is used there)
+<<<<<<< HEAD
+               $query = 'INSERT INTO '.sql_table('plugin').' (porder, pfile) VALUES ('.$newOrder.','.DB::quoteValue($name).')';
+=======
+               $query = "INSERT INTO %s (porder, pfile) VALUES (%d, %s);";
+               $query = sprintf($query, sql_table('plugin'), (integer) $newOrder, DB::quoteValue($name));
+>>>>>>> skinnable-master
+               DB::execute($query);
+               $iPid = DB::getInsertId();
+               
+               $manager->clearCachedInfo('installedPlugins');
+               
+               // Load the plugin for condition checking and instalation
+               $plugin =& $manager->getPlugin($name);
+               
+               // check if it got loaded (could have failed)
+               if ( !$plugin )
+               {
+<<<<<<< HEAD
+                       DB::execute('DELETE FROM ' . sql_table('plugin') . ' WHERE pid='. intval($iPid));
+=======
+                       $query = "DELETE FROM %s WHERE pid=%d;";
+                       $query = sprintf($query, sql_table('plugin'), (integer) $iPid);
+                       
+                       DB::execute($query);
+                       
+>>>>>>> skinnable-master
+                       $manager->clearCachedInfo('installedPlugins');
+                       self::error(_ERROR_PLUGIN_LOAD);
+                       return;
+               }
+               
+               // check if plugin needs a newer Nucleus version
+               if ( getNucleusVersion() < $plugin->getMinNucleusVersion() )
+               {
+                       // uninstall plugin again...
+                       self::deleteOnePlugin($plugin->getID());
+                       
+                       // ...and show error
+                       self::error(_ERROR_NUCLEUSVERSIONREQ . Entity::hsc($plugin->getMinNucleusVersion()));
+                       return;
+               }
+               
+               // check if plugin needs a newer Nucleus version
+               if ( (getNucleusVersion() == $plugin->getMinNucleusVersion()) && (getNucleusPatchLevel() < $plugin->getMinNucleusPatchLevel()) )
+               {
+                       // uninstall plugin again...
+                       self::deleteOnePlugin($plugin->getID());
+                       
+                       // ...and show error
+                       self::error(_ERROR_NUCLEUSVERSIONREQ . Entity::hsc( $plugin->getMinNucleusVersion() . ' patch ' . $plugin->getMinNucleusPatchLevel() ) );
+                       return;
+               }
+               
+               $pluginList = $plugin->getPluginDep();
+               foreach ( $pluginList as $pluginName )
+               {
+                       $res = DB::getResult('SELECT * FROM '.sql_table('plugin') . ' WHERE pfile=' . DB::quoteValue($pluginName));
+                       if ($res->rowCount() == 0)
+                       {
+                               // uninstall plugin again...
+                               self::deleteOnePlugin($plugin->getID());
+                               self::error(sprintf(_ERROR_INSREQPLUGIN, Entity::hsc($pluginName)));
+                               return;
+                       }
+               }
+               
+               // call the install method of the plugin
+               $plugin->install();
+               
+               $data = array('plugin' => &$plugin);
+               $manager->notify('PostAddPlugin', $data);
+               
+               // update all events
+               self::action_pluginupdate();
+               return;
+       }
+       
+       /**
+        * ADMIN:action_pluginupdate():
+        * 
+        * @param       Void
+        * @return      Void
+        * 
+        */
+       static private function action_pluginupdate()
+       {
+               global $member, $manager, $CONF;
+               
+               // check if allowed
+               $member->isAdmin() or self::disallow();
+               
+               // delete everything from plugin_events
+               DB::execute('DELETE FROM '.sql_table('plugin_event'));
+               
+               // loop over all installed plugins
+               $res = DB::getResult('SELECT pid, pfile FROM '.sql_table('plugin'));
+               foreach ( $res as $row )
+               {
+                       $pid  =  $row['pid'];
+                       $plug =& $manager->getPlugin($row['pfile']);
+                       if ( $plug )
+                       {
+                               $eventList = $plug->getEventList();
+                               foreach ( $eventList as $eventName )
+                               {
+                                       $query = "INSERT INTO %s (pid, event) VALUES (%d, %s)";
+                                       $query = sprintf($query, sql_table('plugin_event'), (integer) $pid, DB::quoteValue($eventName));
+                                       DB::execute($query);
+                               }
+                       }
+               }
+               redirect($CONF['AdminURL'] . '?action=pluginlist');
+               return;
+       }
+       
+       /**
+        * Admin::action_plugindelete()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_plugindelete()
+       {
+               global $member, $manager;
+               
+               // check if allowed
+               $member->isAdmin() or self::disallow();
+               
+               $pid = intGetVar('plugid');
+               
+               if ( !$manager->pidInstalled($pid) )
+               {
+                       self::error(_ERROR_NOSUCHPLUGIN);
+                       return;
+               }
+               
+               self::$skin->parse('plugindelete');
+               return;
+       }
+
+       /**
+        * Admin::action_plugindeleteconfirm()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_plugindeleteconfirm()
+       {
+               global $member, $manager, $CONF;
+               
+               // check if allowed
+               $member->isAdmin() or self::disallow();
+               
+               $pid = intPostVar('plugid');
+               
+               $error = self::deleteOnePlugin($pid, 1);
+               if ( $error )
+               {
+                       self::error($error);
+                       return;
+               }
+               
+               redirect($CONF['AdminURL'] . '?action=pluginlist');
+               return;
+       }
+       
+       /**
+        * Admin::deleteOnePlugin()
+        * 
+        * @param       integer $pid
+        * @param       boolean $callUninstall
+        * @return      string  empty or message if failed
+        */
+       static public function deleteOnePlugin($pid, $callUninstall = 0)
+       {
+               global $manager;
                
-               $name = postVar('filename');
+               $pid = intval($pid);
                
-               if ( $manager->pluginInstalled($name) )
+               if ( !$manager->pidInstalled($pid) )
                {
-                       $this->error(_ERROR_DUPPLUGIN);
+                       return _ERROR_NOSUCHPLUGIN;
                }
                
-               if ( !checkPlugin($name) )
+               $query = "SELECT pfile as result FROM %s WHERE pid=%d;";
+               $query = sprintf($query, sql_table('plugin'), (integer) $pid);
+               $name = DB::getValue($query);
+               
+               // check dependency before delete
+               $res = DB::getResult('SELECT pfile FROM ' . sql_table('plugin'));
+               foreach ( $res as $row )
                {
-                       $this->error(_ERROR_PLUGFILEERROR . ' (' . Entity::hsc($name) . ')');
+                       $plug =& $manager->getPlugin($row['pfile']);
+                       if ( $plug )
+                       {
+                               $depList = $plug->getPluginDep();
+                               foreach ( $depList as $depName )
+                               {
+                                       if ( $name == $depName )
+                                       {
+                                               return sprintf(_ERROR_DELREQPLUGIN, $row['pfile']);
+                                       }
+                               }
+                       }
                }
                
-               // get number of currently installed plugins
-               $res = DB::getResult('SELECT * FROM '.sql_table('plugin'));
-               $numCurrent = $res->rowCount();
-               
-               // plugin will be added as last one in the list
-               $newOrder = $numCurrent + 1;
-               
-               $manager->notify(
-                       'PreAddPlugin',
-                       array(
-                               'file' => &$name
-                       )
-               );
-               
-               // do this before calling getPlugin (in case the plugin id is used there)
-               $query = 'INSERT INTO '.sql_table('plugin').' (porder, pfile) VALUES ('.$newOrder.','.DB::quoteValue($name).')';
-               DB::execute($query);
-               $iPid = DB::getInsertId();
-               
-               $manager->clearCachedInfo('installedPlugins');
-               
-               // Load the plugin for condition checking and instalation
-               $plugin =& $manager->getPlugin($name);
+               $data = array('plugid' => $pid);
+               $manager->notify('PreDeletePlugin', $data);
                
-               // check if it got loaded (could have failed)
-               if ( !$plugin )
+               // call the unInstall method of the plugin
+               if ( $callUninstall )
                {
-                       DB::execute('DELETE FROM ' . sql_table('plugin') . ' WHERE pid='. intval($iPid));
-                       $manager->clearCachedInfo('installedPlugins');
-                       $this->error(_ERROR_PLUGIN_LOAD);
+                       $plugin =& $manager->getPlugin($name);
+                       if ( $plugin )
+                       {
+                               $plugin->unInstall();
+                       }
                }
                
-               // check if plugin needs a newer Nucleus version
-               if ( getNucleusVersion() < $plugin->getMinNucleusVersion() )
+               // delete all subscriptions
+               DB::execute('DELETE FROM ' . sql_table('plugin_event') . ' WHERE pid=' . $pid);
+               
+               // delete all options
+               // get OIDs from plugin_option_desc
+               $res = DB::getResult('SELECT oid FROM ' . sql_table('plugin_option_desc') . ' WHERE opid=' . $pid);
+               $aOIDs = array();
+               foreach ( $res as $row )
                {
-                       // uninstall plugin again...
-                       $this->deleteOnePlugin($plugin->getID());
-                       
-                       // ...and show error
-                       $this->error(_ERROR_NUCLEUSVERSIONREQ . Entity::hsc($plugin->getMinNucleusVersion()));
+                       array_push($aOIDs, $row['oid']);
                }
                
-               // check if plugin needs a newer Nucleus version
-               if ( (getNucleusVersion() == $plugin->getMinNucleusVersion()) && (getNucleusPatchLevel() < $plugin->getMinNucleusPatchLevel()) )
+               // delete from plugin_option and plugin_option_desc
+               DB::execute('DELETE FROM ' . sql_table('plugin_option_desc') . ' WHERE opid=' . $pid);
+               if (count($aOIDs) > 0)
                {
-                       // uninstall plugin again...
-                       $this->deleteOnePlugin($plugin->getID());
-                       
-                       // ...and show error
-                       $this->error(_ERROR_NUCLEUSVERSIONREQ . Entity::hsc( $plugin->getMinNucleusVersion() . ' patch ' . $plugin->getMinNucleusPatchLevel() ) );
+                       DB::execute('DELETE FROM ' . sql_table('plugin_option') . ' WHERE oid in (' . implode(',', $aOIDs) . ')');
                }
                
-               $pluginList = $plugin->getPluginDep();
-               foreach ( $pluginList as $pluginName )
+               // update order numbers
+               $res = DB::getValue('SELECT porder FROM ' . sql_table('plugin') . ' WHERE pid=' . $pid);
+               DB::execute('UPDATE ' . sql_table('plugin') . ' SET porder=(porder - 1) WHERE porder>' . $res);
+               
+               // delete row
+               DB::execute('DELETE FROM ' . sql_table('plugin') . ' WHERE pid=' . $pid);
+               
+               $manager->clearCachedInfo('installedPlugins');
+               $data = array('plugid' => $pid);
+               $manager->notify('PostDeletePlugin', $data);
+               
+               return '';
+       }
+       
+       /**
+        * Admin::action_pluginup()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_pluginup()
+       {
+               global $member, $manager, $CONF;
+               
+               // check if allowed
+               $member->isAdmin() or self::disallow();
+               
+               $plugid = intGetVar('plugid');
+               
+               if ( !$manager->pidInstalled($plugid) )
                {
+<<<<<<< HEAD
                        $res = DB::getResult('SELECT * FROM '.sql_table('plugin') . ' WHERE pfile=' . DB::quoteValue($pluginName));
                        if ($res->rowCount() == 0)
                        {
@@ -6638,35 +10711,40 @@ selector();
                                $this->deleteOnePlugin($plugin->getID());
                                $this->error(sprintf(_ERROR_INSREQPLUGIN, Entity::hsc($pluginName)));
                        }
+=======
+                       self::error(_ERROR_NOSUCHPLUGIN);
+                       return;
+>>>>>>> skinnable-master
                }
                
-               // call the install method of the plugin
-               $plugin->install();
+               // 1. get old order number
+               $oldOrder = DB::getValue('SELECT porder FROM ' . sql_table('plugin') . ' WHERE pid=' . $plugid);
                
-               $manager->notify(
-                       'PostAddPlugin',
-                       array(
-                               'plugin' => &$plugin
-                       )
-               );
+               // 2. calculate new order number
+               $newOrder = ($oldOrder > 1) ? ($oldOrder - 1) : 1;
                
-               // update all events
-               $this->action_pluginupdate();
+               // 3. update plug numbers
+               DB::execute('UPDATE ' . sql_table('plugin') . ' SET porder=' . $oldOrder . ' WHERE porder=' . $newOrder);
+               DB::execute('UPDATE ' . sql_table('plugin') . ' SET porder=' . $newOrder . ' WHERE pid=' . $plugid);
+               
+               //self::action_pluginlist();
+               // To avoid showing ticket in the URL, redirect to pluginlist, instead.
+               redirect($CONF['AdminURL'] . '?action=pluginlist');
                return;
        }
        
        /**
-        * ADMIN:action_pluginupdate():
-        * 
-        * @param       Void
-        * @return      Void
+        * Admin::action_plugindown()
         * 
+        * @param       void
+        * @return      void
         */
-       function action_pluginupdate()
+       static private function action_plugindown()
        {
                global $member, $manager, $CONF;
                
                // check if allowed
+<<<<<<< HEAD
                $member->isAdmin() or $this->disallow();
                
                // delete everything from plugin_events
@@ -6688,11 +10766,37 @@ selector();
                                        DB::execute($query);
                                }
                        }
+=======
+               $member->isAdmin() or self::disallow();
+               
+               $plugid = intGetVar('plugid');
+               if ( !$manager->pidInstalled($plugid) )
+               {
+                       self::error(_ERROR_NOSUCHPLUGIN);
+                       return;
+>>>>>>> skinnable-master
                }
+               
+               // 1. get old order number
+               $oldOrder = DB::getValue('SELECT porder FROM ' . sql_table('plugin') . ' WHERE pid=' . $plugid);
+               
+               $res = DB::getResult('SELECT * FROM ' . sql_table('plugin'));
+               $maxOrder = $res->rowCount();
+               
+               // 2. calculate new order number
+               $newOrder = ($oldOrder < $maxOrder) ? ($oldOrder + 1) : $maxOrder;
+               
+               // 3. update plug numbers
+               DB::execute('UPDATE ' . sql_table('plugin') . ' SET porder=' . $oldOrder . ' WHERE porder=' . $newOrder);
+               DB::execute('UPDATE ' . sql_table('plugin') . ' SET porder=' . $newOrder . ' WHERE pid=' . $plugid);
+               
+               //self::action_pluginlist();
+               // To avoid showing ticket in the URL, redirect to pluginlist, instead.
                redirect($CONF['AdminURL'] . '?action=pluginlist');
                return;
        }
        
+<<<<<<< HEAD
     /**
      * @todo document this
      */
@@ -6876,6 +10980,8 @@ selector();
         redirect($CONF['AdminURL'] . '?action=pluginlist');
     }
        
+=======
+>>>>>>> skinnable-master
        /**
         * Admin::action_pluginoptions()
         * 
@@ -6886,19 +10992,21 @@ selector();
         * @return      void
         * 
         */
-       public function action_pluginoptions($message = '')
+       static private function action_pluginoptions($message = '')
        {
                global $member, $manager;
                
                // check if allowed
-               $member->isAdmin() or $this->disallow();
+               $member->isAdmin() or self::disallow();
                
-               $pid = (integer) requestVar('plugid');
+               $pid = intRequestVar('plugid');
                if ( !$manager->pidInstalled($pid) )
                {
-                       $this->error(_ERROR_NOSUCHPLUGIN);
+                       self::error(_ERROR_NOSUCHPLUGIN);
+                       return;
                }
                
+<<<<<<< HEAD
                $pname = $manager->getPluginNameFromPid($pid);
                
                /* NOTE: to include translation file */
@@ -6957,11 +11065,17 @@ selector();
                if ( $amount == 0 )
                {
                        echo '<p>',_ERROR_NOPLUGOPTIONS,'</p>';
+=======
+               if ( isset($message) )
+               {
+                       self::$headMess = $message;
+>>>>>>> skinnable-master
                }
-               echo "</div>\n";
-               echo "</form>\n";
-               $this->pagefoot();
+               $plugname       = $manager->getPluginNameFromPid($pid);
+               $plugin         = $manager->getPlugin($plugname);
+               self::$extrahead .= "<script type=\"text/javascript\" src=\"<%skinfile(/javascripts/numbercheck.js)%>\"></script>\n";
                
+               self::$skin->parse('pluginoptions');
                return;
        }
        
@@ -6974,42 +11088,128 @@ selector();
         * @param       void
         * @return      void
         */
-       public function action_pluginoptionsupdate()
+       static private function action_pluginoptionsupdate()
        {
                global $member, $manager;
                
                // check if allowed
-               $member->isAdmin() or $this->disallow();
+               $member->isAdmin() or self::disallow();
+               
+               $pid = intRequestVar('plugid');
                
-               $pid = (integer) requestVar('plugid');
                if ( !$manager->pidInstalled($pid) )
                {
-                       $this->error(_ERROR_NOSUCHPLUGIN);
+                       self::error(_ERROR_NOSUCHPLUGIN);
+                       return;
                }
                
                $aOptions = requestArray('plugoption');
                NucleusPlugin::apply_plugin_options($aOptions);
                
-               $manager->notify('PostPluginOptionsUpdate',array('context' => 'global', 'plugid' => $pid));
+               $data = array(
+                       'context'       => 'global',
+                       'plugid'        => $pid
+               );
+               $manager->notify('PostPluginOptionsUpdate', $data);
                
-               $this->action_pluginoptions(_PLUGS_OPTIONS_UPDATED);
+               self::action_pluginoptions(_PLUGS_OPTIONS_UPDATED);
                return;
        }
        
        /**
-        * Admin::_insertPluginOptions()
+        * Admin::skineditgeneral()
         * 
-        * Output plugin option field
+        * @param       integer $skinid
+        * @param       string  $handler
+        * @return      string  empty or message if failed
+        */
+       static private function skineditgeneral($skinid, $handler='')
+       {
+               global $manager;
+               
+               $name = postVar('name');
+               $desc = postVar('desc');
+               $type = postVar('type');
+               $inc_mode = postVar('inc_mode');
+               $inc_prefix = postVar('inc_prefix');
+               
+               $skin =& $manager->getSkin($skinid, $handler);
+               
+               // 1. Some checks
+               if ( !isValidSkinName($name) )
+               {
+                       return _ERROR_BADSKINNAME;
+               }
+               
+               if ( ($skin->getName() != $name) && SKIN::exists($name) )
+               {
+                       return _ERROR_DUPSKINNAME;
+               }
+               
+               if ( !$type )
+               {
+                       $type = 'text/html';
+               }
+               
+               if ( !$inc_mode )
+               {
+                       $inc_mode = 'normal';
+               }
+               
+               // 2. Update description
+               $skin->updateGeneralInfo($name, $desc, $type, $inc_mode, $inc_prefix);
+               
+               return '';
+       }
+       /**
+        * Admin::skindeleteconfirm()
         * 
-        * @access      public
-        * @param string        $context        plugin option context
-        * @param integer       $contextid      plugin option context id
+        * @param       integer $skinid
         * @return      void
         */
-       public function _insertPluginOptions($context, $contextid = 0)
+       static private function skindeleteconfirm($skinid)
+       {
+               global $manager;
+               
+               if ( !in_array(self::$action, self::$adminskin_actions) )
+               {
+                       $event_identifier = 'Skin';
+               }
+               else
+               {
+                       $event_identifier = 'AdminSkin';
+               }
+
+               $data = array('skinid' => $skinid);
+               $manager->notify("PreDelete{$event_identifier}", $data);
+               
+               // 1. delete description
+               $query = "DELETE FROM %s WHERE sdnumber=%d;";
+               $query = sprintf($query, sql_table('skin_desc'), (integer) $skinid);
+               DB::execute($query);
+               
+               // 2. delete parts
+               $query = "DELETE FROM %s WHERE sdesc=%d;";
+               $query = sprintf($query, sql_table('skin'), (integer) $skinid);
+               DB::execute($query);
+               
+               $manager->notify("PostDelete{$event_identifier}", $data);
+               
+               return;
+       }
+       
+       /**
+        * Admin::skinremovetypeconfirm()
+        * 
+        * @param       integer $skinid
+        * @param       string  $skintype
+        * @return      string  empty or message if failed
+        */
+       static private function skinremovetypeconfirm($skinid, $skintype)
        {
                global $manager;
                
+<<<<<<< HEAD
                /* get current registered plugin option list in this context even if it's not used */
                $query = 'SELECT * FROM %s AS plugins, %s AS options LEFT OUTER JOIN %s AS added '
                       . 'ON ( options.oid=added.oid ) '
@@ -7063,61 +11263,251 @@ selector();
                                echo '<tr>';
                                listplug_plugOptionRow($option);
                                echo '</tr>';
+=======
+               if ( !in_array(self::$action, self::$adminskin_actions) )
+               {
+                       $event_identifier = 'Skin';
+               }
+               else
+               {
+                       $event_identifier = 'AdminSkin';
+               }
+               
+               if ( !isValidShortName($skintype) )
+               {
+                       return _ERROR_SKIN_PARTS_SPECIAL_DELETE;
+               }
+               
+               $data = array(
+                       'skinid'        => $skinid,
+                       'skintype'      => $skintype
+               );
+               $manager->notify("PreDelete{$event_identifier}Part", $data);
+               
+               // delete part
+               $query = 'DELETE FROM %s WHERE sdesc = %d AND stype = %s;';
+               $query = sprintf($query, sql_table('skin'), (integer) $skinid, DB::quoteValue($skintype) );
+               DB::execute($query);
+               
+               $data = array(
+                       'skinid'        => $skinid,
+                       'skintype'      => $skintype
+               );
+               $manager->notify("PostDelete{$event_identifier}Part", $data);
+               
+               return '';
+       }
+       
+       /**
+        * Admin::skinclone()
+        * 
+        * @param       integer $skinid
+        * @param       string  $handler
+        * @return      void
+        */
+       static private function skinclone($skinid, $handler='')
+       {
+               global $manager;
+               
+               // 1. read skin to clone
+               $skin =& $manager->getSkin($skinid, $handler);
+               $name = "{$skin->getName()}_clone";
+               
+               // if a skin with that name already exists:
+               if ( Skin::exists($name) )
+               {
+                       $i = 1;
+                       while ( Skin::exists($name . $i) )
+                       {
+                               $i++;
+                       }
+                       $name .= $i;
+               }
+               
+               // 2. create skin desc
+               $newid = Skin::createNew(
+                       $name,
+                       $skin->getDescription(),
+                       $skin->getContentType(),
+                       $skin->getIncludeMode(),
+                       $skin->getIncludePrefix()
+               );
+               
+               // 3. clone
+               $query = "SELECT stype FROM %s WHERE sdesc=%d;";
+               $query = sprintf($query, sql_table('skin'), (integer) $skinid);
+               
+               $res = DB::getResult($query);
+               foreach ( $res as $row )
+               {
+                       $content = $skin->getContentFromDB($row['stype']);
+                       if ( $content )
+                       {
+                               $query = "INSERT INTO %s (sdesc, scontent, stype) VALUES (%d, %s, %s)";
+                               $query = sprintf($query, sql_table('skin'), (integer) $newid, DB::quoteValue($content), DB::quoteValue($row['stype']));
+                               DB::execute($query);
+>>>>>>> skinnable-master
                        }
                }
                return;
        }
        
        /**
-        * Admin::input_yesno()
-        * Output input elements with radio attribute for yes/no options
+        * Admin::skinieimport()
         * 
-        * @param       string  $name   name attribute
-        * @param       string  $value_current  current value attribute
-        * @param       integer $tabindex       tab index
-        * @param       string  $value_yes      value attribute for yes option
-        * @param       string  $value_no       value attribute for no option
-        * @param       string  $text_yes       child text element for yes option
-        * @param       string  $text_no        child text element for no option
-        * @param       boolean $isAdmin        have admin right or not
-        * @return      void
+        * @param       string  $mode
+        * @param       string  $skinFileRaw
+        * @return      string  empty or message if failed
+        */
+       static private function skinieimport($mode, $skinFileRaw)
+       {
+               global $DIR_LIBS, $DIR_SKINS;
+               
+               // load skinie class
+               include_once($DIR_LIBS . 'skinie.php');
+               
+               $importer = new SkinImport();
+               
+               // get full filename
+               if ( $mode == 'file' )
+               {
+                       $skinFile = $DIR_SKINS . $skinFileRaw . '/skinbackup.xml';
+               }
+               else
+               {
+                       $skinFile = $skinFileRaw;
+               }
+               
+               // read only metadata
+               $error = $importer->readFile($skinFile, 1);
+               if ( $error )
+               {
+                       unset($importer);
+                       return $error;
+               }
+               
+               self::$contents['mode']         = $mode;
+               self::$contents['skinfile']     = $skinFileRaw;
+               self::$contents['skininfo']     = $importer->getInfo();
+               self::$contents['skinnames']    = $importer->getSkinNames();
+               self::$contents['tpltnames']    = $importer->getTemplateNames();
+               
+               // clashes
+               $skinNameClashes                = $importer->checkSkinNameClashes();
+               $templateNameClashes    = $importer->checkTemplateNameClashes();
+               $hasNameClashes                 = (count($skinNameClashes) > 0) || (count($templateNameClashes) > 0);
+               
+               self::$contents['skinclashes'] = $skinNameClashes;
+               self::$contents['tpltclashes'] = $templateNameClashes;
+               self::$contents['nameclashes'] = $hasNameClashes ? 1 : 0;
+               
+               unset($importer);
+               return '';
+       }
+       
+       /**
+        * Admin::skinieedoimport()
+        * 
+        * @param       string  $mode
+        * @param       string  $skinFileRaw
+        * @param       boolean $allowOverwrite
+        * @return      string  empty   or message if failed
         */
-       function input_yesno($name, $value_current, $tabindex = 0, $value_yes = 1, $value_no = 0, $text_yes = _YES, $text_no = _NO, $isAdmin = 0)
+       static private function skiniedoimport($mode, $skinFileRaw, $allowOverwrite)
        {
-               $id = preg_replace('#\[|\]#', '-', $name);
-               $id_yes = $id . $value_yes;
-               $id_no  = $id . $value_no;
+               global $DIR_LIBS, $DIR_SKINS;
+               
+               // load skinie class
+               include_once($DIR_LIBS . 'skinie.php');
+               
+               $importer = new SkinImport();
                
-               /* yes option */
-               echo '<input type="radio" id="' . Entity::hsc($id_yes) . '" name="' . Entity::hsc($name) . '" value="' . Entity::hsc($value_yes) . '"';
-               if ( $name=="admin" )
+               // get full filename
+               if ( $mode == 'file' )
                {
-                       echo ' onclick="selectCanLogin(true);"';
+                       $skinFile = $DIR_SKINS . $skinFileRaw . '/skinbackup.xml';
                }
-               if ( $value_current == $value_yes )
+               else
+               {
+                       $skinFile = $skinFileRaw;
+               }
+               
+               $error = $importer->readFile($skinFile);
+               if ( $error )
+               {
+                       unset($importer);
+                       return $error;
+               }
+               
+               $error = $importer->writeToDatabase($allowOverwrite);
+               if ( $error )
+               {
+                       unset($importer);
+                       return $error;
+               }
+               
+               self::$contents['mode']         = $mode;
+               self::$contents['skinfile']     = $skinFileRaw;
+               self::$contents['skininfo']     = $importer->getInfo();
+               self::$contents['skinnames']    = $importer->getSkinNames();
+               self::$contents['tpltnames']    = $importer->getTemplateNames();
+               
+               unset($importer);
+               return '';
+       }
+       
+       /**
+        * Admin::skinieexport()
+        * 
+        * @param       array   $aSkins
+        * @param       array   $aTemplates
+        * @param       string  $info
+        * @return      void
+        */
+       static private function skinieexport($aSkins, $aTemplates, $info)
+       {
+               global $DIR_LIBS;
+               
+               // load skinie class
+               include_once($DIR_LIBS . 'skinie.php');
+               
+               if ( !is_array($aSkins) )
                {
-                       echo " tabindex='$tabindex' checked='checked'";
+                       $aSkins = array();
                }
-               echo " />\n";
-               echo '<label for="' . Entity::hsc($id_yes) . '">' . Entity::hsc($text_yes) . "</label>\n";
                
-               /* no option */
-               echo '<input type="radio" id="' . Entity::hsc($id_no) . '" name="' . Entity::hsc($name) . '" value="' . Entity::hsc($value_no) . '"';
-               if ( $name=="admin" )
+               if (!is_array($aTemplates))
                {
-                       echo ' onclick="selectCanLogin(false);"';
+                       $aTemplates = array();
                }
-               if ( $value_current != $value_yes )
+               
+               $skinList = array_keys($aSkins);
+               $templateList = array_keys($aTemplates);
+               
+               $exporter = new SkinExport();
+               foreach ( $skinList as $skinId )
                {
-                       echo " tabindex='$tabindex' checked='checked'";
+                       $exporter->addSkin($skinId);
                }
-               if ($isAdmin && $name=="canlogin")
+               foreach ( $templateList as $templateId )
                {
-                       echo ' disabled="disabled"';
+                       $exporter->addTemplate($templateId);
                }
-               echo " />\n";
-               echo '<label for="' . Entity::hsc($id_no) . '">' . Entity::hsc($text_no) . "</label>\n";
+               $exporter->setInfo($info);
+               $exporter->export();
                
                return;
        }
+       
+       /**
+        * Admin::action_parseSpecialskin()
+        * 
+        * @param       void
+        * @return      void
+        */
+       static private function action_parseSpecialskin()
+       {
+               self::$skin->parse(self::$action);
+               return;
+       }
 }
diff --git a/nucleus/libs/AdminActions.php b/nucleus/libs/AdminActions.php
new file mode 100644 (file)
index 0000000..880ea41
--- /dev/null
@@ -0,0 +1,5466 @@
+<?php
+/**
+ * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)
+ * Copyright (C) 2002-2012 The Nucleus Group
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * (see nucleus/documentation/index.html#license for more info)
+ */
+/**
+ * @license http://nucleuscms.org/license.txt GNU General Public License
+ * @copyright Copyright (C) 2002-2012 The Nucleus Group
+ * @version $Id: AdminActions.php 1661 2012-02-12 11:55:39Z sakamocchi $
+ */
+
+class AdminActions extends BaseActions
+{
+       private $skintype;
+       
+       /**
+        * AdminActions::$default_actions
+        * list of whole action names with which this class can deal
+        */
+       static private $default_actions = array(
+               'actionurl',
+               'addtickettourl',
+               'adminurl',
+               'codename',
+               'customhelplink',
+               'date',
+               'extrahead',
+               'headmessage',
+               'helplink',
+               'member',
+               'newestcompare',
+               'pagehead',
+               'pagefoot',
+               'qmenuaddselect',
+               'quickmenu',
+               'sitevar',
+               'sprinttext',
+               'ticket',
+               'version',
+               'versioncheckurl'
+       );
+       
+       /**
+        * AdminActions::$normal_skin_types
+        * friendly name for wrapped page types
+        */
+       static private $normal_skin_types = 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,
+               'batchmovecat'                  => _ADM_SKPRT_BATCHMOVECAT,
+               'batchteam'                             => _ADM_SKPRT_BATCHTEAM,
+               'blogcommentlist'               => _ADM_SKPRT_BLOGCOMMENTLIST,
+               '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,
+               'createaccountinput'    => _ADM_SKPRT_CREATEACCOUNTINPUT,
+               'createaccountsuccess'  => _ADM_SKPRT_CREATEACCOUNTSUCCESS,
+               'createaccountdisable'  => _ADM_SKPRT_CREATEACCOUNTDISALLOWED,
+               'deleteblog'                    => _ADM_SKPRT_DELETEBLOG,
+               'editmembersettings'    => _ADM_SKPRT_EDITMEMBERSETTINGS,
+               'forgotpassword'                => _ADM_SKPRT_FORGOTPASSWORD,
+               '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::getNormalSkinTypes()
+        *
+        * @static
+        * @param       void
+        * @return      array   list of friendly names for page actions
+        */
+       static public function getNormalSkinTypes()
+       {
+               return self::$normal_skin_types;
+       }
+       
+       /**
+        * AdminActions::__construct()
+        * Constructor for a new Actions object
+        *
+        * @param       string  $type
+        * @return      void
+        */
+       public function __construct($type)
+       {
+               // call constructor of superclass first
+               parent::__construct();
+               
+               /* alias */
+               if ( $type == 'admntemplateoverview' )
+               {
+                       $this->skintype = 'admintemplateoverview';
+               }
+               else
+               {
+                       $this->skintype = $type;
+               }
+       
+               return;
+       }
+       
+       /**
+        * AdminActions::getAvailableActions()
+        *
+        * @param       void
+        * @return      array   allowed actions for the page type
+        */
+       public function getAvailableActions()
+       {
+               $extra_actions = array();
+               
+               switch ( $this->skintype )
+               {
+                       case 'actionlog':
+                               $extra_actions = array(
+                               'actionloglist',
+                               );
+                               break;
+                       case 'activate':
+                               $extra_actions = array(
+                               'activationmessage',
+                               'eventformextra',
+                               );
+                               break;
+                       case 'activatesetpwd':
+                               $extra_actions = array(
+                               /* nothing special */
+                               );
+                               break;
+                       case 'addnewlog':
+                               $extra_actions = array(
+                               'getblogsetting',
+                               'blogsetting',
+                               'requestblogid',
+                               );
+                               break;
+                       case 'adminerrorpage':
+                               $extra_actions = array(
+                               /* nothing special */
+                               );
+                               break;
+                       case 'adminskindelete':
+                               $extra_actions = array(
+                               'editskintype',
+                               );
+                               break;
+                       case 'adminskinedit':
+                               $extra_actions = array(
+                               'editskin',
+                               'normalskinlist',
+                               'specialskinlist',
+                               );
+                               break;
+                       case 'adminskinedittype':
+                               $extra_actions = array(
+                               'editskintype',
+                               'skintypehelp',
+                               'allowedskinactions',
+                               'skineditallowedlist',
+                               );
+                               break;
+                       case 'adminskiniedoimport':
+                               $extra_actions = array(
+                               'importskininfo',
+                               );
+                               break;
+                       case 'adminskinieimport':
+                               $extra_actions = array(
+                               'importskininfo',
+                               );
+                               break;
+                       case 'adminskinieoverview':
+                               $extra_actions = array(
+                               'selectlocalskinfiles',
+                               'skinielist',
+                               );
+                               break;
+                       case 'adminskinoverview':
+                               $extra_actions = array(
+                               'skinoverview',
+                               );
+                               break;
+                       case 'adminskinremovetype':
+                               $extra_actions = array(
+                               'editskintype',
+                               );
+                               break;
+                       case 'admintemplatedelete':
+                               $extra_actions = array(
+                               'editadmintemplateinfo',
+                               );
+                       case 'admintemplateedit':
+                               $extra_actions = array(
+                               'edittemplateinfo',
+                               );
+                               break;
+                       case 'admintemplateoverview':
+                               $extra_actions = array(
+                               'templateoverview',
+                               );
+                               break;
+                       case 'backupoverview':
+                               $extra_actions = array(
+                               /* nothing special */
+                               );
+                               break;
+                       case 'backuprestore':
+                               $extra_actions = array(
+                               /* nothing special */
+                               );
+                               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 'batchmovecat':
+                               $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 'blogsettings':
+                               $extra_actions = array(
+                               'adminbloglink',
+                               'blogcatlist',
+                               'blognotifysetting',
+                               'blogsetting',
+                               'blogsettingyesno',
+                               'blogteammembers',
+                               'blogtime',
+                               'defcatselect',
+                               'defskinselect',
+                               'pluginextras',
+                               'pluginoptions',
+                               'requestblogid',
+                               );
+                               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',
+                               'pluginoptions'
+                               );
+                               break;
+                       case 'commentdelete':
+                               $extra_actions = array(
+                               'deletecomment',
+                               );
+                               break;
+                       case 'commentedit':
+                               $extra_actions = array(
+                               'editcomment',
+                               );
+                               break;
+                       case 'createaccountinput':
+                               $extra_actions = array(
+                               'contents',
+                               'pluginextras',
+                               'eventformextra',
+                               );
+                               break;
+                       case 'createaccountsuccess':
+                               $extra_actions = array(
+                               'contents',
+                               );
+                               break;
+                       case 'createaccountdisable':
+                               $extra_actions = array(
+                               /* nothing special */
+                               );
+                               break;
+                       case 'createitem':
+                               $extra_actions = array(
+                               'adminbloglink',
+                               'blogid',
+                               'contents',
+                               'categories',
+                               'currenttime',
+                               'init',
+                               'pluginoptions',
+                               'pluginextras'
+                               );
+                               break;
+                       case 'createnewlog':
+                               $extra_actions = array(
+                               'defskinselect',
+                               'blogtime',
+                               );
+                               break;
+                       case 'deleteblog':
+                               $extra_actions = array(
+                               'blogsetting',
+                               'requestblogid',
+                               );
+                               break;
+                       case 'editmembersettings':
+                               $extra_actions = array(
+                               'defskinselect',
+                               'editmember',
+                               'localeselectoptions',
+                               'pluginoptions',
+                               'defadminskinselect',
+                               'defbookmarkletselect',
+                               'pluginextras',
+                               );
+                               break;
+                       case 'forgotpassword':
+                               $extra_actions = array(
+                               /* nothing special */
+                               );
+                               break;
+                       case 'itemcommentlist':
+                               $extra_actions = array(
+                               'requestblogid',
+                               'commentnavlist',
+                               );
+                               break;
+                       case 'itemdelete':
+                               $extra_actions = array(
+                               'deleteitemtitle',
+                               'deleteitembody',
+                               'deleteitemid',
+                               );
+                               break;
+                       case 'itemedit':
+                               $extra_actions = array(
+                               'init',
+                               'contents',
+                               'checkedonval',
+                               'categories',
+                               'currenttime',
+                               'itemtime',
+                               'pluginoptions',
+                               'pluginextras'
+                               );
+                               break;
+                       case 'itemlist':
+                               $extra_actions = array(
+                               'adminbloglink',
+                               'ilistaddnew',
+                               'itemnavlist',
+                               );
+                               break;
+                       case 'itemmove':
+                               $extra_actions = array(
+                               'moveitemid',
+                               'movedistselect',
+                               );
+                               break;
+                       case 'manage':
+                               $extra_actions = array(
+                               /* nothing special */
+                               );
+                               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 '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',
+                               'configsettingsyesno',
+                               'outputspecialdirs',
+                               'jstoolbaroptions',
+                               'localeselectoptions',
+                               'mediadirwarning',
+                               'pluginextras',
+                               'defadminskinselect',
+                               'defbookmarkletselect',
+                               );
+                               break;
+                       case 'showlogin':
+                               $extra_actions = array(
+                               'passrequestvars',
+                               );
+                               break;
+                       case 'skindelete':
+                               $extra_actions = array(
+                               'editskintype',
+                               );
+                               break;
+                       case 'skinedit':
+                               $extra_actions = array(
+                               'editskin',
+                               'normalskinlist',
+                               'specialskinlist'
+                               );
+                               break;
+                       case 'skinedittype':
+                               $extra_actions = array(
+                               'editskintype',
+                               'skintypehelp',
+                               'allowedskinactions',
+                               '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',
+                               'adminurl',
+                               'extrahead',
+                               'member',
+                               'versioncheckurl',
+                               'version',
+                               'codename',
+                               'newestcompare',
+                               'selectlocalskinfiles',
+                               'skinielist',
+                               );
+                               break;
+                       default:
+                               break;
+               }
+               
+               $defined_actions = array_merge(self::$default_actions, $extra_actions);
+               
+               return array_merge($defined_actions, parent::getAvailableActions());
+       }
+       
+       /**
+        * AdminActions::parse_actionloglist()
+        * Parse skinvar actionloglist
+        *
+        * @param       string  $template_name  name of template to use
+        * @return      void
+        */
+       public function parse_actionloglist($template_name = '')
+       {
+               $query = "SELECT * FROM %s ORDER BY timestamp DESC;";
+               $query = sprintf($query, sql_table('actionlog'));
+               
+               $resource = DB::getResult($query);
+               if ( $resource->rowCount() > 0 )
+               {
+                       $template['content'] = 'actionlist';
+                       $action_list = showlist($resource, 'table', $template, $template_name);
+                       $this->parser->parse($action_list);
+               }
+               else
+               {
+                       /* TODO: nothing to be shown */
+               }
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_activationmessage()
+        * Parse skinvar activationmessage
+        *
+        * @param       string  $type                   type of message
+        * @param       string  $template_name  name of template to use
+        * @return      void
+        */
+       public function parse_activationmessage($type, $template_name = '')
+       {
+               global $CONF, $manager;
+               
+               $template = array();
+               
+               if ( !empty($template_name))
+               {
+                       $template =& $manager->getTemplate($template_name);
+               }
+               
+               $key = postVar('ackey');
+               if ( !$key )
+               {
+                       Admin::error(_ERROR_ACTIVATE);
+               }
+               
+               $info = MEMBER::getActivationInfo($key);
+               if ( !$info )
+               {
+                       Admin::error(_ERROR_ACTIVATE);
+               }
+               
+               $mem =& $manager->getMember($info->vmember);
+               if ( !$mem )
+               {
+                       Admin::error(_ERROR_ACTIVATE);
+               }
+               switch ( $info->vtype )
+               {
+                       case 'forgot':
+                               if ( array_key_exists('ACTIVATE_FORGOT_TITLE', $template) && !empty($template['ACTIVATE_FORGOT_TITLE']) )
+                               {
+                                       $title = $template['ACTIVATE_FORGOT_TITLE'];
+                               }
+                               else
+                               {
+                                       $title = _ACTIVATE_FORGOT_TITLE;
+                               }
+                               if ( array_key_exists('ACTIVATE_FORGOT_TEXT', $template) && !empty($template['ACTIVATE_FORGOT_TEXT']) )
+                               {
+                                       $text = $template['ACTIVATE_FORGOT_TEXT'];
+                               }
+                               else
+                               {
+                                       $text = _ACTIVATE_FORGOT_TEXT;
+                               }
+                               break;
+                       case 'register':
+                               if ( array_key_exists('ACTIVATE_REGISTER_TITLE', $template) && !empty($template['ACTIVATE_REGISTER_TITLE']) )
+                               {
+                                       $title = $template['ACTIVATE_REGISTER_TITLE'];
+                               }
+                               else
+                               {
+                                       $title = _ACTIVATE_REGISTER_TITLE;
+                               }
+                               if ( array_key_exists('ACTIVATE_REGISTER_TEXT', $template) && !empty($template['ACTIVATE_REGISTER_TEXT']) )
+                               {
+                                       $text = $template['ACTIVATE_REGISTER_TEXT'];
+                               }
+                               else
+                               {
+                                       $text = _ACTIVATE_REGISTER_TEXT;
+                               }
+                               break;
+                       case 'addresschange':
+                               if ( array_key_exists('ACTIVATE_CHANGE_TITLE', $template) && !empty($template['ACTIVATE_CHANGE_TITLE']) )
+                               {
+                                       $title = $template['ACTIVATE_CHANGE_TITLE'];
+                               }
+                               else
+                               {
+                                       $title = _ACTIVATE_CHANGE_TITLE;
+                               }
+                               if (array_key_exists('ACTIVATE_CHANGE_TEXT', $template) && !empty($template['ACTIVATE_CHANGE_TEXT']))
+                               {
+                                       $text = $template['ACTIVATE_CHANGE_TEXT'];
+                               }
+                               else
+                               {
+                                       $text = _ACTIVATE_CHANGE_TEXT;
+                               }
+                               break;
+               }
+               $aVars = array(
+                       'memberName'    => Entity::hsc($mem->getDisplayName()),
+                       'realName'              => Entity::hsc($mem->getRealName()),
+               );
+               switch ( $type )
+               {
+                       case 'title':
+                               echo Template::fill($title, $aVars);
+                               break;
+                       case 'text':
+                               echo Template::fill($text,  $aVars);
+                               break;
+                       case 'ackey':
+                               echo Entity::hsc($key);
+                               break;
+               }
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_addtickettourl()
+        * Parse skinvar addtickettourl
+        *
+        * @param       string  $url    URI for ticket
+        * @return      void
+        */
+       public function parse_addtickettourl($url)
+       {
+               global $manager;
+               $url = $manager->addTicketToUrl($url);
+               echo Entity::hsc($url);
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_adminbanlist()
+        * Parse skinvar adminbanlist
+        *
+        * @param       string  $template_name  name of template to use
+        * @return      void
+        */
+       public function parse_adminbanlist($template_name = '')
+       {
+               $blogid = intRequestVar('blogid');
+               
+               $query = "SELECT * FROM %s WHERE blogid=%d ORDER BY iprange;";
+               $query = sprintf($query, sql_table('ban'), (integer) $blogid);
+               
+               $resource = DB::getResult($query);
+               if ( $resource->rowCount() > 0 )
+               {
+                       $template['content'] = 'banlist';
+                       $ban_list = showlist($resource, 'table', $template, $template_name);
+                       $this->parser-parse($ban_list);
+               }
+               else
+               {
+                       echo _BAN_NONE;
+               }
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_adminbatchaction()
+        * Parse skinvar adminbatchaction
+        *
+        * @param       void
+        * @return      void
+        */
+       public function parse_adminbatchaction()
+       {
+               echo Entity::hsc(requestVar('batchaction'));
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_adminbatchlist()
+        * Parse skinvar adminbatchlist
+        *
+        * @param       string  $template_name  name of template to use
+        * @return      void
+        */
+       public function parse_adminbatchlist($template_name = '')
+       {
+               global $manager;
+               $templates = array();
+               
+               if ( !empty($template_name) )
+               {
+                       $templates =& $manager->getTemplate($template_name);
+               }
+               
+               if ( !array_key_exists('ADMIN_BATCHLIST', $templates) || empty($templates['ADMIN_BATCHLIST']) )
+               {
+                       $template = '<li><%text(_BATCH_EXECUTING)%>&nbsp;'
+                       . '<b><%adminbatchaction%></b>&nbsp;'
+                       . '<%batchlisttype%>&nbsp;'
+                       . '<b><%batchid%></b>...&nbsp;'
+                       . '<b><%batchlistmsg%></b>'
+                       . "</li>\n";
+               }
+               else
+               {
+                       $template = $templates['ADMIN_BATCHLIST'];
+               }
+               
+               $selected = requestIntArray('batch');
+               $action = requestVar('batchaction');
+               
+               switch ( $this->skintype )
+               {
+                       case 'batchitem':
+                               $batchlisttype  = _BATCH_ONITEM;
+                               $deleteaction   = 'deleteOneItem';
+                               $moveaction             = 'moveOneItem';
+                               $destid                 = intRequestVar('destcatid');
+                               break;
+                       case 'batchcomment':
+                               $batchlisttype  = _BATCH_ONCOMMENT;
+                               $deleteaction   = 'deleteOneComment';
+                               break;
+                       case 'batchmember':
+                               $batchlisttype  = _BATCH_ONMEMBER;
+                               $deleteaction   = 'deleteOneMember';
+                               $setadminsql    = sql_table('member') . ' SET madmin = 1 WHERE mnumber = ';
+                               $unsetchksql    = 'SELECT * FROM ' . sql_table('member') . ' WHERE madmin = 1 AND mcanlogin = 1';
+                               $unsetupsql             = sql_table('member') . ' SET madmin = 0 WHERE mnumber = ';
+                               $unseterrmsg    = _ERROR_ATLEASTONEADMIN;
+                               break;
+                       case 'batchteam':
+                               $blogid                 = intRequestVar('blogid');
+                               $batchlisttype  = _BATCH_ONTEAM;
+                               $deleteaction   = 'deleteOneTeamMember';
+                               $setadminsql    = sql_table('team') . ' SET tadmin = 1 WHERE tblog = ' . $blogid . ' AND tmember = ';
+                               $unsetchksql    = 'SELECT * FROM ' . sql_table('team') . ' WHERE tadmin = 1 AND tblog = ' . $blogid;
+                               $unseterrmsg    = _ERROR_ATLEASTONEBLOGADMIN;
+                               $unsetupsql             = sql_table('team') . ' SET tadmin = 0 WHERE tblog = ' . $blogid . ' AND tmember = ';
+                               break;
+                       case 'batchcategory':
+                               $batchlisttype  = _BATCH_ONCATEGORY;
+                               $deleteaction   = 'deleteOneCategory';
+                               $moveaction             = 'moveOneCategory';
+                               $destid                 = intRequestVar('destblogid');
+                               break;
+               }
+               
+               // walk over all selectedids and perform action
+               foreach ( $selected as $selectedid )
+               {
+                       $error = '';
+                       $selectedid = intval($selectedid);
+                       switch ( $action )
+                       {
+                               case 'delete':
+                                       if ( $this->skintype != 'batchteam' )
+                                       {
+                                               $params = array($selectedid);
+                                               $error = call_user_func_array(array('Admin', $deleteaction), $params);
+                                       }
+                                       else
+                                       {
+                                               $error = Admin::deleteOneTeamMember($blogid, $selectedid);
+                                       }
+                                       break;
+                               case 'move':
+                                       $params = array($selectedid, $destid);
+                                       $error = call_user_func_array(array('Admin', $moveaction), $params);
+                                       break;
+                               case 'setadmin':
+                                       // always succeeds
+                                       DB::execute("UPDATE {$setadminsql} {$selectedid};");
+                                       $error = '';
+                                       break;
+                               case 'unsetadmin':
+                                       // there should always remain at least one super-admin
+                                       $r = DB::getResult($unsetchksql);
+                                       if ( $r->rowCount() < 2 )
+                                       {
+                                               $error = $unseterrmsg;
+                                       }
+                                       else
+                                       {
+                                               DB::execute("UPDATE {$unsetupsql} {$selectedid};");
+                                       }
+                                       break;
+                               default:
+                                       $error = _BATCH_UNKNOWN . Entity::hsc($action);
+                       }
+                               
+                       $data = array(
+                               'batchid'                       => $selectedid,
+                               'batchlisttype'         => Entity::hsc($batchlisttype),
+                               'adminbatchaction'      => Entity::hsc($action),
+                               'batchlistmsg'          => $error ? $error : _BATCH_SUCCESS,
+                       );
+                               
+                       $this->parser->parse(Template::fill($template, $data));
+                       echo '<br />';
+               }
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_adminbloglink()
+        * Parse skinvar adminbloglink
+        *
+        * @param       string  $template_name  name of template to use
+        * @return      void
+        */
+       public function parse_adminbloglink($template_name = '')
+       {
+               global $manager;
+               $blogid =  intRequestVar('blogid');
+               $blog   =& $manager->getBlog($blogid);
+               $templates = array();
+               
+               if ( !empty($template_name) )
+               {
+                       $templates =& $manager->getTemplate($template_name);
+               }
+               
+               if ( !array_key_exists('ADMIN_BLOGLINK', $templates) || empty($templates['ADMIN_BLOGLINK']) )
+               {
+                       $template = '<a href="<%url%>" title="<%adminbloglinktitle%>"><%blogname%></a>';
+               }
+               else
+               {
+                       $template = $templates['ADMIN_BLOGLINK'];
+               }
+               
+               $data = array(
+                       'url'                                   => Entity::hsc($blog->getURL()),
+                       'adminbloglinktitle'    => _BLOGLIST_TT_VISIT,
+                       'blogname'                              => Entity::hsc($blog->getName())
+               );
+               
+               echo Template::fill($template, $data);
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_adminerrormesg()
+        * Parse skinvar adminerrormesg
+        *
+        * @param       void
+        * @return      void
+        */
+       public function parse_adminerrormesg()
+       {
+               global $CONF;
+               $message = '';
+               
+               if ( requestVar('errormessage') )
+               {
+                       $message = requestVar('errormessage');
+               }
+               elseif ( cookieVar($CONF['CookiePrefix'] . 'errormessage') )
+               {
+                       $message = cookieVar($CONF['CookiePrefix'] . 'errormessage');
+               }
+               elseif ( Admin::sessionVar($CONF['CookiePrefix'] . 'errormessage') )
+               {
+                       $message = Admin::sessionVar($CONF['CookiePrefix'] . 'errormessage');
+               }
+               echo Entity::hsc($message);
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_allowedskinactions()
+        * Parse skinvar allowedskinactions
+        *
+        * @param       void
+        * @return      void
+        */
+       public function parse_allowedskinactions()
+       {
+               global $manager;
+               
+               $type = strtolower(trim(requestVar('type')));
+               $skinid = intRequestVar('skinid');
+               
+               if ( !in_array($this->skintype, Admin::$adminskin_actions) )
+               {
+                       $skin =& $manager->getSkin($skinid);
+                       $tag = 'skinvar';
+               }
+               else
+               {
+                       $skin =& $manager->getSkin($skinid, 'AdminActions');
+                       $tag = 'adminskinvar';
+               }
+               
+               $actions = $skin->getAllowedActionsForType($type);
+               sort($actions);
+               
+               while ( $current = array_shift($actions) )
+               {
+                       echo helplink("{$tag}-{$current}") . "$current</a>\n";
+                       
+                       if ( count($actions) != 0 )
+                       {
+                               echo ", ";
+                       }
+               }
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_banlistdeletedlist()
+        * Parse skinvar banlistdeletedlist
+        *
+        * @param       string  $template_name  name of template to use
+        * @return      void
+        */
+       public function parse_banlistdeletedlist($template_name = '')
+       {
+               global $manager;
+               
+               $templates = array();
+               if ( $template_name )
+               {
+                       $templates =& $manager->getTemplate($template_name);
+               }
+               
+               if ( !array_key_exists('BANLIST_DELETED_LIST', $templates) || empty($templates['BANLIST_DELETED_LIST']) )
+               {
+                       $template = "<li><%blogname%></li>\n";
+               }
+               else
+               {
+                       $template = $templates['BANLIST_DELETED_LIST'];
+               }
+               
+               $deleted = requestArray('delblogs');
+               foreach ( $deleted as $delblog )
+               {
+                       $blog =& $manager->getBlog($delblog);
+                       $data =  array(
+                               'blogname' => Entity::hsc($blog->getName())
+                       );
+                       echo Template::fill($template, $data);
+               }
+               
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_batchdeletelist()
+        * Parse skinvar batchdeletelist
+        *
+        * @param       void
+        * @return      void
+        */
+       public function parse_batchdeletelist()
+       {
+               $selected = requestIntArray('batch');
+               $index  = 0;
+               
+               foreach ( $selected as $select )
+               {
+                       echo '<input type="hidden" name="batch[' . ($index++) . ']" value="' . intval($select) . "\" />\n";
+               }
+               // add hidden vars for team & comment
+               if ( requestVar('action') == 'batchteam' )
+               {
+                       echo '<input type="hidden" name="blogid" value="' . intRequestVar('blogid') . "\" />\n";
+               }
+               if ( requestVar('action') == 'batchcomment' )
+               {
+                       echo '<input type="hidden" name="itemid" value="' . intRequestVar('itemid') . "\" />\n";
+               }
+               return;
+       }
+
+       /**
+        * AdminActions::parse_defadminskinselect()
+        * Parse skinvar defadminskinselect
+        *
+        * @param       string  $template_name  name of template to use
+        * @return      void
+        */
+       public function parse_defadminskinselect($template_name)
+       {
+               global $CONF, $action, $manager;
+               
+               if ( $action == 'editmembersettings' )
+               {
+                       global $member;
+                       $default = $member->adminskin;
+               }
+               elseif ( $action == 'memberedit' )
+               {
+                       $mem = $manager->getMember(intRequestVar('memberid'));
+                       $default = $mem->adminskin;
+               }
+               else
+               {
+                       $default = $CONF['AdminSkin'];
+               }
+               
+               $query  = "SELECT sdname as text, sdnumber as value FROM %s WHERE sdname LIKE 'admin/%%'";
+               $query = sprintf($query, sql_table('skin_desc'));
+               $template = array(
+                               'name'          => 'adminskin',
+                               'tabindex'      => 10080,
+                               'selected'      => $default
+               );
+               
+               if ( $this->skintype != 'settingsedit' )
+               {
+                       $template['extra'] = Entity::hsc(_MEMBERS_USESITELANG);
+               }
+               
+               $skin_select = showlist($query, 'select', $template, $template_name);
+               $this->parser->parse($skin_select);
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_defbookmarkletselect()
+        * Parse skinvar defbookmarkletselect
+        *
+        * @param       string  $template_name  name of template to use
+        * @return      void
+        */
+       public function parse_defbookmarkletselect($template_name)
+       {
+               global $CONF, $action, $manager;
+               
+               if ( $action == 'editmembersettings' )
+               {
+                       global $member;
+                       $default = $member->bookmarklet;
+               }
+               elseif ( $action == 'memberedit' )
+               {
+                       $mem = $manager->getMember(intRequestVar('memberid'));
+                       $default = $mem->bookmarklet;
+               }
+               else
+               {
+                       $default = $CONF['BookmarkletSkin'];
+               }
+               
+               $query  = "SELECT sdname as text, sdnumber as value FROM %s WHERE sdname LIKE 'admin/%%'";
+               $query = sprintf($query, sql_table('skin_desc'));
+       
+               $template = array(
+                               'name'          => 'bookmarklet',
+                               'tabindex'      => 10085,
+                               'selected'      => $default
+               );
+               
+               if ( $this->skintype != 'settingsedit' )
+               {
+                       $template['extra'] = Entity::hsc(_MEMBERS_USESITELANG);
+               }
+               
+               $bookmarklet_select = showlist($query, 'select', $template, $template_name);
+               $this->parser->parse($bookmarklet_select);
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_batchdeletetype()
+        * Parse skinvar batchdeletetype
+        *
+        * @param       void
+        * @return      void
+        */
+       public function parse_batchdeletetype()
+       {
+               echo Entity::hsc(requestVar('action'));
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_batchmovebtn()
+        * Parse skinvar batchmovebtn
+        *
+        * @param       void
+        * @return      void
+        */
+       public function parse_batchmovebtn()
+       {
+               $actionType = requestVar('action');
+               switch ( $actionType )
+               {
+                       case 'batchitem':
+                               echo _MOVE_BTN;
+                               break;
+                       case 'batchcategory':
+                               echo _MOVECAT_BTN;
+                               break;
+               }
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_batchmovelist()
+        * Parse skinvar batchmovelist
+        *
+        * @param       void
+        * @param       void
+        */
+       public function parse_batchmovelist()
+       {
+               $selected = requestIntArray('batch');
+               $count    = 0;
+               foreach ( $selected as $select )
+               {
+                       echo '<input type="hidden" name="batch[' . ($count) . ']" value="' . intval($select) . "\" />\n";
+                       $count++;
+               }
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_batchmovetitle()
+        * Parse skinvar batchmovetitle
+        *
+        * @param       void
+        * @return      void
+        */
+       public function parse_batchmovetitle()
+       {
+               $actionType = requestVar('action');
+               switch ( $actionType )
+               {
+                       case 'batchitem':
+                               echo _MOVE_TITLE;
+                               break;
+                       case 'batchcategory':
+                               echo _MOVECAT_TITLE;
+                               break;
+               }
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_batchmovetype()
+        * Parse skinvar batchmovetype
+        *
+        * @param       void
+        * @return      void
+        */
+       public function parse_batchmovetype()
+       {
+               echo Entity::hsc(requestVar('action'));
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_blogcatlist()
+        * Parse skinvar blogcatlist
+        *
+        * @param       void
+        * @return      void
+        */
+       public function parse_blogcatlist($template_name = '')
+       {
+               global $manager;
+               $blogid = intRequestVar('blogid');
+               $query = "SELECT * FROM %s WHERE cblog = %d ORDER BY cname;";
+               $query = sprintf($query, sql_table('category'), (integer) $blogid);
+               
+               $resource = DB::getResult($query);
+               if ( $resource->rowCount() > 0 )
+               {
+                       $template['content']  = 'categorylist';
+                       $template['tabindex'] = 200;
+                       $category_list = listplug_batchlist('category', $resource, 'table', $template, $template_name);
+                       $this->parser->parse($category_list);
+               }
+               else
+               {
+                       /* TODO: nothing to be shown */
+               }
+               $resource->closeCursor();
+               
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_blogid()
+        * Parse skinvar blogid
+        *
+        * @param       void
+        * @return      void
+        */
+       public function parse_blogid()
+       {
+               echo intRequestVar('blogid');
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_blognotifysetting()
+        * Parse skinvar blognotifysetting
+        *
+        * @param       void
+        * @return      void
+        */
+       public function parse_blognotifysetting($type)
+       {
+               global $manager;
+               $blogid =  intRequestVar('blogid');
+               $blog   =& $manager->getBlog($blogid);
+               
+               switch ( $type )
+               {
+                       case 'comment':
+                               if ( !$blog->notifyOnComment() )
+                               {
+                                       return;
+                               }
+                               break;
+                       case 'vote':
+                               if ( !$blog->notifyOnVote() )
+                               {
+                                       return;
+                               }
+                               break;
+                       case 'newitem':
+                               if ( !$blog->notifyOnNewItem() )
+                               {
+                                       return;
+                               }
+                               break;
+               }
+               echo ' checked="checked"';
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_blogsetting()
+        * Parse skinvar blogsetting
+        *
+        * @param       string  $which  name of weblog setting
+        * @return      void
+        */
+       public function parse_blogsetting($which)
+       {
+               echo $this->parse_getblogsetting($which);
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_blogsettingyesno()
+        * Parse skinvar blogsettingyesno
+        *
+        * @param       string  $type                   type of weblog setting
+        * @param       string  $template_name  name of template to use
+        * @return      void
+        */
+       public function parse_blogsettingyesno($type, $template_name = '')
+       {
+               global $manager;
+
+               $blogid =  intRequestVar('blogid');
+               $blog   =& $manager->getBlog($blogid);
+
+               switch ( $type )
+               {
+                       case 'convertbreaks':
+                               $checkedval = $blog->convertBreaks();
+                               $tabindex   = 55;
+                               break;
+                       case 'allowpastposting':
+                               $checkedval = $blog->allowPastPosting();
+                               $tabindex   = 57;
+                               break;
+                       case 'comments':
+                               $checkedval = $blog->commentsEnabled();
+                               $tabindex   = 60;
+                               break;
+                       case 'public':
+                               $checkedval = $blog->isPublic();
+                               $tabindex   = 70;
+                               break;
+                       case 'reqemail':
+                               $checkedval = $blog->emailRequired();
+                               $tabindex   = 72;
+                               break;
+                       case 'searchable':
+                               $checkedval = $blog->getSearchable();
+                               $tabindex   = 122;
+                               break;
+               }
+               $this->parse_inputyesno($type, $checkedval, $tabindex, 1, 0, _YES, _NO, 0, $template_name);
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_blogteamlist()
+        * Parse skinvar blogteamlist
+        *
+        * @param       string  $template_name  name of template to use
+        * @return      void
+        */
+       public function parse_blogteamlist($template_name = '')
+       {
+               global $manager;
+               $blogid = intRequestVar('blogid');
+               $query = "SELECT tblog, tmember, mname, mrealname, memail, tadmin "
+               . "FROM %s, %s "
+               . "WHERE tmember=mnumber AND tblog= %d";
+               $query = sprintf($query, sql_table('member'), sql_table('team'), (integer) $blogid);
+               
+               $resource = DB::getResult($query);
+               if ( $resource->rowCount() > 0 )
+               {
+                       $template['content']  = 'teamlist';
+                       $template['tabindex'] = 10;
+                       
+                       $team_list = listplug_batchlist('team', $resource, 'table', $template, $template_name);
+                       $this->parser->parse($team_list);
+               }
+               else
+               {
+                       echo _LISTS_NOMORE;
+               }
+               $resource->closeCursor();
+               
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_blogteammembers()
+        * Parse skinvar blogteammembers
+        *
+        * @param       void
+        * @return      void
+        */
+       public function parse_blogteammembers()
+       {
+               $blogid = intRequestVar('blogid');
+               $query  = "SELECT mname, mrealname "
+               . "FROM %s, %s "
+               . "WHERE mnumber=tmember AND tblog=%d;";
+               $query = sprintf($query, sql_table('member'), sql_table('team'), (integer) $blogid);
+               $res = DB::getResult($query);
+               $memberNames = array();
+               foreach ( $res as $row )
+               {
+                       $memberNames[] = Entity::hsc($row['mname']) . ' (' . Entity::hsc($row['mrealname']). ')';
+               }
+               echo implode(',', $memberNames);
+       }
+       
+       /**
+        * AdminActions::parse_blogtime()
+        * Parse skinvar blogtime
+        *
+        * @param       string  $type   type of time
+        * @param       string  $format format for time expression
+        * @param       integer $offset offset of time
+        * @return      void
+        */
+       public function parse_blogtime($type, $format = '%H:%M', $offset = 0)
+       {
+               global $manager;
+               
+               if ( $type != 'blogtime' )
+               {
+                       /* return server time */
+                       $timestamp = time() + $offset;
+               }
+               else
+               {
+                       $bid = intRequestVar('blogid');
+                       $b =& $manager->getBlog($bid);
+                       $timestamp = $b->getCorrectTime() + $offset;
+               }
+               
+               echo i18n::formatted_datetime($format, $timestamp);
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_bookmarkletadmin()
+        * Parse skinvar bookmarkletadmin
+        *
+        * @param       void
+        * @return      void
+        */
+       public function parse_bookmarkletadmin()
+       {
+               global $manager;
+               
+               $blogid = intRequestVar('blogid');
+               
+               echo Entity::hsc('javascript:' . getBookmarklet($blogid));
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_categories()
+        * Parse skinvar categories
+        *
+        * create category dropdown box
+        *
+        * @param       string  $type   name of setting for category
+        * @return      void
+        */
+       public function parse_categories($startidx = 0)
+       {
+               global $manager;
+               
+               if ( !array_key_exists('catid', Admin::$contents) || empty(Admin::$contents['catid']) )
+               {
+                       $catid = Admin::$blog->getDefaultCategory();
+               }
+               else
+               {
+                       $catid = Admin::$contents['catid'];
+               }
+               
+               $this->selectBlog('catid', 'category', $catid, $startidx, 1, Admin::$blog->getID());
+               
+               return;
+       }
+
+       /**
+        * AdminActions::parse_categorysetting()
+        * Parse skinvar categorysetting
+        *
+        * @param       string  $type   type in category setting
+        * @return      void
+        */
+       public function parse_categorysetting($type)
+       {
+               $catid  = intRequestVar('catid');
+               if ( $type == 'id' )
+               {
+                       echo $catid;
+                       return;
+               }
+               $blogid = intRequestVar('blogid');
+               $query  = "SELECT * FROM %s WHERE cblog = %d AND catid = %d;";
+               $query  = sprintf($query, sql_table('category'), (integer) $blogid, (integer) $catid);
+               $row    = DB::getRow($query);
+               
+               if ( $type != 'name' )
+               {
+                       echo Entity::hsc($row['cdesc']);
+               }
+               else
+               {
+                       echo Entity::hsc($row['cname']);
+               }
+               
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_codename()
+        * Parse templatevar codename
+        *
+        * @param       $value
+        * @param       $name
+        *
+        */
+       public function parse_checkedonval($value, $name)
+       {
+               global $manager;
+               
+               $item = false;
+               $itemid = intRequestVar('itemid');
+               $item =& $manager->getItem($itemid, 1, 1);
+               
+               if ( $item )
+               {
+                       $blog =& $manager->getBlog($item['blogid']);
+                       
+                       if ( $blog->convertBreaks() && requestVar('action') == 'itemedit' )
+                       {
+                               $item['body'] = removeBreaks($item['body']);
+                               $item['more'] = removeBreaks($item['more']);
+                       }
+               }
+               
+               $contents = array();
+               if ( requestVar('action') == 'itemedit' )
+               {
+                       $contents = $item;
+               }
+               if ( !isset($contents[$name]) )
+               {
+                       $contents[$name] = '';
+               }
+               if ($contents[$name] == $value)
+               {
+                       echo 'checked="checked"';
+               }
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_codename()
+        * Parse templatevar codename
+        *
+        * @param       void
+        * @return      void
+        *
+        * TODO: is this need???
+        */
+       public function parse_codename()
+       {
+               global $nucleus;
+               echo $nucleus['codename'];
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_commentnavlist()
+        * Parse skinvar commentnavlist
+        *
+        * @param       string  $template_name  name of template to use
+        * @return      void
+        */
+       public function parse_commentnavlist($template_name = '')
+       {
+               global $CONF, $manager, $member;
+               
+               // start index
+               if ( postVar('start') )
+               {
+                       $start = intPostVar('start');
+               }
+               else
+               {
+                       $start = 0;
+               }
+               
+               // amount of items to show
+               if ( postVar('amount') )
+               {
+                       $amount = intPostVar('amount');
+               }
+               else
+               {
+                       $amount = (integer) $CONF['DefaultListSize'];
+                       if ( $amount < 1 )
+                       {
+                               $amount = 10;
+                       }
+               }
+               $query = 'SELECT cbody, cuser, cmail, cemail, mname, ctime, chost, cnumber, cip, citem '
+                      . 'FROM %s '
+                      . 'LEFT OUTER JOIN %s ON  mnumber=cmember '
+                      . 'WHERE ';
+               $query = sprintf($query, sql_table('comment'), sql_table('member'));
+               
+               if ( $this->skintype == 'itemcommentlist' )
+               {
+                       $itemid                                 = intRequestVar('itemid');
+                       $query                                  .= " citem={$itemid}";
+                       $template['canAddBan']  = $member->blogAdminRights(intRequestVar('blogid'));
+                       $bid                                    = 0;
+                       $nonComments                    = _NOCOMMENTS;
+               }
+               elseif ( $this->skintype == 'browseowncomments' )
+               {
+                       $itemid                                 = 0;
+                       $query                                  .= ' cmember=' . $member->getID();
+                       $template['canAddBan']  = 0;
+                       $bid                                    = 0;
+                       $nonComments                    = _NOCOMMENTS_YOUR;
+               }
+               elseif ( $this->skintype == 'blogcommentlist' )
+               {
+                       $itemid                                 = 0;
+                       $query                                  .= ' cblog=' . intRequestVar('blogid');
+                       $template['canAddBan']  = $member->blogAdminRights(intRequestVar('blogid'));
+                       $bid                                    = intRequestVar('blogid');
+                       $nonComments                    = _NOCOMMENTS_BLOG;
+               }
+               
+               $search = postVar('search');
+               if ( !empty($search) )
+               {
+                       $query .= ' and cbody LIKE ' . DB::quoteValue('%'.$search.'%');
+               }
+               
+               $query .= " ORDER BY ctime ASC LIMIT {$start},{$amount}";
+               
+               $resource = DB::getResult($query);
+               if ( $resource->rowCount() > 0 )
+               {
+                       $template['action'] = $this->skintype;
+                       $template['start'] = $start;
+                       $template['amount'] = $amount;
+                       $template['minamount'] = 0;
+                       $template['maxamount'] = 1000;
+                       $template['blogid'] = $bid;
+                       $template['search'] = $search;
+                       $template['itemid'] = $itemid;
+                               
+                       $template['content'] = 'commentlist';
+                               
+                       $navlist = listplug_navlist('comment', $resource, 'table', $template, $template_name);
+                       $this->parser->parse($navlist);
+               }
+               else
+               {
+                       /* TODO: nothing to be shown */
+               }
+               $resource->closeCursor();
+               
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_configsettingsedit()
+        * Parse skinvar configsettingsedit
+        *
+        * @param       string  $type   type of global configuration
+        * @return      void
+        */
+       public function parse_configsettingsedit($type)
+       {
+               global $CONF;
+               switch ( $type )
+               {
+                       case 'DefaultListSize':
+                               if ( !array_key_exists('DefaultListSize', $CONF) )
+                               {
+                                       $query = "INSERT INTO %s VALUES (DefaultListSize, 10);";
+                                       $query = sprintf($query, sql_table('config'));
+                                       DB::execute($query);
+                                       $CONF['DefaultListSize'] = 10;
+                               }
+                               elseif ( intval($CONF['DefaultListSize']) < 1 )
+                               {
+                                       $CONF['DefaultListSize'] = 10;
+                               }
+                               echo intval($CONF['DefaultListSize']);
+                               break;
+                       case 'SessionCookie':
+                               $value = $CONF['SessionCookie'];
+                               $txt1  = _SETTINGS_COOKIESESSION;
+                               $txt2  = _SETTINGS_COOKIEMONTH;
+                               $this->parse_inputyesno('SessionCookie', $value, 10190, 1, 0, $txt1, $txt2);
+                               break;
+                       case 'URLMode':
+                               $value = $CONF['URLMode'];
+                               $txt1  = _SETTINGS_URLMODE_NORMAL;
+                               $txt2  = _SETTINGS_URLMODE_PATHINFO;
+                               $this->parse_inputyesno('URLMode', $value, 10077, 'normal', 'pathinfo', $txt1, $txt2);
+                               break;
+                       default:
+                               if ( array_key_exists($type, $CONF) && is_string($CONF[$type]) )
+                               {
+                                       echo  Entity::hsc($CONF[$type]);
+                               }
+                               break;
+               }
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_configsettingsyesno()
+        * Parse skinvar configsettingsyesno
+        *
+        * @param       string  $type           type of global setting
+        * @param       integer $tabindex       tabindex attribute of input element
+        * @return      void
+        */
+       public function parse_configsettingsyesno($type, $tabindex)
+       {
+               global $CONF;
+               if ( array_key_exists($type, $CONF) )
+               {
+                       $this->parse_inputyesno($type, $CONF[$type], $tabindex);
+               }
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_contents()
+        * Parse skinvar contents
+        *
+        * @param       string  $which          part for item
+        * @return      void
+        */
+       public function parse_contents($which)
+       {
+               if ( !array_key_exists($which, Admin::$contents) )
+               {
+                       Admin::$contents[$which] = '';
+               }
+               echo Entity::hsc(Admin::$contents[$which]);
+       }
+       
+       /**
+        * AdminActions::parse_currenttime()
+        * Parse skinvar currenttime
+        *
+        * @param       string  $what
+        */
+       // for future items
+       public function parse_currenttime($what)
+       {
+               $nu = getdate(Admin::$blog->getCorrectTime());
+               echo $nu[$what];
+       }
+       
+       /**
+        * AdminActions::parse_customhelplink()
+        * Parse skinvar customhelplink
+        *
+        * @param       string  $topic          name of topic
+        * @param       string  $tplName        name of template
+        * @param       string  $url            string as URI
+        * @param       string  $iconURL        string as URI for icon
+        * @param       string  $alt            alternative text for image element
+        * @param       string  $title          title for anchor element
+        * @return      void
+        */
+       public function parse_customhelplink($topic, $tplName = '', $url = '', $iconURL = '', $alt = '', $title = '', $onclick = '')
+       {
+               $this->customHelp($topic, $url, $iconURL);
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_date()
+        * Parse skinvar date
+        */
+       public function parse_date($format = 'c')
+       {
+               global $CONF, $manager;
+               /* TODO: offset is based on i18n::get_current_locale()? */
+               echo i18n::formatted_datetime($format, time());
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_normalskinlist()
+        * Parse skinvar defaultadminskintypes
+        *
+        * @param       string  $template_name  name of template
+        * @return      void
+        */
+       public function parse_normalskinlist($template_name = '')
+       {
+               global $CONF, $manager;
+               
+               if ( !in_array($this->skintype, Admin::$adminskin_actions) )
+               {
+                       $skin =& $manager->getSkin($CONF['BaseSkin']);
+                       /* TODO: removeaction? */
+                       $template['editaction'] = 'skinedittype';
+               }
+               else
+               {
+                       $skin =& $manager->getSkin($CONF['AdminSkin'], 'AdminActions');
+                       $template['editaction'] = 'adminskinedittype';
+                       /* TODO: removeaction? */
+               }
+               
+               $temporary = $skin->getNormalTypes();
+               $normal_skintype = array();
+               foreach ( $temporary as $type => $label )
+               {
+                       $normal_skintype[] = array(
+                               'skintype'              => $type,
+                               'skintypename'  => $label
+                       );
+               }
+               
+               $template['tabindex'] = 10;
+               $template['skinid'] = intRequestVar('skinid');
+               $template['skinname'] = $skin->getName();
+               $skin_list = showlist($normal_skintype, 'list_normalskinlist', $template, $template_name);
+               $this->parser->parse($skin_list);
+               
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_defblogselect()
+        * Parse skinvar defblogselect
+        *
+        * @param       string  $template_name  name of template
+        * @return      void
+        */
+       public function parse_defblogselect($template_name = '')
+       {
+               global $CONF;
+               
+               $query = "SELECT bname as text, bnumber as value FROM %s;";
+               $query = sprintf($query, sql_table('blog'));
+               
+               $template['name'] = 'DefaultBlog';
+               $template['selected'] = $CONF['DefaultBlog'];
+               $template['tabindex'] = 10;
+               $blog_select = showlist($query, 'select', $template, $template_name);
+               $this->parser->parse($blog_select);
+               
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_defcatselect()
+        * Parse skinvar defcatselect
+        *
+        * @param       string  $template_name  name of template
+        * @return      void
+        */
+       public function parse_defcatselect($template_name = '')
+       {
+               global $manager;
+               
+               $blogid = intRequestVar('blogid');
+               $blog =& $manager->getBlog($blogid);
+               
+               $query = "SELECT cname as text, catid as value FROM %s WHERE cblog=%d;";
+               $query = sprintf($query, sql_table('category'), (integer) $blog->getID());
+               
+               $template['name']        = 'defcat';
+               $template['selected'] = $blog->getDefaultCategory();
+               $template['tabindex'] = 110;
+               
+               $category_select = showlist($query, 'select', $template, $template_name);
+               $this->parser->parse($category_select);
+               
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_defskinselect()
+        * Parse skinvar defskinselect
+        *
+        * @param       string  $type                   type of skin
+        * @param       string  $template_name  name of template
+        * @return      void
+        */
+       public function parse_defskinselect($type = 'blog', $template_name = '')
+       {
+               global $CONF, $manager, $member;
+               
+               if ( !in_array($this->skintype, Admin::$adminskin_actions) )
+               {
+                       $blogid = intRequestVar('blogid');
+                       if ( !$blogid )
+                       {
+                               $template['selected'] = $CONF['BaseSkin'];
+                       }
+                       else
+                       {
+                               $blog =& $manager->getBlog($blogid);
+                               $template['selected'] = $blog->getDefaultSkin();
+                       }
+                               
+                       if ( $type != 'blog' )
+                       {
+                               $template['name'] = 'BaseSkin';
+                       }
+                       else
+                       {
+                               $template['name'] = 'defskin';
+                       }
+                               
+                       $query = "SELECT sdname as text, sdnumber as value FROM %s WHERE sdname NOT LIKE 'admin/%%';";
+               }
+               else
+               {
+                       /* TODO: member object will have its own adminskin id */
+                       $template['selected'] = $CONF['AdminSkin'];
+                       $template['name'] = 'AdminSkin';
+                       $query = "SELECT sdname as text, sdnumber as value FROM %s WHERE sdname LIKE 'admin/%%';";
+               }
+               
+               $query = sprintf($query, sql_table('skin_desc'));
+               $template['tabindex'] = 50;
+               
+               $skin_select = showlist($query, 'select', $template, $template_name);
+               $this->parser->parse($skin_select);
+               
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_deletecomment()
+        * Parse skinvar deletecomment
+        *
+        * @param       string  $type   type of infomation for comment
+        * @return      void
+        */
+       public function parse_deletecomment($type = 'id')
+       {
+               $commentid      = intRequestVar('commentid');
+               $comment        = COMMENT::getComment($commentid);
+               
+               switch ( $type )
+               {
+                       case 'id':
+                               echo intRequestVar('commentid');
+                               break;
+                       case 'author':
+                               if ( array_key_exists('member', $comment) && !empty($comment['member']) )
+                               {
+                                       echo $comment['member'];
+                               }
+                               else
+                               {
+                                       echo $comment['user'];
+                               }
+                               break;
+                       case 'body':
+                               $body = strip_tags($comment['body']);
+                               echo Entity::hsc(shorten($body, 300, '...'));
+               }
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_deleteitembody()
+        * Parse skinvar deleteitembody
+        *
+        * @param       void
+        * @return      void
+        */
+       public function parse_deleteitembody()
+       {
+               global $manager;
+               
+               $itemid =  intRequestVar('itemid');
+               $item =& $manager->getItem($itemid, 1, 1);
+               
+               $body =  strip_tags($item['body']);
+               
+               echo Entity::hsc(shorten($body, 300, '...'));
+               
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_deleteitemid()
+        * Parse skinvar deleteitemid
+        *
+        * @param       void
+        * @return      void
+        */
+       public function parse_deleteitemid()
+       {
+               echo (integer) intRequestVar('itemid');
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_deleteitemtitle()
+        * Parse skinvar deleteitemtitle
+        *
+        * @param       void
+        * @return      void
+        */
+       public function parse_deleteitemtitle()
+       {
+               global $manager;
+               
+               $itemid = intRequestVar('itemid');
+               $item =& $manager->getItem($itemid, 1, 1);
+               
+               echo Entity::hsc(strip_tags($item['title']));
+               
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_editcomment()
+        * Parse skinvar editcomment
+        *
+        * @param       string  $type   type of comment setting
+        * @return      void
+        */
+       public function parse_editcomment($type = 'id')
+       {
+               global $manager;
+               
+               $comment = Admin::$contents;
+               
+               switch ( $type )
+               {
+                       case 'id':
+                               echo intRequestVar('commentid');
+                               break;
+                       case 'user':
+                               if ( !array_key_exists('member', $comment) || empty($comment['member']) )
+                               {
+                                       echo $comment['user'] . " (" . _EDITC_NONMEMBER . ")";
+                               }
+                               else
+                               {
+                                       echo $comment['member'] . " (" . _EDITC_MEMBER . ")";
+                               }
+                               break;
+                       case 'date':
+                               echo date("Y-m-d @ H:i", $comment['timestamp']);
+                               break;
+                       case 'body':
+                               $comment['body'] = str_replace('<br />', '', $comment['body']);
+                               $comment['body'] = preg_replace("#<a href=['\"]([^'\"]+)['\"]( rel=\"nofollow\")?>[^<]*</a>#", "\\1", $comment['body']);
+                               echo $comment['body'];
+                               break;
+                       case 'cmail':
+                               echo $comment['userid'];
+                               break;
+                       case 'url':
+                               echo $comment['userid'];
+                               break;
+                       default:
+                               if ( array_key_exists($type, $comment) && !empty($comment[$type]) )
+                               {
+                                       echo $comment[$type];
+                               }
+                               break;
+               }
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_editdesturl()
+        * Parse skinvar editdesturl
+        */
+       public function parse_editdesturl()
+       {
+               if ( requestVar('desturl') )
+               {
+                       echo Entity::hsc(requestVar('desturl'));
+               }
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_editmemberlist()
+        * Parse skinvar editmemberlist
+        *
+        * @param       string  $template_name  name of template
+        * @return      void
+        */
+       public function parse_editmemberlist($template_name = '')
+       {
+               global $manager;
+               // show list of members with actions
+               $query = 'SELECT * FROM %s;';
+               $query =  sprintf($query, sql_table('member'));
+               
+               $resource = DB::getResult($query);
+               if ( $resource->rowCount() > 0 )
+               {
+                       $template['content'] = 'memberlist';
+                       $template['tabindex'] = 10;
+                       
+                       $member_list = listplug_batchlist('member', $resource, 'table', $template, $template_name);
+                       $this->parser->parse($member_list);
+               }
+               else
+               {
+                       echo _LISTS_NOMORE;
+               }
+               $resource->closeCursor();
+               
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_editmember()
+        * Parse skinvar editmember
+        *
+        * @param       string  $type                   type of information for member
+        * @return      string  $tempateName    name of template to use
+        * @return      void
+        */
+       public function parse_editmember($type = 'id', $template_name = '')
+       {
+               global $CONF, $manager, $member;
+               
+               $memberid = intRequestVar('memberid');
+               $mem =& $manager->getMember($memberid);
+               
+               switch ( $type )
+               {
+                       case 'id':
+                               echo intRequestVar('memberid');
+                               break;
+                       case 'displayname':
+                               if ( $this->skintype == 'teamdelete' || $this->skintype == 'memberdelete' )
+                               {
+                                       echo Entity::hsc($mem->getDisplayName());
+                               }
+                               else
+                               {
+                                       $dispName = Entity::hsc($mem->getDisplayName());
+                                       if ( $CONF['AllowLoginEdit'] || $member->isAdmin() )
+                                       {
+                                               echo '<input name="name" tabindex="10" maxlength="32" size="32" value="' . $dispName . "\" />\n";
+                                       }
+                                       else
+                                       {
+                                               echo $dispName;
+                                       }
+                               }
+                               break;
+                       case 'realname':
+                               echo Entity::hsc($mem->getRealName());
+                               break;
+                       case 'email':
+                               echo Entity::hsc($mem->getEmail());
+                               break;
+                       case 'url':
+                               echo Entity::hsc($mem->getURL());
+                               break;
+                       case 'admin':
+                               $this->parse_inputyesno('admin', $mem->isAdmin(), 60, 1, 0, _YES, _NO, 0, $template_name);
+                               break;
+                       case 'canlogin':
+                               $this->parse_inputyesno('canlogin', $mem->canLogin(), 70, 1, 0, _YES, _NO, $mem->isAdmin(), $template_name);
+                               break;
+                       case 'notes':
+                               echo Entity::hsc($mem->getNotes());
+                               break;
+                       case 'autosave':
+                               $this->parse_inputyesno('autosave', $mem->getAutosave(), 87, 1, 0, _YES, _NO, 0, $template_name);
+                               break;
+                       default:
+                               break;
+               }
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_editpluginfo()
+        * Parse skinvar editpluginfo
+        *
+        * @param       string  $type   type of plugin info
+        * @return      void
+        */
+       public function parse_editpluginfo($type)
+       {
+               global $manager;
+               
+               $pid = intRequestVar('plugid');
+               switch ( $type )
+               {
+                       case 'id':
+                               echo $pid;
+                               break;
+                       case 'name':
+                               echo Entity::hsc($manager->getPluginNameFromPid($pid));
+                               break;
+               }
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_editplugoptionslist()
+        * Parse skinvar editplugoptionslist
+        *
+        * @param       string  $template_name  name of template
+        * @return      void
+        */
+       public function parse_editplugoptionslist($template_name = '')
+       {
+               global $manager;
+               
+               $pid = intRequestVar('plugid');
+               $aOptions = array();
+               $aOIDs  = array();
+               
+               $query  = "SELECT * FROM %s WHERE ocontext='global' AND opid=%d ORDER BY oid ASC;";
+               $query = sprintf($query, sql_table('plugin_option_desc'), (integer) $pid);
+               $resource = DB::getResult($query);
+               
+               foreach ( $resource as $row )
+               {
+                       $aOIDs[] = $row['oid'];
+                       $aOptions[$row['oid']] = array(
+                               'oid'                   => $row['oid'],
+                               'value'                 => $row['odef'],
+                               'name'                  => $row['oname'],
+                               'description'   => $row['odesc'],
+                               'type'                  => $row['otype'],
+                               'typeinfo'              => $row['oextra'],
+                               'contextid'             => 0
+                       );
+               }
+               
+               // fill out actual values
+               if ( count($aOIDs) > 0 )
+               {
+                       $query = 'SELECT oid, ovalue FROM %s WHERE oid in (%s)';
+                       $query = sprintf($query, sql_table('plugin_option'), implode(',', $aOIDs));
+                               
+                       $result = DB::getResult($query);
+                       foreach ( $result as $row )
+                       {
+                               $aOptions[$row['oid']]['value'] = $row['ovalue'];
+                       }
+               }
+       
+               // call plugins
+               $data = array(
+                       'context'       =>  'global',
+                       'plugid'        =>  $pid,
+                       'options'       => &$aOptions
+               );
+               $manager->notify('PrePluginOptionsEdit', $data);
+               
+               if ( sizeof($aOptions) > 0 )
+               {
+                       $template['content'] = 'plugoptionlist';
+                       $option_list = showlist($aOptions, 'table', $template, $template_name);
+                       $this->parser->parse($option_list);
+               }
+               else
+               {
+                       echo '<p>' . _ERROR_NOPLUGOPTIONS . "</p>\n";
+               }
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_editskin()
+        * Parse skinvar editskin
+        *
+        * @param       string  $type   type of skin
+        * @return      void
+        */
+       public function parse_editskin($type = 'id')
+       {
+               global $manager;
+               
+               $skinid = intRequestVar('skinid');
+               
+               if ( !in_array($this->skintype, Admin::$adminskin_actions) )
+               {
+                       $skin =& $manager->getSKIN($skinid);
+               }
+               else
+               {
+                       $skin =& $manager->getSKIN($skinid, 'AdminActions');
+               }
+               
+               switch ( $type )
+               {
+                       case 'id':
+                               echo intRequestVar('skinid');
+                               break;
+                       case 'name':
+                               echo Entity::hsc($skin->getName());
+                               break;
+                       case 'desc':
+                               echo Entity::hsc($skin->getDescription());
+                               break;
+                       case 'type':
+                               echo Entity::hsc($skin->getContentType());
+                               break;
+                       case 'prefix':
+                               echo Entity::hsc($skin->getIncludePrefix());
+                               break;
+                       case 'mode':
+                               $this->parse_inputyesno('inc_mode', $skin->getIncludeMode(), 120, 'skindir', 'normal', _PARSER_INCMODE_SKINDIR, _PARSER_INCMODE_NORMAL);
+                       default:
+                               break;
+               }
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_editskintype()
+        * Parse skinvar editskintype
+        *
+        * @param       string  $type   name of type for skin type
+        * @return      void
+        */
+       public function parse_editskintype($stype = 'id')
+       {
+               global $manager;
+               
+               static $skin = NULL;
+               static $types = array();
+               
+               if ( $skin == NULL )
+               {
+                       $skinid = intRequestVar('skinid');
+                       
+                       if ( !in_array($this->skintype, Admin::$adminskin_actions) )
+                       {
+                               $skin =& $manager->getSkin($skinid);
+                       }
+                       else
+                       {
+                               $skin =& $manager->getSkin($skinid, 'AdminActions');
+                       }
+                       
+                       $types = $skin->getNormalTypes();
+               }
+               
+               $type = strtolower(trim(requestVar('type')));
+               
+               switch ( $stype )
+               {
+                       case 'id':
+                               echo $skin->getID();
+                               break;
+                       case 'name':
+                               echo Entity::hsc($skin->getName());
+                               break;
+                       case 'desc':
+                               echo Entity::hsc($skin->getDescription());
+                               break;
+                       case 'type':
+                               echo Entity::hsc($skin->getContentType());
+                               break;
+                       case 'content':
+                               echo Entity::hsc($skin->getContentFromDB($type));
+                               break;
+                       case 'skintype':
+                               if ( !array_key_exists($type, $types) )
+                               {
+                                       $skinType = ucfirst($type);
+                               }
+                               else
+                               {
+                                       $skinType = $types[$type];
+                               }
+                               echo Entity::hsc($skinType);
+                               break;
+                       case 'skintyperaw':
+                               echo Entity::hsc($type);
+                               break;
+                       case 'prefix':
+                               echo Entity::hsc($skin->getIncludePrefix());
+                               break;
+                       case 'mode':
+                               if ( !$skin->getIncludeMode() != 'skindir' )
+                               {
+                                       $incMode = _PARSER_INCMODE_NORMAL;
+                               }
+                               else
+                               {
+                                       $incMode = _PARSER_INCMODE_SKINDIR;
+                               }
+                               echo Entity::hsc($incMode);
+                               break;
+                       default:
+                               break;
+               }
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_adminurl()
+        * Parse skinvar adminurl
+        * (shortcut for admin url)
+        *
+        * @param       void
+        * @return      void
+        */
+       public function parse_adminurl()
+       {
+               $this->parse_sitevar('adminurl');
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_edittemplateinfo()
+        * Parse skinvar edittemplateinfo
+        *
+        * @param       string  $format         format to output
+        * @param       string  $typedesc       type of template
+        * @param       string  $typename       type name of template
+        * @param       string  $help           help text
+        * @param       string  $tabindex       index value for tabindex attribute of input element
+        * @param       string  $big            textarea size
+        * @param       string  $tplt           name of template to be filled
+        * @return      boolean
+        */
+       public function parse_edittemplateinfo($format, $typedesc = '', $typename = '', $help = '', $tabindex = 0, $big = 0, $template_name = '')
+       {
+               global $manager;
+               static $id = NULL;
+               static $name = NULL;
+               static $desc = NULL;
+               
+               if ( $id == NULL )
+               {
+                       $id = intRequestVar('templateid');
+               }
+               
+               if ( $name == NULL )
+               {
+                       $name = Template::getNameFromId($id);
+               }
+               
+               if ( $desc == NULL )
+               {
+                       $desc = Template::getDesc($id);
+               }
+               
+               $template =& $manager->getTemplate($name);
+               
+               switch ( $format )
+               {
+                       case 'id':
+                               echo (integer) $id;
+                               break;
+                       case 'name':
+                               echo Entity::hsc($name);
+                               break;
+                       case 'desc':
+                               echo Entity::hsc($desc);
+                               break;
+                       case 'extratemplate':
+                               $tabidx = 600;
+                               $pluginfields = array();
+                               if ( !in_array($this->skintype, Admin::$adminskin_actions) )
+                               {
+                                       $data = array('fields' => &$pluginfields);
+                                       $manager->notify('TemplateExtraFields', $data);
+                               }
+                               else
+                               {
+                                       $data = array('fields' => &$pluginfields);
+                                       $manager->notify('AdminTemplateExtraFields', $data);
+                               }
+                               
+                               foreach ( $pluginfields as $ptkey => $ptvalue )
+                               {
+                                       $tmplt = array();
+                                       if ( $desc )
+                                       {
+                                               $tmplt =& $manager->getTemplate($desc);
+                                       }
+                                               
+                                       /* extra plugin field */
+                                       if ( !array_key_exists('TEMPLATE_EDIT_EXPLUGNAME', $tmplt) || empty($tmplt['TEMPLATE_EDIT_EXPLUGNAME']) )
+                                       {
+                                               $base = "<tr>\n"
+                                                     . "<th colspan=\"2\"><%explugtplname%></th>\n"
+                                                     . "</tr>";
+                                       }
+                                       else
+                                       {
+                                               $base = $tmplt['TEMPLATE_EDIT_EXPLUGNAME'];
+                                       }
+                                       $data = array(
+                                               'explugtplname' => Entity::hsc($ptkey)
+                                       );
+                                       echo Template::fill($base, $data);
+                                               
+                                       foreach ( $ptvalue as $ptname => $ptdesc )
+                                       {
+                                               if ( !array_key_exists($ptname, $template) )
+                                               {
+                                                       $content = '';
+                                               }
+                                               else
+                                               {
+                                                       $content = $template[$ptname];
+                                               }
+                                               $tempate_textarea = listplug_templateEditRow($content, $ptdesc, $ptname, $help, $tabidx++, $big, $template_name);
+                                               $this->parser->parse($tempate_textarea);
+                                               continue;
+                                       }
+                               }
+                               break;
+                       default:
+                               $typedesc = defined($typedesc) ? constant($typedesc) : $typedesc;
+                               $typename = defined($typename) ? constant($typename) : $typename;
+                               
+                               if ( !array_key_exists($typename, $template) )
+                               {
+                                       $content = '';
+                               }
+                               else
+                               {
+                                       $content = $template[$typename];
+                               }
+                               $tempate_textarea = listplug_templateEditRow($content, $typedesc, $typename, $help, $tabindex, $big, $template_name);
+                               $this->parser->parse($tempate_textarea);
+                               break;
+               }
+               
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_eventformextra()
+        * Parse skinvar eventformextra
+        *
+        * @param       string  $type   name of type for event form extra
+        * @return      void
+        */
+       public function parse_eventformextra($type = 'activation')
+       {
+               global $manager;
+               
+               $data = array();
+               
+               switch ( $type )
+               {
+                       case 'activation':
+                               $key = requestVar('ackey');
+                               if ( !$key )
+                               {
+                                       Admin::error(_ERROR_ACTIVATE);
+                               }
+                               $info = MEMBER::getActivationInfo($key);
+                               if ( !$info )
+                               {
+                                       Admin::error(_ERROR_ACTIVATE);
+                               }
+                               $mem  =& $manager->getMember($info->vmember);
+                               if ( !$mem )
+                               {
+                                       Admin::error(_ERROR_ACTIVATE);
+                               }
+                               $data = array(
+                                       'type'          => 'activation',
+                                       'member'        => $mem
+                               );
+                               break;
+                       case 'membermailform-notloggedin':
+                               $data = array('type' => 'membermailform-notloggedin',);
+                               break;
+               }
+               $manager->notify('FormExtra', $data);
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_extrahead()
+        * Parse skinvar extrahead
+        */
+       public function parse_extrahead()
+       {
+               global $manager;
+               
+               $data = array(
+                       'extrahead'     => &Admin::$extrahead,
+                       'action'        => Admin::$action
+               );
+               
+               $manager->notify('AdminPrePageHead', $data);
+               
+               $this->parser->parse(Admin::$extrahead);
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_member()
+        * Parse skinvar member
+        * (includes a member info thingie)
+        *
+        * @param       string  $what   which memberdata is needed
+        * @return      void
+        */
+       public function parse_member($what)
+       {
+               global $memberinfo, $member, $CONF;
+               
+               // 1. only allow the member-details-page specific variables on member pages
+               if ( $this->skintype == 'member' )
+               {
+                       switch( $what )
+                       {
+                               case 'name':
+                                       echo Entity::hsc($memberinfo->getDisplayName());
+                                       break;
+                               case 'realname':
+                                       echo Entity::hsc($memberinfo->getRealName());
+                                       break;
+                               case 'notes':
+                                       echo Entity::hsc($memberinfo->getNotes());
+                                       break;
+                               case 'url':
+                                       echo Entity::hsc($memberinfo->getURL());
+                                       break;
+                               case 'email':
+                                       echo Entity::hsc($memberinfo->getEmail());
+                                       break;
+                               case 'id':
+                                       echo Entity::hsc($memberinfo->getID());
+                                       break;
+                       }
+               }
+               
+               // 2. the next bunch of options is available everywhere, as long as the user is logged in
+               if ( $member->isLoggedIn() )
+               {
+                       switch( $what )
+                       {
+                               case 'yourname':
+                                       echo $member->getDisplayName();
+                                       break;
+                               case 'yourrealname':
+                                       echo $member->getRealName();
+                                       break;
+                               case 'yournotes':
+                                       echo $member->getNotes();
+                                       break;
+                               case 'yoururl':
+                                       echo $member->getURL();
+                                       break;
+                               case 'youremail':
+                                       echo $member->getEmail();
+                                       break;
+                               case 'yourid':
+                                       echo $member->getID();
+                                       break;
+                               case 'yourprofileurl':
+                                       if ( $CONF['URLMode'] == 'pathinfo' )
+                                       {
+                                               echo Link::create_member_link($member->getID());
+                                       }
+                                       else
+                                       {
+                                               echo $CONF['IndexURL'] . Link::create_member_link($member->getID());
+                                       }
+                                       break;
+                       }
+               }
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_version()
+        * Parse skinvar version
+        * (include nucleus versionnumber)
+        *
+        * @param       void
+        * @return      void
+        */
+       public function parse_version()
+       {
+               global $nucleus;
+               echo 'Nucleus CMS ' . $nucleus['version'];
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_sitevar()
+        * Parse skinvar sitevar
+        * (include a sitevar)
+        *
+        * @param       string  $which
+        * @return      void
+        */
+       public function parse_sitevar($which)
+       {
+               global $CONF;
+               switch ( $which )
+               {
+                       case 'url':
+                               echo $CONF['IndexURL'];
+                               break;
+                       case 'name':
+                               echo $CONF['SiteName'];
+                               break;
+                       case 'admin':
+                               echo $CONF['AdminEmail'];
+                               break;
+                       case 'adminurl':
+                               echo $CONF['AdminURL'];
+                               break;
+               }
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_actionurl()
+        * Parse $CONF;
+        *
+        * @param       void
+        * @return      void
+        */
+       public function parse_actionurl()
+       {
+               global $CONF;
+               echo Entity::hsc($CONF['ActionURL']);
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_getblogsetting()
+        * Parse skinvar getblogsetting
+        */
+       public function parse_getblogsetting($which)
+       {
+               global $blog, $manager;
+               
+               if ( $blog )
+               {
+                       $b =& $blog;
+               }
+               elseif ( $bid = intRequestVar('blogid') )
+               {
+                       $b =& $manager->getBlog($bid);
+               }
+               else
+               {
+                       return;
+               }
+       
+               switch ( $which )
+               {
+                       case 'id':
+                               return Entity::hsc($b->getID());
+                               break;
+                       case 'url':
+                               return Entity::hsc($b->getURL());
+                               break;
+                       case 'name':
+                               return Entity::hsc($b->getName());
+                               break;
+                       case 'desc':
+                               return Entity::hsc($b->getDescription());
+                               break;
+                       case 'short':
+                               return Entity::hsc($b->getShortName());
+                               break;
+                       case 'notifyaddress':
+                               return Entity::hsc($b->getNotifyAddress());
+                               break;
+                       case 'maxcomments':
+                               return Entity::hsc($b->getMaxComments());
+                               break;
+                       case 'updatefile':
+                               return Entity::hsc($b->getUpdateFile());
+                               break;
+                       case 'timeoffset':
+                               return Entity::hsc($b->getTimeOffset());
+                               break;
+               }
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_geteditpluginfo()
+        * Parse skinvar geteditpluginfo
+        *
+        * @param       string  $type   name of setting for edit plugin info
+        * @return      void
+        */
+       public function parse_geteditpluginfo($type)
+       {
+               global $manager;
+               $pid = intRequestVar('plugid');
+               switch ( $type )
+               {
+                       case 'id':
+                               return $pid;
+                               break;
+                       case 'name':
+                               return Entity::hsc($manager->getPluginNameFromPid($pid));
+                               break;
+               }
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_getmember()
+        * Parse skinvar getmember
+        * (includes a member info thingie)
+        *
+        * @param       string  $what   name of setting for member
+        * @return      void
+        */
+       public function parse_getmember($what)
+       {
+               global $memberinfo, $member;
+               // 1. only allow the member-details-page specific variables on member pages
+               if ( $this->skintype == 'member' )
+               {
+                       switch ( $what )
+                       {
+                               case 'name':
+                                       return Entity::hsc($memberinfo->getDisplayName());
+                                       break;
+                               case 'realname':
+                                       return Entity::hsc($memberinfo->getRealName());
+                                       break;
+                               case 'notes':
+                                       return Entity::hsc($memberinfo->getNotes());
+                                       break;
+                               case 'url':
+                                       return Entity::hsc($memberinfo->getURL());
+                                       break;
+                               case 'email':
+                                       return Entity::hsc($memberinfo->getEmail());
+                                       break;
+                               case 'id':
+                                       return Entity::hsc($memberinfo->getID());
+                                       break;
+                       }
+               }
+               // 2. the next bunch of options is available everywhere, as long as the user is logged in
+               if ( $member->isLoggedIn() )
+               {
+                       switch ( $what )
+                       {
+                               case 'yourname':
+                                       return $member->getDisplayName();
+                                       break;
+                               case 'yourrealname':
+                                       return $member->getRealName();
+                                       break;
+                               case 'yournotes':
+                                       return $member->getNotes();
+                                       break;
+                               case 'yoururl':
+                                       return $member->getURL();
+                                       break;
+                               case 'youremail':
+                                       return $member->getEmail();
+                                       break;
+                               case 'yourid':
+                                       return $member->getID();
+                                       break;
+                       }
+               }
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_headmessage()
+        * Parse skinvar headmessage
+        *
+        * @param       void
+        * @return      void
+        */
+       public function parse_headmessage()
+       {
+               if ( !empty(Admin::$headMess) )
+               {
+                       echo '<p>' . _MESSAGE . ': ' . Entity::hsc(Admin::$headMess) . "</p>\n";
+               }
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_helplink()
+        * Parse skinvar helplink
+        *
+        * @param       string  $topic  name of topic for help
+        * @return      void
+        */
+       public function parse_helplink($topic = '')
+       {
+               if ( !empty($topic) )
+               {
+                       help($topic);
+               }
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_helpplugname()
+        * Parse skinvar helpplugname
+        *
+        * @param       void
+        * @return      void
+        */
+       public function parse_helpplugname()
+       {
+               $plugid = intGetVar('plugid');
+               Entity::hsc($manager->getPluginNameFromPid($plugid));
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_ilistaddnew()
+        * Parse skinvar ilistaddnew
+        *
+        * @param       void
+        * @return      void
+        */
+       public function parse_ilistaddnew()
+       {
+               $blogid = intRequestVar('blogid');
+               if ( intPostVar('start') == 0 )
+               {
+                       echo '<p><a href="index.php?action=createitem&amp;blogid=' . $blogid . '">' . _ITEMLIST_ADDNEW . "</a></p>\n";
+               }
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_importskininfo()
+        * Parse skinvar importskininfo
+        *
+        * @param       string  $type   name of information for imported skin
+        * @return      void
+        */
+       public function parse_importskininfo($type)
+       {
+               switch ( $type )
+               {
+                       case 'info':
+                               echo Entity::hsc(Admin::$contents['skininfo']);
+                               break;
+                       case 'snames':
+                               $dataArr = Admin::$contents['skinnames'];
+                               echo implode(' <em>' . _AND . '</em> ', $dataArr);
+                               break;
+                       case 'tnames':
+                               $dataArr = Admin::$contents['tpltnames'];
+                               echo implode(' <em>' . _AND . '</em> ', $dataArr);
+                               break;
+                       case 'sclashes':
+                               $dataArr = Admin::$contents['skinclashes'];
+                               echo implode(' <em>' . _AND . '</em> ', $dataArr);
+                               break;
+                       case 'tclashes':
+                               $dataArr = Admin::$contents['tpltclashes'];
+                               echo implode(' <em>' . _AND . '</em> ', $dataArr);
+                               break;
+                       case 'skinfile':
+                               echo Entity::hsc(Admin::$contents['skinfile']);
+                               break;
+                       case 'mode':
+                               echo Entity::hsc(Admin::$contents['mode']);
+                               break;
+               }
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_init()
+        * some init stuff for all forms
+        *
+        * @param       void
+        * @return      void
+        */
+       public function parse_init()
+       {
+               global $manager;
+               
+               $authorid = '';
+               if ( requestVar('action') == 'itemedit' )
+               {
+                       $authorid = Admin::$contents['authorid'];
+               }
+               
+               Admin::$blog->insertJavaScriptInfo($authorid);
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_inputyesno()
+        * Parse skinvar inputyesno
+        *
+        * @param       string  $name
+        * @param       string  $checkedval
+        * @param       string  $tabindex
+        * @param       string  $value1
+        * @param       string  $value2
+        * @param       string  $yesval
+        * @param       string  $noval
+        * @param       string  $isAdmin
+        * @param       string  $template_name
+        * @return      void
+        */
+       public function parse_inputyesno($name, $checkedval, $tabindex = 0, $value1 = 1, $value2 = 0, $yesval = _YES, $noval = _NO, $isAdmin = 0, $template_name = '')
+       {
+               $input_yesno = listplug_input_yesno($name, $checkedval, $tabindex, $value1, $value2, $yesval, $noval, $isAdmin, $template_name);
+               $this->parser->parse($input_yesno);
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_insertpluginfo()
+        * Parse templatevar insertpluginfo
+        */
+       public function parse_insertpluginfo($type)
+       {
+               switch ( $type )
+               {
+                       case 'id':
+                               return Admin::$aOptions['pid'];
+                               break;
+                       case 'name':
+                               return Entity::hsc(Admin::$aOptions['pfile']);
+                               break;
+               }
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_insplugoptcontent()
+        * Parse skinvar insplugoptcontent
+        *
+        * @param       void
+        * @return      void
+        */
+       public function parse_insplugoptcontent()
+       {
+               $meta = NucleusPlugin::getOptionMeta(Admin::$aOptions['typeinfo']);
+               if ( array_key_exists('access', $meta) && $meta['access'] != 'hidden' )
+               {
+                       echo '<tr>';
+                       listplug_plugOptionRow(Admin::$aOptions);
+                       echo '</tr>';
+               }
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_iprangeinput()
+        * Parse skinvar iprangeinput
+        *
+        * @param       void
+        * @return      void
+        */
+       public function parse_iprangeinput()
+       {
+               if ( requestVar('ip') )
+               {
+                       $iprangeVal = Entity::hsc(requestVar('ip'));
+                       echo "<input name=\"iprange\" type=\"radio\" value=\"{$iprangeVal}\" checked=\"checked\" id=\"ip_fixed\" />\n";
+                       echo "<label for=\"ip_fixed\">{$iprangeVal}</label><br />\n";
+                       echo '<input name="iprange" type="radio" value="custom" id="ip_custom" />' . "\n";
+                       echo '<label for="ip_custom">' . _BAN_IP_CUSTOM . '</label>' . "\n";
+                       echo "<input name=\"customiprange\" value=\"{$iprangeVal}\" maxlength=\"15\" size=\"15\" />\n";
+               }
+               else
+               {
+                       echo '<input name="iprange" value="custom" type="hidden" />' . "\n";
+                       echo '<input name="customiprange" value="" maxlength="15" size="15" />' . "\n";
+               }
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_itemnavlist()
+        * Parse skinvar itemnavlist
+        *
+        * @param       string  $template_name  name of template to use
+        * @return      void
+        */
+       public function parse_itemnavlist($template_name = '')
+       {
+               global $CONF, $manager, $member;
+               
+               $query  = "SELECT bshortname, cname, mname, ititle, ibody, inumber, idraft, itime"
+                     . " FROM %s, %s, %s, %s"
+                     . " WHERE iblog=bnumber AND iauthor=mnumber AND icat=catid";
+               
+               $query = sprintf($query, sql_table('item'), sql_table('blog'), sql_table('member'), sql_table('category'));
+               
+               if ( $this->skintype == 'itemlist' )
+               {
+                       $blog = FALSE;
+                       if ( array_key_exists('blogid', $_REQUEST) )
+                       {
+                               $blogid = intRequestVar('blogid');
+                       }
+                       else if ( array_key_exists('itemid', $_REQUEST) )
+                       {
+                               $itemid =  intRequestVar('itemid');
+                               $item   = &$manager->getItem($itemid, 1, 1);
+                               $blogid =  (integer) $item['blogid'];
+                       }
+                       $blog =& $manager->getBlog($blogid);
+                               
+                       $query .= " AND iblog={$blogid}";
+                       $template['now'] = $blog->getCorrectTime(time());
+                               
+                       // non-blog-admins can only edit/delete their own items
+                       if ( !$member->blogAdminRights($blogid) )
+                       {
+                               $query .= ' AND iauthor = ' . $member->getID();
+                       }
+               }
+               elseif ( $this->skintype == 'browseownitems' )
+               {
+                       $query .= ' AND iauthor   = ' . $member->getID();
+                       $blogid = 0;
+                       $template['now'] = time();
+               }
+               
+               // search through items
+               $search = postVar('search');
+               
+               if ( !empty($search) )
+               {
+                       $query .= ' AND ((ititle LIKE ' . DB::quoteValue('%'.$search.'%') . ') '
+                       . '  OR  (ibody LIKE ' . DB::quoteValue('%'.$search.'%') . ') '
+                       . '  OR  (imore LIKE ' . DB::quoteValue('%'.$search.'%') . '))';
+               }
+               
+               if ( postVar('start') )
+               {
+                       $start = intPostVar('start');
+               }
+               else
+               {
+                       $start = 0;
+               }
+               
+               // amount of items to show
+               if ( postVar('amount') )
+               {
+                       $amount = intPostVar('amount');
+               }
+               else
+               {
+                       $amount = (integer) $CONF['DefaultListSize'];
+                       if ( $amount < 1 )
+                       {
+                               $amount = 10;
+                       }
+               }
+               
+               $query .= ' ORDER BY itime DESC'
+                       . " LIMIT {$start},{$amount}";
+               
+               $resource = DB::getResult($query);
+               if ( $resource->rowCount() > 0 )
+               {
+                       $template['action'] = $this->skintype;
+                       $template['start'] = $start;
+                       $template['amount'] = $amount;
+                       $template['minamount'] = 0;
+                       $template['maxamount'] = 1000;
+                       $template['blogid'] = $blogid;
+                       $template['search'] = $search;
+                       $template['itemid'] = 0;
+                               
+                       $template['content'] = 'itemlist';
+                               
+                       $navlist = listplug_navlist('item', $query, 'table', $template, $template_name);
+                       $this->parser->parse($navlist);
+               }
+               else
+               {
+                       /* TODO: nothing to be shown */
+               }
+               $resource->closeCursor();
+
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_itemtime()
+        * date change on edit item
+        *
+        * @param       string  $key    key of PHP's getDate()
+        * @return      void
+        */
+       public function parse_itemtime($key)
+       {
+               global $manager;
+               
+               $contents = Admin::$contents;
+               $itemtime = getdate($contents['timestamp']);
+               echo $itemtime[$key];
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_jstoolbaroptions()
+        * Parse skinvar jstoolbaroptions
+        *
+        * @param       void
+        * @return      void
+        */
+       public function parse_jstoolbaroptions()
+       {
+               global $CONF;
+               $options = array(
+                       _SETTINGS_JSTOOLBAR_NONE,
+                       _SETTINGS_JSTOOLBAR_SIMPLE,
+                       _SETTINGS_JSTOOLBAR_FULL
+               );
+               
+               $i = 1;
+               foreach ( $options as $option )
+               {
+                       $text  = "<option value=\"%d\"%s>%s</option>\n";
+                       $extra = ($CONF['DisableJsTools'] == $i) ? ' selected="selected"' : '';
+                       echo sprintf($text, $i, $extra, $option);
+                       $i++;
+               }
+               return;
+       }
+       /**
+        * AdminActions::parse_localeselectoptions()
+        * Parse skinvar localeselectoptions
+        *
+        * @param       void
+        * @return      void
+        */
+       public function parse_localeselectoptions()
+       {
+               global $CONF, $member;
+               
+               $locales = i18n::get_available_locale_list();
+               
+               /* default option */
+               if ( $this->skintype == 'editmembersettings' )
+               {
+                       if ( !$member->getLocale() )
+                       {
+                               echo "<option value=\"\" selected=\"selected\">" . Entity::hsc(_MEMBERS_USESITELANG) . "</option>\n";
+                       }
+                       else
+                       {
+                               echo "<option value=\"\">" . Entity::hsc(_MEMBERS_USESITELANG) . "</option>\n";
+                       }
+               }
+               else
+               {
+                       if ( $CONF['Locale'] == 'en_Latn_US' )
+                       {
+                               echo "<option value=\"\" selected=\"selected\">" . Entity::hsc(_LOCALE_EN_LATN_US) . "</option>\n";
+                       }
+                       else
+                       {
+                               echo "<option value=\"\">" . Entity::hsc(_LOCALE_EN_LATN_US) . "</option>\n";
+                       }
+               }
+               
+               /* optional options */
+               foreach ( $locales as $locale )
+               {
+                       if ( $this->skintype == 'editmembersettings' )
+                       {
+                               if ( $locale != $member->getLocale() )
+                               {
+                                       echo "<option value=\"{$locale}\">";
+                               }
+                               else
+                               {
+                                       echo "<option value=\"{$locale}\" selected=\"selected\">";
+                               }
+                       }
+                       else
+                       {
+                               if ( $locale == 'en_Latn_US' )
+                               {
+                                       /* already output */
+                                       continue;
+                               }
+                               else if ( $locale != $CONF['Locale'] )
+                               {
+                                       echo "<option value=\"{$locale}\">";
+                               }
+                               else
+                               {
+                                       echo "<option value=\"{$locale}\" selected=\"selected\">";
+                               }
+                       }
+                       $label = '_LOCALE_' . strtoupper($locale);
+                       if ( !defined($label) )
+                       {
+                               echo $locale;
+                       }
+                       else
+                       {
+                               echo constant($label);
+                       }
+                       echo "</option>\n";
+               }
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_listplugplugoptionrow()
+        * Parse templatevar listplugplugoptionrow
+        *
+        * @param       string  $template_name  name of template
+        * @return      void
+        */
+       public function parse_listplugplugoptionrow($template_name = '')
+       {
+               echo listplug_plugOptionRow(Admin::$aOptions, $template_name);
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_mediadirwarning()
+        * Parse skinvar mediadirwarning
+        *
+        * @param       void
+        * @return      void
+        */
+       public function parse_mediadirwarning()
+       {
+               global $DIR_MEDIA;
+               if ( !is_dir($DIR_MEDIA) )
+               {
+                       echo "<br /><b>" . _WARNING_NOTADIR . "</b>\n";
+               }
+               if ( !is_readable($DIR_MEDIA) )
+               {
+                       echo "<br /><b>" . _WARNING_NOTREADABLE . "</b>\n";
+               }
+               if ( !is_writeable($DIR_MEDIA) )
+               {
+                       echo "<br /><b>" . _WARNING_NOTWRITABLE . "</b>\n";
+               }
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_movedistselect()
+        * Parse skinvar movedistselect
+        */
+       public function parse_movedistselect()
+       {
+               $actionType = requestVar('action');
+               switch ( $actionType )
+               {
+                       case 'batchitem':
+                               $this->selectBlog('destcatid', 'category');
+                               break;
+                       case 'batchcategory':
+                               $this->selectBlog('destblogid');
+                               break;
+                       default:
+                               if ( $this->skintype == 'itemmove' )
+                               {
+                                       $query  = "SELECT icat as result FROM %s WHERE inumber=%d;";
+                                       $query = sprintf($query, sql_table('item'), intRequestVar('itemid'));
+                                       $catid  = DB::getValue(sprintf($query, intRequestVar('itemid')));
+                                       $this->selectBlog('catid', 'category', $catid, 10, 1);
+                               }
+                               break;
+               }
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_moveitemid()
+        * Parse skinvar moveitemid
+        *
+        * @param       void
+        * @return      void
+        */
+       public function parse_moveitemid()
+       {
+               echo intRequestVar('itemid');
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_newestcompare()
+        * Parse skinvar newestcompare
+        *
+        * @param       void
+        * @return      void
+        */
+       public function parse_newestcompare()
+       {
+               global $nucleus;
+               
+               $newestVersion  = getLatestVersion();
+               $newestCompare  = str_replace('/', '.', $newestVersion);
+               $currentVersion = str_replace(array('/', 'v'), array('.', ''), $nucleus['version']);
+               
+               if ( $newestVersion && version_compare($newestCompare, $currentVersion, '>') )
+               {
+                       echo '<br /><a style="color:red" href="http://nucleuscms.org/upgrade.php" title="' . _ADMIN_SYSTEMOVERVIEW_LATESTVERSION_TITLE . '">';
+                       echo _ADMIN_SYSTEMOVERVIEW_LATESTVERSION_TEXT . $newestVersion . '</a>';
+               }
+               else
+               {
+                       echo _ADMIN_SYSTEMOVERVIEW_VERSION_LATEST;
+               }
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_newmemberselect()
+        * Parse skinvar newmemberselect
+        *
+        * @param       string  $template_name  name of template to use
+        * @return      void
+        */
+       public function parse_newmemberselect($template_name = '')
+       {
+               $blogid = intRequestVar('blogid');
+               
+               $query = "SELECT tmember FROM %s WHERE tblog=%d;";
+               $query = sprintf($query, sql_table('team'), (integer) $blogid);
+               $res = DB::getResult($query);
+               
+               $tmem = array();
+               foreach ( $res as $row )
+               {
+                       $tmem[] = intval($row['tmember']);
+               }
+               
+               $query  = "SELECT mname as text, mnumber as value FROM %s WHERE mnumber NOT IN (%s);";
+               $query = sprintf($query, sql_table('member'), implode(', ', $tmem));
+               
+               $template = array(
+                       'name'          => 'memberid',
+                       'tabindex'      => 10000,
+                       'selected'      => 0
+               );
+               $member_select = showlist($query, 'select', $template, $template_name);
+               $this->parser->parse($member_select);
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_newpluginlist()
+        * Parse skinvar newpluginlist
+        *
+        * @param       void
+        * @return      void
+        */
+       public function parse_newpluginlist()
+       {
+               $candidates = $this->newPlugCandidates;
+               foreach ( $candidates as $name )
+               {
+                       echo '<option value="NP_' . $name . '">' . Entity::hsc($name) . "</option>\n";
+               }
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_outputspecialdirs()
+        * Parse skinvar outputspecialdirs
+        *
+        * @param       string  $type   type of setting for directory
+        * @return      void
+        */
+       public function parse_outputspecialdirs($type)
+       {
+               global $DIR_MEDIA, $DIR_NUCLEUS;
+               
+               switch ( $type )
+               {
+                       case 'nucleusdir':
+                               echo Entity::hsc($DIR_NUCLEUS);
+                               break;
+                       case 'mediadir':
+                               echo Entity::hsc($DIR_MEDIA);
+                               break;
+               }
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_passrequestvars()
+        * Parse skinvar passrequestvars
+        *
+        * @param       void
+        * @return      void
+        */
+       public function parse_passrequestvars()
+       {
+               $passvar   = Admin::$passvar;
+               $oldaction = postVar('oldaction');
+               
+               if ( ($oldaction != 'logout')
+               && ($oldaction != 'login')
+               && $passvar
+               && !postVar('customaction') )
+               {
+                       passRequestVars();
+               }
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_pluginextras()
+        * Parse skinvar pluginextras
+        *
+        * @param       string  $type   type of plugin context
+        * @return      void
+        */
+       public function parse_pluginextras($type = 'global')
+       {
+               global $manager;
+               
+               switch ( $type )
+               {
+                       case 'member':
+                               $id  = intRequestVar('memberid');
+                               $mem =& $manager->getMember($id);
+                               $data = array('member' => &$mem);
+                               $manager->notify('MemberSettingsFormExtras', $data);
+                               break;
+                       case 'blog':
+                               $id  = intRequestVar('blogid');
+                               $blg =& $manager->getBlog($id);
+                               $data = array('member' => &$blg);
+                               $manager->notify('BlogSettingsFormExtras', $data);
+                               break;
+                       case 'createaccount':
+                               $data = array(
+                                       'type'          => 'createaccount.php',
+                                       'prelabel'      => '',
+                                       'postlabel'     => '<br />',
+                                       'prefield'      => '',
+                                       'postfield'     => '<br /><br />'
+                               );
+                               $manager->notify('RegistrationFormExtraFields', $data);
+                               break;
+                       default:
+                       $data = array();
+                               $manager->notify('GeneralSettingsFormExtras', $data);
+                               break;
+               }
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_pluginhelp()
+        * Parse skinvar pluginhelp
+        *
+        * @param       void
+        * @return      void
+        */
+       public function parse_pluginhelp()
+       {
+               global $manager, $DIR_PLUGINS;
+               
+               $plugid = intGetVar('plugid');
+               $plugName = $manager->getPluginNameFromPid($plugid);
+               $plug =& $manager->getPlugin($plugName);
+               
+               if ( $plug->supportsFeature('HelpPage') > 0 )
+               {
+                       $helpfile = $DIR_PLUGINS . $plug->getShortName() . '/help.';
+                       if ( @file_exists($helpfile . 'php') )
+                       {
+                               @include($helpfile . 'php');
+                               return;
+                       }
+                       elseif ( @file_exists($helpfile . 'html') )
+                       {
+                               @include($helpfile . 'html');
+                               return;
+                       }
+               }
+               echo '<p>' . _ERROR . ': ' . _ERROR_PLUGNOHELPFILE . "</p>\n";
+               echo '<p><a href="index.php?action=pluginlist">(' . _BACK . ")</a></p>\n";
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_pluginlistlist()
+        * Parse skinvar pluginlistlist
+        *
+        * @param       string  $template_name  name of template to use
+        * @return      void
+        */
+       public function parse_pluginlistlist($template_name = '')
+       {
+               $query = "SELECT * FROM %s ORDER BY porder ASC;";
+               $query = sprintf($query, sql_table('plugin'));
+               
+               $template['content']  = 'pluginlist';
+               $template['tabindex'] = 10;
+               
+               $plugin_list = showlist($query, 'table', $template, $template_name);
+               $this->parser->parse($plugin_list);
+               
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_pluginoptions()
+        * Parse skinvar pluginoptions
+        *
+        * @param       string  $type   type of plugin option
+        * @return      void
+        */
+       public function parse_pluginoptions($context='global', $template_name='')
+       {
+               global $itemid, $manager;
+               
+               switch ( $context )
+               {
+                       case 'member':
+                               $contextid = intRequestVar('memberid');
+                               break;
+                       case 'blog':
+                               $contextid = intRequestVar('blogid');
+                               break;
+                       case 'category':
+                               $contextid = intRequestVar('catid');
+                               break;
+                       case 'item':
+                               $contextid = $itemid;
+                               break;
+               }
+               
+               /* Actually registererd plugin options */
+               $aIdToValue = array();
+               $query = "SELECT oid, ovalue FROM %s WHERE ocontextid=%d;";
+               $query = sprintf($query, sql_table('plugin_option'), (integer) $contextid);
+               $res = DB::getResult($query);
+               foreach ( $res as $row )
+               {
+                       $aIdToValue[$row['oid']] = $row['ovalue'];
+               }
+               
+               /* Currently available plugin options */
+               $query  = "SELECT * FROM %s, %s WHERE opid=pid and ocontext= %s ORDER BY porder, oid ASC;";
+               $query  = sprintf($query, sql_table('plugin_option_desc'), sql_table('plugin'), DB::quoteValue($context));
+               $res    = DB::getResult($query);
+               
+               $options = array();
+               foreach ($res as $row )
+               {
+                       if ( !array_key_exists($row['oid'], $aIdToValue) )
+                       {
+                               $value = $row['odef'];
+                       }
+                       else
+                       {
+                               $value = $aIdToValue[$row['oid']];
+                       }
+                       
+                       $options[] = array(
+                               'pid'                   => $row['pid'],
+                               'pfile'                 => $row['pfile'],
+                               'oid'                   => $row['oid'],
+                               'value'                 => $value,
+                               'name'                  => $row['oname'],
+                               'description'   => $row['odesc'],
+                               'type'                  => $row['otype'],
+                               'typeinfo'              => $row['oextra'],
+                               'contextid'             => $contextid,
+                               'extra'                 => ''
+                       );
+               }
+               
+               $data = array(
+                       'context'       =>  $context,
+                       'contextid'     =>  $contextid,
+                       'options'       => &$options
+               );
+               $manager->notify('PrePluginOptionsEdit', $data);
+               
+               $template = array();
+               if ( $template_name )
+               {
+                       $templates =& $manager->getTemplate($template_name);
+                       if ( !array_key_exists('INSERT_PLUGOPTION_TITLE', $templates) || empty($templates['INSERT_PLUGOPTION_TITLE']) )
+                       {
+                               $template['title'] = "<tr>"
+                               . "<th colspan=\"2\"><%sprinttext(_PLUGIN_OPTIONS_TITLE, <|%insertpluginfo(name)%|>)%></th>"
+                               . "</tr>\n";
+                       }
+                       else
+                       {
+                               $template['title'] = $templates['INSERT_PLUGOPTION_TITLE'];
+                       }
+                       
+                       if ( !array_key_exists('INSERT_PLUGOPTION_BODY', $templates) || empty($templates['INSERT_PLUGOPTION_BODY']) )
+                       {
+                               $template['body'] = "<tr>"
+                               . "<%listplugplugoptionrow%>"
+                               . "</tr>\n";
+                       }
+                       else
+                       {
+                               $template['body'] = $templates['INSERT_PLUGOPTION_BODY'];
+                       }
+               }
+               
+               $prevPid = -1;
+               
+               foreach ( $options as $option )
+               {
+                       // new plugin?
+                       if ( $prevPid != $option['pid'] )
+                       {
+                               $prevPid  = $option['pid'];
+                               $this->parser->parse($template['title']);
+                       }
+                       
+                       $meta = NucleusPlugin::getOptionMeta($option['typeinfo']);
+                       
+                       if ( @$meta['access'] != 'hidden' )
+                       {
+                               $parsed = $this->parser->parse($template['body']);
+                       }
+               }
+       
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_qmenuaddselect()
+        * Parse skinvar qmanuaddselect
+        *
+        * @param       string  $template_name  name of template to use
+        * @return      void
+        */
+       public function parse_qmenuaddselect($template_name = '')
+       {
+               global $member, $blogid;
+               $showAll = requestVar('showall');
+               if ( $member->isAdmin() && ($showAll == 'yes') )
+               {
+                       // Super-Admins have access to all blogs! (no add item support though)
+                       $query =  'SELECT bnumber as value, bname as text FROM %s ORDER BY bname;';
+                       $query = sprintf($query, sql_table('blog'));
+               }
+               else
+               {
+                       $query =  'SELECT bnumber as value, bname as text FROM %s, %s WHERE tblog=bnumber and tmember=%d ORDER BY bname;';
+                       $query = sprintf($query, sql_table('blog'), sql_table('team'), (integer) $member->getID());
+               }
+               
+               $template['name']               = 'blogid';
+               $template['tabindex']   = 15000;
+               $template['extra']              = _QMENU_ADD_SELECT;
+               $template['selected']   = 0;
+               $template['shorten']    = 10;
+               $template['shortenel']  = '';
+               $template['javascript'] = 'onchange="return form.submit()"';
+               
+               $selectlist = showlist($query, 'select', $template, $template_name);
+               $this->parser->parse($selectlist);
+               
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_quickmenu()
+        * Parse skinvar quickmenu
+        *
+        * @param       string  $template_name  name of template to use
+        * @return      void
+        */
+       public function parse_quickmenu($template_name = '')
+       {
+               global $manager;
+               $templates = array();
+               
+               if ( !empty($template_name) )
+               {
+                       $templates = & $manager->getTemplate($template_name);
+               }
+               $pluginExtras = array();
+               $data = array('options' => &$pluginExtras);
+               $manager->notify('QuickMenu', $data);
+               
+               $template  = array();
+               if ( count($pluginExtras) > 0 )
+               {
+                       if ( !array_key_exists('PLUGIN_QUICKMENU_HEAD', $templates) || empty($templates['PLUGIN_QUICKMENU_HEAD']) )
+                       {
+                               $template['head'] = "<h2><%text(_QMENU_PLUGINS)%></h2>\n"
+                               . "<ul>\n";
+                       }
+                       else
+                       {
+                               $template['head'] = $templates['PLUGIN_QUICKMENU_HEAD'];
+                       }
+                       
+                       if ( !array_key_exists('PLUGIN_QUICKMENU_BODY', $templates) && empty($templates['PLUGIN_QUICKMENU_BODY']) )
+                       {
+                               $template['body'] = "<li><a href=\"<%plugadminurl%>\" title=\"<%plugadmintooltip%>\"><%plugadmintitle%></a></li>\n";
+                       }
+                       else
+                       {
+                               $template['body'] = $templates['PLUGIN_QUICKMENU_BODY'];
+                       }
+                       
+                       if ( !array_key_exists('PLUGIN_QUICKMENU_FOOT', $templates) || empty($templates['PLUGIN_QUICKMENU_FOOT']) )
+                       {
+                               $template['foot'] = "</ul>\n";
+                       }
+                       else
+                       {
+                               $template['foot'] = $templates['PLUGIN_QUICKMENU_FOOT'];
+                       }
+                       
+                       $this->parser->parse($template['head']);
+                       foreach ( $pluginExtras as $aInfo )
+                       {
+                               $data = array(
+                                       'plugadminurl'          => Entity::hsc($aInfo['url']),
+                                       'plugadmintooltip'      => Entity::hsc($aInfo['tooltip']),
+                                       'plugadmintitle'        => Entity::hsc($aInfo['title']),
+                               );
+                               $body = Template::fill($template['body'], $data);
+                               $this->parser->parse($body);
+                       }
+                       $this->parser->parse($template['foot']);
+               }
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_requestblogid()
+        * Parse skinvar requestblogid
+        *
+        * @param       void
+        * @return      void
+        */
+       public function parse_requestblogid()
+       {
+               echo intRequestVar('blogid');
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_requestiprange()
+        * Parse skinvar requestiprange
+        *
+        * @param       void
+        * @return      void
+        */
+       public function parse_requestiprange()
+       {
+               if ( requestVar('iprange') )
+               {
+                       echo Entity::hsc(requestVar('iprange'));
+               }
+               elseif ( requestVar('ip') )
+               {
+                       echo Entity::hsc(requestVar('ip'));
+               }
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_selectlocalskinfiles()
+        * Parse skinvar selectlocalskinfiles
+        *
+        * @param       void
+        * @return      void
+        */
+       public function parse_selectlocalskinfiles()
+       {
+               global $DIR_SKINS;
+               
+               if ( !class_exists('SkinImport', FALSE) )
+               {
+                       include_libs('skinie.php');
+               }
+               
+               if ( !in_array($this->skintype, Admin::$adminskin_actions) && $this->skintype != 'importAdmin' )
+               {
+                       $skindir = $DIR_SKINS;
+               }
+               else
+               {
+                       $skindir = "{$DIR_SKINS}admin/";
+               }
+               
+               $candidates = SkinImport::searchForCandidates($skindir);
+               foreach ( $candidates as $skinname => $skinfile )
+               {
+                       $skinname = Entity::hsc($skinname);
+                       if ( !in_array($this->skintype, Admin::$adminskin_actions) && $this->skintype != 'importAdmin' )
+                       {
+                               $skinfile = Entity::hsc($skinfile);
+                       }
+                       else
+                       {
+                               $skinfile = Entity::hsc("admin/$skinfile");
+                       }
+                       echo "<option value=\"{$skinfile}\">{$skinname}</option>\n";
+               }
+       
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_skineditallowedlist()
+        * Parse skinvar skineditallowedlist
+        *
+        * @param       string  $type                   type of skin
+        * @param       string  $template_name  name of template
+        * @return      void
+        */
+       public function parse_skineditallowedlist($type, $template_name = '')
+       {
+               switch ( $type )
+               {
+                       case 'blog':
+                               $query = "SELECT bshortname, bname FROM %s;";
+                               $show  = array(
+                                       'content' => 'shortblognames'
+                               );
+                               $query = sprintf($query, sql_table('blog'));
+                               break;
+                       case 'template':
+                               if ( !in_array($this->skintype, Admin::$adminskin_actions) )
+                               {
+                                       $query = "SELECT tdname as name, tddesc as description FROM %s WHERE tdname NOT LIKE 'admin/%%';";
+                               }
+                               else
+                               {
+                                       $query = "SELECT tdname as name, tddesc as description FROM %s WHERE tdname LIKE 'admin/%%';";
+                               }
+                               $show  = array(
+                                       'content' => 'shortnames'
+                               );
+                               $query = sprintf($query, sql_table('template_desc'));
+                               break;
+               }
+               
+               $skin_list = showlist($query, 'table', $show, $template_name);
+               $this->parser->parse($skin_list);
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_skinielist()
+        * Parse skinvar skinielist
+        *
+        * @param       string  $type                   type of skin
+        * @param       string  $template_name  name of template to use
+        * @return      void
+        */
+       public function parse_skinielist($type, $template_name = '')
+       {
+               global $manager;
+               
+               $templates = array();
+               if ( $template_name )
+               {
+                       $templates =& $manager->getTemplate($template_name);
+               }
+               if ( !array_key_exists('SKINIE_EXPORT_LIST', $templates) || empty($templates['SKINIE_EXPORT_LIST']) )
+               {
+                       $template = "<tr>\n"
+                                 . "<td>"
+                                 . "<input type=\"checkbox\" name=\"<%typeid%>\" id=\"<%expid%>\" />\n"
+                                 . "<label for=\"<%expid%>\"><%expname%></label>\n"
+                                 . "</td>\n"
+                                 . "<td><%expdesc%></td>\n"
+                                 . "</tr>\n";
+               }
+               else
+               {
+                       $template = $templates['SKINIE_EXPORT_LIST'];
+               }
+               
+               switch ( $type )
+               {
+                       case 'skin':
+                               if ( !in_array($this->skintype, Admin::$adminskin_actions) )
+                               {
+                                       $res = DB::getResult('SELECT * FROM ' . sql_table('skin_desc'). " WHERE sdname NOT LIKE 'admin/%%';");
+                               }
+                               else
+                               {
+                                       $res = DB::getResult('SELECT * FROM ' . sql_table('skin_desc'). " WHERE sdname LIKE 'admin/%%';");
+                               }
+                               foreach ( $res as $row )
+                               {
+                                       $data = array(
+                                               'typeid'        => 'skin[' . $row['sdnumber'] . ']',
+                                               'expid'         => 'skinexp' . $row['sdnumber'],
+                                               'expname'       => Entity::hsc($row['sdname']),
+                                               'expdesc'       => Entity::hsc($row['sddesc'])
+                                       );
+                                       echo Template::fill($template, $data);
+                               }
+                               break;
+                       case 'template':
+                               if ( !in_array($this->skintype, Admin::$adminskin_actions) )
+                               {
+                                       $res = DB::getResult('SELECT * FROM '.sql_table('template_desc'). " WHERE tdname NOT LIKE 'admin/%%';");
+                               }
+                               else
+                               {
+                                       $res = DB::getResult('SELECT * FROM '.sql_table('template_desc'). " WHERE tdname LIKE 'admin/%%';");
+                               }
+                               foreach ( $res as $row )
+                               {
+                                       $data = array(
+                                               'typeid'        => 'template[' . $row['tdnumber'] . ']',
+                                               'expid'         => 'templateexp' . $row['tdnumber'],
+                                               'expname'       => Entity::hsc($row['tdname']),
+                                               'expdesc'       => Entity::hsc($row['tddesc'])
+                                       );
+                                       echo Template::fill($template, $data);
+                               }
+                               break;
+               }
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_skinoverview()
+        * Parse skinvar skinoverview
+        *
+        * @param       string  $template_name  name of template to use
+        * @return      void
+        */
+       public function parse_skinoverview($template_name = '')
+       {
+               global $CONF;
+               
+               $template = array();
+               if ( !in_array($this->skintype, Admin::$adminskin_actions) )
+               {
+                       $query = "SELECT * FROM %s WHERE sdname NOT LIKE 'admin/%%' ORDER BY sdname;";
+                       $template['handler'] = 'Actions';
+                       $template['editaction'] = 'skinedit';
+                       $template['cloneaction'] = 'skinclone';
+                       $template['deleteaction'] = 'skindelete';
+                       $template['edittypeaction'] = 'skinedittype';
+                       $template['default'] = $CONF['BaseSkin'];
+               }
+               else
+               {
+                       $query = "SELECT * FROM %s WHERE sdname LIKE 'admin/%%' ORDER BY sdname;";
+                       $template['handler'] = 'AdminActions';
+                       $template['editaction'] = 'adminskinedit';
+                       $template['cloneaction'] = 'adminskinclone';
+                       $template['deleteaction'] = 'adminskindelete';
+                       $template['edittypeaction'] = 'adminskinedittype';
+                       $template['default'] = $CONF['AdminSkin'];
+               }
+               $query = sprintf($query, sql_table('skin_desc'));
+               
+               $template['tabindex'] = 10;
+               $template['content'] = 'skinlist';
+               
+               $skin_list = showlist($query, 'table', $template, $template_name);
+               $this->parser->parse($skin_list);
+               
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_skintypehelp()
+        * Check editing skintypehelp
+        *
+        * @param       void
+        * @return      void
+        */
+       public function parse_skintypehelp()
+       {
+               $surrent_skin_type = strtolower(trim(requestVar('type')));
+               $page_action  = strtolower(trim(requestVar('action')));
+               if ( in_array($page_action, Admin::$adminskin_actions) )
+               {
+                       $normal_types = array_keys(self::$normal_skin_types);
+               }
+               else
+               {
+                       $normal_types = array_keys(Actions::getNormalSkinTypes());
+               }
+               
+               if ( in_array($surrent_skin_type, $normal_types) )
+               {
+                       help('skinpart' . $surrent_skin_type);
+               }
+               else
+               {
+                       help('skinpartspecial');
+               }
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_specialskinlist()
+        * Parse skinvar specialskinlist
+        *
+        * @param       string  $template_name  name of template to use
+        * @return      void
+        */
+       public function parse_specialskinlist($template_name = '')
+       {
+               global $CONF, $manager;
+               
+               $template = array();
+               
+               $skinid = intRequestVar('skinid');
+               
+               if ( !in_array($this->skintype, Admin::$adminskin_actions) )
+               {
+                       $skin =& $manager->getSkin($skinid);
+                       $template['editaction'] = 'skinedittype';
+                       $template['removeaction'] = 'skinremovetype';
+               }
+               else
+               {
+                       $skin =& $manager->getSkin($skinid, 'AdminActions');
+                       $template['editaction'] = 'adminskinedittype';
+                       $template['removeaction'] = 'adminskinremovetype';
+               }
+               $normal_types = $skin->getNormalTypes();
+               $available_types = $skin->getAvailableTypes();
+               
+               $special_skintypes = array();
+               foreach( $available_types as $skintype => $skinname )
+               {
+                       if ( !array_key_exists($skintype, $normal_types) )
+                       {
+                               $special_skintypes[] = array(
+                                       'skintype'              => $skintype,
+                                       'skintypename'  => $skinname
+                               );
+                       }
+               }
+               
+               if ( sizeof($special_skintypes) > 0 )
+               {
+                       $template['tabindex'] = 75;
+                       $template['skinid'] = $skin->getID();
+                       $template['skinname'] = $skin->getName();
+                       $skin_list = showlist($special_skintypes, 'list_specialskinlist', $template, $template_name);
+                       $this->parser->parse($skin_list);
+               }
+               else
+               {
+                       /* TODO: nothing to be shown */
+               }
+       
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_sprinttext()
+        * Parse sprinttext
+        *
+        * @param       string  $which
+        * @param       string  $val
+        * @return      void
+        */
+       public function parse_sprinttext($which, $val)
+       {
+               if ( !defined($which) )
+               {
+                       $base = $which;
+               }
+               else
+               {
+                       $base = constant($which);
+               }
+               
+               if ( preg_match('#[^<|%].*[^%|>]#', $val, $matchies) )
+               {
+                       if ( !preg_match('#[(].*[^)]#', $matchies[0], $args) )
+                       {
+                               $met = 'parse_' . $matchies[0];
+                       }
+                       else
+                       {
+                               $arg = trim($args[0], '()');
+                               $met = 'parse_' . substr($matchies[0], 0, strpos($matchies[0], '('));
+                       }
+                       
+                       if ( method_exists($this, $met) )
+                       {
+                               $value = call_user_func(array($this, $met), $arg);
+                       }
+               }
+               
+               if ( !isset($value) || empty($value) )
+               {
+                       $value = $val;
+               }
+               echo sprintf($base, $value);
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_systemsettings()
+        * Parse skinvar systemsettings
+        *
+        * @param       string  $type                   type of settings for system
+        * @param       string  $template_name  name of template to use
+        * @return      void
+        */
+       public function parse_systemsettings($type = 'phpinfo', $template_name = '')
+       {
+               global $manager, $member, $CONF, $nucleus;
+               
+               $member->isAdmin() or Admin::disallow();
+               
+               $enable  = _ADMIN_SYSTEMOVERVIEW_ENABLE;
+               $disable = _ADMIN_SYSTEMOVERVIEW_DISABLE;
+               
+               switch ( $type )
+               {
+                       case 'phpversion':
+                               echo phpversion();
+                               break;
+                       case 'sqlserverinfo':
+                               echo DB::getAttribute(PDO::ATTR_SERVER_VERSION);
+                               break;
+                       case 'sqlclientinfo':
+                               echo DB::getAttribute(PDO::ATTR_CLIENT_VERSION);
+                               break;
+                       case 'magicquotesgpc':
+                               echo ini_get('magic_quotes_gpc') ? 'On' : 'Off';
+                               break;
+                       case 'magicquotesruntime':
+                               echo ini_get('magic_quotes_runtime') ? 'On' : 'Off';
+                               break;
+                       case 'registerglobals':
+                               echo ini_get('register_globals') ? 'On' : 'Off';
+                               break;
+                       case 'gdinfo':
+                               $templates = array();
+                               if ( $template_name )
+                               {
+                                       $templates =& $manager->getTemplate($template_name);
+                               }
+                               if ( !array_key_exists('SYSTEMINFO_GDSETTINGS', $templates) || empty($templates['SYSTEMINFO_GDSETTINGS']) )
+                               {
+                                       $template = "<tr>\n"
+                                       . "<td><%key%></td>\n"
+                                       . "<td><%value%></td>\n"
+                                       . "</tr>\n";
+                               }
+                               else
+                               {
+                                       $template = $templates['SYSTEMINFO_GDSETTINGS'];
+                               }
+                               
+                               $gdinfo = gd_info();
+                               
+                               foreach ( $gdinfo as $key => $value )
+                               {
+                                       if ( is_bool($value) )
+                                       {
+                                               $value = $value ? $enable : $disable;
+                                       }
+                                       else
+                                       {
+                                               $value = Entity::hsc($value);
+                                       }
+                                       $data = array(
+                                               'key'   => $key,
+                                               'value' => $value,
+                                       );
+                                       echo Template::fill($template, $data);
+                               }
+                               break;
+                       case 'modrewrite':
+                               if ( function_exists('apache_get_modules') && in_array('mod_rewrite', apache_get_modules()) )
+                               {
+                                       echo $enable;
+                               }
+                               else
+                               {
+                                       ob_start();
+                                       phpinfo(INFO_MODULES);
+                                       $im = ob_get_contents();
+                                       ob_end_clean();
+                                       if ( i18n::strpos($im, 'mod_rewrite') !== FALSE )
+                                       {
+                                               echo $enable;
+                                       }
+                                       else
+                                       {
+                                               echo $disable;
+                                       }
+                               }
+                               break;
+                       case 'nucleusversion':
+                               echo getNucleusVersion() / 100 . '(' . $nucleus['version'] . ')';
+                               break;
+                       case 'nucleuspatchlevel':
+                               echo getNucleusPatchLevel();
+                               break;
+                       case 'confself':
+                               echo $CONF['Self'];
+                               break;
+                       case 'confitemurl':
+                               echo $CONF['ItemURL'];
+                               break;
+                       case 'alertonheaderssent':
+                               echo $CONF['alertOnHeadersSent'] ? $enable : $disable;
+                               break;
+                       case 'nucleuscodename':
+                               if ( $nucleus['codename'] != '' )
+                               {
+                                       echo ' &quot;' . $nucleus['codename'] . '&quot;';
+                               }
+                               break;
+                       case 'versioncheckurl':
+                               echo sprintf(_ADMIN_SYSTEMOVERVIEW_VERSIONCHECK_URL, getNucleusVersion(), getNucleusPatchLevel());
+                               break;
+               }
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_templateoverview()
+        * Parse skinvar templateoverview
+        *
+        * @param       string  $template_name  name of template to use
+        * @return      void
+        */
+       public function parse_templateoverview($template_name = '')
+       {
+               if ( !in_array($this->skintype, Admin::$adminskin_actions) )
+               {
+                       $query = "SELECT * FROM %s WHERE tdname NOT LIKE 'admin/%%' ORDER BY tdname;";
+                       $template['deleteaction'] = 'templatedelete';
+                       $template['editaction'] = 'templateedit';
+                       $template['cloneaction'] = 'templateclone';
+               }
+               else
+               {
+                       $query = "SELECT * FROM %s WHERE tdname LIKE 'admin/%%' ORDER BY tdname;";
+                       $template['deleteaction'] = 'admintemplatedelete';
+                       $template['editaction'] = 'admintemplateedit';
+                       $template['cloneaction'] = 'admintemplateclone';
+               }
+               $query = sprintf($query, sql_table('template_desc'));
+               
+               $template['tabindex'] = 10;
+               $template['content'] = 'templatelist';
+               
+               $template_list = showlist($query, 'table', $template, $template_name);
+               $this->parser->parse($template_list);
+               
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_ticket()
+        * Parse ticket
+        *
+        * @param       void
+        * @return      void
+        */
+       public function parse_ticket()
+       {
+               global $manager;
+               $manager->addTicketHidden();
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_versioncheckurl()
+        * Parse skinvar versioncheckurl
+        *
+        * @param       void
+        * @return      void
+        */
+       public function parse_versioncheckurl()
+       {
+               echo sprintf(_ADMIN_SYSTEMOVERVIEW_VERSIONCHECK_URL, getNucleusVersion(), getNucleusPatchLevel());
+               return;
+       }
+       
+       /**
+        * AdminActions::parse_yrbloglist()
+        * Parse skinvar yrbloglist
+        *
+        * @param       string  $template_name  name of template to use
+        * @return      void
+        */
+       public function parse_yrbloglist($template_name = '')
+       {
+               global $member;
+               $showAll = requestVar('showall');
+               
+               if ( $member->isAdmin() && ($showAll == 'yes') )
+               {
+                       // Super-Admins have access to all blogs! (no add item support though)
+                       $query =  "SELECT bnumber, bname, 1 as tadmin, burl, bshortname"
+                       . " FROM %s"
+                       . " ORDER BY bnumber;";
+                       $query = sprintf($query, sql_table('blog'));
+               }
+               else
+               {
+                       $query = "SELECT bnumber, bname, tadmin, burl, bshortname"
+                       . " FROM %s,%s"
+                       . " WHERE tblog=bnumber and tmember=%d"
+                       . " ORDER BY bnumber;";
+                       $query = sprintf($query, sql_table('blog'), sql_table('team'), (integer) $member->getID());
+               }
+               
+               $resource = DB::getResult($query);
+               if ( ($showAll != 'yes') && $member->isAdmin() )
+               {
+                       $query = 'SELECT COUNT(*) as result FROM ' . sql_table('blog');
+                       $total = DB::getValue($query);
+                               
+                       if ( $total > $resource->rowCount() )
+                       {
+                               echo '<p><a href="index.php?action=overview&amp;showall=yes">' . _OVERVIEW_SHOWALL . '</a></p>';
+                       }
+               }
+               
+               if ( $resource->rowCount() > 0 )
+               {
+                       $template['content']    = 'bloglist';
+                       $template['superadmin'] = $member->isAdmin();
+                               
+                       $list_resource_table = showlist($resource, 'table', $template, $template_name);
+                       $this->parser->parse($list_resource_table);
+                       $resource->closeCursor();
+                               
+                       echo '<h2>' . _OVERVIEW_YRDRAFTS . '</h2>';
+                               
+                       $query = 'SELECT ititle, inumber, bshortname FROM %s, %s '
+                       . 'WHERE iauthor=%d AND iblog=bnumber AND idraft=1;';
+                       $query = sprintf($query, sql_table('item'), sql_table('blog'), (integer) $member->getID());
+                               
+                       $resource = DB::getResult($query);
+                       if ( $resource->rowCount() > 0 )
+                       {
+                               $template['content'] = 'draftlist';
+                               $draft_list = showlist($resource, 'table', $template, $template_name);
+                               $this->parser->parse($draft_list);
+                       }
+                       else
+                       {
+                               echo _OVERVIEW_NODRAFTS;
+                       }
+               }
+               else
+               {
+                       echo _OVERVIEW_NOBLOGS;
+               }
+               $resource->closeCursor();
+               
+               return;
+       }
+       
+       /**
+        * AdminActions::checkCondition()
+        * Checks conditions for if statements
+        *
+        * @param       string  $field type of <%if%>
+        * @param       string  $name property of field
+        * @param       string  $value value of property
+        * @return      boolean condition
+        */
+       protected function checkCondition($field, $name='', $value = '')
+       {
+               global $CONF, $archiveprevexists, $archivenextexists, $blog, $catid, $itemidnext, $itemidprev, $manager, $member;
+               
+               $condition = 0;
+               switch ( $field )
+               {
+                       case 'category':
+                               if ( !$blog )
+                               {
+                                       if ( $blogid )
+                                       {
+                                               $blog =& $manager->getBlog($blogid);
+                                       }
+                                       elseif ( $catid )
+                                       {
+                                               $blogid = getBlogIDFromCatID($catid);
+                                               $blog =& $manager->getBlog($blogid);
+                                       }
+                                       elseif ( intRequestVar('catid') )
+                                       {
+                                               $catid = intRequestVar('catid');
+                                               $blogid = getBlogIDFromCatID($catid);
+                                               $blog =& $manager->getBlog($blogid);
+                                       }
+                                       else
+                                       {
+                                               return;
+                                       }
+                               }
+                               $condition = ($blog && $this->ifCategory($name, $value));
+                               break;
+                       case 'loggedin':
+                               $condition = $member->isLoggedIn();
+                               break;
+                       case 'onteam':
+                               $condition = $member->isLoggedIn() && $this->ifOnTeam($name);
+                               break;
+                       case 'admin':
+                               $condition = $member->isLoggedIn() && $this->ifAdmin($name);
+                               break;
+                       case 'superadmin':
+                               $condition = $member->isLoggedIn() && $member->isAdmin();
+                               break;
+                       case 'allowloginedit':
+                               $condition = $member->isLoggedIn() && ($CONF['AllowLoginEdit'] || $member->isAdmin());
+                               break;
+                       case 'nextitem':
+                               $condition = ($itemidnext != '');
+                               break;
+                       case 'previtem':
+                               $condition = ($itemidprev != '');
+                               break;
+                       case 'archiveprevexists':
+                               $condition = ($archiveprevexists == true);
+                               break;
+                       case 'archivenextexists':
+                               $condition = ($archivenextexists == true);
+                               break;
+                       case 'skintype':
+                               $condition = (($name == $this->skintype) || ($name == requestVar('action')));
+                               break;
+                       case 'hasplugin':
+                               $condition = $this->ifHasPlugin($name, $value);
+                               break;
+                       case 'adminaction':
+                               $condition = (Admin::$action == $name);
+                               break;
+                       case 'adminoldaction':
+                               $condition = (Admin::$action == $name);
+                               break;
+                       case 'addresschange':
+                               $condition = ($this->ifAddresscange());
+                               break;
+                       case 'bechangepass':
+                               $condition = ($this->beChangePassword());
+                               break;
+                       case 'skincandidates':
+                               $condition = ($this->ifSkincandidates());
+                               break;
+                       case 'nameclashes':
+                               $condition = Admin::$contents['nameclashes'];
+                               break;
+                       case 'existsnewplugin':
+                               $condition = ($this->existsNewPlugin());
+                               break;
+                       case 'autosave':
+                               if ( $value == '' )
+                               {
+                                       $value = 1;
+                               }
+                               $condition = (boolean) ($member->getAutosave() == $value);
+                               break;
+                       case 'blogsetting':
+                               if ( $value == '' )
+                               {
+                                       $value = 1;
+                               }
+                               $condition = (Admin::$blog->getSetting($name) == $value);
+                               break;
+                       case 'itemproperty':
+                               if ( $value == '' )
+                               {
+                                       $value = 1;
+                               }
+                               if ( array_key_exists($name, Admin::$contents) )
+                               {
+                                       $condition = (boolean) (Admin::$contents[$name] == $value);
+                               }
+                               break;
+                       default:
+                               $condition = $manager->pluginInstalled("NP_{$field}") && $this->ifPlugin($field, $name, $value);
+                               break;
+               }
+               return $condition;
+       }
+       
+       /**
+        * AdminActions::_ifHasPlugin()
+        *      hasplugin,PlugName
+        *         -> checks if plugin exists
+        *      hasplugin,PlugName,OptionName
+        *         -> checks if the option OptionName from plugin PlugName is not set to 'no'
+        *      hasplugin,PlugName,OptionName=value
+        *         -> checks if the option OptionName from plugin PlugName is set to value
+        *
+        * @param       string  $name   name of plugin
+        * @param       string  $value
+        * @return
+        */
+       private function ifHasPlugin($name, $value)
+       {
+               global $manager;
+               $condition = false;
+               // (pluginInstalled method won't write a message in the actionlog on failure)
+               if ( $manager->pluginInstalled("NP_{$name}") )
+               {
+                       $plugin =& $manager->getPlugin("NP_{$name}");
+                       if ( $plugin != NULL )
+                       {
+                               if ( $value == "" )
+                               {
+                                       $condition = true;
+                               }
+                               else
+                               {
+                                       list($name2, $value2) = preg_split('#=#', $value, 2);
+                                       if ( $value2 == "" && $plugin->getOption($name2) != 'no' )
+                                       {
+                                               $condition = true;
+                                       }
+                                       else if ( $plugin->getOption($name2) == $value2 )
+                                       {
+                                               $condition = true;
+                                       }
+                               }
+                       }
+               }
+               return $condition;
+       }
+       
+       /**
+        * AdminActions::beChangePassword()
+        *
+        * @param       void
+        * @return      void
+        */
+       private function beChangePassword()
+       {
+               return intRequestVar('bNeedsPasswordChange');
+       }
+       
+       /**
+        * AdminActions::ifSkincandidates()
+        * Checks if a plugin exists and call its doIf function
+        *
+        * @param       void
+        * @return      void
+        * @return      boolean
+        */
+       private function ifSkincandidates()
+       {
+               global $DIR_SKINS;
+               $candidates = SKINIMPORT::searchForCandidates($DIR_SKINS);
+               return (count($candidates) > 0);
+       }
+       
+       /**
+        * AdminActions::ifPlugin()
+        * Checks if a plugin exists and call its doIf function
+        *
+        * @param       string  $name   name of plugin
+        * @param       string  $key
+        * @param       string  $value
+        * @return      callback
+        */
+       private function ifPlugin($name, $key = '', $value = '')
+       {
+               global $manager;
+               
+               $plugin =& $manager->getPlugin("NP_{$name}");
+               if ( !$plugin )
+               {
+                       return;
+               }
+               
+               $params = func_get_args();
+               array_shift($params);
+               
+               return call_user_func_array(array($plugin, 'doIf'), $params);
+       }
+       
+       /**
+        * AdminActions::ifCategory()
+        *  Different checks for a category
+        *
+        * @param       string  $key    key for information of category
+        * @param       string  $value  value for information of category
+        * @return      boolean
+        */
+       private function ifCategory($key = '', $value='')
+       {
+               global $blog, $catid;
+               
+               // when no parameter is defined, just check if a category is selected
+               if (($key != 'catname' && $key != 'catid') || ($value == ''))
+               {
+                       return $blog->isValidCategory($catid);
+               }
+               
+               // check category name
+               if ( $key == 'catname' )
+               {
+                       $value = $blog->getCategoryIdFromName($value);
+                       if ($value == $catid)
+                       {
+                               return $blog->isValidCategory($catid);
+                       }
+               }
+               
+               // check category id
+               if (($key == 'catid') && ($value == $catid))
+               {
+                       return $blog->isValidCategory($catid);
+               }
+               
+               return FALSE;
+       }
+       
+       /**
+        * AdminActions::ifOnTeam()
+        * Checks if a member is on the team of a blog and return his rights
+        *
+        * @param       string  $blogName       name of weblog
+        * @return      boolean
+        */
+       private function ifOnTeam($blogName = '')
+       {
+               global $blog, $member, $manager;
+               
+               // when no blog found
+               if ( ($blogName == '') && !is_object($blog) )
+               {
+                       return 0;
+               }
+               
+               // explicit blog selection
+               if ($blogName != '')
+               {
+                       $blogid = getBlogIDFromName($blogName);
+               }
+               
+               if (($blogName == '') || !$manager->existsBlogID($blogid))
+               {
+                       // use current blog
+                       $blogid = $blog->getID();
+               }
+               return $member->teamRights($blogid);
+       }
+       
+       /**
+        * AdminActions::ifAdmin()
+        * Checks if a member is admin of a blog
+        *
+        * @param       string  $blogName       name of weblog
+        * @return      boolean
+        */
+       private function ifAdmin($blogName = '')
+       {
+               global $blog, $member, $manager;
+               
+               // when no blog found
+               if (($blogName == '') && (!is_object($blog)))
+               {
+                       return 0;
+               }
+               
+               // explicit blog selection
+               if ($blogName != '')
+               {
+                       $blogid = getBlogIDFromName($blogName);
+               }
+               
+               if (($blogName == '') || !$manager->existsBlogID($blogid))
+               {
+                       // use current blog
+                       $blogid = $blog->getID();
+               }
+       
+               return $member->isBlogAdmin($blogid);
+       }
+       
+       /**
+        * AdminActions::ifAddresscange()
+        * Check e-Mail address is changed
+        *
+        * @param       void
+        * @return      boolean
+        */
+       private function ifAddresscange()
+       {
+               global $manager;
+
+               $key = $this->objAdmin->sessionVar("{$CONF['CookiePrefix']}ackey");
+               if ( !$key )
+               {
+                       return FALSE;
+               }
+               $info = MEMBER::getActivationInfo($key);
+               if ( !$info )
+               {
+                       return FALSE;
+               }
+               $mem =& $manager->getMember($info->vmember);
+               if ( !$mem )
+               {
+                       return FALSE;
+               }
+               if ( $info->vtype == 'addresschange' )
+               {
+                       return TRUE;
+               }
+               return FALSE;
+       }
+       
+       /**
+        * TODO: move
+        * AdminActions::customHelp()
+        * shows a link to custom help file
+        *
+        * @param       string  $id
+        * @param       string  $tplName
+        * @param       string  $url
+        * @param       string  $iconURL
+        * @param       string  $alt
+        * @param       string  $title
+        * @param       $onclick
+        *
+        */
+       private function customHelp($id, $tplName = '', $url = '', $iconURL = '', $alt = '', $title = '', $onclick = '')
+       {
+               echo $this->customHelpHtml($id, $tplName, $url, $iconURL, $alt, $title, $onclick);
+       }
+       
+       /**
+        * TODO: move
+        * AdminActions::customHelp()
+        * shows a link to custom help file
+        *
+        * @param       string  $id
+        * @param       string  $tplName
+        * @param       string  $url
+        * @param       string  $iconURL
+        * @param       string  $alt
+        * @param       string  $title
+        * @param       $onclick
+        *
+        */
+       static function customHelplink($id, $tplName = '', $url = '', $title = '', $onclick = '')
+       {
+               global $CONF, $manager;
+               
+               $templates = array();
+               
+               if ( $tplName )
+               {
+                       $templates =& $manager->getTemplate($tplName);
+               }
+               
+               if ( !array_key_exists('ADMIN_CUSTOMHELPLINK_ANCHOR', $templates) || empty($templates['ADMIN_CUSTOMHELPLINK_ANCHOR']) )
+               {
+                       $template = "<a href=\"<%helpurl%>#<%helptarget%>\" title=\"<%title%>\" <%onclick%>>\n";
+               }
+               else
+               {
+                       $template = $templates['ADMIN_CUSTOMHELPLINK_ANCHOR'];
+               }
+               
+               if ( empty($url) )
+               {
+                       $url = $CONF['AdminURL'] . 'documentation/customHelp.html';
+               }
+               
+               if ( empty($onclick) )
+               {
+                       $onclick = 'onclick="if (event &amp;&amp; event.preventDefault) event.preventDefault(); return help(this.href);"';
+               }
+               elseif ( preg_match('#^onclick#', $onclick) )
+               {
+                       $onclick = $onclick;
+               }
+               else
+               {
+                       $onclick = 'onclick="' . $onclick . '"';
+               }
+               
+               $data = array(
+                       'helpurl'               => $url,
+                       'helptarget'    => $id,
+                       'onclick'               => $onclick,
+                       'title'                 => (isset($title) && !empty($title)) ? $title : _HELP_TT,
+               );
+               return Template::fill($template, $data);
+       }
+       
+       /**
+        * TODO: move
+        * AdminActions::customHelpHtml()
+        */
+       private function customHelpHtml($id, $tplName = '', $url = '', $iconURL = '', $alt = '', $title = '', $onclick = '')
+       {
+               global $CONF, $manager;
+               
+               $templates = array();
+               
+               if ( $tplName )
+               {
+                       $templates =& $manager->getTemplate($tplName);
+               }
+               if ( !array_key_exists('ADMIN_CUSTOMHELPLINK_ICON', $templates) || !empty($templates['ADMIN_CUSTOMHELPLINK_ICON']) )
+               {
+                       $template = "<img src=\"<%iconurl%>\" <%width%><%height%>alt=\"<%alt%>\" title=\"<%title%>\" /></a>\n";
+               }
+               else
+               {
+                       $template = $templates['ADMIN_CUSTOMHELPLINK_ICON'];
+               }
+               
+               if ( empty($iconURL) )
+               {
+                       $iconURL = $CONF['AdminURL'] . 'documentation/icon-help.gif';
+               }
+               
+               if ( function_exists('getimagesize') )
+               {
+                       $size   = getimagesize($iconURL);
+                       $width  = 'width="'  . $size[0] . '" ';
+                       $height = 'height="' . $size[1] . '" ';
+               }
+               
+               $data = array(
+                       'iconurl'       => $iconURL,
+                       'width'         => $width,
+                       'height'        => $height,
+                       'alt'           => (isset($alt) && !empty($alt))         ? $alt   : _HELP_TT,
+                       'title'         => (isset($title) && !empty($title)) ? $title : _HELP_TT,
+               );
+               
+               $icon = Template::fill($template, $data);
+               $help = $this->customHelplink($id, $tplName, $url, $title, $onclick);
+               
+               return $help . $icon;
+       }
+       
+       /**
+        * AdminActions::existsNewPlugin()
+        * Check exists new plugin
+        *
+        * @param       void
+        * @return      boolean exists or not
+        */
+       private function existsNewPlugin()
+       {
+               global $DIR_PLUGINS;
+               
+               $query = "SELECT * FROM %s;";
+               $query = sprintf($query, sql_table('plugin'));
+               $res  = DB::getResult($query);
+               
+               $installed = array();
+               foreach( $res as $row )
+               {
+                       $installed[] = $row['pfile'];
+               }
+               
+               $files = scandir($DIR_PLUGINS);
+               
+               $candidates = array();
+               foreach ( $files as $file )
+               {
+                       if ( preg_match("#^(NP_.*)\.php$#", $file, $matches) )
+                       {
+                               if ( !in_array($matches[1], $installed) )
+                               {
+                                       $candidates[] = preg_replace("#^NP_#", "", $matches[1]);
+                               }
+                       }
+               }
+               $this->newPlugCandidates = $candidates;
+               return (count($candidates) > 0);
+       }
+       
+       /**
+        * AdminActions::pagehead()
+        * Output admin page head
+        *
+        * @param       void
+        * @return      void
+        */
+       public function parse_pagehead()
+       {
+               global $member, $nucleus, $CONF, $manager;
+               
+               /* HTTP 1.1 application for no caching */
+               header("Cache-Control: no-cache, must-revalidate");
+               header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
+               
+               $content = $this->parser->skin->getContentFromDB('pagehead');
+               if ( !$content )
+               {
+                       $root_element = 'html';
+                       $charset = i18n::get_current_charset();
+                       $locale = preg_replace('#_#', '-', i18n::get_current_locale());
+                       $xml_version_info = '1.0';
+                       $formal_public_identifier = '-//W3C//DTD XHTML 1.0 Strict//EN';
+                       $system_identifier = 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd';
+                       $xhtml_namespace = 'http://www.w3.org/1999/xhtml';
+                       
+                       $content = "<?xml version=\"{$xml_version_info}\" encoding=\"{$charset}\" ?>\n"
+                                 . "<!DOCTYPE {$root_element} PUBLIC \"{$formal_public_identifier}\" \"{$system_identifier}\">\n"
+                                 . "<{$root_element} xmlns=\"{$xhtml_namespace}\" xml:lang=\"{$locale}\" lang=\"{$locale}\">\n"
+                                 . "<head>\n"
+                                 . "<title><%sitevar(name)%> - Admin</title>\n"
+                                 . "<script type=\"text/javascript\" src=\"<%skinfile(/javascripts/edit.js)%>\"></script>"
+                                 . "<script type=\"text/javascript\" src=\"<%skinfile(/javascripts/admin.js)%>\"></script>"
+                                 . "<script type=\"text/javascript\" src=\"<%skinfile(/javascripts/compatibility.js)%>\"></script>"
+                                 . "<%extrahead%>"
+                                 . "</head>"
+                                 . "<body>"
+                                 . "<div id=\"adminwrapper\">"
+                                 . "<div class=\"header\">"
+                                 . "<h1><%sitevar(name)%></h1>"
+                                 . "</div>"
+                                 . "<div id=\"container\">"
+                                 . "<div id=\"content\">"
+                                 . "<div class=\"loginname\">"
+                                 . "<link rel=\"stylesheet\" title=\"Nucleus Admin Default\" type=\"text/css\" href=\"<%skinfile(admin/defaultadmin/styles/addedit.css%>\" />\n"
+                                 . "<script type=\"text/javascript\" src=\"<%skinfile(/javascripts/edit.js)%>\"></script>\n"
+                                 . "<script type=\"text/javascript\" src=\"<%skinfile(/javascripts/admin.js)%>\"></script>\n"
+                                 . "<script type=\"text/javascript\" src=\"<%skinfile(/javascripts/compatibility.js)%>\"></script>\n"
+                                 . "<%extrahead%>\n"
+                                 . "</head>\n"
+                                 . "\n"
+                                 . "<body>\n"
+                                 . "<div id=\"adminwrapper\">\n"
+                                 . "<div class=\"header\">\n"
+                                 . "<h1><%sitevar(name)%></h1>\n"
+                                 . "</div>\n"
+                                 . "<div id=\"container\">\n"
+                                 . "<div id=\"content\">\n"
+                                 . "<div class=\"loginname\">\n"
+                                 . "<%if(loggedin)%>"
+                                 . "<%text(_LOGGEDINAS)%> <%member(yourrealname)%> - <a href=\"<%adminurl%>index.php?action=logout\"><%text(_LOGOUT)%></a><br />"
+                                 . "<a href=\"<%adminurl%>index.php?action=overview\"><%text(_ADMINHOME)%></a> - "
+                                 . "<%else%>"
+                                 . "<a href=\"<%adminurl%>index.php?action=showlogin\" title=\"Log in\"><%text(_NOTLOGGEDIN)%></a><br />"
+                                 . "<%endif%>"
+                                 . "<a href=\"<%sitevar(url)%>\"><%text(_YOURSITE)%></a><br />"
+                                 . "("
+                                 . "<%if(superadmin)%>"
+                                 . "<a href=\"<%versioncheckurl%>\" title=\"<%text(_ADMIN_SYSTEMOVERVIEW_VERSIONCHECK_TITLE)%>\"><%version%><%codename%></a>"
+                                 . "<%newestcompare%><%else%><%version%><%codename%>"
+                                 . "<%endif%>"
+                                 . ")"
+                                 . "</div>";
+               }
+               
+               $this->parser->parse($content);
+               return;
+       }
+       
+       /**
+        * AdminActionss::pagefoot()
+        * Output admin page foot include quickmenu
+        *
+        * @param       void
+        * @return      void
+        */
+       public function parse_pagefoot()
+       {
+               global $action, $member, $manager, $blogid;
+
+               $data = array('action' => Admin::$action);
+               $manager->notify('AdminPrePageFoot', $data);
+               
+               $content = $this->parser->skin->getContentFromDB('pagefoot');
+               if ( !$content )
+               {
+                       $content = "<%if(loggedin)%>"
+                                . "<%ifnot(adminaction,showlogin)%>"
+                                . "<h2><%text(_LOGOUT)%></h2>"
+                                . "<ul>"
+                                . "<li><a href=\"<%adminurl%>index.php?action=overview\"><%text(_BACKHOME)%></a></li>"
+                                . "<li><a href=\"<%adminurl%>index.php?action=logout\"><%text(_LOGOUT)%></a></li>"
+                                . "</ul>"
+                                . "<%endif%>"
+                                . "<%endif%>"
+                                . "<div class=\"foot\">"
+                                . "<a href=\"<%text(_ADMINPAGEFOOT_OFFICIALURL)%>\">Nucleus CMS</a> &copy; 2002- <%date(%Y)%> <%text(_ADMINPAGEFOOT_COPYRIGHT)%>"
+                                . " - <a href=\"<%text(_ADMINPAGEFOOT_DONATEURL)%>\"><%text(_ADMINPAGEFOOT_DONATE)%></a>"
+                                . "</div>"
+                                . "</div>"
+                                . "<!-- content -->"
+                                . "<div id=\"quickmenu\">"
+                                . "<%if(loggedin)%>"
+                                . "<%ifnot(adminaction,showlogin)%>"
+                                . "<ul>"
+                                . "<li><a href=\"<%adminurl%>index.php?action=overview\"><%text(_QMENU_HOME)%></a></li>"
+                                . "</ul>"
+                                . "<h2><%text(_QMENU_ADD)%></h2>"
+                                . "<form method=\"get\" action=\"<%adminurl%>index.php\">"
+                                . "<div>"
+                                . "<input type=\"hidden\" name=\"action\" value=\"createitem\" />"
+                                . "<%qmenuaddselect(admin/default)%>"
+                                . "</div>"
+                                . "</form>"
+                                . "<h2><%member(yourrealname)%></h2>"
+                                . "<ul>"
+                                . "<li><a href=\"<%adminurl%>index.php?action=editmembersettings\"><%text(_QMENU_USER_SETTINGS)%></a></li>"
+                                . "<li><a href=\"<%adminurl%>index.php?action=browseownitems\"><%text(_QMENU_USER_ITEMS)%></a></li>"
+                                . "<li><a href=\"<%adminurl%>index.php?action=browseowncomments\"><%text(_QMENU_USER_COMMENTS)%></a></li>"
+                                . "</ul>"
+                                . "<%if(superadmin)%>"
+                                . "<h2><%text(_QMENU_MANAGE)%></h2>"
+                                . "<ul>"
+                                . "<li><a href=\"<%adminurl%>index.php?action=actionlog\"><%text(_QMENU_MANAGE_LOG)%></a></li>"
+                                . "<li><a href=\"<%adminurl%>index.php?action=settingsedit\"><%text(_QMENU_MANAGE_SETTINGS)%></a></li>"
+                                . "<li><a href=\"<%adminurl%>index.php?action=systemoverview\"><%text(_QMENU_MANAGE_SYSTEM)%></a></li>"
+                                . "<li><a href=\"<%adminurl%>index.php?action=usermanagement\"><%text(_QMENU_MANAGE_MEMBERS)%></a></li>"
+                                . "<li><a href=\"<%adminurl%>index.php?action=createnewlog\"><%text(_QMENU_MANAGE_NEWBLOG)%></a></li>"
+                                . "<li><a href=\"<%adminurl%>index.php?action=backupoverview\"><%text(_QMENU_MANAGE_BACKUPS)%></a></li>"
+                                . "<li><a href=\"<%adminurl%>index.php?action=pluginlist\"><%text(_QMENU_MANAGE_PLUGINS)%></a></li>"
+                                . "</ul>"
+                                . "<h2><%text(_QMENU_LAYOUT)%></h2>"
+                                . "<ul>"
+                                . "<li><a href=\"<%adminurl%>index.php?action=skinoverview\"><%text(_QMENU_LAYOUT_SKINS)%></a></li>"
+                                . "<li><a href=\"<%adminurl%>index.php?action=templateoverview\"><%text(_QMENU_LAYOUT_TEMPL)%></a></li>"
+                                . "<li><a href=\"<%adminurl%>index.php?action=skinieoverview\"><%text(_QMENU_LAYOUT_IEXPORT)%></a></li>"
+                                . "</ul>"
+                                . "<h2><%text(_SKINABLEADMIN_QMENU_LAYOUT)%></h2>"
+                                . "<ul>"
+                                . "<li><a href=\"<%adminurl%>index.php?action=adminskinoverview\"><%text(_QMENU_LAYOUT_SKINS)%></a></li>"
+                                . "<li><a href=\"<%adminurl%>index.php?action=admintemplateoverview\"><%text(_QMENU_LAYOUT_TEMPL)%></a></li>"
+                                . "<li><a href=\"<%adminurl%>index.php?action=adminskinieoverview\"><%text(_QMENU_LAYOUT_IEXPORT)%></a></li>"
+                                . "</ul>"
+                                . "<%endif%>"
+                                . "<%quickmenu(admin/default)%>"
+                                . "<%endif%>"
+                                . "<%elseif(adminaction,activate)%>"
+                                . "<h2><%text(_QMENU_ACTIVATE)%></h2>"
+                                . "<%text(_QMENU_ACTIVATE_TEXT)%>"
+                                . "<%elseif(adminaction,activatesetpwd)%>"
+                                . "<h2><%text(_QMENU_ACTIVATE)%></h2><%text(_QMENU_ACTIVATE_TEXT)%>"
+                                . "<%else%>"
+                                . "<h2><%text(_QMENU_INTRO)%></h2><%text(_QMENU_INTRO_TEXT)%>"
+                                . "<%endif%>"
+                                . "</div>"
+                                . "<!-- content / quickmenu container -->"
+                                . "<div class=\"clear\"></div>"
+                                . "<!-- new -->"
+                                . "</div>"
+                                . "<!-- adminwrapper -->"
+                                . "<!-- new -->"
+                                . "</div>"
+                                . "<!-- new -->"
+                                . "<p style=\"text-align:right;\"><%benchmark%></p>"
+                                . "</body>"
+                                . "</html>";
+               }
+               
+               $this->parser->parse($content);
+               return;
+       }
+       /**
+        * AdminActions::selectBlog()
+        * Inserts a HTML select element with choices for all blogs to which the user has access
+        *      mode = 'blog' => shows blognames and values are blogids
+        *      mode = 'category' => show category names and values are catids
+        *
+        * @param       string  $name
+        * @param       string  $mode
+        * @param       integer $selected
+        * @param       integer $tabindex
+        * @param       integer $showNewCat
+        * @param       integer $iForcedBlogInclude     ID for weblog always included
+        * @param $iForcedBlogInclude
+        *      ID of a blog that always needs to be included, without checking if the
+        *      member is on the blog team (-1 = none)
+        * @return      void
+        */
+       private function selectBlog($name, $mode='blog', $selected = 0, $tabindex = 0, $showNewCat = 0, $iForcedBlogInclude = -1)
+       {
+               global $member, $CONF;
+               
+               // 0. get IDs of blogs to which member can post items (+ forced blog)
+               $aBlogIds = array();
+               if ( $iForcedBlogInclude != -1 )
+               {
+                       $aBlogIds[] = intval($iForcedBlogInclude);
+               }
+               
+               if ( $member->isAdmin() && array_key_exists('ShowAllBlogs', $CONF) && $CONF['ShowAllBlogs'] )
+               {
+                       $query =  "SELECT bnumber FROM %s ORDER BY bname;";
+                       $query = sprintf($query, sql_table('blog'));
+               }
+               else
+               {
+                       $query =  "SELECT bnumber FROM %s, %s WHERE tblog=bnumber AND tmember=%d;";
+                       $query = sprintf($query, sql_table('blog'), sql_table('team'), (integer) $member->getID());
+               }
+               
+               $rblogids = DB::getResult($query);
+               foreach ( $rblogids as $row )
+               {
+                       if ( $row['bnumber'] != $iForcedBlogInclude )
+                       {
+                               $aBlogIds[] = intval($row['bnumber']);
+                       }
+               }
+               
+               if ( count($aBlogIds) == 0 )
+               {
+                       return;
+               }
+               
+               echo "<select name=\"{$name}\" tabindex=\"{$tabindex}\">\n";
+               
+               // 1. select blogs (we'll create optiongroups)
+               // (only select those blogs that have the user on the team)
+               $queryBlogs = "SELECT bnumber, bname FROM %s WHERE bnumber in (%s) ORDER BY bname;";
+               $queryBlogs = sprintf($queryBlogs, sql_table('blog'), implode(',', $aBlogIds));
+               $blogs = DB::getResult($queryBlogs);
+               
+               if ( $mode == 'category' )
+               {
+                       if ( $blogs->rowCount() > 1 )
+                       {
+                               $multipleBlogs = 1;
+                       }
+                       foreach ( $blogs as $rBlog )
+                       {
+                               if ( isset($multipleBlogs) && !empty($multipleBlogs) )
+                               {
+                                       echo '<optgroup label="' . Entity::hsc($rBlog['bname']) . "\">\n";
+                               }
+                               
+                               // show selection to create new category when allowed/wanted
+                               if ( $showNewCat )
+                               {
+                                       // check if allowed to do so
+                                       if ( $member->blogAdminRights($rBlog['bnumber']) )
+                                       {
+                                               echo '<option value="newcat-' . $rBlog['bnumber'] . '">' . _ADD_NEWCAT . "</option>\n";
+                                       }
+                               }
+                               
+                               // 2. for each category in that blog
+                               $catQuery = "SELECT cname, catid FROM %s WHERE cblog=%d ORDER BY cname ASC;";
+                               $catQuery = sprintf($catQuery, sql_table('category'), (integer) $rBlog['bnumber']);
+                               $categories = DB::getResult($catQuery);
+                               foreach ( $categories as $rCat )
+                               {
+                                       if ( $rCat['catid'] == $selected )
+                                       {
+                                               $selectText = ' selected="selected" ';
+                                       }
+                                       else
+                                       {
+                                               $selectText = '';
+                                       }
+                                       echo '<option value="' . $rCat['catid'] . '" ' . $selectText . '>' . Entity::hsc($rCat['cname']) . "</option>\n";
+                               }
+                               
+                               if ( isset($multipleBlogs) && !empty($multipleBlogs) )
+                               {
+                                       echo '</optgroup>';
+                               }
+                       }
+               }
+               else
+               {
+                       foreach ( $blogs as $rBlog )
+                       {
+                               echo '<option value="' . $rBlog['bnumber'] . '"';
+                               if ( $rBlog['bnumber'] == $selected )
+                               {
+                                       echo '<option value="' . $rBlog['bnumber'] . '" selected="selected">' . Entity::hsc($rBlog['bname']) . "</option>\n";
+                               }
+                               else
+                               {
+                                       echo '<option value="' . $rBlog['bnumber'] . '">' . Entity::hsc($rBlog['bname']) . "</option>\n";
+                               }
+                       }
+               }
+               echo "</select>\n";
+               return;
+       }
+}
index cd8f8cf..27f7af6 100644 (file)
@@ -1,3 +1,4 @@
+<<<<<<< HEAD
 <?php\r
 /*\r
  * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)\r
@@ -125,3 +126,115 @@ class BanInfo
                return;\r
        }\r
 }\r
+=======
+<?php
+/*
+ * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)
+ * Copyright (C) 2002-2009 The Nucleus Group
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * (see nucleus/documentation/index.html#license for more info)
+ */
+/**
+ * PHP class responsible for ban-management.
+ *
+ * @license http://nucleuscms.org/license.txt GNU General Public License
+ * @copyright Copyright (C) 2002-2009 The Nucleus Group
+ * @version $Id: BAN.php 1812 2012-05-01 14:59:07Z sakamocchi $
+ */
+
+class Ban
+{
+       /**
+        * Checks if a given IP is banned from commenting/voting
+        *
+        * Returns 0 when not banned, or a BanInfo object containing the
+        * message and other information of the ban
+        */
+       public function isBanned($blogid, $ip)
+       {
+               $blogid = intval($blogid);
+               $query = sprintf('SELECT * FROM %s WHERE blogid=%d', sql_table('ban'), intval($blogid));
+               $res = DB::getResult($query);
+               foreach ( $res as $row )
+               {
+                       $found = i18n::strpos ($ip, $row['iprange']);
+                       if ( $found !== false )
+                       {
+                               // found a match!
+                               return new BanInfo($row['iprange'], $row['reason']);
+                       }
+               }
+               return 0;
+       }
+
+       /**
+        * Ban::addBan()
+        * Adds a new ban to the banlist. Returns 1 on success, 0 on error
+        * 
+        * @param       Integer $blogid ID for weblog
+        * @param       String  $iprange        IP range
+        * @param       String  $reason reason for banning
+        * @return      Boolean
+        * 
+        */
+       public function addBan($blogid, $iprange, $reason)
+       {
+               global $manager;
+
+               $data = array(
+                               'blogid'        => $blogid,
+                               'iprange'       => &$iprange,
+                               'reason'        => &$reason
+                       );
+               $manager->notify('PreAddBan', $data);
+               
+               $query = 'INSERT INTO %s (blogid, iprange, reason) VALUES (%d, %s, %s)';
+               $query = sprintf($query, sql_table('ban'), intval($blogid), DB::quoteValue($iprange), DB::quoteValue($reason));
+               $res = DB::execute($query);
+               
+               $manager->notify('PostAddBan', $data);
+               
+               return $res !== FALSE ? 1 : 0;
+       }
+       
+       /**
+        * Removes a ban from the banlist (correct iprange is needed as argument)
+        * Returns 1 on success, 0 on error
+        */
+       public function removeBan($blogid, $iprange)
+       {
+               global $manager;
+               
+               $data = array(
+                       'blogid'        => $blogid,
+                       'range'         => $iprange
+               );
+               $manager->notify('PreDeleteBan', $data);
+               
+               $query = 'DELETE FROM %s WHERE blogid=%d and iprange=%s';
+               $query = sprintf($query, sql_table('ban'), intval($blogid), DB::quoteValue($iprange));
+               $res = DB::execute($query);
+               
+               $manager->notify('PostDeleteBan', $data);
+               
+               return $res !== FALSE ? 1 : 0;
+       }
+}
+
+class BanInfo
+{
+       public $iprange;
+       public $message;
+       
+       public function __construct($iprange, $message)
+       {
+               $this->iprange = $iprange;
+               $this->message = $message;
+               return;
+       }
+}
+>>>>>>> skinnable-master
index f0f91a5..bede7bd 100644 (file)
@@ -1,3 +1,4 @@
+<<<<<<< HEAD
 <?php\r
 \r
 /*\r
@@ -1916,3 +1917,1933 @@ class Blog
                return;\r
        }\r
 }\r
+=======
+<?php
+
+/*
+ * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)
+ * Copyright (C) 2002-2012 The Nucleus Group
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * (see nucleus/documentation/index.html#license for more info)
+ */
+/**
+ * A class representing a blog and containing functions to get that blog shown
+ * on the screen
+ *
+ * @license http://nucleuscms.org/license.txt GNU General Public License
+ * @copyright Copyright (C) 2002-2009 The Nucleus Group
+ * @version $Id: BLOG.php 1624 2012-01-09 11:36:20Z sakamocchi $
+ */
+
+if ( !function_exists('requestVar') ) exit;
+require_once dirname(__FILE__) . '/ITEMACTIONS.php';
+
+class Blog
+{
+       // blog id
+       public $blogid;
+
+       // After creating an object of the blog class, contains true if the BLOG object is
+       // valid (the blog exists)
+       public $isValid;
+
+       // associative array, containing all blogsettings (use the get/set functions instead)
+       private $settings;
+       
+       // ID of currently selected category
+       private $selectedcatid;
+
+       /**
+        * Blog::_\construct()
+        * Creates a new BLOG object for the given blog
+        *
+        * @param       integer $id     blogid
+        * @return      void
+        */
+       public function __construct($id)
+       {
+               global $catid;
+               
+               $this->blogid = (integer) $id;
+               $this->readSettings();
+               $this->setSelectedCategory($catid);
+               return;
+       }
+       
+       /**
+        * Blog::readLog()
+        * Shows the given amount of items for this blog
+        *
+        * @param       string  $template       String representing the template _NAME_ (!)
+        * @param       integer $amountEntries  amount of entries to show
+        * @param       integer $startpos       offset from where items should be shown (e.g. 5 = start at fifth item)
+        * @return      integer amount of items shown
+        */
+       public function readLog($template, $amountEntries, $offset = 0, $startpos = 0)
+       {
+               return $this->readLogAmount($template,$amountEntries,'','',1,1,$offset, $startpos);
+       }
+       
+       /**
+        * Blog::showArchive()
+        * Shows an archive for a given month
+        *
+        * @param       integer $year           year
+        * @param       integer $month          month
+        * @param       string  $template       String representing the template name to be used
+        * @return      void
+        */
+       public function showArchive($templatename, $year, $month=0, $day=0)
+       {
+               // create extra where clause for select query
+               if ( $day == 0 && $month != 0 )
+               {
+                       $timestamp_start = mktime(0,0,0,$month,1,$year);
+                       // also works when $month==12
+                       $timestamp_end = mktime(0,0,0,$month+1,1,$year);
+               }
+               elseif ( $month == 0 )
+               {
+                       $timestamp_start = mktime(0,0,0,1,1,$year);
+                       // also works when $month==12
+                       $timestamp_end = mktime(0,0,0,12,31,$year);
+               }
+               else
+               {
+                       $timestamp_start = mktime(0,0,0,$month,$day,$year);
+                       $timestamp_end = mktime(0,0,0,$month,$day+1,$year);
+               }
+               $extra_query = " and i.itime>=%s and i.itime<%s";
+               $extra_query = sprintf($extra_query, DB::formatDateTime($timestamp_start), DB::formatDateTime($timestamp_end));
+               
+               $this->readLogAmount($templatename,0,$extra_query,'',1,1);
+               return;
+       }
+       
+       /**
+        * Blog::setSelectedCategory()
+        * Sets the selected category by id (only when category exists)
+        * 
+        * @param       integer $catid  ID for category
+        * @return      void
+        */
+       public function setSelectedCategory($catid)
+       {
+               if ( $this->isValidCategory($catid) || (intval($catid) == 0) )
+               {
+                       $this->selectedcatid = intval($catid);
+               }
+               return;
+       }
+       
+       /**
+        * Blog::setSelectedCategoryByName()
+        * Sets the selected category by name
+        * 
+        * @param       string  $catname        name of category
+        * @return      void
+        */
+       public function setSelectedCategoryByName($catname)
+       {
+               $this->setSelectedCategory($this->getCategoryIdFromName($catname));
+               return;
+       }
+       
+       /**
+        * Blog::getSelectedCategory()
+        * Returns the selected category
+        * 
+        * @param       void
+        * @return      integer
+        */
+       public function getSelectedCategory()
+       {
+               return $this->selectedcatid;
+       }
+       
+       /**
+        * Shows the given amount of items for this blog
+        *
+        * @param       string  $template               string representing the template _NAME_ (!)
+        * @param       integer $amountEntries  amount of entries to show (0 = no limit)
+        * @param       string  $extraQuery             extra conditions to be added to the query
+        * @param       string  $highlight              contains a query that should be highlighted
+        * @param       integer $comments               1=show comments 0=don't show comments
+        * @param       integer $dateheads              1=show dateheads 0=don't show dateheads
+        * @param       integer $offset                 offset
+        * @return      integer amount of items shown
+        */
+       private function readLogAmount($template, $amountEntries, $extraQuery, $highlight, $comments, $dateheads, $offset = 0, $startpos = 0)
+       {
+               $query = $this->getSqlBlog($extraQuery);
+               
+               if ( $amountEntries > 0 )
+               {
+                       // $offset zou moeten worden:
+                       // (($startpos / $amountentries) + 1) * $offset ... later testen ...
+                       $query .= ' LIMIT ' . intval($startpos + $offset).',' . intval($amountEntries);
+               }
+               return $this->showUsingQuery($template, $query, $highlight, $comments, $dateheads);
+       }
+       
+       /**
+        * Blog::showUsingQuery()
+        * Do the job for readLogAmmount
+        * 
+        * @param       string  $templateName   template name
+        * @param       string  $query                  string for query
+        * @param       string  $highlight              string to be highlighted
+        * @param       integer $comments               the number of comments
+        * @param       boolean $dateheads              date header is needed or not
+        * @return      integer the number of rows as a result of mysql query
+        */
+       private function showUsingQuery($templateName, $query, $highlight = '', $comments = 0, $dateheads = 1)
+       {
+               global $CONF, $manager, $currentTemplateName;
+               
+               $lastVisit = cookieVar($CONF['CookiePrefix'] .'lastVisit');
+               if ( $lastVisit != 0 )
+               {
+                       $lastVisit = $this->getCorrectTime($lastVisit);
+               }
+               
+               // set templatename as global variable (so plugins can access it)
+               $currentTemplateName = $templateName;
+               $template =& $manager->getTemplate($templateName);
+               
+               // create parser object & action handler
+               $handler = new ItemActions($this);
+               $handler->setTemplate($template);
+               $handler->setHighlight($highlight);
+               $handler->setLastVisit($lastVisit);
+               $handler->setShowComments($comments);
+               
+               $parser = new Parser($handler);
+               
+               // execute query
+               $items = DB::getResult($query);
+               
+               // loop over all items
+               $old_date = 0;
+               foreach ( $items as $item )
+               {
+                       // string timestamp -> unix timestamp
+                       $item['timestamp'] = strtotime($item['itime']);
+                       
+                       // action handler needs to know the item we're handling
+                       $handler->setCurrentItem($item);
+                       
+                       // add date header if needed
+                       if ( $dateheads )
+                       {
+                               $new_date = date('dFY', $item['timestamp']);
+                               if ( $new_date != $old_date )
+                               {
+                                       // unless this is the first time, write date footer
+                                       $timestamp = $item['timestamp'];
+                                       if ( $old_date != 0 )
+                                       {
+                                               $oldTS = strtotime($old_date);
+                                               $data = array('blog' => &$this, 'timestamp' => $oldTS);
+                                               $manager->notify('PreDateFoot', $data);
+                                               
+                                               if ( !in_array('DATE_FOOTER', $template) || empty($template['DATE_FOOTER']) )
+                                               {
+                                                       $tmp_footer = '';
+                                               }
+                                               else
+                                               {
+                                                       $tmp_footer = i18n::formatted_datetime($template['DATE_FOOTER'], $oldTS);
+                                               }
+                                               $parser->parse($tmp_footer);
+                                               $manager->notify('PostDateFoot', $data);
+                                       }
+                                       
+                                       $data = array('blog' => &$this, 'timestamp' => $timestamp);
+                                       $manager->notify('PreDateHead', $data);
+                                       
+                                       // note, to use templatvars in the dateheader, the %-characters need to be doubled in
+                                       // order to be preserved by strftime
+                                       if ( !in_array('DATE_HEADER', $template) || empty($template['DATE_HEADER']) )
+                                       {
+                                               $tmp_header = '';
+                                       }
+                                       else
+                                       {
+                                               $tmp_header = i18n::formatted_datetime($template['DATE_HEADER'], $timestamp);
+                                       }
+                                       $parser->parse($tmp_header);
+                                       $manager->notify('PostDateHead', $data);
+                               }
+                               $old_date = $new_date;
+                       }
+                       
+                       // parse item
+                       $parser->parse($template['ITEM_HEADER']);
+                       $data = array('blog' => &$this, 'item' => &$item);
+                       $manager->notify('PreItem', $data);
+                       $parser->parse($template['ITEM']);
+                       $manager->notify('PostItem', $data);
+                       $parser->parse($template['ITEM_FOOTER']);
+               }
+               
+               $numrows = $items->rowCount();
+               
+               // add another date footer if there was at least one item
+               if ( ($numrows > 0) && $dateheads )
+               {
+                       $data = array('blog' => &$this, 'timestamp' => strtotime($old_date));
+                       $manager->notify('PreDateFoot', $data);
+                       $parser->parse($template['DATE_FOOTER']);
+                       $manager->notify('PostDateFoot', $data);
+               }
+               
+               $items->closeCursor();
+               return $numrows;
+       }
+       
+       /**
+        * Blog::showOneitem()
+        * Simplified function for showing only one item
+        * 
+        * @param       integer $itemid         ID for item
+        * @param       array   $template       template for item
+        * @param       string  $highlight      string for highlight
+        * @return      integer 1
+        */
+       public function showOneitem($itemid, $template, $highlight)
+       {
+               $extraQuery = ' and inumber=' . intval($itemid);
+               
+               return $this->readLogAmount($template, 1, $extraQuery, $highlight, 0, 0);
+       }
+       
+       /**
+        * Blog::addItem()
+        * Adds an item to this blog
+        * 
+        * @param       integer         $catid  ID for category
+        * @param       string          $title  ID for 
+        * @param       string          $body   text for body
+        * @param       string          $more   text for more
+        * @param       integer         $blogid ID for blog
+        * @param       integer         $authorid       ID for author
+        * @param       timestamp       $timestamp      UNIX timestamp for post
+        * @param       boolean         $closed opened or closed
+        * @param       boolean         $draft  draft or not
+        * @param       boolean         $posted posted or not
+        * @return      integer ID for added item
+        */
+       function additem($catid, $title, $body, $more, $blogid, $authorid, $timestamp, $closed, $draft, $posted='1')
+       {
+               global $manager;
+               
+               $blogid         = (integer) $blogid;
+               $authorid       = (integer) $authorid;
+               $title          = $title;
+               $body           = $body;
+               $more           = $more;
+               $catid          = intval($catid);
+               
+               // convert newlines to <br />
+               if ( $this->convertBreaks() )
+               {
+                       $body = addBreaks($body);
+                       $more = addBreaks($more);
+               }
+
+               if ( $closed != '1' )
+               {
+                       $closed = '0';
+               }
+               if ( $draft != '0' )
+               {
+                       $draft = '1';
+               }
+               
+               if ( !$this->isValidCategory($catid) )
+               {
+                       $catid = $this->getDefaultCategory();
+               }
+               
+               $isFuture = 0;
+               if ( $timestamp > $this->getCorrectTime() )
+               {
+                       $isFuture = 1;
+               }
+               
+               $timestamp = date('Y-m-d H:i:s',$timestamp);
+
+               $data = array('title' => &$title, 'body' => &$body, 'more' => &$more, 'blog' => $this, 'authorid' => &$authorid, 'timestamp' => &$timestamp, 'closed' => &$closed, 'draft' => &$draft, 'catid' => &$catid);
+               $manager->notify('PreAddItem', $data);
+               
+               $ititle = DB::quoteValue($title);
+               $ibody = DB::quoteValue($body);
+               $imore = DB::quoteValue($more);
+               $timestamp = DB::formatDateTime(strtotime($timestamp));
+               
+               $query = "INSERT INTO %s (ITITLE, IBODY, IMORE, IBLOG, IAUTHOR, ITIME, ICLOSED, IDRAFT, ICAT, IPOSTED) VALUES (%s, %s, %s, %d, %d, %s, %s, %s, %s, %s)";
+               $query = sprintf($query, sql_table('item'), $ititle, $ibody, $imore, $blogid, $authorid, $timestamp, $closed, $draft, $catid, $posted);
+               DB::execute($query);
+               $itemid = DB::getInsertId();
+
+               $data = array('itemid' => $itemid);
+               $manager->notify('PostAddItem', $data);
+               
+               if ( !$draft )
+               {
+                       $this->updateUpdateFile();
+               }
+               // send notification mail
+               if ( !$draft && !$isFuture && $this->getNotifyAddress() && $this->notifyOnNewItem() )
+               {
+                       $this->sendNewItemNotification($itemid, $title, $body);
+               }
+               return $itemid;
+       }
+       
+       /**
+        * Blog::sendNewItemNotification()
+        * Send a new item notification to the notification list
+        * 
+        * @param       string  $itemid ID of the item
+        * @param       string  $title  title of the item
+        * @param       string  $body   body of the item
+        * @return      void
+        */
+       public function sendNewItemNotification($itemid, $title, $body)
+       {
+               global $CONF, $member;
+               
+               $ascii = Entity::anchor_footnoting($body);
+               
+               $message = _NOTIFY_NI_MSG . " \n";
+               $temp = parse_url($CONF['Self']);
+               if ( $temp['scheme'] )
+               {
+                       $message .= Link::create_item_link($itemid) . "\n\n";
+               }
+               else
+               {
+                       $tempurl = $this->getURL();
+                       if ( i18n::substr($tempurl, -1) == '/' || i18n::substr($tempurl, -4) == '.php' )
+                       {
+                               $message .= $tempurl . '?itemid=' . $itemid . "\n\n";
+                       }
+                       else
+                       {
+                               $message .= $tempurl . '/?itemid=' . $itemid . "\n\n";
+                       }
+               }
+               $message .= _NOTIFY_TITLE . ' ' . strip_tags($title) . "\n";
+               $message .= _NOTIFY_CONTENTS . "\n " . $ascii . "\n";
+               $message .= NOTIFICATION::get_mail_footer();
+               
+               $subject = $this->getName() . ': ' . _NOTIFY_NI_TITLE;
+               
+               $from = $member->getNotifyFromMailAddress();
+               
+               NOTIFICATION::mail($this->getNotifyAddress(), $subject, $message, $from, i18n::get_current_charset());
+               return;
+       }
+       
+       /**
+        * Blog::createNewCategory()
+        * Creates a new category for this blog
+        *
+        * @param       string  $catName                name of the new category. When empty, a name is generated automatically (starting with newcat)
+        * @param       string  $catDescription description of the new category. Defaults to 'New Category'
+        * @return      integer ID for new category on success. 0 on failure
+        */
+       public function createNewCategory($catName = '', $catDescription = _CREATED_NEW_CATEGORY_DESC)
+       {
+               global $member, $manager;
+               
+               if ( !$member->blogAdminRights($this->blogid) )
+               {
+                       return 0;
+               }
+               
+               // generate
+               if ( $catName == '' )
+               {
+                       $catName = _CREATED_NEW_CATEGORY_NAME;
+                       $i = 1;
+                       
+                       $res = DB::getResult('SELECT * FROM '.sql_table('category')." WHERE cname='".$catName.$i."' and cblog=".$this->blogid);
+                       while ( $res->rowCount() > 0 )
+                       {
+                               $i++;
+                               $res = DB::getResult('SELECT * FROM '.sql_table('category')." WHERE cname='".$catName.$i."' and cblog=".$this->blogid);
+                       }
+                       
+                       $catName = $catName . $i;
+               }
+               
+               $data = array(
+                       'blog'                  => &$this,
+                       'name'                  => &$catName,
+                       'description'   => $catDescription
+               );
+               $manager->notify('PreAddCategory', $data);
+               
+               $query = "INSERT INTO %s (cblog, cname, cdesc) VALUES (%d, %s, %s)";
+               $query = sprintf($query, sql_table('category'), (integer) $this->blogid, DB::quoteValue($catName), DB::quoteValue($catDescription));
+               DB::execute($query);
+               $catid = DB::getInsertId();
+               
+               $data = array(
+                       'blog'                  => &$this,
+                       'name'                  => $catName,
+                       'description'   => $catDescription,
+                       'catid'                 => $catid
+               );
+               $manager->notify('PostAddCategory', $data);
+               
+               return $catid;
+       }
+       
+       /**
+        * Blog::search()
+        * Searches all months of this blog for the given query
+        *
+        * @param       string  $query                  search query
+        * @param       array   $template               template to be used (__NAME__ of the template)
+        * @param       integer $amountMonths   max amount of months to be search (0 = all)
+        * @param       integer $maxresults             max number of results to show
+        * @param       integer $startpos               offset
+        * @return      amount of hits found
+        */
+       public function search($query, $template, $amountMonths, $maxresults, $startpos) {
+               global $CONF, $manager;
+               
+               $highlight      = '';
+               $sqlquery       = $this->getSqlSearch($query, $amountMonths, $highlight);
+               
+               if ( $sqlquery == '' )
+               {
+                       // no query -> show everything
+                       $extraquery = '';
+                       $amountfound = $this->readLogAmount($template, $maxresults, $extraQuery, $query, 1, 1);
+               }
+               else
+               {
+                       // add LIMIT to query (to split search results into pages)
+                       if ( intval($maxresults > 0) )
+                       {
+                               $sqlquery .= ' LIMIT ' . intval($startpos) . ',' . intval($maxresults);
+                       }
+                       
+                       // show results
+                       $amountfound = $this->showUsingQuery($template, $sqlquery, $highlight, 1, 1);
+                       
+                       // when no results were found, show a message
+                       if ( $amountfound == 0 )
+                       {
+                               $template =& $manager->getTemplate($template);
+                               $vars = array(
+                                       'query'         => Entity::hsc($query),
+                                       'blogid'        => $this->blogid
+                               );
+                               echo Template::fill($template['SEARCH_NOTHINGFOUND'], $vars);
+                       }
+               }
+               return $amountfound;
+       }
+       
+       /**
+        * Blog::getSqlSearch()
+        * Returns an SQL query to use for a search query
+        * No LIMIT clause is added. (caller should add this if multiple pages are requested)
+        *
+        * @param       string  $query                  search query
+        * @param       integer $amountMonths   amount of months to search back. Default = 0 = unlimited
+        * @param       string  $mode                   either empty, or 'count'. In this case, the query will be a SELECT COUNT(*) query
+        * @return      string  $highlight              words to highlight (out parameter)
+        * @return      string  either a full SQL query, or an empty string (if querystring empty)
+        */
+       public function getSqlSearch($query, $amountMonths = 0, &$highlight, $mode = '')
+       {
+               $searchclass = new Search($query);
+               
+               $highlight       = $searchclass->inclusive;
+               
+               // if querystring is empty, return empty string
+               if ( $searchclass->inclusive == '' )
+               {
+                       return '';
+               }
+               
+               $where  = $searchclass->boolean_sql_where('ititle,ibody,imore');
+               $select = $searchclass->boolean_sql_select('ititle,ibody,imore');
+               
+               // get list of blogs to search
+               $blogs          = $searchclass->blogs;  // array containing blogs that always need to be included
+               $blogs[]        = $this->blogid;                // also search current blog (duh)
+               $blogs          = array_unique($blogs); // remove duplicates
+               $selectblogs = '';
+               if ( count($blogs) > 0 )
+               {
+                       $selectblogs = ' and i.iblog in (' . implode(',', $blogs) . ')';
+               }
+               
+               if ( $mode == '' )
+               {
+                       $query = 'SELECT i.inumber as itemid, i.ititle as title, i.ibody as body, i.itime, i.imore as more, i.icat as catid, i.iclosed as closed,
+                               m.mname as author, m.mrealname as authorname, m.mnumber as authorid, m.memail as authormail, m.murl as authorurl,
+                               c.cname as category';
+                       
+                       if ( $select )
+                       {
+                               $query .= ', '.$select. ' as score ';
+                       }
+               }
+               else
+               {
+                       $query = 'SELECT COUNT(*) as result ';
+               }
+               
+               $query .= ' FROM '.sql_table('item').' as i, '.sql_table('member').' as m, '.sql_table('category').' as c'
+                               . ' WHERE i.iauthor=m.mnumber'
+                               . ' and i.icat=c.catid'
+                               // exclude drafts
+                               . ' and i.idraft=0'
+                               . $selectblogs
+                                       // don't show future items
+                               . ' and i.itime<=' . DB::formatDateTime($this->getCorrectTime())
+                               . ' and '.$where;
+               
+               // take into account amount of months to search
+               if ( $amountMonths > 0 )
+               {
+                       $localtime = getdate($this->getCorrectTime());
+                       $timestamp_start = mktime(0,0,0,$localtime['mon'] - $amountMonths,1,$localtime['year']);
+                       $query .= ' and i.itime>' . DB::formatDateTime($timestamp_start);
+               }
+               
+               if ( $mode == '' )
+               {
+                       if ( $select )
+                       {
+                               $query .= ' ORDER BY score DESC';
+                       }
+                       else
+                       {
+                               $query .= ' ORDER BY i.itime DESC ';
+                       }
+               }
+               
+               return $query;
+       }
+       
+       /**
+        * Blog::getSqlBlog()
+        * Returns the SQL query that's normally used to display the blog items on the index type skins
+        * No LIMIT clause is added. (caller should add this if multiple pages are requested)
+        *
+        * @param       string  $extraQuery     extra query string
+        * @param       string  $mode           either empty, or 'count'. In this case, the query will be a SELECT COUNT(*) query
+        * @return      string  either a full SQL query, or an empty string
+        */
+       public function getSqlBlog($extraQuery, $mode = '')
+       {
+               if ( $mode == '' )
+               {
+                       $query = 'SELECT i.inumber as itemid, i.ititle as title, i.ibody as body, m.mname as author,
+                               m.mrealname as authorname, i.itime, i.imore as more, m.mnumber as authorid, m.memail as authormail,
+                               m.murl as authorurl, c.cname as category, i.icat as catid, i.iclosed as closed';
+               }
+               else
+               {
+                       $query = 'SELECT COUNT(*) as result ';
+               }
+               
+               $query  .= ' FROM '.sql_table('item').' as i, '.sql_table('member').' as m, '.sql_table('category').' as c'
+                               . ' WHERE i.iblog='.$this->blogid
+                               . ' and i.iauthor=m.mnumber'
+                               . ' and i.icat=c.catid'
+                               . ' and i.idraft=0' // exclude drafts
+                               . ' and i.itime<=' . DB::formatDateTime($this->getCorrectTime()); // don't show future items
+               
+               if ( $this->selectedcatid )
+               {
+                       $query .= ' and i.icat=' . $this->selectedcatid . ' ';
+               }
+               
+               $query .= $extraQuery;
+               
+               if ( $mode == '' )
+               {
+                       $query .= ' ORDER BY i.itime DESC';
+               }
+               return $query;
+       }
+       
+       /**
+        * Blog::showArchiveList()
+        * Shows the archivelist using the given template
+        * 
+        * @param       string  $template       template name
+        * @param       string  $mode   year/month/day
+        * @param       integer $limit  limit of record count
+        * @return      void
+        */
+       public function showArchiveList($template, $mode = 'month', $limit = 0)
+       {
+               global $CONF, $catid, $manager;
+               
+               if ( !isset ($linkparams) )
+               {
+                       $linkparams = array();
+               }
+               
+               if ( $catid )
+               {
+                       $linkparams = array('catid' => $catid);
+               }
+               
+               $template =& $manager->getTemplate($template);
+               $listitem['blogid'] = $this->blogid;
+               
+               if ( !array_key_exists('ARCHIVELIST_HEADER', $template) || !$template['ARCHIVELIST_HEADER'] )
+               {
+                       $tplt = '';
+               }
+               else
+               {
+                       $tplt = $template['ARCHIVELIST_HEADER'];
+               }
+               
+               echo Template::fill($tplt, $listitem);
+               
+               $query = 'SELECT itime, SUBSTRING(itime,1,4) AS Year, SUBSTRING(itime,6,2) AS Month, SUBSTRING(itime,9,2) AS Day'
+                               . ' FROM '.sql_table('item')
+                               . ' WHERE iblog=' . $this->blogid
+                               . ' AND itime <=' . DB::formatDateTime($this->getCorrectTime()) // don't show future items!
+                               . ' AND idraft=0'; // don't show draft items
+               
+               if ( $catid )
+               {
+                       $query .= ' and icat=' . intval($catid);
+               }
+               
+               $query .= ' GROUP BY Year';
+               if ( $mode == 'month' || $mode == 'day' )
+               {
+                       $query .= ', Month';
+               }
+               if ( $mode == 'day' )
+               {
+                       $query .= ', Day';
+               }
+               
+               $query .= ' ORDER BY itime DESC';
+               
+               if ( $limit > 0 )
+               {
+                       $query .= ' LIMIT ' . intval($limit);
+               }
+               
+               $res = DB::getResult($query);
+               foreach ( $res as $current )
+               {
+                       /* string time -> unix timestamp */
+                       $current['itime'] = strtotime($current['itime']);
+                       
+                       if ( $mode == 'day' )
+                       {
+                               $archivedate = date('Y-m-d',$current['itime']);
+                               $archive['day'] = date('d',$current['itime']);
+                               $listitem['day'] = date('d',$current['itime']);
+                               $listitem['month'] = date('m',$current['itime']);
+                               $archive['month'] = $listitem['month'];
+                       }
+                       elseif ( $mode == 'year' )
+                       {
+                               $archivedate = date('Y',$current['itime']);
+                               $listitem['day'] = '';
+                               $listitem['month'] = '';
+                               $archive['day'] = '';
+                               $archive['month'] = '';
+                       }
+                       else
+                       {
+                               $archivedate = date('Y-m',$current['itime']);
+                               $listitem['month'] = date('m',$current['itime']);
+                               $archive['month'] = $listitem['month'];
+                               $listitem['day'] = '';
+                               $archive['day'] = '';
+                       }
+                       
+                       $listitem['year'] = date('Y',$current['itime']);
+                       $archive['year'] = $listitem['year'];
+                       $listitem['archivelink'] = Link::create_archive_link($this->blogid,$archivedate,$linkparams);
+
+                       $data = array('listitem' => &$listitem);
+                       $manager->notify('PreArchiveListItem', $data);
+                       
+                       $temp = Template::fill($template['ARCHIVELIST_LISTITEM'],$listitem);
+                       echo i18n::formatted_datetime($temp, $current['itime']);
+                       return;
+               }
+               
+               $res->closeCursor();
+               
+               if ( !array_key_exists('ARCHIVELIST_FOOTER', $template) || !$template['ARCHIVELIST_FOOTER'] )
+               {
+                       $tplt = '';
+               }
+               else
+               {
+                       $tplt = $template['ARCHIVELIST_FOOTER'];
+               }
+               
+               echo Template::fill($tplt, $listitem);
+               return;
+       }
+       
+       /**
+        * Blog::showCategoryList()
+        * Shows the list of categories using a given template
+        * 
+        * @param       string  $template       Template Name
+        * @return      void
+        */
+       public function showCategoryList($template)
+       {
+               global $CONF, $archive, $archivelist, $manager;
+               
+               /*
+                * determine arguments next to catids
+                * I guess this can be done in a better way, but it works
+                */
+               $linkparams = array();
+               if ( $archive )
+               {
+                       $blogurl = Link::create_archive_link($this->blogid, $archive, '');
+                       $linkparams['blogid'] = $this->blogid;
+                       $linkparams['archive'] = $archive;
+               }
+               else if ( $archivelist )
+               {
+                       $blogurl = Link::create_archivelist_link($this->blogid, '');
+                       $linkparams['archivelist'] = $archivelist;
+               }
+               else
+               {
+                       $blogurl = Link::create_blogid_link($this->blogid, '');
+                       $linkparams['blogid'] = $this->blogid;
+               }
+               
+               $template =& $manager->getTemplate($template);
+               
+               //: Change: Set nocatselected variable
+               if ( $this->selectedcatid )
+               {
+                       $nocatselected = 'no';
+               }
+               else
+               {
+                       $nocatselected = 'yes';
+               } 
+               
+               $args = array(
+                       'blogid'        => $this->blogid,
+                       'blogurl'       => $blogurl,
+                       'self'          => $CONF['Self'],
+                       'catiscurrent'  => $nocatselected, // Change: Set catiscurrent template variable for header
+                       'currentcat'    => $nocatselected 
+               );
+               
+               /* output header of category list item */
+               if ( !array_key_exists('CATLIST_HEADER', $template) || empty($template['CATLIST_HEADER']) )
+               {
+                       echo Template::fill(NULL, $args);
+               }
+               else
+               {
+                       echo Template::fill($template['CATLIST_HEADER'], $args);
+               }
+               
+               $query = "SELECT catid, cdesc as catdesc, cname as catname FROM %s WHERE cblog=%d ORDER BY cname ASC;";
+               $query = sprintf($query, sql_table('category'), (integer) $this->blogid);
+               $res = DB::getResult($query);
+               
+               foreach ( $res as $row )
+               {
+                       $args = array(
+                               'catid' => $row['catid'],
+                               'name'  => $row['catname'],
+                               'extra' => $linkparams
+                       );
+                       
+                       $row['blogid']          = $this->blogid;
+                       $row['blogurl']         = $blogurl;
+                       $row['catlink']         = Link::create_link('category', $args);
+                       $row['self']            = $CONF['Self'];
+                       
+                       // this gives catiscurrent = no when no category is selected.
+                       $row['catiscurrent'] = 'no';
+                       $row['currentcat'] = 'no';
+                       
+                       if ( $this->selectedcatid )
+                       {
+                               if ( $this->selectedcatid == $row['catid'] )
+                               {
+                                       $row['catiscurrent']    = 'yes';
+                                       $row['currentcat']              = 'yes';
+                               }
+                       }
+                       else
+                       {
+                               global $itemid;
+                               if ( (integer) $itemid && $manager->existsItem((integer) $itemid, 0, 0) )
+                               {
+                                       $iobj   =& $manager->getItem($itemid, 0, 0);
+                                       $cid    = $iobj['catid'];
+                                       
+                                       if ( $cid == $row['catid'] )
+                                       {
+                                               $row['catiscurrent']    = 'yes';
+                                               $row['currentcat']              = 'yes';
+                                       }
+                               }
+                       }
+
+                       $data = array('listitem' => &$row);
+                       $manager->notify('PreCategoryListItem', $data);
+                       
+                       if ( !array_key_exists('CATLIST_LISTITEM', $template) || empty($template['CATLIST_LISTITEM']))
+                       {
+                               echo Template::fill(NULL, $row);
+                       }
+                       else
+                       {
+                               echo Template::fill($template['CATLIST_LISTITEM'], $row);
+                       }
+               }
+               
+               $res->closeCursor();
+               
+               $args = array(
+                       'blogid'                => $this->blogid,
+                       'blogurl'               => $blogurl,
+                       'self'                  => $CONF['Self'],
+                       'catiscurrent'  => $nocatselected, //: Change: Set catiscurrent template variable for footer
+                       'currentcat'    => $nocatselected
+               );
+               
+               if ( !array_key_exists('CATLIST_FOOTER', $template) || empty($template['CATLIST_FOOTER']))
+               {
+                       echo Template::fill(NULL, $args);
+               }
+               else
+               {
+                       echo Template::fill($template['CATLIST_FOOTER'], $args);
+               }
+               
+               return;
+       }
+       
+       /**
+        * Blog::showBlogList()
+        * Shows a list of all blogs in the system using a given template
+        * ordered by number, name, shortname or description
+        * in ascending or descending order
+        * 
+        * @param       string  $template       tempalte name
+        * @param       string  $bnametype      bname/bshortname
+        * @param       string  $orderby        string for 'ORDER BY' SQL
+        * @param       string  $direction      ASC/DESC
+        * @return      void
+        */
+       static public function showBlogList($template, $bnametype, $orderby, $direction)
+       {
+               global $CONF, $manager;
+               
+               switch ( $orderby )
+               {
+                       case 'number':
+                               $orderby='bnumber';
+                               break;
+                       case 'name':
+                               $orderby='bname';
+                               break;
+                       case 'shortname':
+                               $orderby='bshortname';
+                               break;
+                       case 'description':
+                               $orderby='bdesc';
+                               break;
+                       default:
+                               $orderby='bnumber';
+                               break;
+               }
+               
+               $direction=strtolower($direction);
+               switch ( $direction )
+               {
+                       case 'asc':
+                               $direction='ASC';
+                               break;
+                       case 'desc':
+                               $direction='DESC';
+                               break;
+                       default:
+                               $direction='ASC';
+                               break;
+               }
+               
+               $template =& $manager->getTemplate($template);
+               
+               if ( array_key_exists('BLOGLIST_HEADER', $template) && !empty($template['BLOGLIST_HEADER']) )
+               {
+                       $vars = array(
+                               'sitename'      => $CONF['SiteName'],
+                               'siteurl'       => $CONF['IndexURL']
+                       );
+                       
+                       echo Template::fill($template['BLOGLIST_HEADER'], $vars);
+               }
+               
+               if ( array_key_exists('BLOGLIST_LISTITEM', $template) && !empty($template['BLOGLIST_LISTITEM']) )
+               {
+                       $query = 'SELECT bnumber, bname, bshortname, bdesc, burl FROM '.sql_table('blog').' ORDER BY '.$orderby.' '.$direction;
+                       $res = DB::getResult($query);
+                       
+                       foreach ( $res as $row )
+                       {
+                               $list = array();
+                               $list['bloglink'] = Link::create_blogid_link($row['bnumber']);
+                               $list['blogdesc'] = $row['bdesc'];
+                               $list['blogurl'] = $row['burl'];
+                               
+                               if ( $bnametype == 'shortname' )
+                               {
+                                       $list['blogname'] = $row['bshortname'];
+                               }
+                               else
+                               {
+                                       /* all other cases */
+                                       $list['blogname'] = $row['bname'];
+                               }
+
+                               $data = array('listitem' => &$list);
+                               $manager->notify('PreBlogListItem', $data);
+                               
+                               echo Template::fill($template['BLOGLIST_LISTITEM'], $list);
+                       }
+                       
+                       $res->closeCursor();
+               }
+               
+               
+               if ( array_key_exists('BLOGLIST_FOOTER', $template) && !empty($template['BLOGLIST_FOOTER']) )
+               {
+                       $vars = array(
+                               'sitename' => $CONF['SiteName'],
+                               'siteurl' => $CONF['IndexURL']
+                       );
+                       echo Template::fill($template['BLOGLIST_FOOTER']);
+               }
+               return;
+       }
+       
+       /**
+        * Blog::readSettings()
+        * Read the blog settings
+        * 
+        * @param       void
+        * @return      void
+        */
+       public function readSettings()
+       {
+               $query =  'SELECT * FROM %s WHERE bnumber=%d;';
+               $query = sprintf($query, sql_table('blog'), (integer) $this->blogid);
+               $res = DB::getResult($query);
+               
+               $this->isValid = ($res->rowCount() > 0);
+               if ( $this->isValid )
+               {
+                       $this->settings = $res->fetch(PDO::FETCH_ASSOC);
+               }
+               return;
+       }
+       
+       /**
+        * Blog::writeSettings()
+        * Write the blog settings
+        */
+       public function writeSettings()
+       {
+               // (can't use floatval since not available prior to PHP 4.2)
+               $offset = $this->getTimeOffset();
+               if ( !is_float($offset) )
+               {
+                       $offset = (integer) $offset;
+               }
+               
+               $query =  'UPDATE '.sql_table('blog')
+                          . ' SET bname=' . DB::quoteValue($this->getName()) . ','
+                          . '     bshortname='. DB::quoteValue($this->getShortName()) . ','
+                          . '     bcomments='. intval($this->commentsEnabled()) . ','
+                          . '     bmaxcomments=' . intval($this->getMaxComments()) . ','
+                          . '     btimeoffset=' . $offset . ','
+                          . '     bpublic=' . intval($this->isPublic()) . ','
+                          . '     breqemail=' . intval($this->emailRequired()) . ','
+                          . '     bconvertbreaks=' . intval($this->convertBreaks()) . ','
+                          . '     ballowpast=' . intval($this->allowPastPosting()) . ','
+                          . '     bnotify=' . DB::quoteValue($this->getNotifyAddress()) . ','
+                          . '     bnotifytype=' . intval($this->getNotifyType()) . ','
+                          . '     burl=' . DB::quoteValue($this->getURL()) . ','
+                          . '     bupdate=' . DB::quoteValue($this->getUpdateFile()) . ','
+                          . '     bdesc=' . DB::quoteValue($this->getDescription()) . ','
+                          . '     bdefcat=' . intval($this->getDefaultCategory()) . ','
+                          . '     bdefskin=' . intval($this->getDefaultSkin()) . ','
+                          . '     bincludesearch=' . intval($this->getSearchable())
+                          . ' WHERE bnumber=' . intval($this->blogid);
+               DB::execute($query);
+               return;
+       }
+       
+       /**
+        * Blog::updateUpdatefile()
+        * Update the update file if requested
+        * 
+        * @param       void
+        * @return      void
+        */
+       public function updateUpdatefile()
+       {
+               if ( $this->getUpdateFile() )
+               {
+                       $f_update = fopen($this->getUpdateFile(), 'w');
+                       fputs($f_update,$this->getCorrectTime());
+                       fclose($f_update);
+               }
+               return;
+       }
+       
+       /**
+        * Blog::isValidCategory()
+        * Check if a category with a given catid is valid
+        * 
+        * @param       integer $catid  ID for category
+        * @return      boolean exists or not
+        */
+       public function isValidCategory($catid)
+       {
+               $query = 'SELECT * FROM %s WHERE cblog=%d and catid=%d;';
+               $query = sprintf($query, sql_table('category'), (integer) $this->blogid, (integer) $catid);
+               $res = DB::getResult($query);
+               return ($res->rowCount() != 0);
+       }
+       
+       /**
+        * Blog::getCategoryName()
+        * Get the category name for a given catid
+        * 
+        * @param       integer $catid  ID for category
+        * @return      string  name of category
+        */
+       public function getCategoryName($catid)
+       {
+               $query = 'SELECT cname FROM %s WHERE cblog=%d and catid=%d;';
+               $query = sprintf($query, sql_table('category'), (integer) $this->blogid, (integer) $catid);
+               $res = DB::getValue($query);
+               return $res;
+       }
+       
+       /**
+        * Blog::getCategoryDesc()
+        * Get the category description for a given catid
+        * 
+        * @param $catid
+        *      category id
+        */
+       public function getCategoryDesc($catid)
+       {
+               $query = 'SELECT cdesc FROM %s WHERE cblog=%d and catid=%d;';
+               $query = sprintf($query, sql_table('category'), (integer) $this->blogid, (integer) $catid);
+               $res = DB::getValue($query);
+               return $res;
+       }
+       
+       /**
+        * Blog::getCategoryIdFromName
+        * Get the category id for a given category name
+        * 
+        * @param       string  $name   category name
+        * @return      ID for category
+        */
+       public function getCategoryIdFromName($name)
+       {
+               $query = 'SELECT catid FROM %s WHERE cblog=%d and cname=%s;';
+               $query = sprintf($query, sql_table('category'), (integer) $this->blogid, DB::quoteValue($name));
+               
+               $res = DB::getValue();
+               if ( !$res )
+               {
+                       return $this->getDefaultCategory();
+               }
+               return $res;
+       }
+       
+       /**
+        * Blog::insertJavaScriptInfo()
+        * Insert a javascript that includes information about the settings
+        * of an author:  ConvertBreaks, MediaUrl and AuthorId
+        * 
+        * @param       $authorid       id of the author
+        */
+       public function insertJavaScriptInfo($authorid = '')
+       {
+               global $member, $CONF;
+               
+               if ( $authorid == '' )
+               {
+                       $authorid = $member->getID();
+               }
+               
+               echo "<script type=\"text/javascript\">\n";
+               
+               if ( !$this->convertBreaks() )
+               {
+                       echo "setConvertBreaks(false);\n";
+               }
+               else
+               {
+                       echo "setConvertBreaks(true);\n";
+               }
+               echo "setMediaUrl('{$CONF['MediaURL']}');\n";
+               echo "setAuthorId('{$authorid}');\n";
+               echo "</script>\n";
+               return;
+       }
+       
+       /**
+        * Blog::setAllowPastPosting()
+        * Set the the setting for allowing to publish postings in the past
+        * 
+        * @param       boolean $val    new value for ballowpast
+        * @return      void
+        */
+       public function setAllowPastPosting($val)
+       {
+               $this->setSetting('ballowpast', $val);
+               return;
+       }
+       
+       /**
+        * Blog::allowPastPosting()
+        * Get the the setting if it is allowed to publish postings in the past
+        * [should be named as getAllowPastPosting()]
+        * 
+        * @param       void
+        * @return      boolean
+        */
+       public function allowPastPosting()
+       {
+               return $this->getSetting('ballowpast');
+       }
+       
+       /**
+        * Blog::getCorrectTime()
+        * 
+        * @param       integer $t
+        * @return      integer
+        */
+       public function getCorrectTime($t=0)
+       {
+               if ( $t == 0 )
+               {
+                       $t = time();
+               }
+               return ($t + 3600 * $this->getTimeOffset());
+       }
+       
+       /**
+        * Blog::getName()
+        * 
+        * @param       void
+        * @return      string name of this weblog
+        */
+       public function getName()
+       {
+               return $this->getSetting('bname');
+       }
+       
+       /**
+        * Blog::getShortName()
+        * 
+        * @param       void
+        * @return      string  short name of this weblog
+        */
+       public function getShortName()
+       {
+               return $this->getSetting('bshortname');
+       }
+       
+       /**
+        * Blog::getMaxComments()
+        * 
+        * @param       void
+        * @return      integer maximum number of comments
+        */
+       public function getMaxComments()
+       {
+               return $this->getSetting('bmaxcomments');
+       }
+       
+       /**
+        * Blog::getNotifyAddress()
+        * 
+        * @param       void
+        * @return      string  mail address for notifying
+        */
+       public function getNotifyAddress()
+       {
+               return $this->getSetting('bnotify');
+       }
+       
+       /**
+        * Blog::getNotifyType()
+        * 
+        * @param       void
+        * @return      integer notifycation type
+        */
+       public function getNotifyType()
+       {
+               return $this->getSetting('bnotifytype');
+       }
+       
+       /**
+        * Blog::notifyOnComment()
+        * 
+        * @param       void
+        * @return      boolean
+        */
+       public function notifyOnComment()
+       {
+               $n = $this->getNotifyType();
+               return (($n != 0) && (($n % 3) == 0));
+       }
+       
+       /**
+        * Blog::notifyOnVote()
+        * 
+        * @param       void
+        * @return      boolean
+        */
+       public function notifyOnVote()
+       {
+               $n = $this->getNotifyType();
+               return (($n != 0) && (($n % 5) == 0));
+       }
+       
+       /**
+        * Blog::notifyOnNewItem()
+        * 
+        * @param       void
+        * @return      boolean
+        */
+       public function notifyOnNewItem()
+       {
+               $n = $this->getNotifyType();
+               return (($n != 0) && (($n % 7) == 0));
+       }
+       
+       /**
+        * Blog::setNotifyType()
+        * 
+        * @param       integer $val
+        * @return      void
+        */
+       public function setNotifyType($val)
+       {
+               $this->setSetting('bnotifytype',$val);
+               return;
+       }
+       
+       /**
+        * Blog::getTimeOffset()
+        * @param       void
+        * @return      
+        */
+       public function getTimeOffset()
+       {
+               return $this->getSetting('btimeoffset');
+       }
+       
+       /**
+        * Blog::commentsEnabled()
+        * @param       void
+        * @return      integer enabled or not
+        */
+       public function commentsEnabled()
+       {
+               return $this->getSetting('bcomments');
+       }
+       
+       /**
+        * Blog::getURL()
+        * @param       void
+        * @return      string  URI for this weblog
+        */
+       public function getURL()
+       {
+               return $this->getSetting('burl');
+       }
+       
+       /**
+        * Blog::getDefaultSkin()
+        * @param       void
+        * @return      name of skin as default for this weblog
+        */
+       public function getDefaultSkin()
+       {
+               return $this->getSetting('bdefskin');
+       }
+       
+       /**
+        * Blog::getUpdateFile()
+        * @param       void
+        * @return      string  name of file to be updated when weblog is updated
+        */
+       public function getUpdateFile()
+       {
+               return $this->getSetting('bupdate');
+       }
+       
+       /**
+        * Blog::getDescription()
+        * @param       void
+        * @return      string  description for this weblog
+        */
+       public function getDescription()
+       {
+               return $this->getSetting('bdesc');
+       }
+       
+       /**
+        * Blog::isPublic()
+        * @param       void
+        * @return      integer publlic or not
+        */
+       public function isPublic()
+       {
+               return $this->getSetting('bpublic');
+       }
+       
+       /**
+        * Blog::emailRequired()
+        * @param       void
+        * @return      integer email is required when posting comment or not
+        */
+       public function emailRequired()
+       {
+               return $this->getSetting('breqemail');
+       }
+       
+       /**
+        * Blog::getSearchable()
+        * @param       void
+        * @return      integer searchable or not
+        */
+       public function getSearchable()
+       {
+               return $this->getSetting('bincludesearch');
+       }
+       
+       /**
+        * Blog::getDefaultCategory()
+        * @param       void
+        * @return      ID for category as a default
+        */
+       public function getDefaultCategory()
+       {
+               return $this->getSetting('bdefcat');
+       }
+       
+       /**
+        * Blog::setPublic()
+        * @param       integer $val    allow comments by non-registered members or not
+        * @return      void
+        */
+       public function setPublic($val)
+       {
+               $this->setSetting('bpublic', $val);
+               return;
+       }
+       
+       /**
+        * Blog::setSearchable()
+        * @param       integer $val    searchable from the other blogs or not
+        * @return      void
+        */
+       public function setSearchable($val)
+       {
+               $this->setSetting('bincludesearch', $val);
+               return;
+       }
+       
+       /**
+        * Blog::setDescription
+        * @param       string  $val    description for this weblog
+        * @return      void
+        */
+       public function setDescription($val)
+       {
+               $this->setSetting('bdesc',$val);
+               return;
+       }
+       
+       /**
+        * Blog::setUpdateFile()
+        * @param       string  $val    name of file to beupdated when weblog is updated
+        * @return      
+        */
+       public function setUpdateFile($val)
+       {
+               $this->setSetting('bupdate',$val);
+               return;
+       }
+       
+       /**
+        * Blog::setDefaultSkin()
+        * @param       integer $val    ID for default skin to use when displaying this weblog
+        * @return      void
+        */
+       public function setDefaultSkin($val)
+       {
+               $this->setSetting('bdefskin', $val);
+               return;
+       }
+       
+       /**
+        * Blog::setURL()
+        * @param       string  $val    URI for this weblog
+        * @return      
+        */
+       public function setURL($val)
+       {
+               $this->setSetting('burl', $val);
+               return;
+       }
+       
+       /**
+        * Blog::setName()
+        * @param       string  $val    name of this weblog
+        * @return      void
+        */
+       public function setName($val)
+       {
+               $this->setSetting('bname', $val);
+               return;
+       }
+       
+       /**
+        * Blog::setShortName()
+        * @param       string  $val    short name for this weblog
+        * @return      void
+        */
+       public function setShortName($val)
+       {
+               $this->setSetting('bshortname', $val);
+               return;
+       }
+       
+       /**
+        * Blog::setCommentsEnabled()
+        * @param       integer $val    enabling posting comment or not
+        * @return      void
+        */
+       public function setCommentsEnabled($val)
+       {
+               $this->setSetting('bcomments',$val);
+               return;
+       }
+       
+       /**
+        * Blog::setMaxComments()
+        * @param       integer $val    maximum number of comments for this weblog
+        * @return      void
+        */
+       public function setMaxComments($val)
+       {
+               $this->setSetting('bmaxcomments', $val);
+               return;
+       }
+       
+       /**
+        * Blog::setNotifyAddress()
+        * @param       string  $val    email to be notified if weblog updated
+        * @return      void
+        */
+       public function setNotifyAddress($val)
+       {
+               $this->setSetting('bnotify', $val);
+               return;
+       }
+       
+       /**
+        * Blog::setEmailRequired()
+        * @param       string  requiring comments with email or not from non member
+        * @return      void
+        */
+       public function setEmailRequired($val)
+       {
+               $this->setSetting('breqemail', $val);
+               return;
+       }
+       
+       /**
+        * Blog::setTimeOffset()
+        * @param       integer $val    time offset
+        * @return      void
+        */
+       public function setTimeOffset($val)
+       {
+               // check validity of value
+               // 1. replace , by . (common mistake)
+               $val = str_replace(',','.',$val);
+               
+               // 2. cast to float or int
+               if ( is_numeric($val) && (i18n::strpos($val, '.5') === (i18n::strlen($val) - 2)) )
+               {
+                       $val = (float) $val;
+               }
+               else
+               {
+                       $val = (integer) $val;
+               }
+               
+               $this->setSetting('btimeoffset',$val);
+               return;
+       }
+       
+       /**
+        * Blog::setDefaultCategory()
+        * @param       integer $val    ID for default category for this weblog
+        * @return      
+        */
+       public function setDefaultCategory($val)
+       {
+               $this->setSetting('bdefcat',$val);
+               return;
+       }
+       
+       /**
+        * Blog::getSetting()
+        * @param       string  $key    key for setting of this weblog
+        * @return      mixed   value for the setting
+        */
+       public function getSetting($key)
+       {
+               return $this->settings[$key];
+       }
+       
+       /**
+        * Blog::setSetting()
+        * @param       string  $key    key for setting of this weblog
+        * @param       mixed   $value  value for the key
+        * @return      
+        */
+       public function setSetting($key, $value)
+       {
+               $this->settings[$key] = $value;
+               return;
+       }
+       
+       /**
+        * Blog::addTeamMember()
+        * Tries to add a member to the team. 
+        * Returns false if the member was already on the team
+        * 
+        * @param       integer $memberid       id for member
+        * @param       boolean $admin  super-admin or not
+        * @return      boolean Success/Fail
+        */
+       public function addTeamMember($memberid, $admin)
+       {
+               global $manager;
+               
+               $memberid = intval($memberid);
+               $admin = intval($admin);
+               
+               // check if member is already a member
+               $tmem =& $manager->getMember($memberid);
+               
+               if ( $tmem->isTeamMember($this->blogid) )
+               {
+                       return 0;
+               }
+               
+               $data = array(
+                       'blog'          => &$this,
+                       'member'        => &$tmem,
+                       'admin'         => &$admin
+               );
+               $manager->notify('PreAddTeamMember', $data);
+               
+               // add to team
+               $query = "INSERT INTO %s (TMEMBER, TBLOG, TADMIN) VALUES (%d, %d, %d);";
+               $query = sprintf($query, sql_table('team'), (integer) $memberid, (integer) $this->blogid, (integer) $admin);
+               DB::execute($query);
+               
+               $data = array(
+                       'blog'          => &$this,
+                       'member'        => &$tmem,
+                       'admin'         =>  $admin
+               );
+               $manager->notify('PostAddTeamMember', $data);
+               
+               $logMsg = sprintf(_TEAM_ADD_NEWTEAMMEMBER, $tmem->getDisplayName(), $memberid, $this->getName());
+               ActionLog::add(INFO, $logMsg);
+               
+               return 1;
+       }
+       
+       /**
+        * Blog::getID()
+        * @param       void
+        * @return      integer ID for this weblog
+        */
+       public function getID()
+       {
+               return (integer) $this->blogid;
+       }
+       
+       /**
+        * Checks if a blog with a given shortname exists 
+        * Returns true if there is a blog with the given shortname (static)
+        * 
+        * @param       string  $name           blog shortname
+        * @return      boolean exists or not
+        */
+       public function exists($name)
+       {
+               $r = DB::getResult('SELECT * FROM '.sql_table('blog').' WHERE bshortname='. DB::quoteValue($name));
+               return ($r->rowCount() != 0);
+       }
+       
+       /**
+        * Checks if a blog with a given id exists 
+        * Returns true if there is a blog with the given ID (static)
+        * 
+        * @param       integer $id     ID for searched weblog
+        * @return      boolean exists or not
+        */
+       public function existsID($id)
+       {
+               $r = DB::getResult('SELECT * FROM '.sql_table('blog').' WHERE bnumber='.intval($id));
+               return ($r->rowCount() != 0);
+       }
+       
+       /**
+        * Blog::setFuturePost()
+        * flag there is a future post pending
+        * 
+        * @param       void
+        * @return      void
+        */
+       public function setFuturePost()
+       {
+               $query =  "UPDATE %s SET bfuturepost='1' WHERE bnumber=%d;";
+               $query = sprintf($query, sql_table('blog'), (integer) $this->blogid);
+               DB::execute($query);
+               return;
+       }
+       
+       /**
+        * Blog::clearFuturePost()
+        * clear there is a future post pending
+        * 
+        * @param       void
+        * @return      void
+        */
+       public function clearFuturePost()
+       {
+               $query =  "UPDATE %s SET bfuturepost='0' WHERE bnumber=%d;";
+               $query = sprintf($query, sql_table('blog'), (integer) $this->blogid);
+               DB::execute($query);
+               return;
+       }
+       
+       /**
+        * Blog::checkJustPosted()
+        * check if we should throw justPosted event 
+        * 
+        * @param       void
+        * @return      void
+        */
+       public function checkJustPosted()
+       {
+               global $manager;
+               
+               if ( $this->settings['bfuturepost'] == 1 )
+               {
+                       $query = "SELECT * FROM %s WHERE iposted=0 AND iblog=%d AND itime < NOW();";
+                       $query = sprintf($query, sql_table('item'), (integer) $this->blogid);
+                       
+                       $result = DB::getResult($query);
+                       if ( $result->rowCount() > 0 )
+                       {
+                               // This $pinged is allow a plugin to tell other hook to the event that a ping is sent already
+                               // Note that the plugins's calling order is subject to thri order in the plugin list
+                               $pinged = FALSE;
+                               $data = array('blogid' => $this->blogid, 'pinged' => &$pinged);
+                               $manager->notify('JustPosted', $data);
+                               
+                               // clear all expired future posts
+                               $query = "UPDATE %s SET iposted='1' WHERE iblog=%d AND itime < NOW();";
+                               $query = spriintf($query, sql_table('item'), (integer) $this->blogid);
+                               DB::execute($query);
+                               
+                               // check to see any pending future post, clear the flag is none
+                               $query = "SELECT * FROM %s WHERE iposted=0 AND iblog=%d;";
+                               $query = sprintf($query, sql_table('item'), (integer) $this->blogid);
+                               
+                               $result = DB::getResult($query);
+                               if ( $result->rowCount() == 0 )
+                               {
+                                       $this->clearFuturePost();
+                               }
+                       }
+               }
+               return;
+       }
+       
+       /**
+        * Blog::readLogFromList()
+        * Shows the given list of items for this blog
+        *
+        * @param       array   $itemarray      array of item numbers to be displayed
+        * @param       string  $template       string representing the template _NAME_ (!)
+        * @param       string  $highlight      contains a query that should be highlighted
+        * @param       boolean $comments       1=show comments 0=don't show comments
+        * @param       boolean $dateheads      1=show dateheads 0=don't show dateheads
+        * @param       boolean $showDrafts     0=do not show drafts 1=show drafts
+        * @param       boolean $showFuture     0=do not show future posts 1=show future posts
+        * @return      integer amount of items shown
+        */
+       public function readLogFromList($itemarray, $template, $highlight = '', $comments = 1, $dateheads = 1,$showDrafts = 0, $showFuture = 0)
+       {
+               $query = $this->getSqlItemList($itemarray,$showDrafts,$showFuture);
+               return $this->showUsingQuery($template, $query, $highlight, $comments, $dateheads);
+       }
+       
+       /**
+        * Blog::getSqlItemList()
+        * Returns the SQL query used to fill out templates for a list of items
+        * No LIMIT clause is added. (caller should add this if multiple pages are requested)
+        *
+        * @param       array   $itemarray      an array holding the item numbers of the items to be displayed
+        * @param       integer $showDrafts     0=do not show drafts 1=show drafts
+        * @param       integer $showFuture     0=do not show future posts 1=show future posts
+        * @return      string  either a full SQL query, or an empty string
+        */
+       public function getSqlItemList($itemarray,$showDrafts = 0,$showFuture = 0)
+       {
+               if ( !is_array($itemarray) )
+               {
+                       return '';
+               }
+               
+               $showDrafts = intval($showDrafts);
+               $showFuture = intval($showFuture);
+               $items = array();
+               
+               foreach ( $itemarray as $value )
+               {
+                       if ( intval($value) )
+                       {
+                               $items[] = intval($value);
+                       }
+               }
+               if ( !count($items) )
+               {
+                       return '';
+               }
+               
+               $i = count($items);
+               $query = '';
+               foreach ( $items as $value )
+               {
+                       $query .= '('
+                                       .       'SELECT'
+                                       .       ' i.inumber as itemid,'
+                                       .       ' i.ititle as title,'
+                                       .       ' i.ibody as body,'
+                                       .       ' m.mname as author,'
+                                       .       ' m.mrealname as authorname,'
+                                       .       ' i.itime,'
+                                       .       ' i.imore as more,'
+                                       .       ' m.mnumber as authorid,'
+                                       .       ' m.memail as authormail,'
+                                       .       ' m.murl as authorurl,'
+                                       .       ' c.cname as category,'
+                                       .       ' i.icat as catid,'
+                                       .       ' i.iclosed as closed';
+                       
+                       $query .= ' FROM '
+                                       . sql_table('item') . ' as i, '
+                                       . sql_table('member') . ' as m, '
+                                       . sql_table('category') . ' as c'
+                                       . ' WHERE'
+                                   .    ' i.iblog='.$this->blogid
+                                  . ' and i.iauthor=m.mnumber'
+                                  . ' and i.icat=c.catid';
+                       
+                       // exclude drafts       
+                       if ( !$showDrafts )
+                       {
+                               $query .= ' and i.idraft=0';
+                       }
+                       if ( !$showFuture )
+                       {
+                               // don't show future items
+                               $query .= ' and i.itime<=' . DB::formatDateTime($this->getCorrectTime());
+                       }
+                       
+                       $query .= ' and i.inumber='.intval($value);
+                       $query .= ')';
+                       $i--;
+                       if ($i) $query .= ' UNION ';
+               }
+               
+               return $query;
+       }
+       
+       /**
+        * Blog::convertBreaks()
+        * Get the the setting for the line break handling
+        * [should be named as getConvertBreaks()]
+        * 
+        * @deprecated
+        * @param       void
+        * @return      
+        */
+       public function convertBreaks()
+       {
+               return $this->getSetting('bconvertbreaks');
+       }
+       
+       /**
+        * Set the the setting for the line break handling
+        * 
+        * @deprecated
+        * @param       boolean $val    new value for bconvertbreaks
+        * @return      void
+        */
+       public function setConvertBreaks($val)
+       {
+               $this->setSetting('bconvertbreaks', $val);
+               return;
+       }
+}
+>>>>>>> skinnable-master
index 137af90..8464021 100644 (file)
  *
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2009 The Nucleus Group
+<<<<<<< HEAD
  * @version $Id: BODYACTIONS.php 1757 2012-04-15 09:02:32Z sakamocchi $
+=======
+ * @version $Id: BODYACTIONS.php 1886 2012-06-17 08:27:27Z sakamocchi $
+>>>>>>> skinnable-master
  */
 
 class BodyActions extends BaseActions
@@ -39,7 +43,11 @@ class BodyActions extends BaseActions
         */
        public function __construct()
        {
+<<<<<<< HEAD
                parent::__construct();  
+=======
+               parent::__construct();
+>>>>>>> skinnable-master
                return;
        }
        
@@ -107,9 +115,16 @@ class BodyActions extends BaseActions
                array_shift($params);
                
                // add item reference (array_unshift didn't work)
+<<<<<<< HEAD
                $params = array_merge(array(&$this->currentItem), $params);
                
                call_user_func_array(array(&$plugin, 'doItemVar'), $params);
+=======
+               $target = array(&$this->currentItem);
+               $params = array_merge($target, $params);
+               
+               call_user_func_array(array($plugin, 'doItemVar'), $params);
+>>>>>>> skinnable-master
                return;
        }
        
@@ -126,7 +141,11 @@ class BodyActions extends BaseActions
                // image/popup calls have arguments separated by |
                $args = func_get_args();
                $args = preg_split('#\|#', implode($args, ', '));
+<<<<<<< HEAD
                echo call_user_func_array(array(&$this, 'createImageCode'), $args);
+=======
+               echo call_user_func_array(array($this, 'createImageCode'), $args);
+>>>>>>> skinnable-master
        }
        
        /**
@@ -174,7 +193,11 @@ class BodyActions extends BaseActions
                // image/popup calls have arguments separated by |
                $args = func_get_args();
                $args = preg_split('#\|#', implode($args, ', '));
+<<<<<<< HEAD
                echo call_user_func_array(array(&$this, 'createMediaCode'), $args);
+=======
+               echo call_user_func_array(array($this, 'createMediaCode'), $args);
+>>>>>>> skinnable-master
        }
        
        /**
@@ -215,7 +238,11 @@ class BodyActions extends BaseActions
                // image/popup calls have arguments separated by |
                $args = func_get_args();
                $args = preg_split('#\|#', implode($args, ', '));
+<<<<<<< HEAD
                echo call_user_func_array(array(&$this, 'createPopupCode'), $args);
+=======
+               echo call_user_func_array(array($this, 'createPopupCode'), $args);
+>>>>>>> skinnable-master
        }
        
        /**
@@ -280,7 +307,11 @@ class BodyActions extends BaseActions
                                $condition = ($blog && ($blog->getSetting($name) == $value));
                                break;
                        case 'itemblogsetting':
+<<<<<<< HEAD
                                $b =& $manager->getBlog(getBlogIDFromItemID($this->currentItem['itemid']));
+=======
+                               $b =& $manager->getBlog($this->currentItem['blogid']);
+>>>>>>> skinnable-master
                                $condition = ($b && ($b->getSetting($name) == $value));
                                break;
                        case 'loggedin':
@@ -354,7 +385,11 @@ class BodyActions extends BaseActions
        {
                global $member, $manager;
                
+<<<<<<< HEAD
                $b =& $manager->getBlog(getBlogIDFromItemID($this->currentItem['itemid']));
+=======
+               $b =& $manager->getBlog($this->currentItem['blogid']);
+>>>>>>> skinnable-master
                
                // when no parameter is defined, just check if author is current visitor
                if ( ($key != 'isadmin' && $key != 'name') || ($key == 'name' && $value == '') )
@@ -400,7 +435,11 @@ class BodyActions extends BaseActions
        {
                global $catid, $manager;
                
+<<<<<<< HEAD
                $b =& $manager->getBlog(getBlogIDFromItemID($this->currentItem['itemid']));
+=======
+               $b =& $manager->getBlog($this->currentItem['blogid']);
+>>>>>>> skinnable-master
                
                // when no parameter is defined, just check if a category is selected
                if ( ($key != 'catname' && $key != 'catid') || ($value == '') )
@@ -558,6 +597,10 @@ class BodyActions extends BaseActions
                $params = func_get_args();
                array_shift($params);
                
+<<<<<<< HEAD
                return call_user_func_array(array(&$plugin, 'doIf'), $params);
+=======
+               return call_user_func_array(array($plugin, 'doIf'), $params);
+>>>>>>> skinnable-master
        }
 }
index 9473d52..6ae996b 100644 (file)
  *
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2009 The Nucleus Group
+<<<<<<< HEAD
  * @version $Id: BaseActions.php 1848 2012-05-16 12:17:00Z sakamocchi $
+=======
+ * @version $Id: BaseActions.php 1882 2012-06-17 07:52:43Z sakamocchi $
+>>>>>>> skinnable-master
  */
 
 class BaseActions
@@ -139,14 +143,22 @@ class BaseActions
        
        /**
         * BaseActions::parse_locale()
+<<<<<<< HEAD
         * Parse locale to language-script-region according to RFC 4646
+=======
+        * Parse locale to language-region according to RFC 4646
+>>>>>>> skinnable-master
         * 
         * @param       void
         * @return      void
         */
        public function parse_locale()
        {
+<<<<<<< HEAD
                echo preg_replace('#_#', '-', i18n::get_current_locale());
+=======
+               echo preg_replace('#(.+)_(.+)_(.+)#', '$1-$3', i18n::get_current_locale());
+>>>>>>> skinnable-master
                return;
        }
        
@@ -434,7 +446,11 @@ class BaseActions
        {
                $this->addIfExecute();
                $args = func_get_args();
+<<<<<<< HEAD
                $condition = call_user_func_array(array(&$this,'checkCondition'), $args);
+=======
+               $condition = call_user_func_array(array($this,'checkCondition'), $args);
+>>>>>>> skinnable-master
                $this->addIfCondition($condition);
                return;
        }
@@ -505,7 +521,11 @@ class BaseActions
                {
                        ob_end_clean();
                        $args = func_get_args();
+<<<<<<< HEAD
                        $condition = call_user_func_array(array(&$this,'checkCondition'), $args);
+=======
+                       $condition = call_user_func_array(array($this,'checkCondition'), $args);
+>>>>>>> skinnable-master
                        $this->addIfCondition($condition);
                }
                return;
@@ -523,7 +543,11 @@ class BaseActions
                $this->addIfExecute();
                
                $args = func_get_args();
+<<<<<<< HEAD
                $condition = call_user_func_array(array(&$this,'checkCondition'), $args);
+=======
+               $condition = call_user_func_array(array($this,'checkCondition'), $args);
+>>>>>>> skinnable-master
                $this->addIfCondition(!$condition);
                return;
        }
@@ -559,7 +583,11 @@ class BaseActions
                {
                        ob_end_clean();
                        $args = func_get_args();
+<<<<<<< HEAD
                        $condition = call_user_func_array(array(&$this,'checkCondition'), $args);
+=======
+                       $condition = call_user_func_array(array($this,'checkCondition'), $args);
+>>>>>>> skinnable-master
                        $this->addIfCondition(!$condition);
                }
                return;
index bb38e11..3cb7daa 100644 (file)
@@ -1,3 +1,4 @@
+<<<<<<< HEAD
 <?php\r
 \r
 /*\r
@@ -227,3 +228,234 @@ class Comment
                return;\r
        }\r
 }\r
+=======
+<?php
+
+/*
+ * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)
+ * Copyright (C) 2002-2007 The Nucleus Group
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * (see nucleus/documentation/index.html#license for more info)
+ */
+/**
+ * A class representing a single comment
+ *
+ * @license http://nucleuscms.org/license.txt GNU General Public License
+ * @copyright Copyright (C) 2002-2007 The Nucleus Group
+ * @version $Id: COMMENT.php 1844 2012-05-13 11:14:38Z sakamocchi $
+ */
+class Comment 
+{
+       /**
+        * Comment::getComment()
+        * Returns the requested comment
+        *
+        * @static
+        * @param       integer $commentid      id for comment
+        * @return      array   comment information
+        * 
+        */
+       static function getComment($commentid)
+       {
+               $query = 'SELECT cnumber AS commentid,'
+                             . ' cbody AS body,'
+                             . ' cuser AS user,'
+                             . ' cmail AS userid,'
+                             . ' cemail AS email,'
+                             . ' cmember AS memberid,'
+                             . ' ctime,'
+                             . ' chost AS host,'
+                             . ' mname AS member,'
+                             . ' cip AS ip,'
+                             . ' cblog AS blogid'
+                      . ' FROM %s LEFT OUTER JOIN %s ON cmember = mnumber'
+                      . ' WHERE cnumber = %d;';
+               
+               $query = sprintf($query, sql_table('comment'), sql_table('member'), (integer) $commentid);
+               $aCommentInfo = DB::getRow($query);
+               
+               if ( $aCommentInfo )
+               {
+                       $aCommentInfo['timestamp'] = strtotime($aCommentInfo['ctime']);
+               }
+               
+               return $aCommentInfo;
+       }
+       
+       /**
+        * Comment::prepare()
+        * Prepares a comment to be saved
+        *
+        * @static
+        * @param       array   $comment        comment data
+        * @return      array   comment date
+        * 
+        */
+       static function prepare($comment)
+       {
+               $comment['user']        = strip_tags($comment['user']);
+               $comment['userid']      = strip_tags($comment['userid']);
+               $comment['email']       = strip_tags($comment['email']);
+               
+               // remove newlines from user; remove quotes and newlines from userid and email; trim whitespace from beginning and end
+               $comment['user']        = trim(strtr($comment['user'], "\n", ' ') );
+               $comment['userid']      = trim(strtr($comment['userid'], "\'\"\n", '-- ') );
+               $comment['email']       = trim(strtr($comment['email'], "\'\"\n", '-- ') );
+               
+               // begin if: a comment userid is supplied, but does not have an "http://" or "https://" at the beginning - prepend an "http://"
+               if ( array_key_exists('userid', $comment)
+                 && !empty($comment['userid'])
+                 && (i18n::strpos($comment['userid'], 'http://') !== 0)
+                 && (i18n::strpos($comment['userid'], 'https://') !== 0) )
+               {
+                       $comment['userid'] = 'http://' . $comment['userid'];
+               }
+               
+               $comment['body'] = Comment::prepareBody($comment['body']);
+               
+               return $comment;
+       }
+       
+       /**
+        * Comment::prepareBody()
+        * Prepares the body of a comment
+        *
+        * @static
+        * @param       string  $body   string for comment body
+        * @return      string  validate string for comment body
+        */
+       static public function prepareBody($body)
+       {
+               // convert Windows and Mac style 'returns' to *nix newlines
+               $body = preg_replace("/\r\n/", "\n", $body);
+               $body = preg_replace("/\r/", "\n", $body);
+               
+               // then remove newlines when too many in a row (3 or more newlines get converted to 1 newline)
+               $body = preg_replace("/\n{3,}/", "\n\n", $body);
+               
+               // encode special characters as entities
+               $body = Entity::hsc($body);
+               
+               // trim away whitespace and newlines at beginning and end
+               $body = trim($body);
+               
+               // add <br /> tags
+               $body = addBreaks($body);
+               
+               // create hyperlinks for http:// addresses
+               // there's a testcase for this in /build/testcases/urllinking.txt
+               $replace_from = array(
+                       '/([^:\/\/\w]|^)((https:\/\/)([\w\.-]+)([\/\w+\.~%&?@=_:;#,-]+))/i',
+                       '/([^:\/\/\w]|^)((http:\/\/|www\.)([\w\.-]+)([\/\w+\.~%&?@=_:;#,-]+))/i',
+                       '/([^:\/\/\w]|^)((ftp:\/\/|ftp\.)([\w\.-]+)([\/\w+\.~%&?@=_:;#,-]+))/i',
+                       '/([^:\/\/\w]|^)(mailto:(([a-zA-Z\@\%\.\-\+_])+))/i'
+               );
+               
+               return preg_replace_callback($replace_from, array(__CLASS__, 'prepareBody_cb'), $body);
+       }
+       
+       /**
+        * Comment::createLinkCode()
+        * Creates a link code for unlinked URLs with different protocols
+        *
+        * @static
+        * @param       string  $pre    Prefix of comment
+        * @param       string  $url    URL
+        * @param       string  $protocol       http, mailto and so on
+        * @return      string  string  including anchor element and child text
+        */
+       static private function createLinkCode($pre, $url, $protocol = 'http')
+       {
+               $post = '';
+               
+               // it's possible that $url ends contains entities we don't want,
+               // since htmlspecialchars is applied _before_ URL linking
+               // move the part of URL, starting from the disallowed entity to the 'post' link part
+               $aBadEntities = array('&quot;', '&gt;', '&lt;');
+               foreach ( $aBadEntities as $entity )
+               {
+                       $pos = i18n::strpos($url, $entity);
+                       
+                       if ( $pos )
+                       {
+                               $post = i18n::substr($url, $pos) . $post;
+                               $url = i18n::substr($url, 0, $pos);
+                       }
+               }
+               
+               // remove entities at end (&&&&)
+               if ( preg_match('/(&\w+;)+$/i', $url, $matches) )
+               {
+                       $post = $matches[0] . $post;    // found entities (1 or more)
+                       $url = i18n::substr($url, 0, i18n::strlen($url) - i18n::strlen($post) );
+               }
+               
+               // move ending comma from url to 'post' part
+               if ( i18n::substr($url, i18n::strlen($url) - 1) == ',' )
+               {
+                       $url = i18n::substr($url, 0, i18n::strlen($url) - 1);
+                       $post = ',' . $post;
+               }
+               
+               if ( !preg_match('#^' . $protocol . '://#', $url) )
+               {
+                       $linkedUrl = $protocol . ( ($protocol == 'mailto') ? ':' : '://') . $url;
+               }
+               else
+               {
+                       $linkedUrl = $url;
+               }
+               
+               if ( $protocol != 'mailto' )
+               {
+                       $displayedUrl = $linkedUrl;
+               }
+               else
+               {
+                       $displayedUrl = $url;
+               }
+               
+               return $pre . '<a href="' . $linkedUrl . '" rel="nofollow">' . Entity::hsc(Entity::shorten($displayedUrl,30,'...')) . '</a>' . $post;
+       }
+       
+       /**
+        * Comment::prepareBody_cb()
+        * This method is a callback for creating link codes
+        * 
+        * @param       array   $match  elements for achor
+        * @return      string  including anchor element and child text
+        * 
+        */
+       static public function prepareBody_cb($match)
+       {
+               if ( !preg_match('/^[a-z]+/i', $match[2], $protocol) )
+               {
+                       return $match[0];
+               }
+               
+               switch( strtolower($protocol[0]) )
+               {
+                       case 'https':
+                               return self::createLinkCode($match[1], $match[2], 'https');
+                       break;
+                       
+                       case 'ftp':
+                               return self::createLinkCode($match[1], $match[2], 'ftp');
+                       break;
+                       
+                       case 'mailto':
+                               return self::createLinkCode($match[1], $match[3], 'mailto');
+                       break;
+                       
+                       default:
+                               return self::createLinkCode($match[1], $match[2], 'http');
+                       break;
+               }
+               return;
+       }
+}
+>>>>>>> skinnable-master
index b320145..8ef2afb 100644 (file)
@@ -232,8 +232,13 @@ class CommentActions extends BaseActions
        public function parse_blogurl()
        {
                global $manager;
+<<<<<<< HEAD
                $blogid = getBlogIDFromItemID($this->commentsObj->itemid);
                $blog =& $manager->getBlog($blogid);
+=======
+               $item =& $manager->getItem($this->commentsObj->itemid, 1, 1);
+               $blog =& $manager->getBlog($item['blogid']);
+>>>>>>> skinnable-master
                echo $blog->getURL();
                return;
        }
@@ -537,10 +542,19 @@ class CommentActions extends BaseActions
                array_shift($params);
                
                // pass info on current item and current comment as well
+<<<<<<< HEAD
                $params = array_merge(array(&$this->currentComment), $params);
                $params = array_merge(array(&$this->commentsObj->itemActions->currentItem), $params);
                
                call_user_func_array(array(&$plugin,'doTemplateCommentsVar'), $params);
+=======
+               $target = array(&$this->currentComment);
+               $params = array_merge($target, $params);
+               $target = array(&$this->commentsObj->itemActions->currentItem);
+               $params = array_merge($target, $params);
+               
+               call_user_func_array(array($plugin,'doTemplateCommentsVar'), $params);
+>>>>>>> skinnable-master
                return;
        }
        
@@ -641,7 +655,11 @@ class CommentActions extends BaseActions
         */
        public function parse_userlinkraw()
        {
+<<<<<<< HEAD
                echo $this->currentComment['userlinkraw'];
+=======
+               echo (array_key_exists('userlinkraw', $this->currentComment) && !empty($this->currentComment['userlinkraw'])) ? $this->currentComment['userlinkraw'] : '';
+>>>>>>> skinnable-master
                return;
        }
        
@@ -705,8 +723,14 @@ class CommentActions extends BaseActions
                                $condition = ($blog && ($blog->getSetting($name) == $value));
                                break;
                        case 'itemblogsetting':
+<<<<<<< HEAD
                                $b =& $manager->getBlog(getBlogIDFromItemID($this->currentComment['itemid']));
                                $condition = ($b && ($b->getSetting($name) == $value));
+=======
+                               $item =& $manager->getItem($this->currentComment['itemid'], 1, 1);
+                               $blog =& $manager->getBlog($item['blogid']);
+                               $condition = ($blog && ($blog->getSetting($name) == $value));
+>>>>>>> skinnable-master
                                break;
                        case 'loggedin':
                                $condition = $member->isLoggedIn();
@@ -781,6 +805,7 @@ class CommentActions extends BaseActions
                        return FALSE;
                }
                
+<<<<<<< HEAD
                $mem =& $manager->getMember($this->currentComment['memberid']);
                $b =& $manager->getBlog(getBlogIDFromItemID($this->currentComment['itemid']));
                $citem =& $manager->getItem($this->currentComment['itemid'], 1, 1);
@@ -788,6 +813,15 @@ class CommentActions extends BaseActions
                // when no parameter is defined, just check if item author is current visitor
                if (($key != 'isadmin' && $key != 'name' && $key != 'isauthor' && $key != 'isonteam')) {
                        return (intval($member->getID()) > 0 && intval($member->getID()) == intval($citem['authorid']));
+=======
+               $member =& $manager->getMember($this->currentComment['memberid']);
+               $item =& $manager->getItem($this->currentComment['itemid'], 1, 1);
+               
+               // when no parameter is defined, just check if item author is current visitor
+               if ( ($key != 'isadmin' && $key != 'name' && $key != 'isauthor' && $key != 'isonteam') )
+               {
+                       return (intval($memberber->getID()) > 0 && intval($memberber->getID()) == (integer) $item['authorid']);
+>>>>>>> skinnable-master
                }
                
                // check comment author name
@@ -798,7 +832,11 @@ class CommentActions extends BaseActions
                        {
                                return FALSE;
                        }
+<<<<<<< HEAD
                        if ( $value == strtolower($mem->getDisplayName()) )
+=======
+                       if ( $value == strtolower($member->getDisplayName()) )
+>>>>>>> skinnable-master
                        {
                                return TRUE;
                        }
@@ -807,24 +845,40 @@ class CommentActions extends BaseActions
                // check if comment author is admin
                if ( $key == 'isadmin' )
                {
+<<<<<<< HEAD
                        $blogid = intval($b->getID());
                        if ( $mem->isAdmin() )
                        {
                                return TRUE;
                        }
                        return $mem->isBlogAdmin($blogid);
+=======
+                       if ( $member->isAdmin() )
+                       {
+                               return TRUE;
+                       }
+                       return $member->isBlogAdmin($item['blogid']);
+>>>>>>> skinnable-master
                }
                
                // check if comment author is item author
                if ( $key == 'isauthor' )
                {
+<<<<<<< HEAD
                        return (intval($citem['authorid']) == intval($this->currentComment['memberid']));
+=======
+                       return ((integer) $item['authorid'] == (integer) $this->currentComment['memberid']);
+>>>>>>> skinnable-master
                }
                
                // check if comment author is on team
                if ( $key == 'isonteam' )
                {
+<<<<<<< HEAD
                        return $mem->teamRights(intval($b->getID()));
+=======
+                       return $member->teamRights((integer) $item['blogid']);
+>>>>>>> skinnable-master
                }
                return FALSE;
        }
@@ -840,6 +894,7 @@ class CommentActions extends BaseActions
        private function ifItemCategory($key = '', $value = '')
        {
                global $catid, $manager;
+<<<<<<< HEAD
        
                $b =& $manager->getBlog(getBlogIDFromItemID($this->currentComment['itemid']));
                $citem =& $manager->getItem($this->currentComment['itemid'],1,1);
@@ -865,6 +920,32 @@ class CommentActions extends BaseActions
                if ( ($key == 'catid') && ($value == $icatid) )
                {
                        return $b->isValidCategory($icatid);
+=======
+               
+               $item =& $manager->getItem($this->currentComment['itemid'],1,1);
+               $blog =& $manager->getBlog($item['blogid']);
+               
+               // when no parameter is defined, just check if a category is selected
+               if ( ($key != 'catname' && $key != 'catid') || ($value == '') )
+               {
+                       return $blog->isValidCategory($item['catid']);
+               }
+               
+               // check category name
+               if ( $key == 'catname' )
+               {
+                       $value = $blog->getCategoryIdFromName($value);
+                       if ( $value == $item['catid'] )
+                       {
+                               return $blog->isValidCategory($item['catid']);
+                       }
+               }
+               
+               // check category id
+               if ( ($key == 'catid') && ($value == $item['catid']) )
+               {
+                       return $blog->isValidCategory($item['catid']);
+>>>>>>> skinnable-master
                }
                return FALSE;
        }
@@ -878,12 +959,22 @@ class CommentActions extends BaseActions
         */
        private function ifOnTeam($blogName = '')
        {
+<<<<<<< HEAD
                global $blog, $member, $manager;
                
                $b =& $manager->getBlog(getBlogIDFromItemID($this->currentComment['itemid']));
                
                // when no blog found
                if ( ($blogName == '') && (!is_object($b)) )
+=======
+               global $member, $manager;
+               
+               $item =& $manager->getItem($this->currentComment['itemid'], 1, 1);
+               $blog =& $manager->getBlog($item['blogid']);
+               
+               // when no blog found
+               if ( ($blogName == '') && !is_object($blog) )
+>>>>>>> skinnable-master
                {
                        return 0;
                }
@@ -897,7 +988,11 @@ class CommentActions extends BaseActions
                // use current blog
                if ( ($blogName == '') || !$manager->existsBlogID($blogid) )
                {
+<<<<<<< HEAD
                        $blogid = $b->getID();
+=======
+                       $blogid = $blog->getID();
+>>>>>>> skinnable-master
                }
                
                return $member->teamRights($blogid);
@@ -912,12 +1007,22 @@ class CommentActions extends BaseActions
         */
        private function ifAdmin($blogName = '')
        {
+<<<<<<< HEAD
                global $blog, $member, $manager;
                
                $b =& $manager->getBlog(getBlogIDFromItemID($this->currentComment['itemid']));
                
                // when no blog found
                if ( ($blogName == '') && (!is_object($b)) )
+=======
+               global $member, $manager;
+               
+               $item =& $manager->getItem($this->currentComment['itemid'], 1, 1);
+               $blog =& $manager->getBlog($item['blogid']);
+               
+               // when no blog found
+               if ( ($blogName == '') && !is_object($blog) )
+>>>>>>> skinnable-master
                {
                        return 0;
                }
@@ -931,7 +1036,11 @@ class CommentActions extends BaseActions
                // use current blog
                if ( ($blogName == '') || !$manager->existsBlogID($blogid) )
                {
+<<<<<<< HEAD
                        $blogid = $b->getID();
+=======
+                       $blogid = $blog->getID();
+>>>>>>> skinnable-master
                }
                
                return $member->isBlogAdmin($blogid);
@@ -1004,6 +1113,10 @@ class CommentActions extends BaseActions
                $params = func_get_args();
                array_shift($params);
                
+<<<<<<< HEAD
                return call_user_func_array(array(&$plugin, 'doIf'), $params);
+=======
+               return call_user_func_array(array($plugin, 'doIf'), $params);
+>>>>>>> skinnable-master
        }
 }
index 6783c06..5eaf79d 100644 (file)
@@ -1,3 +1,4 @@
+<<<<<<< HEAD
 <?php\r
 \r
 /*\r
@@ -440,3 +441,452 @@ class Comments
                return $result;\r
        }\r
 }\r
+=======
+<?php
+
+/*
+ * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)
+ * Copyright (C) 2002-2009 The Nucleus Group
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * (see nucleus/documentation/index.html#license for more info)
+ */
+/**
+ * A class representing the comments (all of them) for a certain post on a ceratin blog
+ *
+ * @license http://nucleuscms.org/license.txt GNU General Public License
+ * @copyright Copyright (C) 2002-2009 The Nucleus Group
+ * @version $Id: COMMENTS.php 1527 2011-06-21 10:43:44Z sakamocchi $
+ */
+
+if ( !function_exists('requestVar') ) exit;
+require_once dirname(__FILE__) . '/COMMENTACTIONS.php';
+
+class Comments
+{
+       // reference to the itemActions object that is calling the showComments function
+       public $itemActions;
+       
+       // item for which comment are being displayed
+       public $itemid;
+       
+       // total amount of comments displayed
+       public $commentcount;
+       
+       /**
+        * Comments::__construct()
+        * Creates a new Comments object for the given blog and item
+        *
+        * @param       integer $itemid id of the item
+        * @return      void
+        */
+       public function __construct($itemid)
+       {
+               $this->itemid = (integer) $itemid;
+               return;
+       }
+       
+       /**
+        * Comments::setItemActions()
+        * Used when parsing comments
+        *
+        * @param       object  $itemActions    itemActions object, that will take care of the parsing
+        * @return      void
+        */
+       public function setItemActions(&$itemActions)
+       {
+               $this->itemActions =& $itemActions;
+               return;
+       }
+       
+       /**
+        * Comments::showComments()
+        * Shows maximum $max comments to the given item using the given template
+        * returns the amount of shown comments (if maxToShow = -1, then there is no limit)
+        *
+        * @param       array   template        template to use
+        * @param       integer maxToShow       max. comments to show
+        * @param       integer showNone        indicates if the 'no comments' thingie should be outputted
+        *                                                              when there are no comments (useful for closed items)
+        * @param       string  highlight       Highlight to use (if any)
+        * @return      integer number of comments
+        */
+       public function showComments($template, $maxToShow = -1, $showNone = 1, $highlight = '')
+       {
+               global $CONF, $manager;
+               
+               if ( $maxToShow == 0 )
+               {
+                       $this->commentcount = $this->amountComments();
+               }
+               else
+               {
+                       $query = 'SELECT citem as itemid, cnumber as commentid, cbody as body, cuser as user, cmail as userid, '
+                              . 'cemail as email, cmember as memberid, ctime, chost as host, cip as ip, cblog as blogid '
+                              . 'FROM %s as c WHERE citem=%d ORDER BY ctime';
+                       
+                       $query = sprintf($query, sql_table('comment'), (integer) $this->itemid);
+                       $comments = DB::getResult($query);
+                       $this->commentcount = $comments->rowCount();
+               }
+               
+               // create parser object & action handler
+               $handler = new CommentActions($this);
+               $handler->setTemplate($template);
+               
+               $parser = new Parser($handler);
+               
+               // if no result was found
+               if ( $this->commentcount == 0 )
+               {
+                       // note: when no reactions, COMMENTS_HEADER and COMMENTS_FOOTER are _NOT_ used
+                       if ( $showNone )
+                       {
+                               $parser->parse($template['COMMENTS_NONE']);
+                       }
+                       return 0;
+               }
+               
+               // if too many comments to show
+               if ( ($maxToShow != -1) && ($this->commentcount > $maxToShow) )
+               {
+                       $parser->parse($template['COMMENTS_TOOMUCH']);
+                       return 0;
+               }
+               
+               $parser->parse($template['COMMENTS_HEADER']);
+               
+               foreach ( $comments as $comment )
+               {
+                       $comment['timestamp'] = strtotime($comment['ctime']);
+                       $handler->setCurrentComment($comment);
+                       $handler->setHighlight($highlight);
+
+                       $data = array('comment' => &$comment);
+                       $manager->notify('PreComment', $data);
+                       $parser->parse($template['COMMENTS_BODY']);
+                       $manager->notify('PostComment', $data);
+               }
+               
+               $parser->parse($template['COMMENTS_FOOTER']);
+               
+               $comments->closeCursor();
+               
+               return $this->commentcount;
+       }
+       
+       /**
+        * Comments::amountComments()
+        * Returns the amount of comments for this itemid
+        * 
+        * @param       void
+        * @return      integer number of comments
+        */
+       public function amountComments()
+       {
+               $query = 'SELECT COUNT(*) FROM %s WHERE citem=%d;';
+               $query = sprintf($query, sql_table('comment'), (integer) $this->itemid);
+               $res = DB::getValue($query);
+               
+               return $res;
+       }
+       
+       /**
+        * Comments::addComment()
+        * Adds a new comment to the database
+        * 
+        * @param string $timestamp
+        * @param array $comment
+        * @return mixed
+        */
+       public function addComment($timestamp, $comment)
+       {
+               global $CONF, $member, $manager;
+               
+               $blogid = getBlogIDFromItemID($this->itemid);
+               
+               $settings =& $manager->getBlog($blogid);
+               $settings->readSettings();
+               
+               // begin if: comments disabled
+               if ( !$settings->commentsEnabled() )
+               {
+                       return _ERROR_COMMENTS_DISABLED;
+               }
+               
+               // begin if: public cannot comment
+               if ( !$settings->isPublic() && !$member->isLoggedIn() )
+               {
+                       return _ERROR_COMMENTS_NONPUBLIC;
+               }
+               
+               // begin if: comment uses a protected member name
+               if ( $CONF['ProtectMemNames'] && !$member->isLoggedIn() && Member::isNameProtected($comment['user']) )
+               {
+                       return _ERROR_COMMENTS_MEMBERNICK;
+               }
+               
+               // begin if: email required, but missing (doesn't apply to members)
+               if ( $settings->emailRequired() && i18n::strlen($comment['email']) == 0 && !$member->isLoggedIn() )
+               {
+                       return _ERROR_EMAIL_REQUIRED;
+               }
+               
+               // begin if: commenter's name is too long
+               if ( i18n::strlen($comment['user']) > 40 )
+               {
+                       return _ERROR_USER_TOO_LONG;
+               }
+               
+               // begin if: commenter's email is too long
+               if ( i18n::strlen($comment['email']) > 100 )
+               {
+                       return _ERROR_EMAIL_TOO_LONG;
+               }
+               
+               // begin if: commenter's url is too long
+               if ( i18n::strlen($comment['userid']) > 100 )
+               {
+                       return _ERROR_URL_TOO_LONG;
+               }
+               
+               $comment['timestamp'] = $timestamp;
+               $comment['host'] = gethostbyaddr(serverVar('REMOTE_ADDR') );
+               $comment['ip'] = serverVar('REMOTE_ADDR');
+               
+               // begin if: member is logged in, use that data
+               if ( $member->isLoggedIn() )
+               {
+                       $comment['memberid'] = $member->getID();
+                       $comment['user'] = '';
+                       $comment['userid'] = '';
+                       $comment['email'] = '';
+               }
+               else
+               {
+                       $comment['memberid'] = 0;
+               }
+               
+               // spam check
+               $continue = FALSE;
+               $plugins = array();
+               
+               if ( isset($manager->subscriptions['ValidateForm']) )
+               {
+                       $plugins = array_merge($plugins, $manager->subscriptions['ValidateForm']);
+               }
+               
+               if ( isset($manager->subscriptions['PreAddComment']) )
+               {
+                       $plugins = array_merge($plugins, $manager->subscriptions['PreAddComment']);
+               }
+               
+               if ( isset($manager->subscriptions['PostAddComment']) )
+               {
+                       $plugins = array_merge($plugins, $manager->subscriptions['PostAddComment']);
+               }
+               
+               $plugins = array_unique($plugins);
+               
+               while ( list(, $plugin) = each($plugins) )
+               {
+                       $p = $manager->getPlugin($plugin);
+                       $continue = $continue || $p->supportsFeature('handleSpam');
+               }
+               
+               $spamcheck = array(
+                       'type'          => 'comment',
+                       'body'          => $comment['body'],
+                       'id'            => $comment['itemid'],
+                       'live'          => TRUE,
+                       'return'        => $continue
+               );
+               
+               // begin if: member logged in
+               if ( $member->isLoggedIn() )
+               {
+                       $spamcheck['author'] = $member->displayname;
+                       $spamcheck['email'] = $member->email;
+               }
+               // else: public
+               else
+               {
+                       $spamcheck['author'] = $comment['user'];
+                       $spamcheck['email'] = $comment['email'];
+                       $spamcheck['url'] = $comment['userid'];
+               }
+
+               $data = array('spamcheck' => &$spamcheck);
+               $manager->notify('SpamCheck', $data);
+               
+               if ( !$continue && isset($spamcheck['result']) && $spamcheck['result'] == TRUE )
+               {
+                       return _ERROR_COMMENTS_SPAM;
+               }
+               
+               // isValidComment returns either "1" or an error message
+               $isvalid = $this->isValidComment($comment, $spamcheck);
+               if ( $isvalid != 1 )
+               {
+                       return $isvalid;
+               }
+               
+               // begin if: send email to notification address
+               if ( $settings->getNotifyAddress() && $settings->notifyOnComment() )
+               {
+               
+                       $message = _NOTIFY_NC_MSG . ' ' . $this->itemid . "\n";
+                       $temp = parse_url($CONF['Self']);
+                       
+                       if ( $temp['scheme'] )
+                       {
+                               $message .= Link::create_item_link($this->itemid) . "\n\n";
+                       }
+                       else
+                       {
+                               $tempurl = $settings->getURL();
+                               
+                               if ( i18n::substr($tempurl, -1) == '/' || i18n::substr($tempurl, -4) == '.php' )
+                               {
+                                       $message .= $tempurl . '?itemid=' . $this->itemid . "\n\n";
+                               }
+                               else
+                               {
+                                       $message .= $tempurl . '/?itemid=' . $this->itemid . "\n\n";
+                               }
+                       }
+                       
+                       if ( $comment['memberid'] == 0 )
+                       {
+                               $message .= _NOTIFY_USER . ' ' . $comment['user'] . "\n";
+                               $message .= _NOTIFY_USERID . ' ' . $comment['userid'] . "\n";
+                       }
+                       else
+                       {
+                               $message .= _NOTIFY_MEMBER .' ' . $member->getDisplayName() . ' (ID=' . $member->getID() . ")\n";
+                       }
+                       
+                       $message .= _NOTIFY_HOST . ' ' . $comment['host'] . "\n";
+                       $message .= _NOTIFY_COMMENT . "\n " . $comment['body'] . "\n";
+                       $message .= NOTIFICATION::get_mail_footer();
+                       
+                       $item =& $manager->getItem($this->itemid, 0, 0);
+                       $subject = _NOTIFY_NC_TITLE . ' ' . strip_tags($item['title']) . ' (' . $this->itemid . ')';
+                       
+                       $from = $member->getNotifyFromMailAddress($comment['email']);
+                       
+                       NOTIFICATION::mail($settings->getNotifyAddress(), $subject, $message, $from, i18n::get_current_charset());
+               }
+               
+               $comment = Comment::prepare($comment);
+
+               $data = array('comment' => &$comment, 'spamcheck' => &$spamcheck);
+               $manager->notify('PreAddComment', $data);
+               
+               $name           = DB::quoteValue($comment['user']);
+               $url            = DB::quoteValue($comment['userid']);
+               $email          = DB::quoteValue($comment['email']);
+               $body           = DB::quoteValue($comment['body']);
+               $host           = DB::quoteValue($comment['host']);
+               $ip                     = DB::quoteValue($comment['ip']);
+               $memberid       = intval($comment['memberid']);
+               $timestamp      = DB::formatDateTime($comment['timestamp']);
+               $itemid         = $this->itemid;
+               
+               $qSql = 'SELECT COUNT(*) AS result '
+                     . 'FROM ' . sql_table('comment')
+                     . ' WHERE '
+                     .      'cmail   = ' . $url
+                     . ' AND cmember = ' . $memberid
+                     . ' AND cbody   = ' . $body
+                     . ' AND citem   = ' . $itemid
+                     . ' AND cblog   = ' . $blogid;
+               $result = (integer) DB::getValue($qSql);
+               
+               if ( $result > 0 )
+               {
+                       return _ERROR_BADACTION;
+               }
+               
+               $query = sprintf('INSERT INTO %s (cuser, cmail, cemail, cmember, cbody, citem, ctime, chost, cip, cblog) '
+                       . 'VALUES (%s, %s, %s, %d, %s, %d, %s, %s, %s, %d)'
+                       , sql_table('comment'), $name, $url, $email, $memberid, $body, $itemid, $timestamp, $host, $ip, $blogid);
+               
+               DB::execute($query);
+               
+               // post add comment
+               $commentid = DB::getInsertId();
+               $data = array('comment' => &$comment, 'commentid' => &$commentid, 'spamcheck' => &$spamcheck);
+               $manager->notify('PostAddComment', $data);
+               
+               // succeeded !
+               return TRUE;
+       }
+       
+       /**
+        * Comments::isValidComment()
+        * Checks if a comment is valid and call plugins
+        * that can check if the comment is a spam comment        
+        * 
+        * @param       array   $comment        array with comment elements
+        * @param       array   $spamcheck      array with spamcheck elements
+        * @return      boolean valid or not
+        */
+       private function isValidComment(&$comment, &$spamcheck)
+       {
+               global $member, $manager;
+               
+               // check if there exists a item for this date
+               $item =& $manager->getItem($this->itemid, 0, 0);
+               
+               if ( !$item )
+               {
+                       return _ERROR_NOSUCHITEM;
+               }
+               
+               if ( $item['closed'] )
+               {
+                       return _ERROR_ITEMCLOSED;
+               }
+               
+               // don't allow words that are too long
+               if ( preg_match('/[a-zA-Z0-9|\.,;:!\?=\/\\\\]{90,90}/', $comment['body']) != 0 )
+               {
+                       return _ERROR_COMMENT_LONGWORD;
+               }
+               
+               // check lengths of comment
+               if ( i18n::strlen($comment['body']) < 3 )
+               {
+                       return _ERROR_COMMENT_NOCOMMENT;
+               }
+               
+               if ( i18n::strlen($comment['body']) > 5000 )
+               {
+                       return _ERROR_COMMENT_TOOLONG;
+               }
+               
+               // only check username if no member logged in
+               if ( !$member->isLoggedIn() && (i18n::strlen($comment['user']) < 2) )
+               {
+                       return _ERROR_COMMENT_NOUSERNAME;
+               }
+               
+               if ( (i18n::strlen($comment['email']) != 0) && !NOTIFICATION::address_validation(trim($comment['email'])) )
+               {
+                       return _ERROR_BADMAILADDRESS;
+               }
+               
+               // let plugins do verification (any plugin which thinks the comment is invalid
+               // can change 'error' to something other than '1')
+               $result = 1;
+               $data = array('type' => 'comment', 'comment' => &$comment, 'error' => &$result, 'spamcheck' => &$spamcheck);
+               $manager->notify('ValidateForm', $data);
+               
+               return $result;
+       }
+}
+>>>>>>> skinnable-master
diff --git a/nucleus/libs/ENCAPSULATE.php b/nucleus/libs/ENCAPSULATE.php
deleted file mode 100644 (file)
index 4318774..0000000
+++ /dev/null
@@ -1,260 +0,0 @@
-<?php\r
-/*\r
- * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)\r
- * Copyright (C) 2002-2012 The Nucleus Group\r
- *\r
- * This program is free software; you can redistribute it and/or\r
- * modify it under the terms of the GNU General Public License\r
- * as published by the Free Software Foundation; either version 2\r
- * of the License, or (at your option) any later version.\r
- * (see nucleus/documentation/index.html#license for more info)\r
- */\r
-\r
-/**\r
- * Part of the code for the Nucleus admin area\r
- *\r
- * @license http://nucleuscms.org/license.txt GNU General Public License\r
- * @copyright Copyright (C) 2002-2012 The Nucleus Group\r
- * @version $Id: ENCAPSULATE.php 1624 2012-01-09 11:36:20Z sakamocchi $\r
- */\r
-\r
-class Encapsulate\r
-{\r
-       /**\r
-         * Uses $call to call a function using parameters $params\r
-         * This function should return the amount of entries shown.\r
-         * When entries are show, batch operation handlers are shown too.\r
-         * When no entries were shown, $errormsg is used to display an error\r
-         *\r
-         * Passes on the amount of results found (for further encapsulation)\r
-         */\r
-       function doEncapsulate($call, $params, $errorMessage = _Encapsulate_Encapsulate_NOENTRY) {\r
-               // start output buffering\r
-               ob_start();\r
-\r
-               $nbOfRows = call_user_func_array($call, $params);\r
-\r
-               // get list contents and stop buffering\r
-               $list = ob_get_contents();\r
-               ob_end_clean();\r
-\r
-               if ($nbOfRows > 0) {\r
-                       $this->showHead();\r
-                       echo $list;\r
-                       $this->showFoot();\r
-               } else {\r
-                       echo $errorMessage;\r
-               }\r
-\r
-               return $nbOfRows;\r
-       }\r
-}\r
-\r
-/**\r
-  * A class used to encapsulate a list of some sort inside next/prev buttons\r
-  */\r
-class NavList extends Encapsulate\r
-{\r
-       function __construct($action, $start, $amount, $minamount, $maxamount, $blogid, $search, $itemid) {\r
-               $this->action = $action;\r
-               $this->start = $start;\r
-               $this->amount = $amount;\r
-               $this->minamount = $minamount;\r
-               $this->maxamount = $maxamount;\r
-               $this->blogid = $blogid;\r
-               $this->search = $search;\r
-               $this->itemid = $itemid;\r
-       }\r
-\r
-       function showBatchList($batchtype, $query, $type, $template, $errorMessage = _LISTS_NOMORE) {\r
-               $batch = new Batch($batchtype);\r
-\r
-               $this->doEncapsulate(\r
-                               array(&$batch, 'showlist'),\r
-                               array(&$query, $type, $template),\r
-                               $errorMessage\r
-               );\r
-\r
-       }\r
-\r
-\r
-       function showHead() {\r
-               $this->showNavigation();\r
-       }\r
-       function showFoot() {\r
-               $this->showNavigation();\r
-       }\r
-\r
-       /**\r
-         * Displays a next/prev bar for long tables\r
-         */\r
-       function showNavigation() {\r
-               $action = $this->action;\r
-               $start = $this->start;\r
-               $amount = $this->amount;\r
-               $minamount = $this->minamount;\r
-               $maxamount = $this->maxamount;\r
-               $blogid = $this->blogid;\r
-               $search = Entity::hsc($this->search);\r
-               $itemid = $this->itemid;\r
-\r
-               $prev = $start - $amount;\r
-               if ($prev < $minamount) $prev=$minamount;\r
-\r
-               // maxamount not used yet\r
-       //      if ($start + $amount <= $maxamount)\r
-                       $next = $start + $amount;\r
-       //      else\r
-       //              $next = $start;\r
-\r
-       ?>\r
-       <table class="navigation">\r
-       <tr><td>\r
-               <form method="post" action="index.php"><div>\r
-               <input type="submit" value="&lt;&lt; <?php echo  _LISTS_PREV?>" />\r
-               <input type="hidden" name="blogid" value="<?php echo  $blogid; ?>" />\r
-               <input type="hidden" name="itemid" value="<?php echo  $itemid; ?>" />\r
-               <input type="hidden" name="action" value="<?php echo  $action; ?>" />\r
-               <input type="hidden" name="amount" value="<?php echo  $amount; ?>" />\r
-               <input type="hidden" name="search" value="<?php echo  $search; ?>" />\r
-               <input type="hidden" name="start" value="<?php echo  $prev; ?>" />\r
-               </div></form>\r
-       </td><td>\r
-               <form method="post" action="index.php"><div>\r
-               <input type="hidden" name="blogid" value="<?php echo  $blogid; ?>" />\r
-               <input type="hidden" name="itemid" value="<?php echo  $itemid; ?>" />\r
-               <input type="hidden" name="action" value="<?php echo  $action; ?>" />\r
-               <input name="amount" size="3" value="<?php echo  $amount; ?>" /> <?php echo _LISTS_PERPAGE?>\r
-               <input type="hidden" name="start" value="<?php echo  $start; ?>" />\r
-               <input type="hidden" name="search" value="<?php echo  $search; ?>" />\r
-               <input type="submit" value="&gt; <?php echo _LISTS_CHANGE?>" />\r
-               </div></form>\r
-       </td><td>\r
-               <form method="post" action="index.php"><div>\r
-               <input type="hidden" name="blogid" value="<?php echo  $blogid; ?>" />\r
-               <input type="hidden" name="itemid" value="<?php echo  $itemid; ?>" />\r
-               <input type="hidden" name="action" value="<?php echo  $action; ?>" />\r
-               <input type="hidden" name="amount" value="<?php echo  $amount; ?>" />\r
-               <input type="hidden" name="start" value="0" />\r
-               <input type="text" name="search" value="<?php echo  $search; ?>" size="7" />\r
-               <input type="submit" value="&gt; <?php echo  _LISTS_SEARCH?>" />\r
-               </div></form>\r
-       </td><td>\r
-               <form method="post" action="index.php"><div>\r
-               <input type="submit" value="<?php echo _LISTS_NEXT?> &gt; &gt;" />\r
-               <input type="hidden" name="search" value="<?php echo  $search; ?>" />\r
-               <input type="hidden" name="blogid" value="<?php echo  $blogid; ?>" />\r
-               <input type="hidden" name="itemid" value="<?php echo  $itemid; ?>" />\r
-               <input type="hidden" name="action" value="<?php echo  $action; ?>" />\r
-               <input type="hidden" name="amount" value="<?php echo  $amount; ?>" />\r
-               <input type="hidden" name="start" value="<?php echo  $next; ?>" />\r
-               </div></form>\r
-       </td></tr>\r
-       </table>\r
-       <?php   }\r
-\r
-\r
-}\r
-\r
-\r
-/**\r
- * A class used to encapsulate a list of some sort in a batch selection\r
- */\r
-class Batch extends Encapsulate\r
-{\r
-       function __construct($type) {\r
-               $this->type = $type;\r
-       }\r
-\r
-       function showHead() {\r
-               ?>\r
-                       <form method="post" action="index.php">\r
-               <?php\r
-// TODO: get a list op operations above the list too\r
-// (be careful not to use the same names for the select...)\r
-//             $this->showOperationList();\r
-       }\r
-\r
-       function showFoot() {\r
-               $this->showOperationList();\r
-               ?>\r
-                       </form>\r
-               <?php   }\r
-\r
-       function showOperationList() {\r
-               global $manager;\r
-               ?>\r
-               <div class="batchoperations">\r
-                       <?php echo _BATCH_WITH_SEL ?>\r
-                       <select name="batchaction">\r
-                       <?php                           $options = array();\r
-                               switch($this->type) {\r
-                                       case 'item':\r
-                                               $options = array(\r
-                                                       'delete'        => _BATCH_ITEM_DELETE,\r
-                                                       'move'          => _BATCH_ITEM_MOVE\r
-                                               );\r
-                                               break;\r
-                                       case 'member':\r
-                                               $options = array(\r
-                                                       'delete'        => _BATCH_MEMBER_DELETE,\r
-                                                       'setadmin'      => _BATCH_MEMBER_SET_ADM,\r
-                                                       'unsetadmin' => _BATCH_MEMBER_UNSET_ADM\r
-                                               );\r
-                                               break;\r
-                                       case 'team':\r
-                                               $options = array(\r
-                                                       'delete'        => _BATCH_TEAM_DELETE,\r
-                                                       'setadmin'      => _BATCH_TEAM_SET_ADM,\r
-                                                       'unsetadmin' => _BATCH_TEAM_UNSET_ADM,\r
-                                               );\r
-                                               break;\r
-                                       case 'category':\r
-                                               $options = array(\r
-                                                       'delete'        => _BATCH_CAT_DELETE,\r
-                                                       'move'          => _BATCH_CAT_MOVE,\r
-                                               );\r
-                                               break;\r
-                                       case 'comment':\r
-                                               $options = array(\r
-                                                       'delete'        => _BATCH_COMMENT_DELETE,\r
-                                               );\r
-                                       break;\r
-                               }\r
-                               foreach ($options as $option => $label) {\r
-                                       echo '<option value="',$option,'">',$label,'</option>';\r
-                               }\r
-                       ?>\r
-                       </select>\r
-                       <input type="hidden" name="action" value="batch<?php echo $this->type?>" />\r
-                       <?php\r
-                               $manager->addTicketHidden();\r
-\r
-                               // add hidden fields for 'team' and 'comment' batchlists\r
-                               if ($this->type == 'team')\r
-                               {\r
-                                       echo '<input type="hidden" name="blogid" value="',intRequestVar('blogid'),'" />';\r
-                               }\r
-                               if ($this->type == 'comment')\r
-                               {\r
-                                       echo '<input type="hidden" name="itemid" value="',intRequestVar('itemid'),'" />';\r
-                               }\r
-\r
-                               echo '<input type="submit" value="',_BATCH_EXEC,'" />';\r
-                       ?>(\r
-                        <a href="" onclick="if (event &amp;&amp; event.preventDefault) event.preventDefault(); return batchSelectAll(1); "><?php echo _BATCH_SELECTALL?></a> -\r
-                        <a href="" onclick="if (event &amp;&amp; event.preventDefault) event.preventDefault(); return batchSelectAll(0); "><?php echo _BATCH_DESELECTALL?></a>\r
-                       )\r
-               </div>\r
-               <?php   }\r
-\r
-       // shortcut :)\r
-       function showList($query, $type, $template, $errorMessage = _LISTS_NOMORE) {\r
-               return $this->doEncapsulate(    'showlist',\r
-                                                                       array($query, $type, $template),\r
-                                                                       $errorMessage\r
-                                                               );\r
-       }\r
-\r
-}\r
-?>\r
index 524f748..413d324 100644 (file)
-<?php\r
-\r
-class Entity\r
-{\r
-       /**\r
-        * Entity::hen\r
-        * htmlentities wrapper\r
-        * \r
-        * @static\r
-        * @access public\r
-        * @param       string  $string target string\r
-        * @param       string  $quotation      quotation mode. please refer to the argument of PHP built-in htmlentities\r
-        * @return      string  escaped string\r
-        */\r
-       static public function hen($string, $quotation=ENT_QUOTES)\r
-       {\r
-               /*\r
-                * we can use 'double_encode' flag instead of this when dropping supports for PHP 5.2.2 or lower\r
-                */\r
-               $string = html_entity_decode($string, $quotation, i18n::get_current_charset());\r
-               return (string) htmlentities($string, $quotation, i18n::get_current_charset());\r
-       }\r
-       \r
-       /**\r
-        * Entity::hsc\r
-        * htmlspecialchars wrapper\r
-        * \r
-        * NOTE: htmlspecialchars_decode() is ASCII-to-ACII conversion\r
-        *  and its target string consists of several letters.\r
-        *   There are no problems.\r
-        * \r
-        * @static\r
-        * @access public\r
-        * @param       string  $string target string\r
-        * @param       string  $quotation      quotation mode. please refer to the argument of PHP built-in htmlspecialchars\r
-        * @return      string  escaped string\r
-        * \r
-        */\r
-       static public function hsc($string, $quotation=ENT_QUOTES)\r
-       {\r
-               /*\r
-                * we can use 'double_encode' flag instead of this when dropping supports for PHP 5.2.2 or lower\r
-                */\r
-               $string = htmlspecialchars_decode($string, $quotation);\r
-               return (string) htmlspecialchars($string, $quotation, i18n::get_current_charset());\r
-       }\r
-       \r
-       /**\r
-        * Entity::strip_tags()\r
-        * Strip HTML tags from a string\r
-        * \r
-        * This function is a bit more intelligent than a regular call to strip_tags(),\r
-        * because it also deletes the contents of certain tags and cleans up any\r
-        * unneeded whitespace.\r
-        * \r
-        * @static\r
-        * @param       String  $string target string\r
-        * @return      String  string with stripped tags\r
-        */\r
-       static public function strip_tags($string)\r
-       {\r
-               $string = preg_replace("#<del[^>]*>.+<\/del[^>]*>#isU", '', $string);\r
-               $string = preg_replace("#<script[^>]*>.+<\/script[^>]*>#isU", '', $string);\r
-               $string = preg_replace("#<style[^>]*>.+<\/style[^>]*>#isU", '', $string);\r
-               $string = preg_replace('#>#', '> ', $string);\r
-               $string = preg_replace('#<#', ' <', $string);\r
-               $string = strip_tags($string);\r
-               $string = preg_replace("#\s+#", " ", $string);\r
-               $string = trim($string);\r
-               return $string;\r
-       }\r
-       \r
-       /**\r
-        * shortens a text string to maxlength.\r
-        * $suffix is what needs to be added at the end (end length is <= $maxlength)\r
-        *\r
-        * The purpose is to limit the width of string for rendered screen in web browser.\r
-        * So it depends on style sheet, browser's rendering scheme, client's system font.\r
-        *\r
-        * NOTE: In general, non-Latin font such as Japanese, Chinese, Cyrillic have two times as width as Latin fonts,\r
-        *  but this is not always correct, for example, rendered by proportional font.\r
-        *\r
-        * @static\r
-        * @param string $escaped_string target string\r
-        * @param integer $maxlength maximum length of return string which includes suffix\r
-        * @param string $suffix added in the end of shortened-string\r
-        * @return string\r
-        */\r
-       static public function shorten($string, $maxlength, $suffix)\r
-       {\r
-               static $flag;\r
-               \r
-               $decoded_entities_pcre = array();\r
-               $encoded_entities = array();\r
-               \r
-               /* 1. store html entities */\r
-               preg_match('#&[^&]+?;#', $string, $encoded_entities);\r
-               if ( !$encoded_entities )\r
-               {\r
-                       $flag = FALSE;\r
-               }\r
-               else\r
-               {\r
-                       $flag = TRUE;\r
-               }\r
-               if ( $flag )\r
-               {\r
-                       foreach ( $encoded_entities as $encoded_entity )\r
-                       {\r
-                               $decoded_entities_pcre[] = '#' . html_entity_decode($encoded_entity, ENT_QUOTES, i18n::get_current_charset()) . '#';\r
-                       }\r
-               }\r
-               \r
-               /* 2. decode string */\r
-               $string = html_entity_decode($string, ENT_QUOTES, i18n::get_current_charset());\r
-               \r
-               /* 3. shorten string and add suffix if string length is longer */\r
-               if ( i18n::strlen($string) > $maxlength - i18n::strlen($suffix) )\r
-               {\r
-                       $string = i18n::substr($string, 0, $maxlength - i18n::strlen($suffix) );\r
-                       $string .= $suffix;\r
-               }\r
-               \r
-               /* 4. recover entities */\r
-               if ( $flag )\r
-               {\r
-                       $string = preg_replace($decoded_entities_pcre, $encoded_entities, $string);\r
-               }\r
-               \r
-               return $string;\r
-       }\r
-       \r
-       /**\r
-        * Entity::highlight()\r
-        * highlights a specific query in a given HTML text (not within HTML tags)\r
-        * \r
-        * @static\r
-        * @param       string $text text to be highlighted\r
-        * @param       string $expression regular expression to be matched (can be an array of expressions as well)\r
-        * @param       string $highlight highlight to be used (use \\0 to indicate the matched expression)\r
-        * @return      string\r
-        */\r
-       static public function highlight($text, $expression, $highlight)\r
-       {\r
-               if ( !$highlight || !$expression )\r
-               {\r
-                       return $text;\r
-               }\r
-               \r
-               if ( is_array($expression) && (count($expression) == 0) )\r
-               {\r
-                       return $text;\r
-               }\r
-               \r
-               $text = "<!--h-->{$text}";\r
-               preg_match_all('#(<[^>]+>)([^<>]*)#', $text, $matches);\r
-               $result = '';\r
-               $count = count($matches[2]);\r
-               \r
-               for ( $i = 0; $i < $count; $i++ )\r
-               {\r
-                       if ( $i != 0 )\r
-                       {\r
-                               $result .= $matches[1][$i];\r
-                       }\r
-                       \r
-                       if ( is_array($expression) )\r
-                       {\r
-                               foreach ( $expression as $regex )\r
-                               {\r
-                                               $matches[2][$i] = preg_replace("#{$regex}#i", $highlight, $matches[2][$i]);\r
-                               }\r
-                               $result .= $matches[2][$i];\r
-                       }\r
-                       else\r
-                       {\r
-                               $result .= preg_replace("#{$expression}#i", $highlight, $matches[2][$i]);\r
-                       }\r
-               }\r
-               return $result;\r
-       }\r
-       \r
-       /**\r
-        * Entity::anchor_footnoting()\r
-        * change strings with footnoticing generated from anchor elements\r
-        * \r
-        * @static\r
-        * @param       String  $string strings which includes html elements\r
-        * @return      String  string with footnotes\r
-        */\r
-       static public function anchor_footnoting($string)\r
-       {\r
-               /* 1. detect anchor elements */\r
-               $anchors = array();\r
-               if ( !preg_match_all("#<a[^>]*href=[\"\']([^\"^']*)[\"\'][^>]*>([^<]*)<\/a>#i", $subject, $anchors) )\r
-               {\r
-                       return $string;\r
-               }\r
-               \r
-               /* 2. add footnotes */\r
-               $string .= "\n\n";\r
-               $count = 1;\r
-               foreach ( $anchors as $anchor )\r
-               {\r
-                       preg_replace("#{$anchor[0]}#", "{$anchor[2]} [{$count}] ", $subject);\r
-                       $subject .= "[{$count}] {$anchor[1]}\n";\r
-                       $count++;\r
-               }\r
-               \r
-               return strip_tags($ascii);\r
-       }\r
-       \r
-       /*\r
-        * NOTE: Obsoleted functions\r
-        */\r
-       \r
-       /**\r
-        * Entity::named_to_numeric()\r
-        * \r
-        * @deprecated\r
-        * @param String $string\r
-        */\r
-       function named_to_numeric ($string)\r
-       {\r
-               $string = preg_replace('/(&[0-9A-Za-z]+)(;?\=?|([^A-Za-z0-9\;\:\.\-\_]))/e', "Entity::_named('\\1', '\\2') . '\\3'", $string);\r
-               return $string;\r
-       }\r
-       \r
-       /**\r
-        * Entity::named_to_numeric()\r
-        * \r
-        * @deprecated\r
-        * @param String $string\r
-        */\r
-       function normalize_numeric ($string) {\r
-               $string = preg_replace('/&#([0-9]+)(;)?/e', "'&#x'.dechex('\\1').';'", $string);\r
-               $string = preg_replace('/&#[Xx](0)*([0-9A-Fa-f]+)(;?|([^A-Za-z0-9\;\:\.\-\_]))/e', "'&#x' . strtoupper('\\2') . ';\\4'", $string);\r
-               $string = strtr($string, self::$entities['Windows-1252']);\r
-               return $string;\r
-       }\r
-       \r
-       /**\r
-        * Entity::numeric_to_utf8()\r
-        * \r
-        * @deprecated\r
-        * @param String $string\r
-        */\r
-       function numeric_to_utf8 ($string) {\r
-               $string = preg_replace('/&#([0-9]+)(;)?/e', "'&#x'.dechex('\\1').';'", $string);\r
-               $string = preg_replace('/&#[Xx](0)*([0-9A-Fa-f]+)(;?|([^A-Za-z0-9\;\:\.\-\_]))/e', "'&#x' . strtoupper('\\2') . ';\\4'", $string);\r
-               $string = preg_replace('/&#x([0-9A-Fa-f]+);/e', "Entity::_hex_to_utf8('\\1')", $string);                \r
-               return $string;         \r
-       }\r
-       \r
-       /**\r
-        * Entity::numeric_to_named()\r
-        * convert decimal and hexadecimal numeric character references into named character references\r
-        * \r
-        * @deprecated\r
-        * @param String $string\r
-        */\r
-       function numeric_to_named ($string)\r
-       {\r
-               $string = preg_replace('/&#[Xx]([0-9A-Fa-f]+)/e', "'&#'.hexdec('\\1')", $string);\r
-               $string = strtr($string, array_flip(self::$entities['named_to_numeric']));\r
-               return $string; \r
-       }\r
-       \r
-       /**\r
-        * Entity::specialchars()\r
-        * convert HTML entities to named character reference\r
-        * \r
-        * @deprecated\r
-        * @param String $string\r
-        */\r
-       function specialchars ($string, $type = 'xml')\r
-       {\r
-               $specialchars = array(\r
-                       '"'             => '&quot;',\r
-                       '&'             => '&amp;',\r
-                       '<'             => '&lt;',\r
-                       '>'             => '&gt;'\r
-               );\r
-               if ( $type != 'xml' )\r
-               {\r
-                       $specialchars["'"] = '&#39;';\r
-               }\r
-               else\r
-               {\r
-                       $specialchars["'"] = '&apos;';\r
-               }\r
-               \r
-               $string = preg_replace('/&(#?[Xx]?[0-9A-Za-z]+);/', "[[[ENTITY:\\1]]]", $string);\r
-               $string = strtr($string, $specialchars);\r
-               $string = preg_replace('/\[\[\[ENTITY\:([^\]]+)\]\]\]/', "&\\1;", $string);             \r
-               return $string;\r
-       }\r
-       \r
-       /**\r
-        * Entity::_hex_to_utf8()\r
-        * convert decimal numeric character references to hexadecimal numeric character references\r
-        * \r
-        * @deprecated\r
-        * @param String $string\r
-        */\r
-       function _hex_to_utf8($s)\r
-       {\r
-               $c = hexdec($s);\r
-               \r
-               if ( $c < 0x80 )\r
-               {\r
-                       $str = chr($c);\r
-               }\r
-               else if ( $c < 0x800 )\r
-               {\r
-                       $str = chr(0xC0 | $c>>6) . chr(0x80 | $c & 0x3F);\r
-               }\r
-               else if ( $c < 0x10000 )\r
-               {\r
-                       $str = chr(0xE0 | $c>>12) . chr(0x80 | $c>>6 & 0x3F) . chr(0x80 | $c & 0x3F);\r
-               }\r
-               else if ( $c < 0x200000 )\r
-               {\r
-                       $str = chr(0xF0 | $c>>18) . chr(0x80 | $c>>12 & 0x3F) . chr(0x80 | $c>>6 & 0x3F) . chr(0x80 | $c & 0x3F);\r
-               }\r
-               return $str;\r
-       }\r
-       \r
-       /**\r
-        * Entity::_named()\r
-        * convert entities to named character reference\r
-        * \r
-        * @deprecated\r
-        * @param String $string\r
-        * @param       String  $extra\r
-        * @return      \r
-        */\r
-       function _named($entity, $extra)\r
-       {\r
-               if ( $extra == '=' )\r
-               {\r
-                       return $entity . '=';\r
-               }\r
-               \r
-               $length = i18n::strlen($entity);\r
-               \r
-               while ( $length > 0 )\r
-               {\r
-                       $check = i18n::substr($entity, 0, $length);\r
-                       if ( array_key_exists($check, self::$entities['named_to_numeric']) )\r
-                       {\r
-                               return self::$entities['named_to_numeric'][$check] . ';' . i18n::substr($entity, $length);\r
-                       }\r
-                       $length--;\r
-               }\r
-               \r
-               if ( $extra != ';' )\r
-               {\r
-                       return $entity;\r
-               }\r
-               else\r
-               {\r
-                       return "{$entity};";\r
-               }\r
-       }\r
-       \r
-       /**\r
-        * ENTITIY::$entities\r
-        * \r
-        * HTML 4.01 Specification\r
-        * @link        http://www.w3.org/TR/html4/sgml/entities.html\r
-        * @see 24 Character entity references in HTML 4\r
-        * \r
-        * XHTML™ 1.0 The Extensible HyperText Markup Language (Second Edition)\r
-        *  A Reformulation of HTML 4 in XML 1.0\r
-        * @link        http://www.w3.org/TR/xhtml1/\r
-        * @see 4.12. Entity references as hex values\r
-        * @see C.16. The Named Character Reference &apos;\r
-        * \r
-        * @static\r
-        * @deprecated\r
-        */\r
-       static private $entities = array (\r
-               'named_to_numeric' => array (\r
-                       '&nbsp' =>      '&#x00A0',\r
-                       '&iexcl'        =>      '&#x00A1',\r
-                       '&cent' =>      '&#x00A2',\r
-                       '&pound'        =>      '&#x00A3',\r
-                       '&curren'       =>      '&#x00A4',\r
-                       '&yen'          =>      '&#x00A5',\r
-                       '&brvbar'       =>      '&#x00A6',\r
-                       '&sect' =>      '&#x00A7',\r
-                       '&uml'          =>      '&#x00A8',\r
-                       '&copy' =>      '&#x00A9',\r
-                       '&ordf' =>      '&#x00AA',\r
-                       '&laquo'        =>      '&#x00AB',\r
-                       '&not'          =>      '&#x00AC',\r
-                       '&shy'          =>      '&#x00AD',\r
-                       '&reg'          =>      '&#x00AE',\r
-                       '&macr' =>      '&#x00AF',\r
-                       '&deg'          =>      '&#x00B0',\r
-                       '&plusmn'       =>      '&#x00B1',\r
-                       '&sup2' =>      '&#x00B2',\r
-                       '&sup3' =>      '&#x00B3',\r
-                       '&acute'        =>      '&#x00B4',\r
-                       '&micro'        =>      '&#x00B5',\r
-                       '&para' =>      '&#x00B6',\r
-                       '&middot'       =>      '&#x00B7',\r
-                       '&cedil'        =>      '&#x00B8',\r
-                       '&sup1' =>      '&#x00B9',\r
-                       '&ordm' =>      '&#x00BA',\r
-                       '&raquo'        =>      '&#x00BB',\r
-                       '&frac14'       =>      '&#x00BC',\r
-                       '&frac12'       =>      '&#x00BD',\r
-                       '&frac34'       =>      '&#x00BE',\r
-                       '&iquest'       =>      '&#x00BF',\r
-                       '&Agrave'       =>      '&#x00C0',\r
-                       '&Aacute'       =>      '&#x00C1',\r
-                       '&Acirc'        =>      '&#x00C2',\r
-                       '&Atilde'       =>      '&#x00C3',\r
-                       '&Auml' =>      '&#x00C4',\r
-                       '&Aring'        =>      '&#x00C5',\r
-                       '&AElig'        =>      '&#x00C6',\r
-                       '&Ccedil'       =>      '&#x00C7',\r
-                       '&Egrave'       =>      '&#x00C8',\r
-                       '&Eacute'       =>      '&#x00C9',\r
-                       '&Ecirc'        =>      '&#x00CA',\r
-                       '&Euml' =>      '&#x00CB',\r
-                       '&Igrave'       =>      '&#x00CC',\r
-                       '&Iacute'       =>      '&#x00CD',\r
-                       '&Icirc'        =>      '&#x00CE',\r
-                       '&Iuml' =>      '&#x00CF',\r
-                       '&ETH'          =>      '&#x00D0',\r
-                       '&Ntilde'       =>      '&#x00D1',\r
-                       '&Ograve'       =>      '&#x00D2',\r
-                       '&Oacute'       =>      '&#x00D3',\r
-                       '&Ocirc'        =>      '&#x00D4',\r
-                       '&Otilde'       =>      '&#x00D5',\r
-                       '&Ouml' =>      '&#x00D6',\r
-                       '&times'        =>      '&#x00D7',\r
-                       '&Oslash'       =>      '&#x00D8',\r
-                       '&Ugrave'       =>      '&#x00D9',\r
-                       '&Uacute'       =>      '&#x00DA',\r
-                       '&Ucirc'        =>      '&#x00DB',\r
-                       '&Uuml' =>      '&#x00DC',\r
-                       '&Yacute'       =>      '&#x00DD',\r
-                       '&THORN'        =>      '&#x00DE',\r
-                       '&szlig'        =>      '&#x00DF',\r
-                       '&agrave'       =>      '&#x00E0',\r
-                       '&aacute'       =>      '&#x00E1',\r
-                       '&acirc'        =>      '&#x00E2',\r
-                       '&atilde'       =>      '&#x00E3',\r
-                       '&auml' =>      '&#x00E4',\r
-                       '&aring'        =>      '&#x00E5',\r
-                       '&aelig'        =>      '&#x00E6',\r
-                       '&ccedil'       =>      '&#x00E7',\r
-                       '&egrave'       =>      '&#x00E8',\r
-                       '&eacute'       =>      '&#x00E9',\r
-                       '&ecirc'        =>      '&#x00EA',\r
-                       '&euml' =>      '&#x00EB',\r
-                       '&igrave'       =>      '&#x00EC',\r
-                       '&iacute'       =>      '&#x00ED',\r
-                       '&icirc'        =>      '&#x00EE',\r
-                       '&iuml' =>      '&#x00EF',\r
-                       '&eth'          =>      '&#x00F0',\r
-                       '&ntilde'       =>      '&#x00F1',\r
-                       '&ograve'       =>      '&#x00F2',\r
-                       '&oacute'       =>      '&#x00F3',\r
-                       '&ocirc'        =>      '&#x00F4',\r
-                       '&otilde'       =>      '&#x00F5',\r
-                       '&ouml' =>      '&#x00F6',\r
-                       '&divide'       =>      '&#x00F7',\r
-                       '&oslash'       =>      '&#x00F8',\r
-                       '&ugrave'       =>      '&#x00F9',\r
-                       '&uacute'       =>      '&#x00FA',\r
-                       '&ucirc'        =>      '&#x00FB',\r
-                       '&uuml' =>      '&#x00FC',\r
-                       '&yacute'       =>      '&#x00FD',\r
-                       '&thorn'        =>      '&#x00FE',\r
-                       '&yuml' =>      '&#x00FF',\r
-                       '&OElig'        =>      '&#x0152',\r
-                       '&oelig'        =>      '&#x00E5',\r
-                       '&Scaron'       =>      '&#x0160',\r
-                       '&scaron'       =>      '&#x0161',\r
-                       '&Yuml' =>      '&#x0178',\r
-                       '&circ' =>      '&#x02C6',\r
-                       '&tilde'        =>      '&#x02DC',\r
-                       '&esnp' =>      '&#x2002',\r
-                       '&emsp' =>      '&#x2003',\r
-                       '&thinsp'       =>      '&#x2009',\r
-                       '&zwnj' =>      '&#x200C',\r
-                       '&zwj'          =>      '&#x200D',\r
-                       '&lrm'          =>      '&#x200E',\r
-                       '&rlm'          =>      '&#x200F',\r
-                       '&ndash'        =>      '&#x2013',\r
-                       '&mdash'        =>      '&#x2014',\r
-                       '&lsquo'        =>      '&#x2018',\r
-                       '&rsquo'        =>      '&#x2019',\r
-                       '&sbquo'        =>      '&#x201A',\r
-                       '&ldquo'        =>      '&#x201C',\r
-                       '&rdquo'        =>      '&#x201D',\r
-                       '&bdquo'        =>      '&#x201E',\r
-                       '&dagger'       =>      '&#x2020',\r
-                       '&Dagger'       =>      '&#x2021',\r
-                       '&permil'       =>      '&#x2030',\r
-                       '&lsaquo'       =>      '&#x2039',\r
-                       '&rsaquo'       =>      '&#x203A',\r
-                       '&euro' =>      '&#x20AC',\r
-                       '&fnof' =>      '&#x0192',\r
-                       '&Alpha'        =>      '&#x0391',\r
-                       '&Beta' =>      '&#x0392',\r
-                       '&Gamma'        =>      '&#x0393',\r
-                       '&Delta'        =>      '&#x0394',\r
-                       '&Epsilon'      =>      '&#x0395',\r
-                       '&Zeta' =>      '&#x0396',\r
-                       '&Eta'          =>      '&#x0397',\r
-                       '&Theta'        =>      '&#x0398',\r
-                       '&Iota' =>      '&#x0399',\r
-                       '&Kappa'        =>      '&#x039A',\r
-                       '&Lambda'       =>      '&#x039B',\r
-                       '&Mu'           =>      '&#x039C',\r
-                       '&Nu'           =>      '&#x039D',\r
-                       '&Xi'           =>      '&#x039E',\r
-                       '&Omicron'      =>      '&#x039F',\r
-                       '&Pi'           =>      '&#x03A0',\r
-                       '&Rho'          =>      '&#x03A1',\r
-                       '&Sigma'        =>      '&#x03A3',\r
-                       '&Tau'          =>      '&#x03A4',\r
-                       '&Upsilon'      =>      '&#x03A5',\r
-                       '&Phi'          =>      '&#x03A6',\r
-                       '&Chi'          =>      '&#x03A7',\r
-                       '&Psi'          =>      '&#x03A8',\r
-                       '&Omega'        =>      '&#x03A9',\r
-                       '&alpha'        =>      '&#x03B1',\r
-                       '&beta' =>      '&#x03B2',\r
-                       '&gamma'        =>      '&#x03B3',\r
-                       '&delta'        =>      '&#x03B4',\r
-                       '&epsilon'      =>      '&#x03B5',\r
-                       '&zeta' =>      '&#x03B6',\r
-                       '&eta'          =>      '&#x03B7',\r
-                       '&theta'        =>      '&#x03B8',\r
-                       '&iota' =>      '&#x03B9',\r
-                       '&kappa'        =>      '&#x03BA',\r
-                       '&lambda'       =>      '&#x03BB',\r
-                       '&mu'           =>      '&#x03BC',\r
-                       '&nu'           =>      '&#x03BD',\r
-                       '&xi'           =>      '&#x03BE',\r
-                       '&omicron'      =>      '&#x03BF',\r
-                       '&pi'           =>      '&#x03C0',\r
-                       '&rho'          =>      '&#x03C1',\r
-                       '&sigmaf'       =>      '&#x03C2',\r
-                       '&sigma'        =>      '&#x03C3',\r
-                       '&tau'          =>      '&#x03C4',\r
-                       '&upsilon'      =>      '&#x03C5',\r
-                       '&phi'          =>      '&#x03C6',\r
-                       '&chi'          =>      '&#x03C7',\r
-                       '&psi'          =>      '&#x03C8',\r
-                       '&omega'        =>      '&#x03C9',\r
-                       '&thetasym'     =>      '&#x03D1',\r
-                       '&upsih'        =>      '&#x03D2',\r
-                       '&piv'          =>      '&#x03D6',\r
-                       '&bull' =>      '&#x2022',\r
-                       '&hellip'       =>      '&#x2026',\r
-                       '&prime'        =>      '&#x2032',\r
-                       '&Prime'        =>      '&#x2033',\r
-                       '&oline'        =>      '&#x203E',\r
-                       '&frasl'        =>      '&#x2044',\r
-                       '&weierp'       =>      '&#x2118',\r
-                       '&image'        =>      '&#x2111',\r
-                       '&real' =>      '&#x211C',\r
-                       '&trade'        =>      '&#x2112',\r
-                       '&alefsym'      =>      '&#x2135',\r
-                       '&larr' =>      '&#x2190',\r
-                       '&uarr' =>      '&#x2191',\r
-                       '&rarr' =>      '&#x2192',\r
-                       '&darr' =>      '&#x2193',\r
-                       '&harr' =>      '&#x2194',\r
-                       '&crarr'        =>      '&#x21B5',\r
-                       '&lArr' =>      '&#x21D0',\r
-                       '&uArr' =>      '&#x21D1',\r
-                       '&rArr' =>      '&#x21D2',\r
-                       '&dArr' =>      '&#x21D3',\r
-                       '&hArr' =>      '&#x21D4',\r
-                       '&forall'       =>      '&#x2200',\r
-                       '&part' =>      '&#x2202',\r
-                       '&exist'        =>      '&#x2203',\r
-                       '&empty'        =>      '&#x2205',\r
-                       '&nabla'        =>      '&#x2207',\r
-                       '&isin' =>      '&#x2208',\r
-                       '&notin'        =>      '&#x2209',\r
-                       '&ni'           =>      '&#x220B',\r
-                       '&prod' =>      '&#x220F',\r
-                       '&sum'          =>      '&#x2211',\r
-                       '&minus'        =>      '&#x2212',\r
-                       '&lowast'       =>      '&#x2217',\r
-                       '&radic'        =>      '&#x221A',\r
-                       '&prop' =>      '&#x221D',\r
-                       '&infin'        =>      '&#x221E',\r
-                       '&ang'          =>      '&#x2220',\r
-                       '&and'          =>      '&#x2227',\r
-                       '&or'           =>      '&#x2228',\r
-                       '&cap'          =>      '&#x2229',\r
-                       '&cup'          =>      '&#x222A',\r
-                       '&int'          =>      '&#x222B',\r
-                       '&there4'       =>      '&#x2234',\r
-                       '&sim'          =>      '&#x223C',\r
-                       '&cong' =>      '&#x2245',\r
-                       '&asymp'        =>      '&#x2248',\r
-                       '&ne'           =>      '&#x2260',\r
-                       '&equiv'        =>      '&#x2261',\r
-                       '&le'           =>      '&#x2264',\r
-                       '&ge'           =>      '&#x2265',\r
-                       '&sub'          =>      '&#x2282',\r
-                       '&sup'          =>      '&#x2283',\r
-                       '&nsub' =>      '&#x2284',\r
-                       '&sube' =>      '&#x2286',\r
-                       '&supe' =>      '&#x2287',\r
-                       '&oplus'        =>      '&#x2295',\r
-                       '&otimes'       =>      '&#x2296',\r
-                       '&perp' =>      '&#x22A5',\r
-                       '&sdot' =>      '&#x22C5',\r
-                       '&lceil'        =>      '&#x2368',\r
-                       '&rceil'        =>      '&#x2309',\r
-                       '&lfloor'       =>      '&#x230A',\r
-                       '&rfloor'       =>      '&#x230B',\r
-                       '&lang' =>      '&#x2329',\r
-                       '&rang' =>      '&#x2330',\r
-                       '&loz'          =>      '&#x25CA',\r
-                       '&spades'       =>      '&#x2660',\r
-                       '&clubs'        =>      '&#x2663',\r
-                       '&hearts'       =>      '&#x2665',\r
-                       '&diams'        =>      '&#x2666'\r
-               ),\r
-               'Windows-1252' => array(\r
-                       '&#x80;'        =>      '&#x20AC;',\r
-                       '&#x82;'        =>      '&#x201A;',\r
-                       '&#x83;'        =>      '&#x0192;',\r
-                       '&#x84;'        =>      '&#x201E;',\r
-                       '&#x85;'        =>      '&#x2026;',\r
-                       '&#x86;'        =>      '&#x2020;',\r
-                       '&#x87;'        =>      '&#x2021;',\r
-                       '&#x88;'        =>      '&#x02C6;',\r
-                       '&#x89;'        =>      '&#x2030;',\r
-                       '&#x8A;'        =>      '&#x0160;',\r
-                       '&#x8B;'        =>      '&#x2039;',\r
-                       '&#x8C;'        =>      '&#x0152;',\r
-                       '&#x8E;'        =>      '&#x017D;',\r
-                       '&#x91;'        =>      '&#x2018;',\r
-                       '&#x92;'        =>      '&#x2019;',\r
-                       '&#x93;'        =>      '&#x201C;',\r
-                       '&#x94;'        =>      '&#x201D;',\r
-                       '&#x95;'        =>      '&#x2022;',\r
-                       '&#x96;'        =>      '&#x2013;',\r
-                       '&#x97;'        =>      '&#x2014;',\r
-                       '&#x98;'        =>      '&#x02DC;',\r
-                       '&#x99;'        =>      '&#x2122;',\r
-                       '&#x9A;'        =>      '&#x0161;',\r
-                       '&#x9B;'        =>      '&#x203A;',\r
-                       '&#x9C;'        =>      '&#x0153;',\r
-                       '&#x9E;'        =>      '&#x017E;',\r
-                       '&#x9F;'        =>      '&#x0178;',\r
-               )\r
-       );\r
-}\r
+<?php
+
+class Entity
+{
+       /**
+        * Entity::hen
+        * htmlentities wrapper
+        * 
+        * @static
+        * @access public
+        * @param       string  $string target string
+        * @param       string  $quotation      quotation mode. please refer to the argument of PHP built-in htmlentities
+        * @return      string  escaped string
+        */
+       static public function hen($string, $quotation=ENT_QUOTES)
+       {
+               /*
+                * we can use 'double_encode' flag instead of this when dropping supports for PHP 5.2.2 or lower
+                */
+               $string = html_entity_decode($string, $quotation, i18n::get_current_charset());
+               return (string) htmlentities($string, $quotation, i18n::get_current_charset());
+       }
+       
+       /**
+        * Entity::hsc
+        * htmlspecialchars wrapper
+        * 
+        * NOTE: htmlspecialchars_decode() is ASCII-to-ACII conversion
+        *  and its target string consists of several letters.
+        *   There are no problems.
+        * 
+        * @static
+        * @access public
+        * @param       string  $string target string
+        * @param       string  $quotation      quotation mode. please refer to the argument of PHP built-in htmlspecialchars
+        * @return      string  escaped string
+        * 
+        */
+       static public function hsc($string, $quotation=ENT_QUOTES)
+       {
+               /*
+                * we can use 'double_encode' flag instead of this when dropping supports for PHP 5.2.2 or lower
+                */
+               $string = htmlspecialchars_decode($string, $quotation);
+               return (string) htmlspecialchars($string, $quotation, i18n::get_current_charset());
+       }
+       
+       /**
+        * Entity::strip_tags()
+        * Strip HTML tags from a string
+        * 
+        * This function is a bit more intelligent than a regular call to strip_tags(),
+        * because it also deletes the contents of certain tags and cleans up any
+        * unneeded whitespace.
+        * 
+        * @static
+        * @param       String  $string target string
+        * @return      String  string with stripped tags
+        */
+       static public function strip_tags($string)
+       {
+               $string = preg_replace("#<del[^>]*>.+<\/del[^>]*>#isU", '', $string);
+               $string = preg_replace("#<script[^>]*>.+<\/script[^>]*>#isU", '', $string);
+               $string = preg_replace("#<style[^>]*>.+<\/style[^>]*>#isU", '', $string);
+               $string = preg_replace('#>#', '> ', $string);
+               $string = preg_replace('#<#', ' <', $string);
+               $string = strip_tags($string);
+               $string = preg_replace("#\s+#", " ", $string);
+               $string = trim($string);
+               return $string;
+       }
+       
+       /**
+        * shortens a text string to maxlength.
+        * $suffix is what needs to be added at the end (end length is <= $maxlength)
+        *
+        * The purpose is to limit the width of string for rendered screen in web browser.
+        * So it depends on style sheet, browser's rendering scheme, client's system font.
+        *
+        * NOTE: In general, non-Latin font such as Japanese, Chinese, Cyrillic have two times as width as Latin fonts,
+        *  but this is not always correct, for example, rendered by proportional font.
+        *
+        * @static
+        * @param string $escaped_string target string
+        * @param integer $maxlength maximum length of return string which includes suffix
+        * @param string $suffix added in the end of shortened-string
+        * @return string
+        */
+       static public function shorten($string, $maxlength, $suffix)
+       {
+               static $flag;
+               
+               $decoded_entities_pcre = array();
+               $encoded_entities = array();
+               
+               /* 1. store html entities */
+               preg_match('#&[^&]+?;#', $string, $encoded_entities);
+               if ( !$encoded_entities )
+               {
+                       $flag = FALSE;
+               }
+               else
+               {
+                       $flag = TRUE;
+               }
+               if ( $flag )
+               {
+                       foreach ( $encoded_entities as $encoded_entity )
+                       {
+                               $decoded_entities_pcre[] = '#' . html_entity_decode($encoded_entity, ENT_QUOTES, i18n::get_current_charset()) . '#';
+                       }
+               }
+               
+               /* 2. decode string */
+               $string = html_entity_decode($string, ENT_QUOTES, i18n::get_current_charset());
+               
+               /* 3. shorten string and add suffix if string length is longer */
+               if ( i18n::strlen($string) > $maxlength - i18n::strlen($suffix) )
+               {
+                       $string = i18n::substr($string, 0, $maxlength - i18n::strlen($suffix) );
+                       $string .= $suffix;
+               }
+               
+               /* 4. recover entities */
+               if ( $flag )
+               {
+                       $string = preg_replace($decoded_entities_pcre, $encoded_entities, $string);
+               }
+               
+               return $string;
+       }
+       
+       /**
+        * Entity::highlight()
+        * highlights a specific query in a given HTML text (not within HTML tags)
+        * 
+        * @static
+        * @param       string $text text to be highlighted
+        * @param       string $expression regular expression to be matched (can be an array of expressions as well)
+        * @param       string $highlight highlight to be used (use \\0 to indicate the matched expression)
+        * @return      string
+        */
+       static public function highlight($text, $expression, $highlight)
+       {
+               if ( !$highlight || !$expression )
+               {
+                       return $text;
+               }
+               
+               if ( is_array($expression) && (count($expression) == 0) )
+               {
+                       return $text;
+               }
+               
+               $text = "<!--h-->{$text}";
+               preg_match_all('#(<[^>]+>)([^<>]*)#', $text, $matches);
+               $result = '';
+               $count = count($matches[2]);
+               
+               for ( $i = 0; $i < $count; $i++ )
+               {
+                       if ( $i != 0 )
+                       {
+                               $result .= $matches[1][$i];
+                       }
+                       
+                       if ( is_array($expression) )
+                       {
+                               foreach ( $expression as $regex )
+                               {
+                                               $matches[2][$i] = preg_replace("#{$regex}#i", $highlight, $matches[2][$i]);
+                               }
+                               $result .= $matches[2][$i];
+                       }
+                       else
+                       {
+                               $result .= preg_replace("#{$expression}#i", $highlight, $matches[2][$i]);
+                       }
+               }
+               return $result;
+       }
+       
+       /**
+        * Entity::anchor_footnoting()
+        * change strings with footnoticing generated from anchor elements
+        * 
+        * @static
+        * @param       String  $string strings which includes html elements
+        * @return      String  string with footnotes
+        */
+       static public function anchor_footnoting($string)
+       {
+               /* 1. detect anchor elements */
+               $anchors = array();
+               if ( !preg_match_all("#<a[^>]*href=[\"\']([^\"^']*)[\"\'][^>]*>([^<]*)<\/a>#i", $subject, $anchors) )
+               {
+                       return $string;
+               }
+               
+               /* 2. add footnotes */
+               $string .= "\n\n";
+               $count = 1;
+               foreach ( $anchors as $anchor )
+               {
+                       preg_replace("#{$anchor[0]}#", "{$anchor[2]} [{$count}] ", $subject);
+                       $subject .= "[{$count}] {$anchor[1]}\n";
+                       $count++;
+               }
+               
+               return strip_tags($ascii);
+       }
+       
+       /*
+        * NOTE: Obsoleted functions
+        */
+       
+       /**
+        * Entity::named_to_numeric()
+        * 
+        * @deprecated
+        * @param String $string
+        */
+       function named_to_numeric ($string)
+       {
+               $string = preg_replace('/(&[0-9A-Za-z]+)(;?\=?|([^A-Za-z0-9\;\:\.\-\_]))/e', "Entity::_named('\\1', '\\2') . '\\3'", $string);
+               return $string;
+       }
+       
+       /**
+        * Entity::named_to_numeric()
+        * 
+        * @deprecated
+        * @param String $string
+        */
+       function normalize_numeric ($string) {
+               $string = preg_replace('/&#([0-9]+)(;)?/e', "'&#x'.dechex('\\1').';'", $string);
+               $string = preg_replace('/&#[Xx](0)*([0-9A-Fa-f]+)(;?|([^A-Za-z0-9\;\:\.\-\_]))/e', "'&#x' . strtoupper('\\2') . ';\\4'", $string);
+               $string = strtr($string, self::$entities['Windows-1252']);
+               return $string;
+       }
+       
+       /**
+        * Entity::numeric_to_utf8()
+        * 
+        * @deprecated
+        * @param String $string
+        */
+       function numeric_to_utf8 ($string) {
+               $string = preg_replace('/&#([0-9]+)(;)?/e', "'&#x'.dechex('\\1').';'", $string);
+               $string = preg_replace('/&#[Xx](0)*([0-9A-Fa-f]+)(;?|([^A-Za-z0-9\;\:\.\-\_]))/e', "'&#x' . strtoupper('\\2') . ';\\4'", $string);
+               $string = preg_replace('/&#x([0-9A-Fa-f]+);/e', "Entity::_hex_to_utf8('\\1')", $string);                
+               return $string;         
+       }
+       
+       /**
+        * Entity::numeric_to_named()
+        * convert decimal and hexadecimal numeric character references into named character references
+        * 
+        * @deprecated
+        * @param String $string
+        */
+       function numeric_to_named ($string)
+       {
+               $string = preg_replace('/&#[Xx]([0-9A-Fa-f]+)/e', "'&#'.hexdec('\\1')", $string);
+               $string = strtr($string, array_flip(self::$entities['named_to_numeric']));
+               return $string; 
+       }
+       
+       /**
+        * Entity::specialchars()
+        * convert HTML entities to named character reference
+        * 
+        * @deprecated
+        * @param String $string
+        */
+       function specialchars ($string, $type = 'xml')
+       {
+               $specialchars = array(
+                       '"'             => '&quot;',
+                       '&'             => '&amp;',
+                       '<'             => '&lt;',
+                       '>'             => '&gt;'
+               );
+               if ( $type != 'xml' )
+               {
+                       $specialchars["'"] = '&#39;';
+               }
+               else
+               {
+                       $specialchars["'"] = '&apos;';
+               }
+               
+               $string = preg_replace('/&(#?[Xx]?[0-9A-Za-z]+);/', "[[[ENTITY:\\1]]]", $string);
+               $string = strtr($string, $specialchars);
+               $string = preg_replace('/\[\[\[ENTITY\:([^\]]+)\]\]\]/', "&\\1;", $string);             
+               return $string;
+       }
+       
+       /**
+        * Entity::_hex_to_utf8()
+        * convert decimal numeric character references to hexadecimal numeric character references
+        * 
+        * @deprecated
+        * @param String $string
+        */
+       function _hex_to_utf8($s)
+       {
+               $c = hexdec($s);
+               
+               if ( $c < 0x80 )
+               {
+                       $str = chr($c);
+               }
+               else if ( $c < 0x800 )
+               {
+                       $str = chr(0xC0 | $c>>6) . chr(0x80 | $c & 0x3F);
+               }
+               else if ( $c < 0x10000 )
+               {
+                       $str = chr(0xE0 | $c>>12) . chr(0x80 | $c>>6 & 0x3F) . chr(0x80 | $c & 0x3F);
+               }
+               else if ( $c < 0x200000 )
+               {
+                       $str = chr(0xF0 | $c>>18) . chr(0x80 | $c>>12 & 0x3F) . chr(0x80 | $c>>6 & 0x3F) . chr(0x80 | $c & 0x3F);
+               }
+               return $str;
+       }
+       
+       /**
+        * Entity::_named()
+        * convert entities to named character reference
+        * 
+        * @deprecated
+        * @param String $string
+        * @param       String  $extra
+        * @return      
+        */
+       function _named($entity, $extra)
+       {
+               if ( $extra == '=' )
+               {
+                       return $entity . '=';
+               }
+               
+               $length = i18n::strlen($entity);
+               
+               while ( $length > 0 )
+               {
+                       $check = i18n::substr($entity, 0, $length);
+                       if ( array_key_exists($check, self::$entities['named_to_numeric']) )
+                       {
+                               return self::$entities['named_to_numeric'][$check] . ';' . i18n::substr($entity, $length);
+                       }
+                       $length--;
+               }
+               
+               if ( $extra != ';' )
+               {
+                       return $entity;
+               }
+               else
+               {
+                       return "{$entity};";
+               }
+       }
+       
+       /**
+        * ENTITIY::$entities
+        * 
+        * HTML 4.01 Specification
+        * @link        http://www.w3.org/TR/html4/sgml/entities.html
+        * @see 24 Character entity references in HTML 4
+        * 
+        * XHTML™ 1.0 The Extensible HyperText Markup Language (Second Edition)
+        *  A Reformulation of HTML 4 in XML 1.0
+        * @link        http://www.w3.org/TR/xhtml1/
+        * @see 4.12. Entity references as hex values
+        * @see C.16. The Named Character Reference &apos;
+        * 
+        * @static
+        * @deprecated
+        */
+       static private $entities = array (
+               'named_to_numeric' => array (
+                       '&nbsp' =>      '&#x00A0',
+                       '&iexcl'        =>      '&#x00A1',
+                       '&cent' =>      '&#x00A2',
+                       '&pound'        =>      '&#x00A3',
+                       '&curren'       =>      '&#x00A4',
+                       '&yen'          =>      '&#x00A5',
+                       '&brvbar'       =>      '&#x00A6',
+                       '&sect' =>      '&#x00A7',
+                       '&uml'          =>      '&#x00A8',
+                       '&copy' =>      '&#x00A9',
+                       '&ordf' =>      '&#x00AA',
+                       '&laquo'        =>      '&#x00AB',
+                       '&not'          =>      '&#x00AC',
+                       '&shy'          =>      '&#x00AD',
+                       '&reg'          =>      '&#x00AE',
+                       '&macr' =>      '&#x00AF',
+                       '&deg'          =>      '&#x00B0',
+                       '&plusmn'       =>      '&#x00B1',
+                       '&sup2' =>      '&#x00B2',
+                       '&sup3' =>      '&#x00B3',
+                       '&acute'        =>      '&#x00B4',
+                       '&micro'        =>      '&#x00B5',
+                       '&para' =>      '&#x00B6',
+                       '&middot'       =>      '&#x00B7',
+                       '&cedil'        =>      '&#x00B8',
+                       '&sup1' =>      '&#x00B9',
+                       '&ordm' =>      '&#x00BA',
+                       '&raquo'        =>      '&#x00BB',
+                       '&frac14'       =>      '&#x00BC',
+                       '&frac12'       =>      '&#x00BD',
+                       '&frac34'       =>      '&#x00BE',
+                       '&iquest'       =>      '&#x00BF',
+                       '&Agrave'       =>      '&#x00C0',
+                       '&Aacute'       =>      '&#x00C1',
+                       '&Acirc'        =>      '&#x00C2',
+                       '&Atilde'       =>      '&#x00C3',
+                       '&Auml' =>      '&#x00C4',
+                       '&Aring'        =>      '&#x00C5',
+                       '&AElig'        =>      '&#x00C6',
+                       '&Ccedil'       =>      '&#x00C7',
+                       '&Egrave'       =>      '&#x00C8',
+                       '&Eacute'       =>      '&#x00C9',
+                       '&Ecirc'        =>      '&#x00CA',
+                       '&Euml' =>      '&#x00CB',
+                       '&Igrave'       =>      '&#x00CC',
+                       '&Iacute'       =>      '&#x00CD',
+                       '&Icirc'        =>      '&#x00CE',
+                       '&Iuml' =>      '&#x00CF',
+                       '&ETH'          =>      '&#x00D0',
+                       '&Ntilde'       =>      '&#x00D1',
+                       '&Ograve'       =>      '&#x00D2',
+                       '&Oacute'       =>      '&#x00D3',
+                       '&Ocirc'        =>      '&#x00D4',
+                       '&Otilde'       =>      '&#x00D5',
+                       '&Ouml' =>      '&#x00D6',
+                       '&times'        =>      '&#x00D7',
+                       '&Oslash'       =>      '&#x00D8',
+                       '&Ugrave'       =>      '&#x00D9',
+                       '&Uacute'       =>      '&#x00DA',
+                       '&Ucirc'        =>      '&#x00DB',
+                       '&Uuml' =>      '&#x00DC',
+                       '&Yacute'       =>      '&#x00DD',
+                       '&THORN'        =>      '&#x00DE',
+                       '&szlig'        =>      '&#x00DF',
+                       '&agrave'       =>      '&#x00E0',
+                       '&aacute'       =>      '&#x00E1',
+                       '&acirc'        =>      '&#x00E2',
+                       '&atilde'       =>      '&#x00E3',
+                       '&auml' =>      '&#x00E4',
+                       '&aring'        =>      '&#x00E5',
+                       '&aelig'        =>      '&#x00E6',
+                       '&ccedil'       =>      '&#x00E7',
+                       '&egrave'       =>      '&#x00E8',
+                       '&eacute'       =>      '&#x00E9',
+                       '&ecirc'        =>      '&#x00EA',
+                       '&euml' =>      '&#x00EB',
+                       '&igrave'       =>      '&#x00EC',
+                       '&iacute'       =>      '&#x00ED',
+                       '&icirc'        =>      '&#x00EE',
+                       '&iuml' =>      '&#x00EF',
+                       '&eth'          =>      '&#x00F0',
+                       '&ntilde'       =>      '&#x00F1',
+                       '&ograve'       =>      '&#x00F2',
+                       '&oacute'       =>      '&#x00F3',
+                       '&ocirc'        =>      '&#x00F4',
+                       '&otilde'       =>      '&#x00F5',
+                       '&ouml' =>      '&#x00F6',
+                       '&divide'       =>      '&#x00F7',
+                       '&oslash'       =>      '&#x00F8',
+                       '&ugrave'       =>      '&#x00F9',
+                       '&uacute'       =>      '&#x00FA',
+                       '&ucirc'        =>      '&#x00FB',
+                       '&uuml' =>      '&#x00FC',
+                       '&yacute'       =>      '&#x00FD',
+                       '&thorn'        =>      '&#x00FE',
+                       '&yuml' =>      '&#x00FF',
+                       '&OElig'        =>      '&#x0152',
+                       '&oelig'        =>      '&#x00E5',
+                       '&Scaron'       =>      '&#x0160',
+                       '&scaron'       =>      '&#x0161',
+                       '&Yuml' =>      '&#x0178',
+                       '&circ' =>      '&#x02C6',
+                       '&tilde'        =>      '&#x02DC',
+                       '&esnp' =>      '&#x2002',
+                       '&emsp' =>      '&#x2003',
+                       '&thinsp'       =>      '&#x2009',
+                       '&zwnj' =>      '&#x200C',
+                       '&zwj'          =>      '&#x200D',
+                       '&lrm'          =>      '&#x200E',
+                       '&rlm'          =>      '&#x200F',
+                       '&ndash'        =>      '&#x2013',
+                       '&mdash'        =>      '&#x2014',
+                       '&lsquo'        =>      '&#x2018',
+                       '&rsquo'        =>      '&#x2019',
+                       '&sbquo'        =>      '&#x201A',
+                       '&ldquo'        =>      '&#x201C',
+                       '&rdquo'        =>      '&#x201D',
+                       '&bdquo'        =>      '&#x201E',
+                       '&dagger'       =>      '&#x2020',
+                       '&Dagger'       =>      '&#x2021',
+                       '&permil'       =>      '&#x2030',
+                       '&lsaquo'       =>      '&#x2039',
+                       '&rsaquo'       =>      '&#x203A',
+                       '&euro' =>      '&#x20AC',
+                       '&fnof' =>      '&#x0192',
+                       '&Alpha'        =>      '&#x0391',
+                       '&Beta' =>      '&#x0392',
+                       '&Gamma'        =>      '&#x0393',
+                       '&Delta'        =>      '&#x0394',
+                       '&Epsilon'      =>      '&#x0395',
+                       '&Zeta' =>      '&#x0396',
+                       '&Eta'          =>      '&#x0397',
+                       '&Theta'        =>      '&#x0398',
+                       '&Iota' =>      '&#x0399',
+                       '&Kappa'        =>      '&#x039A',
+                       '&Lambda'       =>      '&#x039B',
+                       '&Mu'           =>      '&#x039C',
+                       '&Nu'           =>      '&#x039D',
+                       '&Xi'           =>      '&#x039E',
+                       '&Omicron'      =>      '&#x039F',
+                       '&Pi'           =>      '&#x03A0',
+                       '&Rho'          =>      '&#x03A1',
+                       '&Sigma'        =>      '&#x03A3',
+                       '&Tau'          =>      '&#x03A4',
+                       '&Upsilon'      =>      '&#x03A5',
+                       '&Phi'          =>      '&#x03A6',
+                       '&Chi'          =>      '&#x03A7',
+                       '&Psi'          =>      '&#x03A8',
+                       '&Omega'        =>      '&#x03A9',
+                       '&alpha'        =>      '&#x03B1',
+                       '&beta' =>      '&#x03B2',
+                       '&gamma'        =>      '&#x03B3',
+                       '&delta'        =>      '&#x03B4',
+                       '&epsilon'      =>      '&#x03B5',
+                       '&zeta' =>      '&#x03B6',
+                       '&eta'          =>      '&#x03B7',
+                       '&theta'        =>      '&#x03B8',
+                       '&iota' =>      '&#x03B9',
+                       '&kappa'        =>      '&#x03BA',
+                       '&lambda'       =>      '&#x03BB',
+                       '&mu'           =>      '&#x03BC',
+                       '&nu'           =>      '&#x03BD',
+                       '&xi'           =>      '&#x03BE',
+                       '&omicron'      =>      '&#x03BF',
+                       '&pi'           =>      '&#x03C0',
+                       '&rho'          =>      '&#x03C1',
+                       '&sigmaf'       =>      '&#x03C2',
+                       '&sigma'        =>      '&#x03C3',
+                       '&tau'          =>      '&#x03C4',
+                       '&upsilon'      =>      '&#x03C5',
+                       '&phi'          =>      '&#x03C6',
+                       '&chi'          =>      '&#x03C7',
+                       '&psi'          =>      '&#x03C8',
+                       '&omega'        =>      '&#x03C9',
+                       '&thetasym'     =>      '&#x03D1',
+                       '&upsih'        =>      '&#x03D2',
+                       '&piv'          =>      '&#x03D6',
+                       '&bull' =>      '&#x2022',
+                       '&hellip'       =>      '&#x2026',
+                       '&prime'        =>      '&#x2032',
+                       '&Prime'        =>      '&#x2033',
+                       '&oline'        =>      '&#x203E',
+                       '&frasl'        =>      '&#x2044',
+                       '&weierp'       =>      '&#x2118',
+                       '&image'        =>      '&#x2111',
+                       '&real' =>      '&#x211C',
+                       '&trade'        =>      '&#x2112',
+                       '&alefsym'      =>      '&#x2135',
+                       '&larr' =>      '&#x2190',
+                       '&uarr' =>      '&#x2191',
+                       '&rarr' =>      '&#x2192',
+                       '&darr' =>      '&#x2193',
+                       '&harr' =>      '&#x2194',
+                       '&crarr'        =>      '&#x21B5',
+                       '&lArr' =>      '&#x21D0',
+                       '&uArr' =>      '&#x21D1',
+                       '&rArr' =>      '&#x21D2',
+                       '&dArr' =>      '&#x21D3',
+                       '&hArr' =>      '&#x21D4',
+                       '&forall'       =>      '&#x2200',
+                       '&part' =>      '&#x2202',
+                       '&exist'        =>      '&#x2203',
+                       '&empty'        =>      '&#x2205',
+                       '&nabla'        =>      '&#x2207',
+                       '&isin' =>      '&#x2208',
+                       '&notin'        =>      '&#x2209',
+                       '&ni'           =>      '&#x220B',
+                       '&prod' =>      '&#x220F',
+                       '&sum'          =>      '&#x2211',
+                       '&minus'        =>      '&#x2212',
+                       '&lowast'       =>      '&#x2217',
+                       '&radic'        =>      '&#x221A',
+                       '&prop' =>      '&#x221D',
+                       '&infin'        =>      '&#x221E',
+                       '&ang'          =>      '&#x2220',
+                       '&and'          =>      '&#x2227',
+                       '&or'           =>      '&#x2228',
+                       '&cap'          =>      '&#x2229',
+                       '&cup'          =>      '&#x222A',
+                       '&int'          =>      '&#x222B',
+                       '&there4'       =>      '&#x2234',
+                       '&sim'          =>      '&#x223C',
+                       '&cong' =>      '&#x2245',
+                       '&asymp'        =>      '&#x2248',
+                       '&ne'           =>      '&#x2260',
+                       '&equiv'        =>      '&#x2261',
+                       '&le'           =>      '&#x2264',
+                       '&ge'           =>      '&#x2265',
+                       '&sub'          =>      '&#x2282',
+                       '&sup'          =>      '&#x2283',
+                       '&nsub' =>      '&#x2284',
+                       '&sube' =>      '&#x2286',
+                       '&supe' =>      '&#x2287',
+                       '&oplus'        =>      '&#x2295',
+                       '&otimes'       =>      '&#x2296',
+                       '&perp' =>      '&#x22A5',
+                       '&sdot' =>      '&#x22C5',
+                       '&lceil'        =>      '&#x2368',
+                       '&rceil'        =>      '&#x2309',
+                       '&lfloor'       =>      '&#x230A',
+                       '&rfloor'       =>      '&#x230B',
+                       '&lang' =>      '&#x2329',
+                       '&rang' =>      '&#x2330',
+                       '&loz'          =>      '&#x25CA',
+                       '&spades'       =>      '&#x2660',
+                       '&clubs'        =>      '&#x2663',
+                       '&hearts'       =>      '&#x2665',
+                       '&diams'        =>      '&#x2666'
+               ),
+               'Windows-1252' => array(
+                       '&#x80;'        =>      '&#x20AC;',
+                       '&#x82;'        =>      '&#x201A;',
+                       '&#x83;'        =>      '&#x0192;',
+                       '&#x84;'        =>      '&#x201E;',
+                       '&#x85;'        =>      '&#x2026;',
+                       '&#x86;'        =>      '&#x2020;',
+                       '&#x87;'        =>      '&#x2021;',
+                       '&#x88;'        =>      '&#x02C6;',
+                       '&#x89;'        =>      '&#x2030;',
+                       '&#x8A;'        =>      '&#x0160;',
+                       '&#x8B;'        =>      '&#x2039;',
+                       '&#x8C;'        =>      '&#x0152;',
+                       '&#x8E;'        =>      '&#x017D;',
+                       '&#x91;'        =>      '&#x2018;',
+                       '&#x92;'        =>      '&#x2019;',
+                       '&#x93;'        =>      '&#x201C;',
+                       '&#x94;'        =>      '&#x201D;',
+                       '&#x95;'        =>      '&#x2022;',
+                       '&#x96;'        =>      '&#x2013;',
+                       '&#x97;'        =>      '&#x2014;',
+                       '&#x98;'        =>      '&#x02DC;',
+                       '&#x99;'        =>      '&#x2122;',
+                       '&#x9A;'        =>      '&#x0161;',
+                       '&#x9B;'        =>      '&#x203A;',
+                       '&#x9C;'        =>      '&#x0153;',
+                       '&#x9E;'        =>      '&#x017E;',
+                       '&#x9F;'        =>      '&#x0178;',
+               )
+       );
+}
index 475f6a3..0fce570 100644 (file)
@@ -1,3 +1,4 @@
+<<<<<<< HEAD
 <?php\r
 \r
 /*\r
@@ -599,3 +600,609 @@ class Item
                return array('status' => 'added', 'draftid' => $itemid);\r
        }\r
 }\r
+=======
+<?php
+
+/*
+ * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)
+ * Copyright (C) 2002-2009 The Nucleus Group
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * (see nucleus/documentation/index.html#license for more info)
+ */
+/**
+ * @license http://nucleuscms.org/license.txt GNU General Public License
+ * @copyright Copyright (C) 2002-2009 The Nucleus Group
+ * @version $Id: ITEM.php 1877 2012-06-17 07:40:11Z sakamocchi $
+ */
+
+/**
+ * A class representing an item
+ *
+ */
+class Item
+{
+       /**
+        * Item::$actiontypes
+        * actiontype list for handling items
+        * 
+        * @static
+        */
+       static private $actiontypes = array(
+               'addnow', 'adddraft', 'addfuture', 'edit',
+               'changedate', 'backtodrafts', 'delete'
+       );
+       
+       /**
+        * Item::$itemid
+        * item id
+        * @deprecated
+        */
+       public $itemid;
+       
+       /**
+        * Item::__construct()
+        * Creates a new ITEM object
+        * 
+        * @deprecated
+        * @param integer       $item_id        id for item
+        * @return void
+        */
+       public function __construct($item_id)
+       {
+               $this->itemid = $item_id;
+               return;
+       }
+       
+       /**
+        * Item::getitem()
+        * Returns one item with the specific itemid
+        * 
+        * @static
+        * @param int $item_id
+        * @param bool $allow_draft
+        * @param bool $allow_future
+        * @return mixed
+        */
+       static public function getitem($item_id, $allow_draft, $allow_future)
+       {
+               global $manager;
+               
+               $item_id = (integer) $item_id;
+               
+               $query = 'SELECT ' .
+                       'i.idraft AS draft, ' .
+                       'i.inumber AS itemid, ' .
+                       'i.iclosed AS closed, ' .
+                       'i.ititle AS title, ' .
+                       'i.ibody AS body, ' .
+                       'm.mname AS author, ' .
+                       'i.iauthor AS authorid, ' .
+                       'i.itime, ' .
+                       'i.imore AS more, ' .
+                       'i.ikarmapos AS karmapos, ' .
+                       'i.ikarmaneg AS karmaneg, ' .
+                       'i.icat AS catid, ' .
+                       'i.iblog AS blogid ' .
+                       'FROM %s AS i, %s AS m, %s AS b ' .
+                       'WHERE i.inumber = %d ' .
+                       'AND i.iauthor = m.mnumber ' .
+                       'AND i.iblog = b.bnumber ';
+               
+               $query = sprintf($query, sql_table('item'), sql_table('member'), sql_table('blog'), $item_id);
+               
+               if ( !$allow_draft )
+               {
+                       $query .= "AND i.idraft = 0 ";
+               }
+               
+               if ( !$allow_future )
+               {
+                       $blog =& $manager->getBlog(getBlogIDFromItemID($item_id));
+                       $query .= 'AND i.itime <= ' . DB::formatDateTime($blog->getCorrectTime());
+               }
+               
+               $query .= ' LIMIT 1';
+               $result = DB::getResult($query);
+               
+               if ( $result->rowCount() != 1 )
+               {
+                       return 0;
+               }
+               
+               $aItemInfo = $result->fetch(PDO::FETCH_ASSOC);
+               $aItemInfo['timestamp'] = strtotime($aItemInfo['itime']);
+               return $aItemInfo;
+       }
+       
+       /**
+        * Item::createFromRequest()
+        * Tries to create an item from the data in the current request (comes from
+        * bookmarklet or admin area
+        *
+        * @static
+        * @param       void
+        * @return      array   (status = added/error/newcategory, message)
+        * 
+        */
+       static public function createFromRequest()
+       {
+               global $member, $manager;
+               
+               /*
+                * TODO: these values from user agent should be validated but not implemented yet
+                */
+               $i_author               = $member->getID();
+               $i_body                 = postVar('body');
+               $i_title                = postVar('title');
+               $i_more                 = postVar('more');
+               $i_actiontype   = postVar('actiontype');
+               $i_closed               = intPostVar('closed');
+               $i_hour                 = intPostVar('hour');
+               $i_minutes              = intPostVar('minutes');
+               $i_month                = intPostVar('month');
+               $i_day                  = intPostVar('day');
+               $i_year                 = intPostVar('year');
+               $i_catid                = postVar('catid');
+               $i_draftid              = intPostVar('draftid');
+               
+               if ( !$member->canAddItem($i_catid) )
+               {
+                       return array('status' => 'error', 'message' => _ERROR_DISALLOWED);
+               }
+               
+               if ( !in_array($i_actiontype, self::$actiontypes) )
+               {
+                       $i_actiontype = 'addnow';
+               }
+               
+               $i_draft = (integer) ( $i_actiontype == 'adddraft' );
+               
+               if ( !trim($i_body) )
+               {
+                       return array('status' => 'error', 'message' => _ERROR_NOEMPTYITEMS);
+               }
+               
+               // create new category if needed
+               if ( i18n::strpos($i_catid, 'newcat') === 0 )
+               {
+                       // get blogid
+                       list($i_blogid) = sscanf($i_catid, "newcat-%d");
+                       
+                       // create
+                       $blog =& $manager->getBlog($i_blogid);
+                       $i_catid = $blog->createNewCategory();
+                       
+                       // show error when sth goes wrong
+                       if ( !$i_catid )
+                       {
+                               return array('status' => 'error','message' => 'Could not create new category');
+                       }
+               }
+               else
+               {
+                       // force blogid (must be same as category id)
+                       $i_blogid = getBlogIDFromCatID($i_catid);
+                       $blog =& $manager->getBlog($i_blogid);
+               }
+               
+               if ( $i_actiontype == 'addfuture' )
+               {
+                       $posttime = mktime($i_hour, $i_minutes, 0, $i_month, $i_day, $i_year);
+                       
+                       // make sure the date is in the future, unless we allow past dates
+                       if ( (!$blog->allowPastPosting()) && ($posttime < $blog->getCorrectTime()) )
+                       {
+                               $posttime = $blog->getCorrectTime();
+                       }
+               }
+               else
+               {
+                       if ( !$i_draft )
+                       {
+                               $posttime = $blog->getCorrectTime();
+                       }
+                       else
+                       {
+                               $posttime = 0;
+                       }
+               }
+               
+               if ( $posttime > $blog->getCorrectTime() )
+               {
+                       $posted = 0;
+                       $blog->setFuturePost();
+               }
+               else
+               {
+                       $posted = 1;
+               }
+               
+               $itemid = $blog->additem($i_catid, $i_title, $i_body, $i_more, $i_blogid, $i_author, $posttime, $i_closed, $i_draft, $posted);
+               
+               //Setting the itemOptions
+               $aOptions = requestArray('plugoption');
+               NucleusPlugin::apply_plugin_options($aOptions, $itemid);
+               $data = array(
+                       'context'       => 'item',
+                       'itemid'        => $itemid,
+                       'item'          => array(
+                               'title'         => $i_title,
+                               'body'          => $i_body,
+                               'more'          => $i_more,
+                               'closed'        => $i_closed,
+                               'catid'         => $i_catid
+                       )
+               );
+               
+               $manager->notify('PostPluginOptionsUpdate', $data);
+               
+               if ( $i_draftid > 0 )
+               {
+                       // delete permission is checked inside Item::delete()
+                       self::delete($i_draftid);
+               }
+               
+               // success
+               if ( $i_catid != intRequestVar('catid') )
+               {
+                       return array('status' => 'newcategory', 'itemid' => $itemid, 'catid' => $i_catid);
+               }
+               
+               return array('status' => 'added', 'itemid' => $itemid);
+       }
+       
+       /**
+        * Item::update()
+        * Updates an item
+        *
+        * @static
+        * @param       integer $itemid item id
+        * @param       integer $catid  category id
+        * @param       string  $title  title
+        * @param       string  $body   body text
+        * @param       string  $more   more text
+        * @param       boolean $closed closed or not
+        * @param       boolean $wasdraft       previously draft or not
+        * @param       boolean $publish        published or not
+        * @param       timestamp       $timestamp      timestamp
+        * @return      void
+        */
+       static public function update($itemid, $catid, $title, $body, $more, $closed, $wasdraft, $publish, $timestamp = 0)
+       {
+               global $manager;
+               
+               $itemid = (integer) $itemid;
+               $closed = (boolean) $closed;
+               
+               // get destination blogid
+               $new_blogid = getBlogIDFromCatID($catid);
+               $old_blogid = getBlogIDFromItemID($itemid);
+               
+               // move will be done on end of method
+               $moveNeeded = 0;
+               if ( $new_blogid != $old_blogid )
+               {
+                       $moveNeeded = 1;
+               }
+               
+               $blog =& $manager->getBlog($new_blogid);
+               
+               // begin if: convert line breaks to <br/>
+               if ( $blog->convertBreaks() )
+               {
+                       $body = addBreaks($body);
+                       $more = addBreaks($more);
+               }
+               
+               // call plugins
+               $data = array(
+                       'itemid'        => $itemid,
+                       'title'         => &$title,
+                       'body'          => &$body,
+                       'more'          => &$more,
+                       'blog'          => &$blog,
+                       'closed'        => &$closed,
+                       'catid'         => &$catid
+               );
+               $manager->notify('PreUpdateItem', $data);
+               
+               // update item itself
+               $query =  'UPDATE ' . sql_table('item')
+                               . ' SET'
+                               . ' ibody = ' . DB::quoteValue($body) . ','
+                               . ' ititle = ' . DB::quoteValue($title) . ','
+                               . ' imore = ' . DB::quoteValue($more) . ','
+                               . ' iclosed = ' . intval($closed) . ','
+                               . ' icat = ' . intval($catid);
+               
+               // if we received an updated timestamp that is in the past, but past posting is not allowed,
+               // reject that date change (timestamp = 0 will make sure the current date is kept)
+               if ( (!$blog->allowPastPosting()) && ($timestamp < $blog->getCorrectTime()) )
+               {
+                       $timestamp = 0;
+               }
+               
+               // begin if: post is in the future
+               if ( $timestamp > $blog->getCorrectTime(time()) )
+               {
+                       $isFuture = 1;
+                       $query .= ', iposted = 0';
+               }
+               else
+               {
+                       $isFuture = 0;
+                       $query .= ', iposted = 1';
+               }
+               
+               if ( $wasdraft && $publish )
+               {
+                       // set timestamp to current date only if it's not a future item
+                       // draft items have timestamp == 0
+                       // don't allow timestamps in the past (unless otherwise defined in blogsettings)
+                       $query .= ', idraft = 0';
+                       
+                       if ( $timestamp == 0 )
+                       {
+                               $timestamp = $blog->getCorrectTime();
+                       }
+                       
+                       // send new item notification
+                       if ( !$isFuture && $blog->getNotifyAddress() && $blog->notifyOnNewItem() )
+                       {
+                               $blog->sendNewItemNotification($itemid, $title, $body);
+                       }
+               }
+               
+               // save back to drafts
+               if ( !$wasdraft && !$publish )
+               {
+                       $query .= ', idraft = 1';
+                       // set timestamp back to zero for a draft
+                       $query .= ', itime = ' . DB::formatDateTime($timestamp);
+               }
+               
+               // update timestamp when needed
+               if ( $timestamp != 0 )
+               {
+                       $query .= ', itime = ' . DB::formatDateTime($timestamp);
+               }
+               
+               // make sure the correct item is updated
+               $query .= ' WHERE inumber = ' . $itemid;
+               
+               // off we go!
+               DB::execute($query);
+
+               $data = array('itemid' => $itemid);
+               $manager->notify('PostUpdateItem', $data);
+               
+               // when needed, move item and comments to new blog
+               if ( $moveNeeded )
+               {
+                       self::move($itemid, $catid);
+               }
+               
+               //update the itemOptions
+               $aOptions = requestArray('plugoption');
+               NucleusPlugin::apply_plugin_options($aOptions);
+               $data = array(
+                       'context'       => 'item',
+                       'itemid'        => $itemid,
+                       'item'          => array(
+                               'title'         => $title,
+                               'body'          => $body,
+                               'more'          => $more,
+                               'closed'        => $closed,
+                               'catid'         => $catid
+                       )
+               );
+               $manager->notify('PostPluginOptionsUpdate', $data);
+               return;
+       }
+       
+       /**
+        * Item::move()
+        * Move an item to another blog (no checks)
+        *
+        * @static
+        * @param       integer $itemid
+        * @param       integer $new_catid
+        * @return      void
+        */
+       static public function move($itemid, $new_catid)
+       {
+               global $manager;
+               
+               $itemid         = (integer) $itemid;
+               $new_catid      = (integer) $new_catid;
+               $new_blogid     = getBlogIDFromCatID($new_catid);
+               
+               $data = array(
+                       'itemid'                => $itemid,
+                       'destblogid'    => $new_blogid,
+                       'destcatid'             => $new_catid
+               );
+               $manager->notify('PreMoveItem', $data);
+               
+               // update item table
+               $query = "UPDATE %s SET iblog=%d, icat=%d WHERE inumber=%d";
+               $query = sprintf($query, sql_table('item'), $new_blogid, $new_catid, $itemid);
+               DB::execute($query);
+               
+               // update comments
+               $query = "UPDATE %s SET cblog=%d WHERE citem=%d";
+               $query = sprintf($query, sql_table('comment'), $new_blogid, $itemid);
+               DB::execute($query);
+               
+               $data = array(
+                       'itemid'                => $itemid,
+                       'destblogid'    => $new_blogid,
+                       'destcatid'             => $new_catid
+               );
+               $manager->notify('PostMoveItem', $data);
+               return;
+       }
+       
+       /**
+        * Item::delete()
+        * Deletes an item
+        * 
+        * @param       integer $itemid
+        * @return      void
+        */
+       static public function delete($itemid)
+       {
+               global $manager, $member;
+               
+               $itemid = (integer) $itemid;
+               
+               // check permission
+               if ( !$member->canAlterItem($itemid) )
+               {
+                       return 1;
+               }
+
+               $data = array('itemid' => $itemid);
+               $manager->notify('PreDeleteItem', $data);
+               
+               // delete item
+               $query = "DELETE FROM %s WHERE inumber=%d;";
+               $query = sprintf($query, sql_table('item'), $itemid);
+               DB::execute($query);
+               
+               // delete the comments associated with the item
+               $query = "DELETE FROM %s WHERE citem=%d;";
+               $query = sprintf($query, sql_table('comment'), $itemid);
+               DB::execute($query);
+               
+               // delete all associated plugin options
+               NucleusPlugin::delete_option_values('item', $itemid);
+               
+               $manager->notify('PostDeleteItem', $data);
+               
+               return 0;
+       }
+       
+       /**
+        * Item::exists()
+        * Returns true if there is an item with the given ID
+        *
+        * @static
+        * @param       integer $itemid
+        * @param       boolean $future
+        * @param       boolean $draft
+        * @return      boolean exists or not
+        */
+       static public function exists($itemid, $future, $draft)
+       {
+               global $manager;
+               
+               $itemid = (integer) $itemid;
+               
+               $query = 'SELECT * FROM %s WHERE inumber=%d';
+               $query = sprintf($query, sql_table('item'), $itemid);
+               
+               if ( !$future )
+               {
+                       $blogid = getBlogIDFromItemID($itemid);
+                       if ( !$blogid )
+                       {
+                               return 0;
+                       }
+                       $blog =& $manager->getBlog($blogid);
+                       $query .= ' AND itime<=' . DB::formatDateTime($blog->getCorrectTime());
+               }
+               
+               if ( !$draft )
+               {
+                       $query .= ' AND idraft=0';
+               }
+               
+               $result = DB::getResult($query);
+               return ( $result->rowCount() != 0 );
+       }
+       
+       /**
+        * Item::createDraftFromRequest()
+        * Tries to create an draft from the data
+        *  in the current request (comes from bookmarklet or admin area)
+        *   Used by xmlHTTPRequest AutoDraft
+        *
+        * Returns an array with status info:
+        * status = 'added', 'error', 'newcategory'
+        *
+        * @static
+        * @param       void
+        * @return      array   (status = added/error/newcategory, message)
+        */
+       static public function createDraftFromRequest()
+       {
+               global $member, $manager;
+               
+               /*
+                * TODO: these values from user agent should be validated but not implemented yet
+                */
+               $i_author       = $member->getID();
+               $i_body         = postVar('body');
+               $i_title        = postVar('title');
+               $i_more         = postVar('more');
+               $i_closed       = intPostVar('closed');
+               $i_catid        = postVar('catid');
+               $i_draft        = 1;
+               $type           = postVar('type');
+               $i_draftid      = intPostVar('draftid');
+               
+               if ( $type == 'edit' )
+               {
+                       $itemid = intPostVar('itemid');
+                       $i_blogid = getBlogIDFromItemID($itemid);
+               }
+               else
+               {
+                       $i_blogid = intPostVar('blogid');
+               }
+               
+               if ( !$member->canAddItem($i_catid) )
+               {
+                       return array('status' => 'error', 'message' => _ERROR_DISALLOWED);
+               }
+               
+               if ( !trim($i_body) )
+               {
+                       return array('status' => 'error', 'message' => _ERROR_NOEMPTYITEMS);
+               }
+               
+               // create new category if needed
+               if ( i18n::strpos($i_catid,'newcat') === 0 )
+               {
+                       // Set in default category
+                       $blog =& $manager->getBlog($i_blogid);
+                       $i_catid = $blog->getDefaultCategory();
+               }
+               else
+               {
+                       // force blogid (must be same as category id)
+                       $i_blogid = getBlogIDFromCatID($i_catid);
+                       $blog =& $manager->getBlog($i_blogid);
+               }
+               
+               $posttime = 0;
+               
+               if ( $i_draftid > 0 )
+               {
+                       self::update($i_draftid, $i_catid, $i_title, $i_body, $i_more, $i_closed, 1, 0, 0);
+                       $itemid = $i_draftid;
+               }
+               else
+               {
+                       $itemid = $blog->additem($i_catid, $i_title, $i_body, $i_more, $i_blogid, $i_author, $posttime, $i_closed, $i_draft);
+               }
+               
+               return array('status' => 'added', 'draftid' => $itemid);
+       }
+}
+>>>>>>> skinnable-master
index 9aa96d4..7db9281 100644 (file)
  *
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2009 The Nucleus Group
+<<<<<<< HEAD
  * @version $Id: ITEMACTIONS.php 1757 2012-04-15 09:02:32Z sakamocchi $
+=======
+ * @version $Id: ITEMACTIONS.php 1886 2012-06-17 08:27:27Z sakamocchi $
+>>>>>>> skinnable-master
  */
 class ItemActions extends BaseActions
 {
@@ -101,7 +105,11 @@ class ItemActions extends BaseActions
        /* actions defined in BodyAction class */
                'image',
                'media',
+<<<<<<< HEAD
                'popup',
+=======
+               'popup'
+>>>>>>> skinnable-master
                );
        
        /**
@@ -753,9 +761,16 @@ class ItemActions extends BaseActions
                array_shift($params);
                
                // add item reference (array_unshift didn't work)
+<<<<<<< HEAD
                $params = array_merge(array(&$this->currentItem),$params);
                
                call_user_func_array(array(&$plugin,'doTemplateVar'), $params);
+=======
+               $target = array(&$this->currentItem);
+               $params = array_merge($target,$params);
+               
+               call_user_func_array(array($plugin,'doTemplateVar'), $params);
+>>>>>>> skinnable-master
                return;
        }
        
@@ -817,7 +832,12 @@ class ItemActions extends BaseActions
                $handler->setCurrentItem($this->currentItem);
                
                $parser = new Parser($handler);
+<<<<<<< HEAD
                $parser->parse($handler->highlight($data));
+=======
+               $highlight = $handler->highlight($data);
+               $parser->parse($highlight);
+>>>>>>> skinnable-master
                return;
        }
        
@@ -847,8 +867,14 @@ class ItemActions extends BaseActions
                                $condition = ($blog && ($blog->getSetting($name) == $value));
                                break;
                        case 'itemblogsetting':
+<<<<<<< HEAD
                                $b =& $manager->getBlog(getBlogIDFromItemID($this->currentItem['itemid']));
                                $condition = ($b && ($b->getSetting($name) == $value));
+=======
+                               $item =& $manager->getItem($this->currentItem['itemid'], 1, 1);
+                               $t_blog =& $manager->getBlog($item['blogid']);
+                               $condition = ($t_blog && ($t_blog->getSetting($name) == $value));
+>>>>>>> skinnable-master
                                break;
                        case 'loggedin':
                                $condition = $member->isLoggedIn();
@@ -920,8 +946,11 @@ class ItemActions extends BaseActions
        {
                global $member, $manager;
                
+<<<<<<< HEAD
                $b =& $manager->getBlog(getBlogIDFromItemID($this->currentItem['itemid']));
                
+=======
+>>>>>>> skinnable-master
                // when no parameter is defined, just check if author is current visitor
                if ( ($key != 'isadmin' && $key != 'name') || ($key == 'name' && $value == '') )
                {
@@ -941,6 +970,7 @@ class ItemActions extends BaseActions
                // check if author is admin
                if ( ($key == 'isadmin') )
                {
+<<<<<<< HEAD
                        $aid = intval($this->currentItem['authorid']);
                        $blogid = intval($b->getID());                  
                        $amember =& $manager->getMember($aid);
@@ -949,6 +979,14 @@ class ItemActions extends BaseActions
                                return TRUE;
                        }
                        return (boolean) $amember->isBlogAdmin($blogid);
+=======
+                       $i_author =& $manager->getMember($this->currentItem['authorid']);
+                       if ( $i_author->isAdmin() )
+                       {
+                               return TRUE;
+                       }
+                       return (boolean) $i_author->isBlogAdmin($this->currentItem['blogid']);
+>>>>>>> skinnable-master
                }
                
                return FALSE;
@@ -966,12 +1004,20 @@ class ItemActions extends BaseActions
        {
                global $catid, $manager;
                
+<<<<<<< HEAD
                $b =& $manager->getBlog(getBlogIDFromItemID($this->currentItem['itemid']));
+=======
+               $blog =& $manager->getBlog($this->currentItem['blogid']);
+>>>>>>> skinnable-master
                
                // when no parameter is defined, just check if a category is selected
                if ( ($key != 'catname' && $key != 'catid') || ($value == '') )
                {
+<<<<<<< HEAD
                        return (boolean) $b->isValidCategory($catid);
+=======
+                       return (boolean) $blog->isValidCategory($catid);
+>>>>>>> skinnable-master
                }
                
                $icatid = $this->currentItem['catid'];
@@ -979,17 +1025,28 @@ class ItemActions extends BaseActions
                // check category name
                if ( $key == 'catname' )
                {
+<<<<<<< HEAD
                        $value = $b->getCategoryIdFromName($value);
                        if ( $value == $icatid )
                        {
                                return (boolean) $b->isValidCategory($icatid);
+=======
+                       $value = $blog->getCategoryIdFromName($value);
+                       if ( $value == $icatid )
+                       {
+                               return (boolean) $blog->isValidCategory($icatid);
+>>>>>>> skinnable-master
                        }
                }
                
                // check category id
                if ( ($key == 'catid') && ($value == $icatid) )
                {
+<<<<<<< HEAD
                        return (boolean) $b->isValidCategory($icatid);
+=======
+                       return (boolean) $blog->isValidCategory($icatid);
+>>>>>>> skinnable-master
                }
                return FALSE;
        }
@@ -1123,6 +1180,10 @@ class ItemActions extends BaseActions
                $params = func_get_args();
                array_shift($params);
                
+<<<<<<< HEAD
                return (boolean) call_user_func_array(array(&$plugin, 'doIf'), $params);
+=======
+               return (boolean) call_user_func_array(array($plugin, 'doIf'), $params);
+>>>>>>> skinnable-master
        }
 }
index 1c7dcb4..5471c04 100644 (file)
@@ -1,3 +1,4 @@
+<<<<<<< HEAD
 <?php\r
 /*\r
  * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)\r
@@ -114,3 +115,121 @@ class Karma
 }\r
 \r
 ?>\r
+=======
+<?php
+/*
+ * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)
+ * Copyright (C) 2002-2009 The Nucleus Group
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * (see nucleus/documentation/index.html#license for more info)
+ */
+/**
+ * Class representing the karma votes for a certain item
+ *
+ * @license http://nucleuscms.org/license.txt GNU General Public License
+ * @copyright Copyright (C) 2002-2009 The Nucleus Group
+ * @version $Id: KARMA.php 1812 2012-05-01 14:59:07Z sakamocchi $
+ */
+class Karma
+{
+       // id of item about which this object contains information
+       var $itemid;
+       
+       // indicates if the karma vote info has already been intialized from the DB
+       var $inforead;
+       
+       // amount of positive/negative votes
+       var $karmapos;
+       var $karmaneg;
+       
+       function KARMA($itemid, $initpos = 0, $initneg = 0, $initread = 0) {
+               // itemid
+               $this->itemid = intval($itemid);
+
+               // have we read the karma info yet?
+               $this->inforead = intval($initread);
+
+               // number of positive and negative votes
+               $this->karmapos = intval($initpos);
+               $this->karmaneg = intval($initneg);
+       }
+
+       function getNbPosVotes() {
+               if (!$this->inforead) $this->readFromDatabase();
+               return $this->karmapos;
+       }
+       function getNbNegVotes() {
+               if (!$this->inforead) $this->readFromDatabase();
+               return $this->karmaneg;
+       }
+       function getNbOfVotes() {
+               if (!$this->inforead) $this->readFromDatabase();
+               return ($this->karmapos + $this->karmaneg);
+       }
+       function getTotalScore() {
+               if (!$this->inforead) $this->readFromDatabase();
+               return ($this->karmapos - $this->karmaneg);
+       }
+
+       function setNbPosVotes($val) {
+               $this->karmapos = intval($val);
+       }
+       function setNbNegVotes($val) {
+               $this->karmaneg = intval($val);
+       }
+
+
+       // adds a positive vote
+       function votePositive() {
+               $newKarma = $this->getNbPosVotes() + 1;
+               $this->setNbPosVotes($newKarma);
+               $this->writeToDatabase();
+               $this->saveIP();
+       }
+
+       // adds a negative vote
+       function voteNegative() {
+               $newKarma = $this->getNbNegVotes() + 1;
+               $this->setNbNegVotes($newKarma);
+               $this->writeToDatabase();
+               $this->saveIP();
+       }
+
+
+
+       // these methods shouldn't be called directly
+       function readFromDatabase() {
+               $query = 'SELECT ikarmapos, ikarmaneg FROM '.sql_table('item').' WHERE inumber=' . $this->itemid;
+               $res = DB::getRow($query);
+
+               $this->karmapos = $res['ikarmapos'];
+               $this->karmaneg = $res['ikarmaneg'];
+               $this->inforead = 1;
+       }
+
+
+       function writeToDatabase() {
+               $query = 'UPDATE '.sql_table('item').' SET ikarmapos=' . $this->karmapos . ', ikarmaneg='.$this->karmaneg.' WHERE inumber=' . $this->itemid;
+               DB::execute($query);
+       }
+
+       // checks if a vote is still allowed for an IP
+       function isVoteAllowed($ip) {
+               $query = 'SELECT * FROM '.sql_table('karma')." WHERE itemid={$this->itemid} and ip=". DB::quoteValue($ip);
+               $res = DB::getResult($query);
+               return ($res->rowCount() == 0);
+       }
+
+       // save IP in database so no multiple votes are possible
+       function saveIP() {
+               $query = 'INSERT INTO ' . sql_table('karma') .' (itemid, ip) VALUES (' . $this->itemid . ','. DB::quoteValue(serverVar('REMOTE_ADDR')) .')';
+               DB::execute($query);
+       }
+}
+
+?>
+>>>>>>> skinnable-master
index cbc80eb..9285a2f 100644 (file)
-<?php \r
-/*\r
- * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)\r
- * Copyright (C) 2002-2011 The Nucleus Group\r
- *\r
- * This program is free software; you can redistribute it and/or\r
- * modify it under the terms of the GNU General Public License\r
- * as published by the Free Software Foundation; either version 2\r
- * of the License, or (at your option) any later version.\r
- * (see nucleus/documentation/index.html#license for more info)\r
- */\r
-/**\r
- * This class is a collections of functions that produce links\r
- * \r
- * All functions in this clss should only be called statically,\r
- * for example: Link::create_item_link(...)\r
- * \r
- * @license http://nucleuscms.org/license.txt GNU General Public License\r
- * @copyright Copyright (C) 2002-2011 The Nucleus Group\r
+<?php 
+/*
+ * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)
+ * Copyright (C) 2002-2011 The Nucleus Group
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * (see nucleus/documentation/index.html#license for more info)
+ */
+/**
+ * This class is a collections of functions that produce links
+ * 
+ * All functions in this clss should only be called statically,
+ * for example: Link::create_item_link(...)
+ * 
+ * @license http://nucleuscms.org/license.txt GNU General Public License
+ * @copyright Copyright (C) 2002-2011 The Nucleus Group
  * @version $Id: LINK.php 1721 2012-03-31 10:18:25Z sakamocchi $
- */\r
-class Link\r
-{\r
-       /**\r
-        * Link::create_item_link()\r
-        * Create a link to an item\r
-        * @static\r
-        * @param $itemid       item id\r
-        * @param $extra        extra parameter\r
-        */\r
-       static public function create_item_link($itemid, $extra = '') {\r
-               return self::create_link('item', array('itemid' => $itemid, 'extra' => $extra) );\r
-       }\r
-\r
-       /**\r
-        * Link::create_member_link()\r
-        * Create a link to a member\r
-        * \r
-        * @static\r
-        * @param $memberid     member id\r
-        * @param $extra        extra parameter\r
-        */\r
-       static public function create_member_link($memberid, $extra = '') {\r
-               return self::create_link('member', array('memberid' => $memberid, 'extra' => $extra) );\r
-       }\r
-       \r
-       /**\r
-        * Link::create_category_link()\r
-        * Create a link to a category\r
-        * \r
-        * @static\r
-        * @param $catid        category id\r
-        * @param $extra        extra parameter\r
-        */\r
-       static public function create_category_link($catid, $extra = '') {\r
-               return self::create_link('category', array('catid' => $catid, 'extra' => $extra) );\r
-       }\r
-\r
-       /**\r
-        * Link::cteate_archive_link()\r
-        * Create a link to an archive\r
-        * \r
-        * @static\r
-        * @param $blogid       blog id\r
-        * @param $archive      archive identifier\r
-        * @param $extra        extra parameter\r
-        */\r
-       static public function create_archive_link($blogid, $archive, $extra = '') {\r
-               return self::create_link('archive', array('blogid' => $blogid, 'archive' => $archive, 'extra' => $extra) );\r
-       }\r
-\r
-       /**\r
-        * Link::create_archivelist_link()\r
-        * Create a link to an archive list\r
-        * \r
-        * @static\r
-        * @param $blogid       blog id\r
-        * @param $extra        extra parameter\r
-        */\r
-       static public function create_archivelist_link($blogid = '', $extra = '') {\r
-               return self::create_link('archivelist', array('blogid' => $blogid, 'extra' => $extra) );\r
-       }\r
-\r
-       /**\r
-        * Link::create_blogid_link()\r
-        * Create a link to a blog\r
-        * \r
-        * @static\r
-        * @param $blogid       blog id\r
-        * @param $extra        extra parameter\r
-        */\r
-       static public function create_blogid_link($blogid, $params = '') {\r
-               return self::create_link('blog', array('blogid' => $blogid, 'extra' => $params) );\r
-       }\r
-\r
-       /**\r
-        * Link::create_link()\r
-        * Create a link\r
-        * \r
-        * Universell function that creates link of different types (like item, blog ...)\r
-        * and with an array of parameters\r
-        * \r
-        * @static\r
-        * @param $type         type of the link\r
-        * @param $params       array with parameters\r
-        */\r
-       static public function create_link($type, $params) {\r
-               global $manager, $CONF;\r
-       \r
-               $generatedURL = '';\r
-               $usePathInfo = ($CONF['URLMode'] == 'pathinfo');\r
-       \r
-               // ask plugins first\r
-               $created = false;\r
-       \r
-               if ($usePathInfo)\r
-               {\r
-                       $manager->notify(\r
-                               'GenerateURL',\r
-                               array(\r
-                                       'type' => $type,\r
-                                       'params' => $params,\r
-                                       'completed' => &$created,\r
-                                       'url' => &$url\r
-                               )\r
-                       );\r
-               }\r
-       \r
-               // if a plugin created the URL, return it\r
-               if ($created)\r
-               {\r
-                       return $url;\r
-               }\r
-       \r
-               // default implementation\r
-               switch ($type) {\r
-                       case 'item':\r
-                               if ($usePathInfo) {\r
-                                       $url = $CONF['ItemURL'] . '/' . $CONF['ItemKey'] . '/' . $params['itemid'];\r
-                               } else {\r
-                                       $url = $CONF['ItemURL'] . '?itemid=' . $params['itemid'];\r
-                               }\r
-                               break;\r
-       \r
-                       case 'member':\r
-                               if ($usePathInfo) {\r
-                                       $url = $CONF['MemberURL'] . '/' . $CONF['MemberKey'] . '/' . $params['memberid'];\r
-                               } else {\r
-                                       $url = $CONF['MemberURL'] . '?memberid=' . $params['memberid'];\r
-                               }\r
-                               break;\r
-       \r
-                       case 'category':\r
-                               if ($usePathInfo) {\r
-                                       $url = $CONF['CategoryURL'] . '/' . $CONF['CategoryKey'] . '/' . $params['catid'];\r
-                               } else {\r
-                                       $url = $CONF['CategoryURL'] . '?catid=' . $params['catid'];\r
-                               }\r
-                               break;\r
-       \r
-                       case 'archivelist':\r
-                               if (!$params['blogid']) {\r
-                                       $params['blogid'] = $CONF['DefaultBlog'];\r
-                               }\r
-       \r
-                               if ($usePathInfo) {\r
-                                       $url = $CONF['ArchiveListURL'] . '/' . $CONF['ArchivesKey'] . '/' . $params['blogid'];\r
-                               } else {\r
-                                       $url = $CONF['ArchiveListURL'] . '?archivelist=' . $params['blogid'];\r
-                               }\r
-                               break;\r
-       \r
-                       case 'archive':\r
-                               if ($usePathInfo) {\r
-                                       $url = $CONF['ArchiveURL'] . '/' . $CONF['ArchiveKey'] . '/'.$params['blogid'].'/' . $params['archive'];\r
-                               } else {\r
-                                       $url = $CONF['ArchiveURL'] . '?blogid='.$params['blogid'].'&amp;archive=' . $params['archive'];\r
-                               }\r
-                               break;\r
-       \r
-                       case 'blog':\r
-                               if ($usePathInfo) {\r
-                                       $url = $CONF['BlogURL'] . '/' . $CONF['BlogKey'] . '/' . $params['blogid'];\r
-                               } else {\r
-                                       $url = $CONF['BlogURL'] . '?blogid=' . $params['blogid'];\r
-                               }\r
-                               break;\r
-               }\r
-       \r
-               return Link::add_link_params($url, (isset($params['extra'])? $params['extra'] : null));\r
-       }\r
-       \r
-       static private function add_link_params($link, $params)\r
-       {\r
-               global $CONF;\r
-       \r
-               if (is_array($params) ) {\r
-       \r
-                       if ($CONF['URLMode'] == 'pathinfo') {\r
-       \r
-                               foreach ($params as $param => $value) {\r
-                                       // change in 3.63 to fix problem where URL generated with extra params mike look like category/4/blogid/1\r
-                                       // but they should use the URL keys like this: category/4/blog/1\r
-                                       // if user wants old urls back, set $CONF['NoURLKeysInExtraParams'] = 1; in config.php\r
-                                       if (isset($CONF['NoURLKeysInExtraParams']) && $CONF['NoURLKeysInExtraParams'] == 1) \r
-                                       {\r
-                                               $link .= '/' . $param . '/' . urlencode($value);\r
-                                       } else {\r
-                                               switch ($param) {\r
-                                                       case 'itemid':\r
-                                                               $link .= '/' . $CONF['ItemKey'] . '/' . urlencode($value);\r
-                                                       break;\r
-                                                       case 'memberid':\r
-                                                               $link .= '/' . $CONF['MemberKey'] . '/' . urlencode($value);\r
-                                                       break;\r
-                                                       case 'catid':\r
-                                                               $link .= '/' . $CONF['CategoryKey'] . '/' . urlencode($value);\r
-                                                       break;\r
-                                                       case 'archivelist':\r
-                                                               $link .= '/' . $CONF['ArchivesKey'] . '/' . urlencode($value);\r
-                                                       break;\r
-                                                       case 'archive':\r
-                                                               $link .= '/' . $CONF['ArchiveKey'] . '/' . urlencode($value);\r
-                                                       break;\r
-                                                       case 'blogid':\r
-                                                               $link .= '/' . $CONF['BlogKey'] . '/' . urlencode($value);\r
-                                                       break;\r
-                                                       default:\r
-                                                               $link .= '/' . $param . '/' . urlencode($value);\r
-                                                       break;\r
-                                               }\r
-                                       }\r
-                               }\r
-       \r
-                       } else {\r
-       \r
-                               foreach ($params as $param => $value) {\r
-                                       $link .= '&amp;' . $param . '=' . urlencode($value);\r
-                               }\r
-       \r
-                       }\r
-               }\r
-       \r
-               return $link;\r
-       }\r
-\r
-       /**\r
-        * Link::create_blog_link()\r
-        * Create an link to a blog\r
-        * \r
-        * This function considers the URLMode of the blog\r
-        * \r
-        * @static\r
-        * @param $url          url\r
-        * @param $params       parameters\r
-        */\r
-       static public function create_blog_link($url, $params) {\r
-               global $CONF;\r
-               if ($CONF['URLMode'] == 'normal') {\r
-                       if (i18n::strpos($url, '?') === FALSE && is_array($params)) {\r
-                               $fParam = reset($params);\r
-                               $fKey   = key($params);\r
-                               array_shift($params);\r
-                               $url .= '?' . $fKey . '=' . $fParam;\r
-                       }\r
-               } elseif ($CONF['URLMode'] == 'pathinfo' && i18n::substr($url, -1) == '/') {\r
-                       $url = i18n::substr($url, 0, -1);\r
-               }\r
-               return addLinkParams($url, $params);\r
-       }\r
-\r
-}\r
+ */
+class Link
+{
+
+       /**
+        * Link::create_item_link()
+        * Create a link to an item
+        * @static
+        * @param $itemid       item id
+        * @param $extra        extra parameter
+        */
+       static public function create_item_link($itemid, $extra = '') {
+               return self::create_link('item', array('itemid' => $itemid, 'extra' => $extra) );
+       }
+
+       /**
+        * Link::create_member_link()
+        * Create a link to a member
+        * 
+        * @static
+        * @param $memberid     member id
+        * @param $extra        extra parameter
+        */
+       static public function create_member_link($memberid, $extra = '') {
+               return self::create_link('member', array('memberid' => $memberid, 'extra' => $extra) );
+       }
+       
+       /**
+        * Link::create_category_link()
+        * Create a link to a category
+        * 
+        * @static
+        * @param $catid        category id
+        * @param $extra        extra parameter
+        */
+       static public function create_category_link($catid, $extra = '') {
+               return self::create_link('category', array('catid' => $catid, 'extra' => $extra) );
+       }
+
+       /**
+        * Link::cteate_archive_link()
+        * Create a link to an archive
+        * 
+        * @static
+        * @param $blogid       blog id
+        * @param $archive      archive identifier
+        * @param $extra        extra parameter
+        */
+       static public function create_archive_link($blogid, $archive, $extra = '') {
+               return self::create_link('archive', array('blogid' => $blogid, 'archive' => $archive, 'extra' => $extra) );
+       }
+
+       /**
+        * Link::create_archivelist_link()
+        * Create a link to an archive list
+        * 
+        * @static
+        * @param $blogid       blog id
+        * @param $extra        extra parameter
+        */
+       static public function create_archivelist_link($blogid = '', $extra = '') {
+               return self::create_link('archivelist', array('blogid' => $blogid, 'extra' => $extra) );
+       }
+
+       /**
+        * Link::create_blogid_link()
+        * Create a link to a blog
+        * 
+        * @static
+        * @param $blogid       blog id
+        * @param $extra        extra parameter
+        */
+       static public function create_blogid_link($blogid, $params = '') {
+               return self::create_link('blog', array('blogid' => $blogid, 'extra' => $params) );
+       }
+
+       /**
+        * Link::create_link()
+        * Create a link
+        * 
+        * Universell function that creates link of different types (like item, blog ...)
+        * and with an array of parameters
+        * 
+        * @static
+        * @param $type         type of the link
+        * @param $params       array with parameters
+        */
+       static public function create_link($type, $params) {
+               global $manager, $CONF;
+       
+               $generatedURL = '';
+               $usePathInfo = ($CONF['URLMode'] == 'pathinfo');
+       
+               // ask plugins first
+               $created = false;
+       
+               if ($usePathInfo)
+               {
+                       $data = array(
+                               'type'          =>  $type,
+                               'params'        =>  $params,
+                               'completed'     => &$created,
+                               'url'           => &$url
+                       );
+                       $manager->notify('GenerateURL', $data);
+               }
+       
+               // if a plugin created the URL, return it
+               if ($created)
+               {
+                       return $url;
+               }
+       
+               // default implementation
+               switch ($type) {
+                       case 'item':
+                               if ($usePathInfo) {
+                                       $url = $CONF['ItemURL'] . '/' . $CONF['ItemKey'] . '/' . $params['itemid'];
+                               } else {
+                                       $url = $CONF['ItemURL'] . '?itemid=' . $params['itemid'];
+                               }
+                               break;
+       
+                       case 'member':
+                               if ($usePathInfo) {
+                                       $url = $CONF['MemberURL'] . '/' . $CONF['MemberKey'] . '/' . $params['memberid'];
+                               } else {
+                                       $url = $CONF['MemberURL'] . '?memberid=' . $params['memberid'];
+                               }
+                               break;
+       
+                       case 'category':
+                               if ($usePathInfo) {
+                                       $url = $CONF['CategoryURL'] . '/' . $CONF['CategoryKey'] . '/' . $params['catid'];
+                               } else {
+                                       $url = $CONF['CategoryURL'] . '?catid=' . $params['catid'];
+                               }
+                               break;
+       
+                       case 'archivelist':
+                               if (!$params['blogid']) {
+                                       $params['blogid'] = $CONF['DefaultBlog'];
+                               }
+       
+                               if ($usePathInfo) {
+                                       $url = $CONF['ArchiveListURL'] . '/' . $CONF['ArchivesKey'] . '/' . $params['blogid'];
+                               } else {
+                                       $url = $CONF['ArchiveListURL'] . '?archivelist=' . $params['blogid'];
+                               }
+                               break;
+       
+                       case 'archive':
+                               if ($usePathInfo) {
+                                       $url = $CONF['ArchiveURL'] . '/' . $CONF['ArchiveKey'] . '/'.$params['blogid'].'/' . $params['archive'];
+                               } else {
+                                       $url = $CONF['ArchiveURL'] . '?blogid='.$params['blogid'].'&amp;archive=' . $params['archive'];
+                               }
+                               break;
+       
+                       case 'blog':
+                               if ($usePathInfo) {
+                                       $url = $CONF['BlogURL'] . '/' . $CONF['BlogKey'] . '/' . $params['blogid'];
+                               } else {
+                                       $url = $CONF['BlogURL'] . '?blogid=' . $params['blogid'];
+                               }
+                               break;
+               }
+       
+               return Link::add_link_params($url, (isset($params['extra'])? $params['extra'] : null));
+       }
+       
+       static private function add_link_params($link, $params)
+       {
+               global $CONF;
+       
+               if (is_array($params) ) {
+       
+                       if ($CONF['URLMode'] == 'pathinfo') {
+       
+                               foreach ($params as $param => $value) {
+                                       // change in 3.63 to fix problem where URL generated with extra params mike look like category/4/blogid/1
+                                       // but they should use the URL keys like this: category/4/blog/1
+                                       // if user wants old urls back, set $CONF['NoURLKeysInExtraParams'] = 1; in config.php
+                                       if (isset($CONF['NoURLKeysInExtraParams']) && $CONF['NoURLKeysInExtraParams'] == 1) 
+                                       {
+                                               $link .= '/' . $param . '/' . urlencode($value);
+                                       } else {
+                                               switch ($param) {
+                                                       case 'itemid':
+                                                               $link .= '/' . $CONF['ItemKey'] . '/' . urlencode($value);
+                                                       break;
+                                                       case 'memberid':
+                                                               $link .= '/' . $CONF['MemberKey'] . '/' . urlencode($value);
+                                                       break;
+                                                       case 'catid':
+                                                               $link .= '/' . $CONF['CategoryKey'] . '/' . urlencode($value);
+                                                       break;
+                                                       case 'archivelist':
+                                                               $link .= '/' . $CONF['ArchivesKey'] . '/' . urlencode($value);
+                                                       break;
+                                                       case 'archive':
+                                                               $link .= '/' . $CONF['ArchiveKey'] . '/' . urlencode($value);
+                                                       break;
+                                                       case 'blogid':
+                                                               $link .= '/' . $CONF['BlogKey'] . '/' . urlencode($value);
+                                                       break;
+                                                       default:
+                                                               $link .= '/' . $param . '/' . urlencode($value);
+                                                       break;
+                                               }
+                                       }
+                               }
+       
+                       } else {
+       
+                               foreach ($params as $param => $value) {
+                                       $link .= '&amp;' . $param . '=' . urlencode($value);
+                               }
+       
+                       }
+               }
+       
+               return $link;
+       }
+
+       /**
+        * Link::create_blog_link()
+        * Create an link to a blog
+        * 
+        * This function considers the URLMode of the blog
+        * 
+        * @static
+        * @param $url          url
+        * @param $params       parameters
+        */
+       static public function create_blog_link($url, $params) {
+               global $CONF;
+               if ($CONF['URLMode'] == 'normal') {
+                       if (i18n::strpos($url, '?') === FALSE && is_array($params)) {
+                               $fParam = reset($params);
+                               $fKey   = key($params);
+                               array_shift($params);
+                               $url .= '?' . $fKey . '=' . $fParam;
+                       }
+               } elseif ($CONF['URLMode'] == 'pathinfo' && i18n::substr($url, -1) == '/') {
+                       $url = i18n::substr($url, 0, -1);
+               }
+               return addLinkParams($url, $params);
+       }
+
+}
index 737899a..d41bd3d 100644 (file)
@@ -1,3 +1,4 @@
+<<<<<<< HEAD
 <?php\r
 /*\r
  * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)\r
@@ -783,3 +784,792 @@ class Manager
        }\r
 }\r
 \r
+=======
+<?php
+/*
+ * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)
+ * Copyright (C) 2002-2009 The Nucleus Group
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * (see nucleus/documentation/index.html#license for more info)
+ */
+/**
+ * This class makes sure each item/weblog/comment object gets requested from
+ * the database only once, by keeping them in a cache. The class also acts as
+ * a dynamic classloader, loading classes _only_ when they are first needed,
+ * hoping to diminish execution time
+ *
+ * The class is a singleton, meaning that there will be only one object of it
+ * active at all times. The object can be requested using Manager::instance()
+ *
+ * @license http://nucleuscms.org/license.txt GNU General Public License
+ * @copyright Copyright (C) 2002-2009 The Nucleus Group
+ * @version $Id: MANAGER.php 1878 2012-06-17 07:42:07Z sakamocchi $
+ */
+class Manager
+{
+       /**
+        * Cached ITEM, BLOG, PLUGIN, KARMA and MEMBER objects. When these objects are requested
+        * through the global $manager object (getItem, getBlog, ...), only the first call
+        * will create an object. Subsequent calls will return the same object.
+        *
+        * The $items, $blogs, ... arrays map an id to an object (for plugins, the name is used
+        * rather than an ID)
+        */
+       private $items;
+       private $blogs;
+       private $plugins;
+       private $karma;
+       private $templates;
+       private $members;
+       private $skins;
+       
+       /**
+        * cachedInfo to avoid repeated SQL queries (see pidInstalled/pluginInstalled/getPidFromName)
+        * e.g. which plugins exists?
+        *
+        * $cachedInfo['installedPlugins'] = array($pid -> $name)
+        */
+       private $cachedInfo;
+       
+       /**
+        * The plugin subscriptionlist
+        *
+        * The subcription array has the following structure
+        *              $subscriptions[$EventName] = array containing names of plugin classes to be
+        *                                                                       notified when that event happens
+        * 
+        * NOTE: this is referred by Comments::addComment() for spamcheck API
+        * TODO: we should add new methods to get this
+        */
+       public $subscriptions;
+       
+       /**
+        * Ticket functions. These are uses by the admin area to make it impossible to simulate certain GET/POST
+        * requests. tickets are user specific
+        */
+       private $currentRequestTicket = '';
+       
+       /**
+        * Returns the only instance of this class. Creates the instance if it
+        * does not yet exists. Users should use this function as
+        * $manager =& Manager::instance(); to get a reference to the object
+        * instead of a copy
+        */
+       static public function &instance()
+       {
+               static $instance = array();
+               if ( empty($instance) )
+               {
+                       $instance[0] = new Manager();
+               }
+               return $instance[0];
+       }
+       
+       /**
+        * The constructor of this class initializes the object caches
+        */
+       public function __construct()
+       {
+               $this->items = array();
+               $this->blogs = array();
+               $this->plugins = array();
+               $this->karma = array();
+               $this->templates = array();
+               $this->skins = array();
+               $this->parserPrefs = array();
+               $this->cachedInfo = array();
+               $this->members = array();
+               return;
+       }
+       
+       /**
+        * Returns the requested item object. If it is not in the cache, it will
+        * first be loaded and then placed in the cache.
+        * Intended use: $item =& $manager->getItem(1234, 0, 0)
+        */
+       public function &getItem($itemid, $allowdraft, $allowfuture)
+       {
+               /* confirm to cached */
+               if ( !array_key_exists($itemid, $this->items) )
+               {
+                       $this->loadClass('ITEM');
+                       $item = Item::getitem($itemid, $allowdraft, $allowfuture);
+                       $this->items[$itemid] = $item;
+               }
+               
+               $item =& $this->items[$itemid];
+               if ( !$allowdraft && ($item['draft']) )
+               {
+                       return 0;
+               }
+               
+               $blog =& $this->getBlog($item['blogid']);
+               if ( !$allowfuture && ($item['timestamp'] > $blog->getCorrectTime()) )
+               {
+                       return 0;
+               }
+               
+               return $item;
+       }
+       
+       /**
+        * Loads a class if it has not yet been loaded
+        */
+       public function loadClass($name)
+       {
+               $this->_loadClass($name, $name . '.php');
+               return;
+       }
+       
+       /**
+        * Checks if an item exists
+        */
+       public function existsItem($id,$future,$draft)
+       {
+               $this->_loadClass('ITEM','ITEM.php');
+               return Item::exists($id,$future,$draft);
+       }
+       
+       /**
+        * Checks if a category exists
+        */
+       public function existsCategory($id)
+       {
+               return (DB::getValue('SELECT COUNT(*) as result FROM '.sql_table('category').' WHERE catid='.intval($id)) > 0);
+       }
+       
+       /**
+        * Returns the blog object for a given blogid
+        */
+       public function &getBlog($blogid)
+       {
+               if ( !array_key_exists($blogid, $this->blogs) )
+               {
+                       $this->_loadClass('BLOG','BLOG.php');
+                       $this->blogs[$blogid] = new Blog($blogid);
+               }
+               return $this->blogs[$blogid];
+       }
+       
+       /**
+        * Checks if a blog exists
+        */
+       public function existsBlog($name)
+       {
+               $this->_loadClass('BLOG','BLOG.php');
+               return Blog::exists($name);
+       }
+       
+       /**
+        * Checks if a blog id exists
+        */
+       public function existsBlogID($id)
+       {
+               $this->_loadClass('BLOG','BLOG.php');
+               return Blog::existsID($id);
+       }
+       
+       /**
+        * Returns a previously read template
+        */
+       public function &getTemplate($templateName)
+       {
+               if ( !array_key_exists($templateName, $this->templates) )
+               {
+                       $this->_loadClass('Template','TEMPLATE.php');
+                       $tmplate_tmp = Template::read($templateName);
+                       $this->templates[$templateName] =& $tmplate_tmp;
+               }
+               return $this->templates[$templateName];
+       }
+       
+       /**
+        * Returns a KARMA object (karma votes)
+        */
+       public function &getKarma($itemid)
+       {
+               if ( !array_key_exists($itemid, $this->karma) )
+               {
+                       $this->_loadClass('Karma','KARMA.php');
+                       $this->karma[$itemid] = new Karma($itemid);
+               }
+               return $this->karma[$itemid];
+       }
+       
+       /**
+        * Returns a MEMBER object
+        */
+       public function &getMember($memberid)
+       {
+               if ( !array_key_exists($memberid, $this->members) )
+               {
+                       $this->_loadClass('Member','MEMBER.php');
+                       $this->members[$memberid] =& Member::createFromID($memberid);;
+               }
+               return $this->members[$memberid];
+       }
+       
+       /**
+        * Manager::getSkin()
+        * 
+        * @param       integer $skinid                         ID for skin
+        * @param       string  $action_class           action class for handling skin variables
+        * @param       string  $event_identifier       identifier for event name
+        * @return      object  instance of Skin class
+        */
+       public function &getSkin($skinid, $action_class='Actions', $event_identifier='Skin')
+       {
+               if ( !array_key_exists($skinid, $this->skins) )
+               {
+                       $this->_loadClass('Skin', 'SKIN.php');
+                       $this->skins[$skinid] = new Skin($skinid, $action_class, $event_identifier);
+               }
+               
+               return $this->skins[$skinid];
+       }
+       
+       /**
+        * Set the global parser preferences
+        */
+       public function setParserProperty($name, $value)
+       {
+               $this->parserPrefs[$name] = $value;
+               return;
+       }
+       
+       /**
+        * Get the global parser preferences
+        */
+       public function getParserProperty($name)
+       {
+               return $this->parserPrefs[$name];
+       }
+       
+       /**
+        * A helper function to load a class
+        * 
+        *      private
+        */
+       private function _loadClass($name, $filename)
+       {
+               global $DIR_LIBS;
+               
+               if ( !class_exists($name) )
+               {
+                       include($DIR_LIBS . $filename);
+               }
+               return;
+       }
+       
+       /**
+        * Manager::_loadPlugin()
+        * loading a certain plugin
+        * 
+        * @param       string $name plugin name
+        * @return      void
+        */
+       private function _loadPlugin($name)
+       {
+               global $DIR_PLUGINS, $MYSQL_HANDLER, $MYSQL_PREFIX;
+               
+               if ( class_exists($name) )
+               {
+                       return;
+               }
+               
+               $fileName = "{$DIR_PLUGINS}{$name}.php";
+               
+               if ( !file_exists($fileName) )
+               {
+                       if ( !defined('_MANAGER_PLUGINFILE_NOTFOUND') )
+                       {
+                               define('_MANAGER_PLUGINFILE_NOTFOUND', 'Plugin %s was not loaded (File not found)');
+                       }
+                       ActionLog::add(WARNING, sprintf(_MANAGER_PLUGINFILE_NOTFOUND, $name)); 
+                       return 0;
+               }
+               
+               // load plugin
+               include($fileName);
+               
+               // check if class exists (avoid errors in eval'd code)
+               if ( !class_exists($name) )
+               {
+                       ActionLog::add(WARNING, sprintf(_MANAGER_PLUGINFILE_NOCLASS, $name));
+                       return 0;
+               }
+               
+               // add to plugin array
+               $this->plugins[$name] = new $name();
+               
+               // get plugid
+               $this->plugins[$name]->setID($this->getPidFromName($name));
+               
+               // unload plugin if a prefix is used and the plugin cannot handle this
+               if ( ($MYSQL_PREFIX != '')
+                 && !$this->plugins[$name]->supportsFeature('SqlTablePrefix') )
+               {
+                       unset($this->plugins[$name]);
+                       ActionLog::add(WARNING, sprintf(_MANAGER_PLUGINTABLEPREFIX_NOTSUPPORT, $name));
+                       return 0;
+               }
+               
+               // unload plugin if using non-mysql handler and plugin does not support it 
+               if ( (!in_array('mysql',$MYSQL_HANDLER))
+                 && !$this->plugins[$name]->supportsFeature('SqlApi') )
+               {
+                       unset($this->plugins[$name]);
+                       ActionLog::add(WARNING, sprintf(_MANAGER_PLUGINSQLAPI_NOTSUPPORT, $name));
+                       return 0;
+               }
+               
+               // call init method
+               $this->plugins[$name]->init();
+               
+               return;
+       }
+
+       /**
+        * Manager:getPlugin()
+        * Returns a PLUGIN object
+        * 
+        * @param       string  $name   name of plugin
+        * @return      object  plugin object
+        */
+       public function &getPlugin($name)
+       {
+               // retrieve the name of the plugin in the right capitalisation
+               $name = $this->getUpperCaseName ($name);
+               
+               // get the plugin       
+               $plugin =& $this->plugins[$name]; 
+               
+               if ( !$plugin )
+               {
+                       // load class if needed
+                       $this->_loadPlugin($name);
+                       $plugin =& $this->plugins[$name];
+               }
+               return $plugin;
+       }
+       
+       /**
+        * Manager::pluginLoaded()
+        * Checks if the given plugin IS loaded or not
+        * 
+        * @param       string  $name   name of plugin
+        * @return      object  plugin object
+        */
+       public function &pluginLoaded($name)
+       {
+               $plugin =& $this->plugins[$name];
+               return $plugin;
+       }
+       
+       /**
+        * Manager::pidLoaded()
+        * 
+        * @param       integer $pid    id for plugin
+        * @return      object  plugin object
+        */
+       public function &pidLoaded($pid)
+       {
+               $plugin=false;
+               reset($this->plugins);
+               while ( list($name) = each($this->plugins) )
+               {
+                       if ( $pid!=$this->plugins[$name]->getId() )
+                       {
+                               continue;
+                       }
+                       $plugin= & $this->plugins[$name];
+                       break;
+               }
+               return $plugin;
+       }
+       
+       /**
+        * Manager::pluginInstalled()
+        * checks if the given plugin IS installed or not
+        * 
+        * @param       string  $name   name of plugin
+        * @return      boolean exists or not
+        */
+       public function pluginInstalled($name)
+       {
+               $this->_initCacheInfo('installedPlugins');
+               return ($this->getPidFromName($name) != -1);
+       }
+
+       /**
+        * Manager::pidInstalled()
+        * checks if the given plugin IS installed or not
+        * 
+        * @param       integer $pid    id of plugin
+        * @return      boolean exists or not
+        */
+       public function pidInstalled($pid)
+       {
+               $this->_initCacheInfo('installedPlugins');
+               return ($this->cachedInfo['installedPlugins'][$pid] != '');
+       }
+       
+       /**
+        * Manager::getPidFromName()
+        * 
+        * @param       string  $name   name of plugin
+        * @return      mixed   id for plugin or -1 if not exists
+        */
+       public function getPidFromName($name)
+       {
+               $this->_initCacheInfo('installedPlugins');
+               foreach ( $this->cachedInfo['installedPlugins'] as $pid => $pfile )
+               {
+                       if (strtolower($pfile) == strtolower($name))
+                       {
+                               return $pid;
+                       }
+               }
+               return -1;
+       }
+       
+       /**
+        * Manager::getPluginNameFromPid()
+        * 
+        * @param       string  $pid    ID for plugin
+        * @return      string  name of plugin
+        */
+       public function getPluginNameFromPid($pid)
+       {
+               if ( !array_key_exists($pid, $this->cachedInfo['installedPlugins']) )
+               {
+                       $query = 'SELECT pfile FROM %s WHERE pid=%d;';
+                       $query = sprintf($query, sql_table('plugin'), (integer) $pid);
+                       return DB::getValue($query);
+               }
+               return $this->cachedInfo['installedPlugins'][$pid];
+       }
+       
+       /**
+        * Manager::getUpperCaseName()
+        * Retrieve the name of a plugin in the right capitalisation
+        * 
+        * @param       string  $name   name of plugin
+        * @return      string  name according to UpperCamelCase
+        */
+       public function getUpperCaseName ($name)
+       {
+               $this->_initCacheInfo('installedPlugins');
+               foreach ( $this->cachedInfo['installedPlugins'] as $pid => $pfile )
+               {
+                       if ( strtolower($pfile) == strtolower($name) )
+                       {
+                               return $pfile;
+                       }
+               }
+               return -1;
+       }
+       
+       /**
+        * Manager::clearCachedInfo()
+        * 
+        * @param       string  $what
+        * @return      void
+        */
+       public function clearCachedInfo($what)
+       {
+               unset($this->cachedInfo[$what]);
+               return;
+       }
+       
+       /**
+        * Manager::_initCacheInfo()
+        * Loads some info on the first call only
+        * 
+        * @param       string  $what   'installedPlugins'
+        * @return      void
+        */
+       private function _initCacheInfo($what)
+       {
+               if ( array_key_exists($what, $this->cachedInfo)
+                 && is_array($this->cachedInfo[$what]) )
+               {
+                       return;
+               }
+               
+               switch ($what)
+               {
+                       // 'installedPlugins' = array ($pid => $name)
+                       case 'installedPlugins':
+                               $this->cachedInfo['installedPlugins'] = array();
+                               $res = DB::getResult('SELECT pid, pfile FROM ' . sql_table('plugin'));
+                               foreach ( $res as $row )
+                               {
+                                       $this->cachedInfo['installedPlugins'][$row['pid']] = $row['pfile'];
+                               }
+                               break;
+               }
+               return;
+       }
+       
+       /**
+        * Manager::notify()
+        * A function to notify plugins that something has happened. Only the plugins
+        * that are subscribed to the event will get notified.
+        * Upon the first call, the list of subscriptions will be fetched from the
+        * database. The plugins itsself will only get loaded when they are first needed
+        *
+        * @param       string  $eventName      Name of the event (method to be called on plugins)
+        * @param       string  $data           Can contain any type of data,
+        *                                                              depending on the event type. Usually this is an itemid, blogid, ...
+        *                                                              but it can also be an array containing multiple values
+        * @return      void
+        */
+       public function notify($eventName, &$data)
+       {
+               // load subscription list if needed
+               if ( !is_array($this->subscriptions) )
+               {
+                       $this->_loadSubscriptions();
+               }
+               
+               // get listening objects
+               $listeners = false;
+               if ( array_key_exists($eventName, $this->subscriptions)
+                 && !empty($this->subscriptions[$eventName]) )
+               {
+                       $listeners = $this->subscriptions[$eventName];
+               }
+               
+               // notify all of them
+               if ( is_array($listeners) )
+               {
+                       foreach( $listeners as $listener )
+                       {
+                               // load class if needed
+                               $this->_loadPlugin($listener);
+                               
+                               // do notify (if method exists)
+                               if ( array_key_exists($listener, $this->plugins)
+                                 && !empty($this->plugins[$listener])
+                                 && method_exists($this->plugins[$listener], 'event_' . $eventName) )
+                               {
+                                       call_user_func(array($this->plugins[$listener], 'event_' . $eventName), $data);
+                               }
+                       }
+               }
+               return;
+       }
+       
+       /**
+        * Manager::_loadSubscriptions()
+        * Loads plugin subscriptions
+        * 
+        * @param       void
+        * @return      void
+        */
+       private function _loadSubscriptions()
+       {
+               // initialize as array
+               $this->subscriptions = array();
+               
+               $query = "SELECT p.pfile as pfile, e.event as event"
+                      . " FROM %s as e, %s as p"
+                      . " WHERE e.pid=p.pid ORDER BY p.porder ASC";
+               $query = sprintf($query, sql_table('plugin_event'), sql_table('plugin'));
+               $res = DB::getResult($query);
+               
+               foreach ( $res as $row )
+               {
+                       $pluginName = $row['pfile'];
+                       $eventName = $row['event'];
+                       $this->subscriptions[$eventName][] = $pluginName;
+               }
+               return;
+       }
+       
+       /**
+        * Manager::getNumberOfSubscribers()
+        * 
+        * @param       string  $event  name of events
+        * @return      integer number of event subscriber
+        */
+       public function getNumberOfSubscribers($event)
+       {
+               $query = 'SELECT COUNT(*) as count FROM %s WHERE event=%s;';
+               $query = sprintf($query, sql_table('plugin_event'), DB::quoteValue($event));
+               return (integer) DB::getValue($query);
+       }
+       
+       /**
+        * Manager::addTicketToUrl()
+        * GET requests: Adds ticket to URL (URL should NOT be html-encoded!, ticket is added at the end)
+        * 
+        * @param       string  url     string for URI
+        * @return      void
+        */
+       public function addTicketToUrl($url)
+       {
+               $ticketCode = 'ticket=' . $this->_generateTicket();
+               if ( i18n::strpos($url, '?') === FALSE )
+               {
+                       $ticketCode = "{$url}?{$ticketCode}";
+               }
+               else
+               {
+                       $ticketCode = "{$url}&{$ticketCode}";
+               }
+               return $ticketCode;
+       }
+       
+       /**
+        * Manager::addTicketHidden()
+        * POST requests: Adds ticket as hidden formvar
+        * 
+        * @param       void
+        * @return      void
+        */
+       public function addTicketHidden()
+       {
+               $ticket = $this->_generateTicket();
+               echo '<input type="hidden" name="ticket" value="', Entity::hsc($ticket), '" />';
+               return;
+       }
+       
+       /**
+        * Manager::getNewTicket()
+        * Get a new ticket
+        * (xmlHTTPRequest AutoSaveDraft uses this to refresh the ticket)
+        * 
+        * @param       void
+        * @return      string  string of ticket
+        */
+       public function getNewTicket()
+       {
+               $this->currentRequestTicket = '';
+               return $this->_generateTicket();
+       }
+       
+       /**
+        * Manager::checkTicket()
+        * Checks the ticket that was passed along with the current request
+        * 
+        * @param       void
+        * @return      boolean correct or not
+        */
+       public function checkTicket()
+       {
+               global $member;
+               
+               // get ticket from request
+               $ticket = requestVar('ticket');
+               
+               // no ticket -> don't allow
+               if ( $ticket == '' )
+               {
+                       return FALSE;
+               }
+               
+               // remove expired tickets first
+               $this->_cleanUpExpiredTickets();
+               
+               // get member id
+               if (!$member->isLoggedIn())
+               {
+                       $memberId = -1;
+               }
+               else
+               {
+                       $memberId = $member->getID();
+               }
+               
+               // check if ticket is a valid one
+               $query = sprintf('SELECT COUNT(*) as result FROM %s WHERE member=%d and ticket=%s',
+                       sql_table('tickets'),
+                       intval($memberId),
+                       DB::quoteValue($ticket)
+               );
+               
+               /*
+                * NOTE:
+                * [in the original implementation, the checked ticket was deleted. This would lead to invalid
+                * tickets when using the browsers back button and clicking another link/form
+                * leaving the keys in the database is not a real problem, since they're member-specific and
+                * only valid for a period of one hour]
+                */
+               if ( DB::getValue($query) != 1 )
+               {
+                       return FALSE;
+               }
+               
+               return TRUE;
+       }
+
+       /**
+        * Manager::_cleanUpExpiredTickets()
+        * Removes the expired tickets
+        * 
+        * @param       void
+        * @return      void
+        */
+       private function _cleanUpExpiredTickets()
+       {
+               // remove tickets older than 1 hour
+               $oldTime = time() - 60 * 60;
+               $query = 'DELETE FROM %s WHERE ctime < %s';
+               $query = sprintf($query, sql_table('tickets'), DB::formatDateTime($oldTime));
+               DB::execute($query);
+               return;
+       }
+       
+       /**
+        * Manager::_generateTicket()
+        * Generates/returns a ticket (one ticket per page request)
+        * 
+        * @param       void
+        * @return      void
+        */
+       private function _generateTicket()
+       {
+               if ( $this->currentRequestTicket == '' )
+               {
+                       // generate new ticket (only one ticket will be generated per page request)
+                       // and store in database
+                       global $member;
+                       // get member id
+                       if ( !$member->isLoggedIn() )
+                       {
+                               $memberId = -1;
+                       }
+                       else
+                       {
+                               $memberId = $member->getID();
+                       }
+                       
+                       $ok = false;
+                       while ( !$ok )
+                       {
+                               // generate a random token
+                               srand((double)microtime()*1000000);
+                               $ticket = md5(uniqid(rand(), true));
+                               
+                               // add in database as non-active
+                               $query = 'INSERT INTO %s (ticket, member, ctime) VALUES (%s, %d, %s)';
+                               $query = sprintf($query, sql_table('tickets'), DB::quoteValue($ticket), (integer) $memberId, DB::formatDateTime());
+                               
+                               if ( DB::execute($query) !== FALSE )
+                               {
+                                       $ok = true;
+                               }
+                       }
+                       $this->currentRequestTicket = $ticket;
+               }
+               return $this->currentRequestTicket;
+       }
+}
+
+>>>>>>> skinnable-master
index 1c6ab00..66f8c66 100644 (file)
@@ -1,3 +1,4 @@
+<<<<<<< HEAD
 <?php\r
 /*\r
  * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)\r
@@ -787,3 +788,796 @@ class MediaObject
                return (string) hash(Media::$algorism, "{$this->path}/{$this->name}", FALSE);\r
        }\r
 }\r
+=======
+<?php
+/*
+ * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)
+ * Copyright (C) 2002-2012 The Nucleus Group
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * (see nucleus/documentation/index.html#license for more info)
+ */
+/**
+ * Media classes for nucleus
+ *
+ * @license http://nucleuscms.org/license.txt GNU General Public License
+ * @copyright Copyright (C) 2002-2012 The Nucleus Group
+ * @version $Id: MEDIA.php 1875 2012-06-17 07:30:44Z sakamocchi $
+ */
+
+define('PRIVATE_COLLECTION',           'Private Collection');
+define('READ_ONLY_MEDIA_FOLDER',       '(Read Only)');
+
+class Media
+{
+       static public $thumbdir = '.thumb';
+       static public $algorism = 'md5';
+       static public $image_mime = array(
+               'image/jpeg'    => '.jpeg',
+               'image/png'             => '.png',
+               'image/gif'             => '.gif',
+       );
+       
+       /**
+        * Media::getCollectionList()
+        * Gets the list of collections available to the currently logged
+        * in member
+        * 
+        * @param       boolean $exceptReadOnly
+        * @return array        dirname => display name
+        */
+       static public function getCollectionList($exceptReadOnly = FALSE)
+       {
+               global $member, $DIR_MEDIA;
+               
+               $collections = array();
+               
+               // add private directory for member
+               $collections[$member->getID()] = PRIVATE_COLLECTION;
+               
+               // add global collections
+               if ( !is_dir($DIR_MEDIA) )
+               {
+                       return $collections;
+               }
+               
+               $dirhandle = opendir($DIR_MEDIA);
+               while ( $dirname = readdir($dirhandle) )
+               {
+                       // only add non-numeric (numeric=private) dirs
+                       if ( @is_dir($DIR_MEDIA . $dirname) &&
+                               ($dirname != '.') &&
+                               ($dirname != '..') &&
+                               ($dirname != self::$thumbdir) &&
+                               (!is_numeric($dirname)) )
+                               {
+                               if ( @is_writable($DIR_MEDIA . $dirname) )
+                               {
+                                       $collections[$dirname] = $dirname;
+                               }
+                               else if ( $exceptReadOnly == FALSE )
+                               {
+                                       $collections[$dirname] = $dirname . ' ' . READ_ONLY_MEDIA_FOLDER;
+                               }
+                       }
+               }
+               closedir($dirhandle);
+               
+               return $collections;
+       }
+       
+       /**
+        * Media::getMediaListByCollection()
+        * Returns an array of MediaObject objects for a certain collection
+        *
+        * @param       string  $collection     name of the collection
+        * @param       string  $filter         filter on filename (defaults to none)
+        * @return      void
+        */
+       static public function getMediaListByCollection($collection, $filter = '')
+       {
+               global $CONF, $DIR_MEDIA;
+               
+               $filelist = array();
+               
+               // 1. go through all objects and add them to the filelist
+               $mediadir = $DIR_MEDIA . $collection . '/';
+               
+               // return if dir does not exist
+               if ( !is_dir($mediadir) )
+               {
+                       return $filelist;
+               }
+               
+               $dirhandle = opendir($mediadir);
+               while ( $filename = readdir($dirhandle) )
+               {
+                       // only add files that match the filter
+                       if ( !is_dir($mediadir . $filename) && self::checkFilter($filename, $filter) )
+                       {
+                               array_push($filelist, new MediaObject($collection, $filename, $DIR_MEDIA));
+                       }
+               }
+               closedir($dirhandle);
+               
+               /* sort array */
+               if ( !$CONF['MediaPrefix'] )
+               {
+                       usort($filelist,  array(__CLASS__, 'sort_media_by_timestamp'));
+               }
+               else
+               {
+                       usort($filelist,  array(__CLASS__, 'sort_media_by_filename'));
+               }
+               
+               return $filelist;
+       }
+       
+       /**
+        * Media::checkFilter()
+        * 
+        * @param       string  $strText
+        * @param       string  $strFilter
+        * @return      boolean
+        */
+       static public function checkFilter($strText, $strFilter)
+       {
+               if ( $strFilter == '' )
+               {
+                       return 1;
+               }
+               else
+               {
+                       return is_integer(i18n::strpos(strtolower($strText), strtolower($strFilter)));
+               }
+       }
+       
+       /**
+        * Media::isValidCollection()
+        * checks if a collection exists with the given name, and if it's
+        * allowed for the currently logged in member to upload files to it
+        * 
+        * @param       string  $collectionName
+        * @param       string  $exceptReadOnly
+        * @return      boolean
+        */
+       static public function isValidCollection($collectionName, $exceptReadOnly = FALSE)
+       {
+               global $member, $DIR_MEDIA;
+               
+               // allow creating new private directory
+               if ( $collectionName === (string)$member->getID() )
+               {
+                       return TRUE;
+               }
+               
+               $collections = self::getCollectionList($exceptReadOnly);
+               $dirname = $collections[$collectionName];
+               
+               if ( $dirname == NULL || $dirname === PRIVATE_COLLECTION )
+               {
+                       return FALSE;
+               }
+               
+               // other collections should exist and be writable
+               $collectionDir = $DIR_MEDIA . $collectionName;
+               if ( $exceptReadOnly )
+               {
+                       return ( @is_dir($collectionDir) && @is_writable($collectionDir) );
+               }
+               
+               // other collections should exist
+               return @is_dir($collectionDir);
+       }
+       
+       /**
+        * Media::addMediaObject()
+        * Adds an uploaded file to the media archive
+        *
+        * @param       string  $collection     collection
+        * @param       array   $uploadfile     the postFileInfo(..) array
+        * @param       string  $filename       the filename that should be used to save the file as
+        *                                                              (date prefix should be already added here)
+        * @return      string  blank if success, message if failed
+        */
+       static public function addMediaObject($collection, $uploadfile, $filename)
+       {
+               global $DIR_MEDIA, $manager;
+               
+               // clean filename of characters that may cause trouble in a filename using cleanFileName() function from globalfunctions.php
+               $filename = cleanFileName($filename);
+               
+               // should already have tested for allowable types before calling this method. This will only catch files with no extension at all
+               if ( $filename === FALSE )
+               {
+                       return _ERROR_BADFILETYPE;
+               }
+               
+               // trigger PreMediaUpload event
+               $data = array('collection' => &$collection, 'uploadfile' => $uploadfile, 'filename' => &$filename);
+               $manager->notify('PreMediaUpload', $data);
+               
+               // don't allow uploads to unknown or forbidden collections
+               $exceptReadOnly = TRUE;
+               if ( !self::isValidCollection($collection,$exceptReadOnly) )
+               {
+                       return _ERROR_DISALLOWED;
+               }
+               
+               // check dir permissions (try to create dir if it does not exist)
+               $mediadir = $DIR_MEDIA . $collection;
+               
+               // try to create new private media directories if needed
+               if ( !@is_dir($mediadir) && is_numeric($collection) )
+               {
+                       $oldumask = umask(0000);
+                       if ( !@mkdir($mediadir, 0777) )
+                       {
+                               return _ERROR_BADPERMISSIONS;
+                       }
+                       umask($oldumask);
+               }
+               
+               // if dir still not exists, the action is disallowed
+               if ( !@is_dir($mediadir) )
+               {
+                       return _ERROR_DISALLOWED;
+               }
+               
+               if ( !is_writeable($mediadir) )
+               {
+                       return _ERROR_BADPERMISSIONS;
+               }
+               
+               // add trailing slash (don't add it earlier since it causes mkdir to fail on some systems)
+               $mediadir .= '/';
+               
+               if ( file_exists($mediadir . $filename) )
+               {
+                       return _ERROR_UPLOADDUPLICATE;
+               }
+               
+               // move file to directory
+               if ( is_uploaded_file($uploadfile) )
+               {
+                       if ( !@move_uploaded_file($uploadfile, $mediadir . $filename) )
+                       {
+                               return _ERROR_UPLOADMOVEP;
+                       }
+               }
+               else
+               {
+                       if ( !copy($uploadfile, $mediadir . $filename) )
+                       {
+                               return _ERROR_UPLOADCOPY ;
+                       }
+               }
+               
+               // chmod uploaded file
+               $oldumask = umask(0000);
+               @chmod($mediadir . $filename, 0644);
+               umask($oldumask);
+
+               $data = array('collection' => $collection, 'mediadir' => $mediadir, 'filename' => $filename);
+               $manager->notify('PostMediaUpload', $data);
+               
+               return '';
+       }
+       
+       /**
+        * Media::addMediaObjectRaw()
+        * Adds an uploaded file to the media dir.
+        * 
+        * NOTE: does not check if $collection is valid.
+        * 
+        * @param       string  $collection     collection to use
+        * @param       string  $filename       the filename that should be used to save the file
+        *                                                              as (date prefix should be already added here)
+        * @param       &$data  File data (binary)
+        * @return      string  blank if success, message if failed
+        */
+       static public function addMediaObjectRaw($collection, $filename, &$data)
+       {
+               global $DIR_MEDIA;
+               
+               // check dir permissions (try to create dir if it does not exist)
+               $mediadir = $DIR_MEDIA . $collection;
+               
+               // try to create new private media directories if needed
+               if ( !@is_dir($mediadir) && is_numeric($collection) )
+               {
+                       $oldumask = umask(0000);
+                       if ( !@mkdir($mediadir, 0777) )
+                       {
+                               return _ERROR_BADPERMISSIONS;
+                       }
+                       umask($oldumask);
+               }
+               
+               // if dir still not exists, the action is disallowed
+               if ( !@is_dir($mediadir) )
+               {
+                       return _ERROR_DISALLOWED;
+               }
+               
+               if ( !is_writeable($mediadir) )
+               {
+                       return _ERROR_BADPERMISSIONS;
+               }
+               
+               // add trailing slash (don't add it earlier since it causes mkdir to fail on some systems)
+               $mediadir .= '/';
+               
+               if ( file_exists($mediadir . $filename) )
+               {
+                       return _ERROR_UPLOADDUPLICATE;
+               }
+               
+               // create file
+               $fh = @fopen($mediadir . $filename, 'wb');
+               if ( !$fh )
+               {
+                       return _ERROR_UPLOADFAILED;
+               }
+               $ok = @fwrite($fh, $data);
+               @fclose($fh);
+               if ( !$ok )
+               {
+                       return _ERROR_UPLOADFAILED;
+               }
+               
+               // chmod uploaded file
+               $oldumask = umask(0000);
+               @chmod($mediadir . $filename, 0644);
+               umask($oldumask);
+               
+               return '';
+       }
+       
+       /**
+        * Media::responseResampledImage()
+        * send resampled image via HTTP
+        * 
+        * @param       object  $medium         MediaObject Object
+        * @exit
+        */
+       static public function responseResampledImage($medium, $maxwidth=0, $maxheight=0)
+       {
+               if ( get_class($medium) !== 'MediaObject' )
+               {
+                       header("HTTP/1.1 500 Internal Server Error");
+                       exit('Nucleus CMS: Fail to generate resampled image');
+                       return;
+               }
+               
+               $resampledimage = $medium->getResampledBinary($maxwidth, $maxheight);
+               if ( $resampledimage === FALSE )
+               {
+                       unset($resampledimage);
+                       header("HTTP/1.1 503 Service Unavailable");
+                       exit('Nucleus CMS: Fail to generate resampled image');
+                       return;
+               }
+               
+               header("Content-type: {$medium->mime}");
+               echo $resampledimage;
+               
+               unset($resampledimage);
+               
+               exit;
+       }
+       
+       /**
+        * Media::storeResampledImage()
+        * Store resampled image binary to filesystem as file
+        * 
+        * @param       object  $medium         MediaObject Object
+        * @param       integer $maxwidth       maximum width
+        * @param       integer $maxheight      maximum height
+        * @param       string  $path           directory path for destination
+        * @param       string  $name           file name for destination
+        * @return      boolean
+        */
+       static public function storeResampledImage($medium, $maxwidth=0, $maxheight=0, $path='', $name='')
+       {
+               global $DIR_MEDIA;
+               
+               if ( get_class($medium) !== 'MediaObject' )
+               {
+                       return FALSE;
+               }
+               
+               if ( $path !== '' )
+               {
+                       $path = realpath($path);
+                       if ( !file_exists($path)
+                         || strpos($path, $DIR_MEDIA) !== 0 )
+                       {
+                               return FALSE;
+                       }
+               }
+               else
+               {
+                       $path = '$DIR_MEDIA/' . self::$thumbdir;
+               }
+               
+               if ( $name === '' )
+               {
+                       $name = $medium->getHashedname();
+               }
+               
+               $resampledimage = $medium->getResampledBinary($maxwidth, $maxheight);
+               if ( !$resampledimage )
+               {
+                       unset($resampledimage);
+                       return FALSE;
+               }
+               
+               $handle = @fopen("{$path}/{$name}", 'w');
+               if ( !$handle )
+               {
+                       unset ($resampledimage);
+                       return FALSE;
+               }
+               
+               if ( !@fwrite($handle, $resampledimage) )
+               {
+                       unset($resampledimage);
+                       @unlink("{$path}/{$name}");
+                       return FALSE;
+               }
+               
+               unset($resampledimage);
+               fclose($handle);
+               
+               if ( !@chmod("{$path}/{$name}", 0774) )
+               {
+                       @unlink("{$path}/{$name}");
+                       return FALSE;
+               }
+               
+               return TRUE;
+       }
+       
+       /**
+        * Media::sort_media_by_timestamp()
+        * User-defined sort method to sort an array of MediaObjects
+        * 
+        * @param       object  $a
+        * @param       object  $b
+        * @return      boolean
+        */
+       static private function sort_media_by_timestamp($a, $b)
+       {
+               if ($a->timestamp == $b->timestamp) return 0;
+               return ($a->timestamp > $b->timestamp) ? -1 : 1;
+       }
+       
+       /**
+        * Media::sort_media_by_filename()
+        * User-defined sort method to sort an array of MediaObjects
+        * 
+        * @param       object  $a
+        * @param       object  $b
+        * @return      boolean
+        */
+       static private function sort_media_by_filename($a, $b)
+       {
+               if ($a->filename == $b->filename) return 0;
+               return ($a->filename > $b->filename) ? -1 : 1;
+       }
+}
+
+class MediaObject
+{
+       public $mime = '';
+       
+       public $root = '';
+       public $path = '';
+       public $private;
+       public $collection;
+       public $filename = '';
+       
+       public $prefix = '';
+       public $name = '';
+       public $suffix = '';
+       
+       public $timestamp = 0;
+       public $size = 0;
+       
+       public $width = 0;
+       public $height = 0;
+       public $resampledwidth = 0;
+       public $resampledheight = 0;
+       
+       /**
+        * MediaObject::__construct()
+        * 
+        * @param       string          $collection     
+        * @param       string          $filename       
+        * @param       string          $root           fullpath to media directory
+        */
+       public function __construct($collection, $filename, $root=0)
+       {
+               global $CONF, $DIR_MEDIA;
+               
+               /* for backward compatibility */
+               if ( is_numeric($root) )
+               {
+                       $root = $DIR_MEDIA;
+               }
+               
+               $root = preg_replace('#/*$#', '', $root);
+               
+               /* get and validate fullpath for the medium */
+               if ( !file_exists($root)
+                 || FALSE === ($fullpath = realpath("{$root}/{$collection}/{$filename}"))
+                 || strpos($fullpath, $root) !== 0
+                 || !file_exists($fullpath) )
+               {
+                       return FALSE;
+               }
+               
+               /* store fundamentals */
+               $this->root = $root;
+               $this->private = (integer) $collection;
+               $this->collection = $collection;
+               $this->filename = basename($fullpath);
+               $this->timestamp = filemtime($fullpath);
+               
+               /* store relative directory path from root directory for media */
+               $this->path = preg_replace(array("#{$this->root}/#", "#/{$this->filename}#"), '', $fullpath);
+               if ( $this->path === $this->name )
+               {
+                       $this->path = ''; 
+               }
+               
+               return;
+       }
+       
+       /**
+        * MediaObject::refine()
+        * refine data
+        * 
+        * @param       void
+        * @return      void
+        */
+       public function refine()
+       {
+               global $CONF;
+               
+               /* store size (byte order) */
+               $this->size = filesize("{$this->root}/{$this->path}/{$this->filename}");
+               
+               /* get width and height if this is image binary */
+               if ( FALSE === ($info = @getimagesize ("{$this->root}/{$this->path}/{$this->filename}")) )
+               {
+                       $this->mime = 'application/octet-stream';
+                       $this->width = 0;
+                       $this->height = 0;
+               }
+               else
+               {
+                       $this->mime = $info['mime'];
+                       $this->width = $info[0];
+                       $this->height = $info[1];
+               }
+               
+               /* utilise Fileinfo subsystem if available */
+               if ( defined('FILEINFO_MIME_TYPE') && function_exists ('finfo_open')
+                 && (FALSE !== ($info = finfo_open(FILEINFO_MIME_TYPE))) )
+               {
+                       $this->mime = finfo_file($info, "{$this->root}/{$this->path}/{$this->filename}");
+               }
+               
+               /* store data with parsed filename */
+               if ( preg_match('#^(.*)\.([a-zA-Z0-9]{2,})$#', $this->filename, $info) === 1 )
+               {
+                       $this->name = $info[1];
+                       $this->suffix = $info[2];
+                       
+                       if ( $CONF['MediaPrefix'] && preg_match('#^([0-9]{8})\-(.*)$#', $this->name, $info) == 1 )
+                       {
+                               $this->prefix = preg_replace('#^([0-9]{4})([0-9]{2})([0-9]{2})$#', '$1/$2/$3', $info[1]);
+                               $this->name = $info[2];
+                       }
+               }
+               
+               return;
+       }
+       
+       /**
+        * MediaObject::setResampledSize()
+        * Set resampled size
+        * 
+        * @param       integer $maxwidth
+        * @param       integer $maxheight
+        * @return      boolean
+        */
+       public function setResampledSize($maxwidth=0, $maxheight=0)
+       {
+               if ( ($maxwidth == 0) && ($maxheight == 0) )
+               {
+                       return FALSE;
+               }
+               else if ( $this->width == 0 || $this->height  == 0 )
+               {
+                       return FALSE;
+               }
+               else if ($this->width < $maxwidth && $this->height < $maxheight )
+               {
+                       $this->resampledwidth = $this->width;
+                       $this->resampledheight = $this->height;
+               }
+               else if ( $maxheight == 0 || $this->width > $this->height )
+               {
+                       $this->resampledheight = intval ($this->height * $maxwidth / $this->width);
+                       $this->resampledwidth = $maxwidth;
+               }
+               else if ( $maxwidth == 0 || $this->width <= $this->height )
+               {
+                       $this->resampledwidth = intval ($this->width * $maxheight / $this->height);
+                       $this->resampledheight = $maxheight;
+               }
+               return TRUE;
+       }
+       
+       /**
+        * MediaObject::getResampledBinary()
+        * Return resampled image binary
+        * 
+        * @param       void
+        * @return      mixed   binary if success, FALSE if failed
+        */
+       public function getResampledBinary($maxwidth=0, $maxheight=0)
+       {
+               static $gdinfo = array();
+               static $original;
+               static $resampledimage;
+               
+               if ( !$this->setResampledSize($maxwidth, $maxheight) )
+               {
+                       return FALSE;
+               }
+               
+               if ( $gdinfo = array() )
+               {
+                       $gdinfo = gd_info();
+               }
+               
+               if ( $this->path !== '' )
+               {
+                       $fullpath = "{$this->root}/{$this->path}/{$this->name}";
+               }
+               else
+               {
+                       $fullpath = "{$this->root}/{$this->name}";
+               }
+               if ( !file_exists($fullpath) )
+               {
+                       return FALSE;
+               }
+               
+               if ( !array_key_exists($this->mime, Media::$image_mime)
+                 || $this->width == 0
+                 || $this->height == 0
+                 || $this->resampledwidth == 0
+                 || $this->resampledheight == 0 )
+               {
+                       return FALSE;
+               }
+               
+               /* check current available memory */
+               $memorymax = trim(ini_get("memory_limit"));
+               switch ( strtolower ($memorymax[strlen($memorymax)-1]) )
+               {
+                       case 'g':
+                               $memorymax *= 1024;
+                       case 'm':
+                               $memorymax *= 1024;
+                       case 'k':
+                               $memorymax *= 1024;
+               }
+               
+               /*
+                * this code is based on analyze if gd.c in php source code
+                * if you can read C/C++, please check these elements and notify us if you have some ideas
+                */
+               if ( (memory_get_usage()
+                  + ($this->resampledwidth * $this->resampledheight * 5 + $this->resampledheight * 24 + 10000)
+                  + ($this->width * $this->height * 5 + $this->height * 24 + 10000))
+                 > $memorymax )
+               {
+                       return FALSE;
+               }
+               
+               switch ( $this->mime )
+               {
+                       case 'image/gif':
+                               if ( (!array_key_exists('GIF Read Support', $gdinfo) || !isset($gdinfo['GIF Read Support']))
+                                 || (!array_key_exists('GIF Create Support', $gdinfo) || !isset($gdinfo['GIF Create Support'])) )
+                               {
+                                       return FALSE;
+                               }
+                               $function = 'imagecreatefromgif';
+                               break;
+                       case 'image/jpeg':
+                               if ( (!array_key_exists('JPEG Support', $gdinfo) || !isset($gdinfo['JPEG Support']))
+                                 && (!array_key_exists('JPG Support', $gdinfo) || !isset($gdinfo['JPG Support'])) )
+                               {
+                                       return FALSE;
+                               }
+                               $function = 'imagecreatefromjpeg';
+                               break;
+                       case 'image/png':
+                               if ( !array_key_exists('PNG Support', $gdinfo) || !isset($gdinfo['PNG Support']) )
+                               {
+                                       return FALSE;
+                               }
+                               $function = 'imagecreatefrompng';
+                               break;
+                       default:
+                               return FALSE;
+               }
+               
+               if ( !is_callable($function) )
+               {
+                       return FALSE;
+               }
+               
+               $original = call_user_func_array($function, $fullpath);
+               if ( !$original )
+               {
+                       return FALSE;
+               }
+               
+               $resampledimage = imagecreatetruecolor($this->resampledwidth, $this->resampledheight);
+               if ( !$resampledimage )
+               {
+                       imagedestroy($original);
+                       return FALSE;
+               }
+               
+               @set_time_limit(ini_get('max_execution_time'));
+               if ( !ImageCopyResampled($resampledimage, $original, 0, 0, 0, 0, $this->resampledwidth, $this->resampledheight, $this->width, $this->height) )
+               {
+                       return FALSE;
+               }
+               
+               imagedestroy($original);
+               
+               ob_start();
+               
+               switch ( $this->mime )
+               {
+                       case 'image/gif':
+                               imagegif($resampledimage);
+                               break;
+                       case 'image/jpeg':
+                               imagejpeg($resampledimage);
+                               break;
+                       case 'image/png':
+                               imagepng($resampledimage);
+                               break;
+                       case 'image/bmp':
+                       case 'image/x-ms-bmp':
+                               imagepng($resampledimage);
+                               break;
+                       default:
+                               return FALSE;
+               }
+               
+               imagedestroy($resampledimage);
+               
+               return ob_get_clean();
+       }
+       
+       public function getHashedName()
+       {
+               return (string) hash(Media::$algorism, "{$this->path}/{$this->name}", FALSE);
+       }
+}
+>>>>>>> skinnable-master
index 8172d43..1047d78 100644 (file)
@@ -1,3 +1,4 @@
+<<<<<<< HEAD
 <?php\r
 \r
 /* \r
@@ -1318,3 +1319,1356 @@ class Member
                return $language;\r
        }\r
 }\r
+=======
+<?php
+
+/* 
+ * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)
+ * Copyright (C) 2002-2009 The Nucleus Group
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * (see nucleus/documentation/index.html#license for more info)
+ */
+/**
+ * A class representing site members
+ * 
+ * @license http://nucleuscms.org/license.txt GNU General Public License
+ * @copyright Copyright (C) 2002-2009 The Nucleus Group
+ * @version $Id: MEMBER.php 1616 2012-01-08 09:48:15Z sakamocchi $
+ */
+class Member
+{
+       // 1 when authenticated, 0 when not
+       public $loggedin = 0;
+       public $password;               // not the actual password, but rather a MD5 hash
+       private $algorism = 'md5';
+       
+       public $cookiekey;              // value that should also be in the client cookie to allow authentication
+       private $cookie_salt = FALSE;
+       
+       // member info
+       public $id = -1;
+       public $realname;
+       public $displayname;
+       public $email;
+       public $url;
+       public $admin = 0;                      // (either 0 or 1)
+       public $canlogin = 0;           // (either 0 or 1)
+       public $notes;
+       public $autosave = 1;           // if the member use the autosave draft function
+       public $adminskin = 0;          // if the member use the autosave draft function
+       public $bookmarklet = 0;                // if the member use the autosave draft function
+       private $locale = '';
+       
+       /**
+        * Member::__construct()
+        * Constructor for a member object
+        * 
+        * @param       Void
+        * @return      Void
+        * 
+        */
+       public function __construct()
+       {
+               return;
+       }
+       
+       /**
+        * Member::createFromName()
+        * Create a member object for a given displayname
+        * 
+        * @static
+        * @param       String  $displayname    login name
+        * @return      Object  member object
+        * 
+        */
+       public static function &createFromName($displayname)
+       {
+               $mem = new Member();
+               $mem->readFromName($displayname);
+               return $mem;
+       }
+       
+       /**
+        * Member::createFromID()
+        * Create a member object for a given ID
+        * 
+        * @static
+        * @param       Integer $id     id for member
+        */
+       public static function &createFromID($id)
+       {
+               $mem = new Member();
+               $mem->readFromID($id);
+               return $mem;
+       }
+       
+       /**
+        * Member::readFromName()
+        * Read member table in database
+        * 
+        * @param       String  $displayname    login name
+        * @return      Object  SQL resource
+        * 
+        */
+       public function readFromName($displayname)
+       {
+               return $this->read('mname='.DB::quoteValue($displayname));
+       }
+       
+       /**
+        * Member::readFromID()
+        * Read member table in database
+        * 
+        * @param       Integer $id     id for member
+        * @return      Object  SQL resource
+        * 
+        */
+       public function readFromID($id)
+       {
+               return $this->read("mnumber=" . intval($id));
+       }
+       
+       /**
+        * Member::hash()
+        * hash the target string
+        * 
+        * @param       String  $string target string
+        * @return      Void    hashed string
+        */
+       public function hash($string)
+       {
+               switch ( $this->algorism )
+               {
+                       case 'md5':
+                       default:
+                               $string = md5($string);
+               }
+               return $string;
+       }
+       
+       /**
+        * Member::set_cookie_salt()
+        * 
+        * @param       integer $key    secureCookieKey value
+        * @return      void
+        * 
+        */
+       private function set_cookie_salt($key = 0)
+       {
+               if ( !$key )
+               {
+                       $key = 24;
+               }
+               
+               switch( $key )
+               {
+                       case 8:
+                               $this->cookie_salt = preg_replace('/\.[0-9]+\.[0-9]+\.[0-9]+$/', '', serverVar('REMOTE_ADDR'));
+                               break;
+                       case 16:
+                               $this->cookie_salt = preg_replace('/\.[0-9]+\.[0-9]+$/', '', serverVar('REMOTE_ADDR'));
+                               break;
+                       case 24:
+                               $this->cookie_salt = preg_replace('/\.[0-9]+$/', '', serverVar('REMOTE_ADDR'));
+                               break;
+                       case 32:
+                               $this->cookie_salt = serverVar('REMOTE_ADDR');
+                               break;
+                       default:
+                               $this->cookie_salt = 'none';
+               }
+               return;
+       }
+       
+       /**
+        * Member::login()
+        * Tries to login as a given user.
+        * Returns true when succeeded, returns false when failed
+        * 3.40 adds CustomLogin event
+        * 
+        * @param       String  $login  login name for member
+        * @param       String  $password       password for member
+        * @param       Integer $shared whether the user agent is shared or not
+        * 
+        */
+       public function login($login, $password, $shared=1)
+       {
+               global $CONF, $errormessage, $manager;
+               
+               /* TODO: validation for $login, $password, $shared */
+               if ( $login == '' || $password == '' )
+               {
+                       return 0;
+               }
+               /* limiting the length of password to avoid hash collision */
+               $password=i18n::substr($password, 0, 40);
+               
+               /* 
+                * generate cookie salt from secure cookie key settings
+               * (either 'none', 0, 8, 16, 24, or 32)
+               */
+               if ( !$this->cookie_salt )
+               {
+                       $salt = 0;
+                       if ( array_key_exists('secureCookieKey', $CONF) )
+                       {
+                               $salt = $CONF['secureCookieKey'];
+                       }
+                       $this->set_cookie_salt($salt);
+               }
+               
+               $success = 0;
+               $allowlocal = 1;
+               $data = array('login' => &$login, 'password'=>&$password, 'success'=>&$success, 'allowlocal'=>&$allowlocal);
+               $manager->notify('CustomLogin', $data);
+               
+               $this->loggedin = 0;
+               if ( $success )
+               {
+                       $this->loggedin = ( $this->readFromName($login) );
+               }
+               elseif ( $allowlocal )
+               {
+                       $this->loggedin = ( $this->readFromName($login) && $this->checkPassword($password) );
+               }
+               
+               /* login failed */
+               if ( !$this->loggedin )
+               {
+                       $trimlogin = trim($login);
+                       if ( empty($trimlogin) )
+                       {
+                               $errormessage = "Please enter a username.";
+                       }
+                       else
+                       {
+                               $errormessage = 'Login failed for ' . $login;
+                       }
+                       $data = array('username' => $login);
+                       $manager->notify('LoginFailed', $data);
+                       ActionLog::add(INFO, $errormessage);
+               }
+               /* login success */
+               else
+               {
+                       /* For lower compatibility */
+                       if ( strlen($this->password) === 32 )
+                       {
+                               $this->password = $this->hash($password);
+                       }
+                       
+                       $this->newCookieKey();
+                       $this->setCookies($shared);
+                       
+                       if ( $this->cookie_salt !== 'none' )
+                       {
+                               /* secure cookie key */
+                               $this->setCookieKey($this->hash($this->getCookieKey() . $this->cookie_salt));
+                               $this->write();
+                       }
+                       
+                       $errormessage = '';
+                       $data = array('member' => &$this, 'username' => $login);
+                       $manager->notify('LoginSuccess', $data);
+                       ActionLog::add(INFO, "Login successful for $login (sharedpc=$shared)");
+               }
+               
+               return $this->loggedin;
+       }
+       
+       /**
+        * Member::cookielogin()
+        * Login using cookie key
+        * 
+        * @param       String  $login  not used
+        * @param       String  $cookiekey      not used
+        * @return      Boolean login or not
+        */
+       public function cookielogin($login='', $cookiekey='')
+       {
+               global $CONF, $manager;
+               
+               if ( !headers_sent() && cookieVar("{$CONF['CookiePrefix']}user") )
+               {
+                       /* Cookie Authentication */
+                       $ck = cookieVar("{$CONF['CookiePrefix']}loginkey");
+                               
+                       /* TODO: validation for each cookie values */
+                               
+                       /* limiting the length of password to avoid hash collision */
+                       $ck = i18n::substr($ck,0,32);
+                               
+                       /* 
+                        * generate cookie salt from secure cookie key settings
+                       * (either 'none', 0, 8, 16, 24, or 32)
+                       */
+                       if ( !$this->cookie_salt )
+                       {
+                               $salt = 0;
+                               if ( array_key_exists('secureCookieKey', $CONF) )
+                               {
+                                       $salt = $CONF['secureCookieKey'];
+                               }
+                               $this->set_cookie_salt($salt);
+                       }
+                       
+                       if ( $this->cookie_salt !== 'none' )
+                       {
+                               $ck = $this->hash($ck . $this->cookie_salt);
+                       }
+                       $this->loggedin = ( $this->readFromName(cookieVar("{$CONF['CookiePrefix']}user")) && $this->checkCookieKey($ck) );
+                       unset($ck);
+                               
+                       /* renew cookies when not on a shared computer */
+                       if ( $this->loggedin && (cookieVar($CONF['CookiePrefix'] . 'sharedpc') != 1) )
+                       {
+                               $this->setCookieKey(cookieVar("{$CONF['CookiePrefix']}loginkey"));
+                               $this->setCookies();
+                       }
+               }
+               return $this->loggedin;
+       }
+       
+       /**
+        * Member::logout()
+        * logout and expire cookie
+        * 
+        * @param       Void
+        * @return      Void
+        */
+       public function logout()
+       {
+               global $CONF, $manager;
+               
+               if ( !headers_sent() && cookieVar("{$CONF['CookiePrefix']}user") )
+               {
+                       /* remove cookies on logout */
+                       setcookie("{$CONF['CookiePrefix']}user", '', (time() - 2592000), $CONF['CookiePath'], $CONF['CookieDomain'], $CONF['CookieSecure']);
+                       setcookie("{$CONF['CookiePrefix']}loginkey", '', (time() - 2592000), $CONF['CookiePath'], $CONF['CookieDomain'], $CONF['CookieSecure']);
+                       $data = array('username' => cookieVar("{$CONF['CookiePrefix']}user"));
+                       $manager->notify('Logout', $data);
+               }
+               
+               $this->loggedin = 0;
+               return;
+       }
+       
+       /**
+        * Member::isLoggedIn()
+        * return member is loggedin or not
+        * 
+        * @param       Void
+        * @return      Void
+        */
+       public function isLoggedIn()
+       {
+               return $this->loggedin;
+       }
+       
+       /**
+        * MEMBER:read()
+        * Read member information from the database
+        * 
+        * @param       String  $where  where statement
+        * @return      Resource        SQL resource
+        * 
+        */
+       public function read($where)
+       {
+               // read info
+               $query =  'SELECT * FROM '.sql_table('member') . ' WHERE ' . $where;
+               
+               $row = DB::getRow($query);
+               
+               $this->setRealName($row['mrealname']);
+               $this->setEmail($row['memail']);
+               $this->password = $row['mpassword'];
+               $this->setCookieKey($row['mcookiekey']);
+               $this->setURL($row['murl']);
+               $this->setDisplayName($row['mname']);
+               $this->setAdmin($row['madmin']);
+               $this->id = $row['mnumber'];
+               $this->setCanLogin($row['mcanlogin']);
+               $this->setNotes($row['mnotes']);
+               $this->setLocale($row['mlocale']);
+               $this->setAutosave($row['mautosave']);
+               $this->setAdminSkin($row['madminskin']);
+               $this->setBookmarklet($row['mbkmklt']);
+               
+               return $row ? TRUE : FALSE;
+       }
+       
+       /**
+        * Member::isBlogAdmin()
+        * Returns true if member is an admin for the given blog
+        * (returns false if not a team member)
+        * 
+        * @param       Integer $blogid weblog id
+        * @return      Integer weblog admin or not
+        * 
+        */
+       public function isBlogAdmin($blogid)
+       {
+               $query = 'SELECT tadmin FROM '.sql_table('team').' WHERE'
+               . ' tblog=' . intval($blogid)
+               . ' and tmember='. $this->getID();
+               $res = DB::getValue($query);
+               if ( $res )
+                       return ($res == 1);
+               else
+                       return 0;
+       }
+       
+       /**
+        * Member::blogAdminRights()
+        * 
+        * @param       integer $blogid ID of target weblog
+        * @return      boolean whether to have admin rights to the weblog or not
+        * 
+        */
+       public function blogAdminRights($blogid)
+       {
+               return ($this->isAdmin() || $this->isBlogAdmin($blogid));
+       }
+       
+       /**
+        * Member::teamRights()
+        * 
+        * @param       integer $blogid ID of target weblog
+        * @return      boolean whether to have admin right to the weblog or not
+        * 
+        */
+       public function teamRights($blogid)
+       {
+               return ($this->isAdmin() || $this->isTeamMember($blogid));
+       }
+       
+       /**
+        * Member::isTeamMember()
+        * Returns true if this member is a team member of the given blog
+        * 
+        * @param       integer $blogid ID of target weblog
+        * @return      boolean whether to join the weblog or not
+        * 
+        */
+       public function isTeamMember($blogid)
+       {
+               $query = 'SELECT * FROM '.sql_table('team').' WHERE'
+                          . ' tblog=' . intval($blogid)
+                          . ' and tmember='. $this->getID();
+               $res = DB::getResult($query);
+               return ($res->rowCount() != 0);
+       }
+       
+       /**
+        * Member::canAddItem()
+        * 
+        * @param       integer $catid  ID of target category
+        * @return      boolean whether to be able to add items to the category or not
+        * 
+        */
+       public function canAddItem($catid)
+       {
+               global $manager;
+               
+               // if this is a 'newcat' style newcat
+               // no blog admin of destination blog -> NOK
+               // blog admin of destination blog -> OK
+               if ( i18n::strpos($catid,'newcat') === 0 )
+               {
+                       // get blogid
+                       list($blogid) = sscanf($catid,"newcat-%d");
+                       return $this->blogAdminRights($blogid);
+               }
+               
+               // category does not exist -> NOK
+               if ( !$manager->existsCategory($catid) )
+               {
+                       return 0;
+               }
+               
+               $blogid = getBlogIDFromCatID($catid);
+               
+               // no team rights for blog -> NOK
+               if (!$this->teamRights($blogid))
+               {
+                       return 0;
+               }
+               
+               // all other cases: OK
+               return 1;
+       }
+       
+       /**
+        * Member::canAlterComment()
+        * Returns true if this member can edit/delete a commentitem. This can be in the
+        * following cases:
+        *        - member is a super-admin
+        *   - member is the author of the comment
+        *   - member is admin of the blog associated with the comment
+        *   - member is author of the item associated with the comment
+        * 
+        * @param       integer $commentid      ID of target comment
+        * @return      boolean delete/edit the comment or not
+        * 
+        */
+       public function canAlterComment($commentid)
+       {
+               if ( $this->isAdmin() )
+               {
+                       return 1;
+               }
+               
+               $query =  'SELECT citem as itemid, iblog as blogid, cmember as cauthor, iauthor'
+                          . ' FROM '.sql_table('comment') .', '.sql_table('item').', '.sql_table('blog')
+                          . ' WHERE citem=inumber and iblog=bnumber and cnumber=' . intval($commentid);
+               $res = DB::getRow($query);
+               
+               return ($res['cauthor'] == $this->getID()) or $this->isBlogAdmin($res['blogid']) or ($res['iauthor'] == $this->getID());
+       }
+       
+       /**
+        * Member::canAlterItem()
+        * Returns true if this member can edit/delete an item. This is true in the following
+        * cases: - member is a super-admin
+        *             - member is the author of the item
+        *        - member is admin of the the associated blog
+        * 
+        * @param       integer $itemid ID of target item
+        * @return      boolean delete/edit the item or not
+        * 
+        */
+       public function canAlterItem($itemid)
+       {
+               if ($this->isAdmin()) return 1;
+               
+               $query =  'SELECT iblog, iauthor FROM '.sql_table('item').' WHERE inumber=' . intval($itemid);
+               $res = DB::getRow($query);
+               return ($res['iauthor'] == $this->getID()) or $this->isBlogAdmin($res['iblog']);
+       }
+       
+       /**
+        * Member::canBeDeleted()
+        * Return true if member can be deleted. This means that there are no items posted by the member left
+        * 
+        * @param       void
+        * @return      boolean whether there is no items or exists
+        * 
+        */
+       public function canBeDeleted()
+       {
+               $res = DB::getResult('SELECT * FROM '.sql_table('item').' WHERE iauthor=' . $this->getID());
+               return ( $res->rowCount() == 0 );
+       }
+       
+       /**
+        * Member::canUpdateItem()
+        * returns true if this member can move/update an item to a given category,
+        * false if not (see comments fot the tests that are executed)
+        * 
+        * @param       integer $itemid
+        * @param       string  $newcat (can also be of form 'newcat-x' with x=blogid)
+        * @return      boolean whether being able to update the item or not
+        * 
+        */
+       public function canUpdateItem($itemid, $newcat)
+       {
+               global $manager;
+               
+               // item does not exists -> NOK
+               if ( !$manager->existsItem($itemid,1,1) )
+               {
+                       return 0;
+               }
+               
+               // cannot alter item -> NOK
+               if (!$this->canAlterItem($itemid))
+               {
+                       return 0;
+               }
+               
+               // if this is a 'newcat' style newcat
+               // no blog admin of destination blog -> NOK
+               // blog admin of destination blog -> OK
+               if ( i18n::strpos($newcat, 'newcat') === 0 )
+               {
+                       // get blogid
+                       list($blogid) = sscanf($newcat, 'newcat-%d');
+                       return $this->blogAdminRights($blogid);
+               }
+               
+               // category does not exist -> NOK
+               if (!$manager->existsCategory($newcat))
+               {
+                       return 0;
+               }
+               
+               // get item
+               $item =& $manager->getItem($itemid,1,1);
+               
+               // old catid = new catid -> OK
+               if ($item['catid'] == $newcat)
+               {
+                       return 1;
+               }
+               
+               // not a valid category -> NOK
+               $validCat = DB::getValue('SELECT COUNT(*) AS result FROM '.sql_table('category').' WHERE catid='.intval($newcat));
+               if ( !$validCat )
+               {
+                       return 0;
+               }
+               
+               // get destination blog
+               $item =& $manager->getItem($itemid, 1, 1);
+               $source_blogid = $item['blogid'];
+               $dest_blogid = getBlogIDFromCatID($newcat);
+               
+               // not a team member of destination blog -> NOK
+               if ( !$this->teamRights($dest_blogid) )
+               {
+                       return 0;
+               }
+               
+               // if member is author of item -> OK
+               if ( $item['authorid'] == $this->getID() )
+               {
+                       return 1;
+               }
+               
+               // if member has admin rights on both blogs: OK
+               if ( ($this->blogAdminRights($dest_blogid)) && ($this->blogAdminRights($source_blogid)) )
+               {
+                       return 1;
+               }
+               
+               // all other cases: NOK
+               return 0;
+       }
+       
+       /**
+        * Member::setCookies()
+        * Sets the cookies for the member
+        * 
+        * @param boolean       $shared set this to 1 when using a shared computer. Cookies will expire
+        *                              at the end of the session in this case.
+        * @return      void
+        * 
+        */
+       public function setCookies($shared = 0)
+       {
+               global $CONF;
+               
+               if ( $CONF['SessionCookie'] || $shared )
+               {
+                       $lifetime = 0;
+               }
+               else
+               {
+                       $lifetime = time()+2592000;
+               }
+               
+               setcookie($CONF['CookiePrefix'] . 'user', $this->getDisplayName(), $lifetime, $CONF['CookiePath'], $CONF['CookieDomain'], $CONF['CookieSecure']);
+               setcookie($CONF['CookiePrefix'] . 'loginkey', $this->getCookieKey(), $lifetime, $CONF['CookiePath'], $CONF['CookieDomain'], $CONF['CookieSecure']);
+               
+               // make sure cookies on shared pcs don't get renewed
+               if ( $shared )
+               {
+                       setcookie($CONF['CookiePrefix'] .'sharedpc', '1',$lifetime,$CONF['CookiePath'],$CONF['CookieDomain'],$CONF['CookieSecure']);
+               }
+               return;
+       }
+       
+       /**
+        * Member::sendActivationLink()
+        * Send activation mail
+        * 
+        * @param       string  $type   activation type
+        * @param       string  $extra  extra info
+        * @return      void
+        */
+       public function sendActivationLink($type, $extra='')
+       {
+               global $CONF;
+               
+               if ( !isset($CONF['ActivationDays']) )
+               {
+                       $CONF['ActivationDays'] = 2;
+               }
+               
+               // generate key and URL
+               $key = $this->generateActivationEntry($type, $extra);
+               $url = $CONF['AdminURL'] . 'index.php?action=activate&key=' . $key;
+               
+               // choose text to use in mail
+               switch ( $type )
+               {
+                       case 'register':
+                               $message = _ACTIVATE_REGISTER_MAIL;
+                               $subject = _ACTIVATE_REGISTER_MAILTITLE;
+                               break;
+                       case 'forgot':
+                               $message = _ACTIVATE_FORGOT_MAIL;
+                               $subject = _ACTIVATE_FORGOT_MAILTITLE;
+                               break;
+                       case 'addresschange':
+                               $message = _ACTIVATE_CHANGE_MAIL;
+                               $subject = _ACTIVATE_CHANGE_MAILTITLE;
+                               break;
+                       default;
+               }
+               
+               // fill out variables in text
+               $aVars = array(
+                       'siteName' => $CONF['SiteName'],
+                       'siteUrl' => $CONF['IndexURL'],
+                       'memberName' => $this->getDisplayName(),
+                       'activationUrl' => $url,
+                       'activationDays' => $CONF['ActivationDays']
+               );
+               
+               $message = Template::fill($message, $aVars);
+               $subject = Template::fill($subject, $aVars);
+               
+               // send mail
+               NOTIFICATION::mail($this->getEmail(), $subject ,$message, $CONF['AdminEmail'], i18n::get_current_charset());
+               
+               ActionLog::add(INFO, _ACTIONLOG_ACTIVATIONLINK . ' (' . $this->getDisplayName() . ' / type: ' . $type . ')');
+               return;
+       }
+       
+       /**
+        * Member::getAdminBlogs()
+        * Returns an array of all blogids for which member has admin rights
+        * 
+        * @param       void
+        * @return      array   weblog IDs in which this member has admin rights
+        * 
+        */
+       public function getAdminBlogs()
+       {
+               $blogs = array();
+               
+               if ($this->isAdmin())
+               {
+                       $query = 'SELECT bnumber as blogid from '.sql_table('blog');
+               }
+               else
+               {
+                       $query = 'SELECT tblog as blogid from '.sql_table('team').' where tadmin=1 and tmember=' . $this->getID();
+               }
+               
+               $res = DB::getResult($query);
+               if ( $res->rowCount() > 0 )
+               {
+                       foreach ( $res as $row )
+                       {
+                               array_push($blogs, $row['blogid']);
+                       }
+               }
+               return $blogs;
+       }
+       
+       /**
+        * Member::getTeamBlogs()
+        * Returns an array of all blogids for which member has team rights
+        * 
+        * @param       boolean $incAdmin       whether checking weblog admin rights or not
+        * @return      array   weblog IDs in which this member join
+        * 
+        */
+       public function getTeamBlogs($incAdmin = 1)
+       {
+               $incAdmin = intval($incAdmin);
+               $blogs = array();
+               
+               if ( $this->isAdmin() && $incAdmin )
+               {
+                       $query = 'SELECT bnumber as blogid from '.sql_table('blog');
+               }
+               else
+               {
+                       $query = 'SELECT tblog as blogid from '.sql_table('team').' where tmember=' . $this->getID();
+               }
+               
+               $res = DB::getResult($query);
+               if ( $res->rowCount() > 0 )
+               {
+                       foreach ( $res as $row )
+                       {
+                               array_push($blogs, $row['blogid']);
+                       }
+               }
+               return $blogs;
+       }
+       
+       /**
+        * Member::getNotifyFromMailAddress()
+        * 
+        * Returns an email address from which notification of commenting/karma voting can
+        * be sent. A suggestion can be given for when the member is not logged in
+        * 
+        * @param       String  $suggest
+        * @return      String  mail address or suggestion
+        */
+       public function getNotifyFromMailAddress($suggest = "")
+       {
+               global $CONF;
+               if ( $this->isLoggedIn() )
+               {
+                       return $this->getDisplayName() . " <" . $this->getEmail() . ">";
+               }
+               else if ( NOTIFICATION::address_validation($suggest) )
+               {
+                       return $suggest;
+               }
+               return $CONF['AdminEmail'];
+       }
+       
+       /**
+        * Member::write()
+        * Write data to database
+        * 
+        * @param       void
+        * @return      void
+        * 
+        */
+       public function write()
+       {
+               $query =  'UPDATE '.sql_table('member')
+                       . ' SET mname=' . DB::quoteValue($this->displayname) . ', '
+                          . 'mrealname='. DB::quoteValue($this->realname) . ', '
+                          . 'mpassword='. DB::quoteValue($this->password) . ', '
+                          . 'mcookiekey='. DB::quoteValue($this->cookiekey) . ', '
+                          . 'murl=' . DB::quoteValue($this->url) . ', '
+                          . 'memail=' . DB::quoteValue($this->email) . ', '
+                          . 'madmin=' . intval($this->admin) . ', '
+                          . 'mnotes=' . DB::quoteValue($this->notes) . ', '
+                          . 'mcanlogin=' . intval($this->canlogin) . ', '
+                          . 'mlocale=' . DB::quoteValue($this->locale) . ', '
+                          . 'madminskin=' . DB::quoteValue($this->adminskin) . ', '
+                          . 'mbkmklt=' . DB::quoteValue($this->bookmarklet) . ', '
+                          . 'mautosave=' . intval($this->autosave) . ' '
+                       . 'WHERE mnumber=' . intval($this->id);
+               DB::execute($query);
+               return;
+       }
+       
+       public function checkCookieKey($key)
+       {
+               return ( ($key != '') && ( $key == $this->getCookieKey() ) );
+       }
+       
+       public function checkPassword($pw)
+       {
+               /* for lower compatibility (md5) */
+               if ( strlen($this->password) === 32 )
+               {
+                       return (md5($pw) == $this->password);
+               }
+               return ($this->hash($pw) == $this->password);
+       }
+       
+       public function getRealName()
+       {
+               return $this->realname;
+       }
+       
+       public function setRealName($name)
+       {
+               $this->realname = $name;
+       }
+       
+       public function getEmail()
+       {
+               return $this->email;
+       }
+       
+       public function setEmail($email)
+       {
+               $this->email = $email;
+       }
+       
+       public function getPassword()
+       {
+               return $this->password;
+       }
+       
+       public function setPassword($pwd)
+       {
+               $this->password = $this->hash($pwd);
+       }
+       
+       public function getCookieKey()
+       {
+               return $this->cookiekey;
+       }
+       
+       /**
+        * Member::newCookieKey()
+        * Generate new cookiekey, save it, and return it
+        * 
+        * @param       void
+        * @return      void
+        * 
+        */
+       public function newCookieKey()
+       {
+               mt_srand( (double) microtime() * 1000000);
+               $this->cookiekey = $this->hash(uniqid(mt_rand()));
+               $this->write();
+               return $this->cookiekey;
+       }
+       
+       public function setCookieKey($val)
+       {
+               $this->cookiekey = $val;
+       }
+       
+       public function getURL()
+       {
+               return $this->url;
+       }
+       
+       public function setURL($site)
+       {
+               $this->url = $site;
+       }
+       
+       public function setAdminSkin($skin)
+       {
+               $this->adminskin = $skin;
+       }
+
+       public function setBookmarklet($skin)
+       {
+               $this->bookmarklet = $skin;
+       }
+       
+       public function getAdminSkin()
+       {
+               return $this->adminskin;
+       }
+
+       public function getBookmarklet()
+       {
+               return $this->bookmarklet;
+       }
+
+       public function getLocale()
+       {
+               return $this->locale;
+       }
+       
+       public function setLocale($locale)
+       {
+               if ( !preg_match('#^(.+)_(.+)_(.+)$#', $locale)
+                && ($locale = i18n::convert_old_language_file_name_to_locale($locale)) === FALSE )
+               {
+                       $locale = '';
+               }
+               $this->locale = $locale;
+               return;
+       }
+       
+       public function setDisplayName($nick)
+       {
+               $this->displayname = $nick;
+       }
+       
+       public function getDisplayName()
+       {
+               return $this->displayname;
+       }
+       
+       public function isAdmin()
+       {
+               return $this->admin;
+       }
+       
+       public function setAdmin($val)
+       {
+               $this->admin = $val;
+       }
+       
+       public function canLogin()
+       {
+               return $this->canlogin;
+       }
+       
+       public function setCanLogin($val)
+       {
+               $this->canlogin = $val;
+       }
+       
+       public function getNotes()
+       {
+               return $this->notes;
+       }
+       
+       public function setNotes($val)
+       {
+               $this->notes = $val;
+       }
+       
+       public function getAutosave()
+       {
+               return $this->autosave;
+       }
+       
+       public function setAutosave($val)
+       {
+               $this->autosave = $val;
+               return;
+       }
+       
+       /**
+        * Member::getID()
+        * 
+        * @param       void
+        * @return      integer id of this member object
+        * 
+        */
+       public function getID()
+       {
+               return $this->id;
+       }
+       
+       /**
+        * Member::exists()
+        * Returns true if there is a member with the given login name
+        * 
+        * @static
+        * @param       string  $name   target name
+        * @return      boolean whether target name exists or not
+        */
+       public static function exists($name)
+       {
+               $r = DB::getResult('SELECT * FROM ' . sql_table('member') . ' WHERE mname=' . DB::quoteValue($name));
+               return ( $r->rowCount() != 0 );
+       }
+       
+       /**
+        * Member::existsID()
+        * Returns true if there is a member with the given ID
+        * 
+        * @static
+        * @param       integer $id     target id
+        * @return      boolean whether target id exists or not
+        * 
+        */
+       public static function existsID($id)
+       {
+               $r = DB::getResult('SELECT * FROM ' . sql_table('member') . ' WHERE mnumber=' . intval($id));
+               return ( $r->rowCount() != 0 );
+       }
+       
+       /**
+        * Member::isNameProtected()
+        *  Checks if a username is protected.
+        *  If so, it can not be used on anonymous comments
+        * 
+        * @param       string  $name   target name
+        * @return      boolean whether the name exists or not
+        * 
+        */
+       public function isNameProtected($name)
+       {
+               // extract name
+               $name = strip_tags($name);
+               $name = trim($name);
+               return self::exists($name);
+       }
+       
+       /**
+        * Member::create()
+        * Adds a new member
+        * 
+        * @static
+        * @param       String  $name
+        * @param       String  $realname
+        * @param       String  $password
+        * @param       String  $email
+        * @param       String  $url
+        * @param       String  $admin
+        * @param       String  $canlogin
+        * @param       String  $notes
+        * @return      String  1 if success, others if fail
+        */
+       static public function create($name, $realname, $password, $email, $url, $admin, $canlogin, $notes)
+       {
+               if ( !NOTIFICATION::address_validation($email) )
+               {
+                       return _ERROR_BADMAILADDRESS;
+               }
+               
+               /* TODO: this method should be in MEMBER class, not globalfunctions */
+               if ( !isValidDisplayName($name) )
+               {
+                       return _ERROR_BADNAME;
+               }
+               
+               if ( self::exists($name) )
+               {
+                       return _ERROR_NICKNAMEINUSE;
+               }
+               
+               if ( !$realname )
+               {
+                       return _ERROR_REALNAMEMISSING;
+               }
+               
+               /* TODO: check the number of characters */
+               if ( !$password )
+               {
+                       return _ERROR_PASSWORDMISSING;
+               }
+               
+               /* 
+                *  begin if: sometimes user didn't prefix the URL with http:// or https://,
+                *  this cause a malformed URL. Let's fix it.
+                */
+               
+               if ( !preg_match('#^https?://#', $url) )
+               {
+                       $url = 'http://' . $url;
+               }
+               
+               $name           = DB::quoteValue($name);
+               $realname       = DB::quoteValue($realname);
+               /* NOTE: hashed password is automatically updated if the length is 32 bytes when logging in */
+               $password       = DB::quoteValue(md5($password));
+               $email          = DB::quoteValue($email);
+               $url            = DB::quoteValue($url);
+               $admin          = (integer) $admin;
+               $canlogin       = (integer) $canlogin;
+               $notes          = DB::quoteValue($notes);
+               
+               $query = "INSERT INTO %s"
+                      . " (MNAME,MREALNAME,MPASSWORD,MEMAIL,MURL, MADMIN, MCANLOGIN, MNOTES)"
+                      . " VALUES (%s, %s, %s, %s, %s, %d, %d, %s)";
+               $query = sprintf($query, sql_table('member'), $name, $realname, $password, $email, $url, $admin, $canlogin, $notes);
+               DB::execute($query);
+               
+               ActionLog::add(INFO, _ACTIONLOG_NEWMEMBER . ' ' . $name);
+               
+               return 1;
+       }
+       
+       /**
+        * Member::getActivationInfo()
+        * Returns activation info for a certain key (an object with properties vkey, vmember, ...)
+        * 
+        * @static
+        * @param       string  $key    activation key
+        * @return      mixed   return 0 if failed, else return activation table object
+        * 
+        */
+       public static function getActivationInfo($key)
+       {
+               $query = 'SELECT * FROM ' . sql_table('activation') . ' WHERE vkey=' . DB::quoteValue($key);
+               $res = DB::getResult($query);
+               
+               if ( !$res || ($res->rowCount() == 0) )
+               {
+                       return 0;
+               }
+               return $res->fetch();
+       }
+       
+       /**
+        * Member::generateActivationEntry()
+        * Creates an account activation key
+        * addresschange -> old email address
+        * 
+        * @param       string  $type   one of the following values (determines what to do when activation expires)
+        *                              'register'      (new member registration)
+        *                              'forgot'        (forgotton password)
+        *                              'addresschange' (member address has changed)
+        * @param       string  $extra  extra info (needed when validation link expires)
+        * @return      string  activation key
+        */
+       public function generateActivationEntry($type, $extra = '')
+       {
+               // clean up old entries
+               $this->cleanupActivationTable();
+               
+               // kill any existing entries for the current member (delete is ok)
+               // (only one outstanding activation key can be present for a member)
+               DB::execute('DELETE FROM ' . sql_table('activation') . ' WHERE vmember=' . intval($this->getID()));
+               
+               // indicates if the member can log in while the link is active
+               $canLoginWhileActive = false;
+               switch ( $type )
+               {
+                       case 'forgot':
+                               $canLoginWhileActive = true;
+                               break;
+                       case 'register':
+                               break;
+                       case 'addresschange':
+                               $extra = $extra . '/' . ( $this->canLogin() ? '1' : '0' );
+                               break;
+               }
+               
+               $ok = false;
+               while ( !$ok )
+               {
+                       // generate a random key
+                       srand((double)microtime()*1000000);
+                       $key = $this->hash(uniqid(rand(), true));
+                       
+                       // attempt to add entry in database
+                       // add in database as non-active
+                       $query = 'INSERT INTO %s (vkey, vtime, vmember, vtype, vextra) VALUES (%s, %s, %d, %s, %s)';
+                       $query = sprintf($query
+                               , sql_table('activation')
+                               , DB::quoteValue($key)
+                               , DB::formatDateTime()
+                               , intval($this->getID())
+                               , DB::quoteValue($type)
+                               , DB::quoteValue($extra)
+                       );
+                       if ( DB::execute($query) !== FALSE )
+                               $ok = true;
+               }
+               
+               // mark member as not allowed to log in
+               if ( !$canLoginWhileActive )
+               {
+                       $this->setCanLogin(0);
+                       $this->write();
+               }
+               
+               // return the key
+               return $key;
+       }
+       
+       /**
+        * Member::activate()
+        * Inidicates that an activation link has been clicked and any forms displayed
+        * there have been successfully filled out.
+        * 
+        * @param       string  $key    activation key
+        * @return      boolean
+        * 
+        */
+       public function activate($key)
+       {
+               // get activate info
+               $info = self::getActivationInfo($key);
+               
+               // no active key
+               if ( !$info )
+               {
+                       return false;
+               }
+               
+               switch ( $info['vtype'] )
+               {
+                       case 'forgot':
+                               // nothing to do
+                               break;
+                       case 'register':
+                               // set canlogin value
+                               global $CONF;
+                               DB::execute('UPDATE ' . sql_table('member') . ' SET mcanlogin=' . intval($CONF['NewMemberCanLogon']). ' WHERE mnumber=' . intval($info['vmember']));
+                               break;
+                       case 'addresschange':
+                               // reset old 'canlogin' value
+                               list($oldEmail, $oldCanLogin) = preg_split('#/#', $info['vextra']);
+                               DB::execute('UPDATE ' . sql_table('member') . ' SET mcanlogin=' . intval($oldCanLogin). ' WHERE mnumber=' . intval($info['vmember']));
+                               break;
+               }
+               
+               // delete from activation table
+               DB::execute('DELETE FROM ' . sql_table('activation') . ' WHERE vkey=' . DB::quoteValue($key));
+               
+               // success!
+               return true;
+       }
+       
+       /**
+        * Member::cleanupActivationTable()
+        * Cleans up entries in the activation table. All entries older than 2 days are removed.
+        * (static)
+        * 
+        * @param       void
+        * @return      void
+        */
+       public function cleanupActivationTable()
+       {
+               $actdays = 2;
+               if ( isset($CONF['ActivationDays']) && intval($CONF['ActivationDays']) > 0 )
+               {
+                       $actdays = intval($CONF['ActivationDays']);
+               }
+               else
+               {
+                       $CONF['ActivationDays'] = 2;
+               }
+               $boundary = time() - (60 * 60 * 24 * $actdays);
+               
+               // 1. walk over all entries, and see if special actions need to be performed
+               $query = sprintf('SELECT * FROM %s WHERE vtime < %s', sql_table('activation'), DB::formatDateTime($boundary));
+               $res = DB::getResult($query);
+               
+               foreach ( $res as $row )
+               {
+                       switch ( $row['vtype'] )
+                       {
+                               case 'register':
+                                       // delete all information about this site member. registration is undone because there was
+                                       // no timely activation
+                                       include_once($DIR_LIBS . 'ADMIN.php');
+                                       Admin::deleteOneMember(intval($row['vmember']));
+                                       break;
+                               case 'addresschange':
+                                       // revert the e-mail address of the member back to old address
+                                       list($oldEmail, $oldCanLogin) = preg_split('#/#', $row['vextra']);
+                                       DB::execute('UPDATE ' . sql_table('member') . ' SET mcanlogin=' . intval($oldCanLogin). ', memail=' . DB::quoteValue($oldEmail). ' WHERE mnumber=' . intval($row['vmember']));
+                                       break;
+                               case 'forgot':
+                                       // delete the activation link and ignore. member can request a new password using the
+                                       // forgot password link
+                                       break;
+                       }
+               }
+               
+               // 2. delete activation entries for real
+               $query = sprintf('DELETE FROM %s WHERE vtime < %s', sql_table('activation'), DB::formatDateTime($boundary));
+               DB::execute($query);
+               return;
+       }
+       
+       /**
+        * Member::$language
+        * 
+        * @obsolete
+        * @param       void
+        * @return      void
+        * 
+        */
+       public $language = '';
+       /**
+        * Member::getLanguage()
+        * 
+        * @obsolete
+        * @param       void
+        * @return      void
+        * 
+        */
+       public function getLanguage()
+       {
+               if ( ($language = i18n::convert_locale_to_old_language_file_name($this->locale)) === FALSE )
+               {
+                       $language = '';
+               }
+               return $language;
+       }
+}
+>>>>>>> skinnable-master
index 22fe7e1..e7f3d38 100644 (file)
@@ -1,3 +1,4 @@
+<<<<<<< HEAD
 <?php\r
 /*\r
  * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)\r
@@ -397,3 +398,404 @@ class Notification
                return;\r
        }\r
 }\r
+=======
+<?php
+/*
+ * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)
+ * Copyright (C) 2002-2009 The Nucleus Group
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * (see nucleus/documentation/index.html#license for more info)
+ */
+/**
+ * Class used to represent a collection of e-mail addresses, to which a
+ * message can be sent (e.g. comment or karma vote notification).
+ *
+ * @license http://nucleuscms.org/license.txt GNU General Public License
+ * @copyright Copyright (C) 2002-2009 The Nucleus Group
+ * @version $Id: NOTIFICATION.php 1836 2012-05-12 10:38:31Z sakamocchi $
+ */
+class Notification
+{
+       static private $charset;
+       static private $scheme = 'B';
+       
+       /**
+        * NOTIFICATION::address_validation()
+        * Validating the string as address
+        * 
+        * FIXME: this is just migrated from globalfunctions.php
+        *  we should confirm this regular expression refering to RFC 5322
+        * 
+        * @link        http://www.ietf.org/rfc/rfc5322.txt
+        * @see         3.4. Address Specification
+        * 
+        * @static
+        * @param       String  $address        Address
+        * @return      Boolean valid or not
+        */
+       static public function address_validation($address)
+       {
+               return (boolean) preg_match('#^(?!\\.)(?:\\.?[-a-zA-Z0-9!\\#$%&\'*+/=?^_`{|}~]+)+@(?!\\.)(?:\\.?(?!-)[-a-zA-Z0-9]+(?<!-)){2,}$#', $address);
+       }
+       
+       /**
+        * NOTIFICATION::get_mail_footer()
+        * Return mail footer with Nucleus CMS singnature
+        * 
+        * @static
+        * @param       void
+        * @return      String  Message body with 
+        */
+       static public function get_mail_footer()
+       {
+               $message  = "\n";
+               $message .= "\n";
+               $message .= "-----------------------------\n";
+               $message .=  "   Powered by Nucleus CMS\n";
+               $message .=  "(http://www.nucleuscms.org/)\n";
+               return $message;
+       }
+       
+       /**
+        * NOTIFICATION::mail
+        * Send mails with headers including 7bit-encoded multibyte string
+        * 
+        * @static
+        * @param       string  $to             receivers including singlebyte and multibyte strings, based on RFC 5322
+        * @param       string  $subject        subject including singlebyte and multibyte strings
+        * @param       string  $message        message including singlebyte and multibyte strings
+        * @param       string  $from           senders including singlebyte and multibyte strings, based on RFC 5322
+        * @param       string(B/Q)     $scheme 7bit-encoder scheme based on RFC 2047
+        * @return      boolean accepted delivery or not
+        */
+       static public function mail($to, $subject, $message, $from, $charset, $scheme='B')
+       {
+               self::$charset = $charset;
+               self::$scheme = $scheme;
+               
+               $to = self::mailbox_list_encoder($to);
+               $subject = self::seven_bit_characters_encoder($subject);
+               $from = 'From: ' . self::mailbox_list_encoder($from);
+               
+               /*
+                * All of 7bit character encoding derives from ISO/IEC 646
+                * So we can decide the body's encoding bit count by this regular expression.
+                * 
+                */
+               $bitcount = '8bit';
+               if ( preg_match('#\A[\x00-\x7f]*\z#', $message) )
+               {
+                       $bitcount = '7bit';
+               }
+               
+               $header  = 'Content-Type: text/plain; charset=' . self::$charset . "; format=flowed; delsp=yes\n";
+               $header .= "Content-Transfer-Encoding: {$bitcount}\n";
+               $header .= "X-Mailer: Nucleus CMS NOTIFICATION class\n";
+               
+               return mail($to, $subject, $message, "{$from}\n{$header}");
+       }
+       
+       /**
+        * NOTIFICATION::mailbox_list_encoder
+        * Encode multi byte strings included in mailbox.
+        * The format of mailbox is based on RFC 5322, which obsoletes RFC 2822
+        * 
+        * @link        http://www.ietf.org/rfc/rfc5322.txt
+        * @see         3.4. Address Specification
+        * 
+        * @static
+        * @param       string  $mailbox_list           mailbox list
+        * @return      string  encoded string  
+        * 
+        */
+       static private function mailbox_list_encoder ($mailbox_list)
+       {
+               $encoded_mailboxes = array();
+               $mailboxes = preg_split('#,#', $mailbox_list);
+               foreach ( $mailboxes as $mailbox )
+               {
+                       if ( preg_match("#^([^,]+)?<([^,]+)?@([^,]+)?>$#", $mailbox, $match) )
+                       {
+                               $display_name = self::seven_bit_characters_encoder(trim($match[1]));
+                               $local_part = trim($match[2]);
+                               $domain = trim($match[3]);
+                               $encoded_mailboxes[] = "{$display_name} <{$local_part}@{$domain}>";
+                       }
+                       else if ( preg_match("#([^,]+)?@([^,]+)?#", $mailbox) )
+                       {
+                               $encoded_mailboxes[] = $mailbox;
+                       }
+                       else
+                       {
+                               continue;
+                       }
+               }
+               if ( $encoded_mailboxes == array() )
+               {
+                       return FALSE;
+               }
+               return implode(',', $encoded_mailboxes);
+       }
+       
+       /**
+        * NOTIFICATION::seven_bit_characters_encoder
+        * Encoder into 7bit ASCII expression for Non-ASCII Text based on RFC 2047.
+        * 
+        * @link http://www.ietf.org/rfc/rfc2047.txt
+        * @see 2. Syntax of encoded-words
+        * 
+        * NOTE: RFC 2047 has a ambiguousity for dealing with 'linear-white-space'.
+        *  This causes a trouble related to line breaking between single byte and multi-byte strings.
+        *  To avoid this, single byte string is encoded as well as multi byte string here.
+        * 
+        * NOTE: RFC 2231 also defines the way to use non-ASCII characters in MIME header.
+        * http://www.ietf.org/rfc/rfc2231.txt
+        * 
+        * NOTE: iconv extension give the same functions as this in PHP5
+        * iconv_mime_encode():
+        * http://www.php.net/manual/en/function.iconv-mime-encode.php
+        * 
+        * @static
+        * @param       string  $charset        Character set encoding
+        * @param       string  $type   type of 7 bit encoding, should be 'B' or 'Q'
+        * @param       string  $string Target string with header field
+        * @return      string  encoded string
+        * 
+        */
+       static private function seven_bit_characters_encoder($string)
+       {
+               $header = chr(13) . chr(10) . chr(32) . '=?' . self::$charset . '?' . self::$scheme . '?';
+               $footer = "?=";
+               $restriction = 78 - strlen($header) - strlen($footer) ;
+               
+               $encoded_words = array();
+               for ( $i = 0; $i < i18n::strlen($string); $i++ )
+               {
+                       if ( self::$scheme == 'B' )
+                       {
+                               if ( $i == 0 )
+                               {
+                                       $letters = '';
+                               }
+                               
+                               $letter = i18n::substr($string, $i, 1);
+                               $expected_length = strlen($letters) + strlen($letter) * 4 / 3;
+                               
+                               if ( $expected_length > $restriction )
+                               {
+                                       $encoded_text = self::b_encoder($letters);
+                                       $encoded_words[] = "{$header}{$encoded_text}{$footer}";
+                                       $letters = '';
+                               }
+                               
+                               $letters .= $letter;
+                               
+                               if ( $i == i18n::strlen($string) - 1 )
+                               {
+                                       $encoded_text = self::b_encoder($letters);
+                                       $encoded_words[] = "{$header}{$encoded_text}{$footer}";
+                                       break;
+                               }
+                               continue;
+                       }
+                       else
+                       {
+                               if ( $i == 0 )
+                               {
+                                       $encoded_text = '';
+                               }
+                               
+                               $encoded_letter = self::q_encoder(i18n::substr($string, $i, 1));
+                               $expected_length = strlen($encoded_text) + strlen($encoded_letter);
+                               
+                               if ( $expected_length > $restriction )
+                               {
+                                       $encoded_words[] = "{$header}{$encoded_text}{$footer}";
+                                       $letters = '';
+                               }
+                               
+                               $encoded_text .= $encoded_letter;
+                               
+                               if ( $i == i18n::strlen($string) - 1 )
+                               {
+                                       $encoded_words[] = "{$header}{$encoded_text}{$footer}";
+                                       break;
+                               }
+                               continue;
+                       }
+               }
+               
+               return implode('', $encoded_words);
+       }
+       
+       /**
+        * NOTIFICATION::b_encoder()
+        * 
+        * B encoder according to RFC 2047.
+        * The "B" encoding is identical to the "BASE64" encoding defined by RFC 4648.
+        * 
+        * @link http://www.ietf.org/rfc/rfc4648.txt
+        * @see 6.8. Base64 Content-Transfer-Encoding
+        * 
+        * NOTE: According to RFC 4648
+        * (1)  The final quantum of encoding input is an integral multiple of 24 bits;
+        *              here, the final unit of encoded output will be an integral multiple
+        *              of 4 characters with no "=" padding.
+        * (2)  The final quantum of encoding input is exactly 8 bits; here,
+        *              the final unit of encoded output will be two characters followed
+        *              by two "=" padding characters.
+        * (3)  The final quantum of encoding input is exactly 16 bits; here,
+        *              the final unit of encoded output will be three characters followed
+        *              by one "=" padding character.
+        * 
+        * @static
+        * @param       string  $target targetted string
+        * @return      string  encoded string
+        */
+       static private function b_encoder($target)
+       {
+               return base64_encode($target);
+       }
+       
+       /**
+        * NOTIFICATION::q_encoder()
+        * 
+        * Q encoder according to RFC 2047.
+        * The "Q" encoding is similar to "Quoted-Printable" content-transfer-encoding defined in RFC 2045,
+        *  but the "Q" encoding and the "Quoted-Printable" are different a bit.
+        * 
+        * @link http://www.ietf.org/rfc/rfc2047.txt
+        * @see 4.2. The "Q" encoding
+        * 
+        * NOTE: According to RFC 2047
+        * (1)  Any 8-bit value may be represented by a "=" followed by two hexadecimal digits.
+        *              For example, if the character set in use were ISO-8859-1,
+        *              the "=" character would thus be encoded as "=3D", and a SPACE by "=20".
+        *              (Upper case should be used for hexadecimal digits "A" through "F".)
+        * (2)  The 8-bit hexadecimal value 20 (e.g., ISO-8859-1 SPACE) may be
+        *              represented as "_" (underscore, ASCII 95.).
+        *              (This character may not pass through some internetwork mail gateways,
+        *              but its use will greatly enhance readability of "Q" encoded data
+        *              with mail readers that do not support this encoding.)
+        *              Note that the "_" always represents hexadecimal 20,
+        *              even if the SPACE character occupies a different code position
+        *              in the character set in use.
+        * (3)  8-bit values which correspond to printable ASCII characters
+        *              other than "=", "?", and "_" (underscore), MAY be represented as those characters.
+        *              (But see section 5 for restrictions.)
+        *              In particular, SPACE and TAB MUST NOT be represented as themselves within encoded words.
+        * 
+        * @static
+        * @param       string  $target targetted string
+        * @return      string  encoded string
+        */
+       static private function q_encoder($target)
+       {
+               $string = '';
+               
+               for ( $i = 0; $i < strlen($target); $i++ )
+               {
+                       $letter = substr ($target, $i, 1);
+                       $order = ord($letter);
+                       
+                       // Printable ASCII characters without "=", "?", "_"
+                       if ((33 <= $order && $order <= 60)
+                        || (62 == $order)
+                        || (64 <= $order && $order <= 94)
+                        || (96 <= $order && $order <= 126))
+                       {
+                               $string .= strtoupper(dechex($order));
+                       }
+                       // Space shuold be encoded as the same strings as "_"
+                       else if ($order == 32)
+                       {
+                               $string .= '_';
+                       }
+                       // Other characters
+                       else
+                       {
+                               $string .= '=' . strtoupper(dechex($order));
+                       }
+               }
+               
+               return $string;
+       }
+       
+       /**
+        * NOTICE: Deprecated
+        * NOTIFICATION::$addresses
+        * 
+        * @deprecated
+        */
+       private $addresses = array();
+       
+       /**
+        * NOTICE: Deprecated
+        * takes one string as argument, containing multiple e-mail addresses
+        * separated by semicolons
+        * eg: site@demuynck.org;nucleus@demuynck.org;foo@bar.com
+        * 
+        * @deprecated
+        */
+       function __construct($addresses)
+       {
+               $this->addresses = preg_split('#;#' , $addresses);
+       }
+       
+       /**
+        * NOTICE: Deprecated
+        * NOTIFICATION::validAddresses()
+        * 
+        * returns true if all addresses are valid
+        * 
+        * @deprecated
+        * @param       Void
+        * @return      Boolean
+        */
+       function validAddresses()
+       {
+               foreach ( $this->addresses as $address )
+               {
+                       if ( !self::address_validation(trim($address)) )
+                       {
+                               return 0;
+                       }
+               }
+               return 1;
+       }
+       
+       /**
+        * NOTICE: Deprecated
+        * NOTIFICATION::notify()
+        * 
+        * Sends email messages to all the email addresses
+        * 
+        * @deprecated
+        * @param       String  $title  
+        * @param       String  $message        
+        * @param       String  $from   
+        * @return      Void
+        */
+       function notify($title, $message, $from)
+       {
+               global $member;
+               $addresses = array();
+               
+               foreach ($this->addresses as $address)
+               {
+                       if ( $member->isLoggedIn() && ($member->getEmail() == $address) )
+                       {
+                               continue;
+                       }
+                       $addresses[] = $address;
+               }
+               
+               self::mail(implode(',', $addresses), $title, $message , $from);
+               return;
+       }
+}
+>>>>>>> skinnable-master
index c23d297..79f372e 100644 (file)
 /**
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2009 The Nucleus Group
+<<<<<<< HEAD
  * @version $Id: PARSER.php 1757 2012-04-15 09:02:32Z sakamocchi $
+=======
+ * @version $Id: PARSER.php 1879 2012-06-17 07:45:09Z sakamocchi $
+>>>>>>> skinnable-master
  */
 
 if ( !function_exists('requestVar') )
@@ -62,8 +66,11 @@ class Parser
                $this->pdelim   =  $pdelim;
                $this->norestrictions = 0;      // set this to 1 to disable checking for allowedActions
                
+<<<<<<< HEAD
                $this->skin             = NULL;
                
+=======
+>>>>>>> skinnable-master
                $handler->setParser($this);
                
                return;
@@ -137,7 +144,11 @@ class Parser
                
                if ( in_array($actionlc, $this->actions) || $this->norestrictions )
                {
+<<<<<<< HEAD
                        call_user_func_array(array(&$this->handler, "parse_{$actionlc}"), $params);
+=======
+                       call_user_func_array(array($this->handler, "parse_{$actionlc}"), $params);
+>>>>>>> skinnable-master
                }
                else
                {
index 5a175c2..b52b93c 100644 (file)
@@ -1,3 +1,4 @@
+<<<<<<< HEAD
 <?php\r
 /*\r
  * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)\r
@@ -982,3 +983,989 @@ abstract class NucleusPlugin
                return;\r
        }\r
 }\r
+=======
+<?php
+/*
+ * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)
+ * Copyright (C) 2002-2009 The Nucleus Group
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * (see nucleus/documentation/index.html#license for more info)
+ */
+/**
+ * This is an (abstract) class of which all Nucleus Plugins must inherit
+ *
+ * for more information on plugins and how to write your own, see the
+ * plugins.html file that is included with the Nucleus documenation
+ *
+ * @license http://nucleuscms.org/license.txt GNU General Public License
+ * @copyright Copyright (C) 2002-2009 The Nucleus Group
+ * @version $Id: PLUGIN.php 1866 2012-05-20 13:21:55Z sakamocchi $
+ */
+abstract class NucleusPlugin
+{
+       // these public functions should to be redefined in your plugin
+       public function getName()
+       {
+               return __CLASS__;
+       }
+       
+       public function getAuthor()
+       {
+               return 'Undefined';
+       }
+       
+       public function getURL()
+       {
+               return 'Undefined';
+       }
+       
+       public function getVersion()
+       {
+               return '0.0';
+       }
+       
+       public function getDescription()
+       {
+               return 'Undefined';
+       }
+       
+       // these final public function _may_ be redefined in your plugin
+       
+       public function getMinNucleusVersion()
+       {
+               return 150;
+       }
+       
+       public function getMinNucleusPatchLevel()
+       {
+               return 0;
+       }
+       
+       public function getEventList()
+       {
+               return array();
+       }
+       
+       public function getTableList()
+       {
+               return array();
+       }
+       
+       public function hasAdminArea()
+       {
+               return 0;
+       }
+       
+       public function install()
+       {
+               return;
+       }
+       
+       public function unInstall()
+       {
+               return;
+       }
+       
+       public function init()
+       {
+               return;
+       }
+       
+       public function doSkinVar($skinType)
+       {
+               return;
+       }
+       
+       public function doTemplateVar(&$item)
+       {
+               $args = func_get_args();
+               array_shift($args);
+               array_unshift($args, 'template');
+               call_user_func_array(array($this, 'doSkinVar'), $args);
+               return;
+       }
+       
+       public function doTemplateCommentsVar(&$item, &$comment)
+       {
+               $args = func_get_args();
+               array_shift($args);
+               array_shift($args);
+               array_unshift($args, 'template');
+               call_user_func_array(array($this, 'doSkinVar'), $args);
+               return;
+       }
+       
+       public function doAction($type)
+       {
+               return _ERROR_PLUGIN_NOSUCHACTION;
+       }
+       
+       public function doIf($key,$value)
+       {
+               return false;
+       }
+       
+       public function doItemVar (&$item)
+       {
+               return;
+       }
+       
+       /**
+        * Checks if a plugin supports a certain feature.
+        *
+        * @returns 1 if the feature is reported, 0 if not
+        * @param $feature
+        *  Name of the feature. See plugin documentation for more info
+        *   'SqlTablePrefix' -> if the plugin uses the sql_table() method to get table names
+        *   'HelpPage' -> if the plugin provides a helppage
+        *   'SqlApi' -> if the plugin uses the complete sql_* or DB::* api (must also require nucleuscms 3.5)
+        */
+       public function supportsFeature($feature)
+       {
+               return 0;
+       }
+       
+       /**
+        * Report a list of plugin that is required to final public function
+        *
+        * @returns an array of names of plugin, an empty array indicates no dependency
+        */
+       public function getPluginDep()
+       {
+               return array();
+       }
+       
+       // these helper final public functions should not be redefined in your plugin
+       
+       /**
+        * Creates a new option for this plugin
+        *
+        * @param name
+        *              A string uniquely identifying your option. (max. length is 20 characters)
+        * @param description
+        *              A description that will show up in the nucleus admin area (max. length: 255 characters)
+        * @param type
+        *              Either 'text', 'yesno' or 'password'
+        *              This info is used when showing 'edit plugin options' screens
+        * @param value
+        *              Initial value for the option (max. value length is 128 characters)
+        */
+       final public function createOption($name, $desc, $type, $defValue = '', $typeExtras = '')
+       {
+               return $this->create_option('global', $name, $desc, $type, $defValue, $typeExtras);
+       }
+       
+       final public function createBlogOption($name, $desc, $type, $defValue = '', $typeExtras = '')
+       {
+               return $this->create_option('blog', $name, $desc, $type, $defValue, $typeExtras);
+       }
+       
+       final public function createMemberOption($name, $desc, $type, $defValue = '', $typeExtras = '')
+       {
+               return $this->create_option('member', $name, $desc, $type, $defValue, $typeExtras);
+       }
+       
+       final public function createCategoryOption($name, $desc, $type, $defValue = '', $typeExtras = '')
+       {
+               return $this->create_option('category', $name, $desc, $type, $defValue, $typeExtras);
+       }
+       
+       final public function createItemOption($name, $desc, $type, $defValue = '', $typeExtras = '')
+       {
+               return $this->create_option('item', $name, $desc, $type, $defValue, $typeExtras);
+       }
+       
+       /**
+        * Removes the option from the database
+        *
+        * Note: Options get erased automatically on plugin uninstall
+        */
+       final public function deleteOption($name)
+       {
+               return $this->delete_option('global', $name);
+       }
+       
+       final public function deleteBlogOption($name)
+       {
+               return $this->delete_option('blog', $name);
+       }
+       
+       final public function deleteMemberOption($name)
+       {
+               return $this->delete_option('member', $name);
+       }
+       
+       final public function deleteCategoryOption($name)
+       {
+               return $this->delete_option('category', $name);
+       }
+       
+       final public function deleteItemOption($name)
+       {
+               return $this->delete_option('item', $name);
+       }
+       
+       /**
+        * Sets the value of an option to something new
+        */
+       final public function setOption($name, $value)
+       {
+               return $this->set_option('global', 0, $name, $value);
+       }
+       
+       final public function setBlogOption($blogid, $name, $value)
+       {
+               return $this->set_option('blog', $blogid, $name, $value);
+       }
+       
+       final public function setMemberOption($memberid, $name, $value)
+       {
+               return $this->set_option('member', $memberid, $name, $value);
+       }
+       
+       final public function setCategoryOption($catid, $name, $value)
+       {
+               return $this->set_option('category', $catid, $name, $value);
+       }
+       
+       final public function setItemOption($itemid, $name, $value) {
+               return $this->set_option('item', $itemid, $name, $value);
+       }
+       
+       /**
+        * Retrieves the current value for an option
+        */
+       final public function getOption($name)
+       {
+               // only request the options the very first time. On subsequent requests
+               // the static collection is used to save SQL queries.
+               if ( $this->plugin_options == 0 )
+               {
+                       $this->plugin_options = array();
+                       
+                       $query =  "SELECT d.oname as name, o.ovalue as value FROM %s o, %s d WHERE d.opid=%d AND d.oid=o.oid;";
+                       $query = sprintf($query, sql_table('plugin_option'), sql_table('plugin_option_desc'), (integer) $this->plugid);
+                       $result = DB::getResult($query);
+                       foreach ( $result as $row )
+                       {
+                               $this->plugin_options[strtolower($row['name'])] = $row['value'];
+                       }
+               }
+               if ( isset($this->plugin_options[strtolower($name)]) )
+               {
+                       return $this->plugin_options[strtolower($name)];
+               }
+               else
+               {
+                       return $this->get_option('global', 0, $name);
+               }
+       }
+       
+       final public function getBlogOption($blogid, $name)
+       {
+               return $this->get_option('blog', $blogid, $name);
+       }
+       
+       final public function getMemberOption($memberid, $name)
+       {
+               return $this->get_option('member', $memberid, $name);
+       }
+       
+       final public function getCategoryOption($catid, $name)
+       {
+               return $this->get_option('category', $catid, $name);
+       }
+       
+       final public function getItemOption($itemid, $name)
+       {
+               return $this->get_option('item', $itemid, $name);
+       }
+       
+       /**
+        * Retrieves an associative array with the option value for each
+        * context id
+        */
+       final public function getAllBlogOptions($name)
+       {
+               return $this->get_all_options('blog', $name);
+       }
+       
+       final public function getAllMemberOptions($name)
+       {
+               return $this->get_all_options('member', $name);
+       }
+       
+       final public function getAllCategoryOptions($name)
+       {
+               return $this->get_all_options('category', $name);
+       }
+       
+       final public function getAllItemOptions($name)
+       {
+               return $this->get_all_options('item', $name);
+       }
+       
+       /**
+        * Retrieves an indexed array with the top (or bottom) of an option
+        * (delegates to getOptionTop())
+        */
+       final public function getBlogOptionTop($name, $amount = 10, $sort = 'desc')
+       {
+               return $this->get_option_top('blog', $name, $amount, $sort);
+       }
+       
+       final public function getMemberOptionTop($name, $amount = 10, $sort = 'desc')
+       {
+               return $this->get_option_top('member', $name, $amount, $sort);
+       }
+       
+       final public function getCategoryOptionTop($name, $amount = 10, $sort = 'desc')
+       {
+               return $this->get_option_top('category', $name, $amount, $sort);
+       }
+       
+       final public function getItemOptionTop($name, $amount = 10, $sort = 'desc')
+       {
+               return $this->get_option_top('item', $name, $amount, $sort);
+       }
+       
+       /**
+        * NucleusPlugin::getID()
+        * get id for this plugin
+        * 
+        * @access      public
+        * @param       void
+        * @return      integer this plugid id
+        */
+       final public function getID()
+       {
+               return (integer) $this->plugid;
+       }
+       
+       /**
+        * NucleusPlugin::setID()
+        * set favorite id for this plugin
+        * 
+        * @access      public
+        * @param       integer $plugid favorite id for plugin
+        * @return      void
+        */
+       final public function setID($plugid)
+       {
+               $this->plugid = (integer) $plugid;
+               return;
+       }
+       
+       /**
+        * Returns the URL of the admin area for this plugin (in case there's
+        * no such area, the returned information is invalid)
+        *
+        * public
+        */
+       final public function getAdminURL()
+       {
+               global $CONF;
+               return $CONF['PluginURL'] . $this->getShortName() . '/';
+       }
+       
+       /**
+        * Returns the directory where the admin directory is located and
+        * where the plugin can maintain his extra files
+        *
+        * public
+        */
+       final public function getDirectory()
+       {
+               global $DIR_PLUGINS;
+               return $DIR_PLUGINS . $this->getShortName() . '/';
+       }
+       
+       /**
+        * Derives the short name for the plugin from the classname (all
+        * lowercase)
+        *
+        * public
+        */
+       final public function getShortName()
+       {
+               return str_replace('np_','',strtolower(get_class($this)));
+       }
+       
+       /**
+        *      Clears the option value cache which saves the option values during
+        *      the plugin execution. This function is usefull if the options has
+        *      changed during the plugin execution (especially in association with
+        *      the PrePluginOptionsUpdate and the PostPluginOptionsUpdate events)
+        *      
+        *  public
+        **/
+       final public function clearOptionValueCache()
+       {
+               $this->option_values = array();
+               $this->plugin_options = 0;
+               return;
+       }
+       
+       // internal functions of the class starts here
+       protected $option_values;       // oid_contextid => value
+       protected $option_info;         // context_name => array('oid' => ..., 'default' => ...)
+       protected $plugin_options;      // see getOption()
+       protected $plugid;                      // plugin id
+       
+       /**
+        * Class constructor: Initializes some internal data
+        */
+       public function __construct()
+       {
+               $this->option_values = array(); // oid_contextid => value
+               $this->option_info = array();   // context_name => array('oid' => ..., 'default' => ...)
+               $this->plugin_options = 0;
+       }
+       
+       /**
+        * Retrieves an array of the top (or bottom) of an option from a plugin.
+        * @author TeRanEX
+        * @param  string $context the context for the option: item, blog, member,...
+        * @param  string $name    the name of the option
+        * @param  int    $amount  how many rows must be returned
+        * @param  string $sort    desc or asc
+        * @return array           array with both values and contextid's
+        * @access private
+        */
+       final protected function get_option_top($context, $name, $amount = 10, $sort = 'desc')
+       {
+               if ( ($sort != 'desc') && ($sort != 'asc') )
+               {
+                       $sort= 'desc';
+               }
+               
+               $oid = $this->get_option_id($context, $name);
+               
+               // retrieve the data and return
+               $query = "SELECT otype, oextra FROM %s WHERE oid = %d;";
+               $query = sprintf($query, sql_table('plugin_option_desc'), $oid);
+               $row = DB::getRow($query);
+               
+               if ( ($this->optionCanBeNumeric($row['otype'])) && ($row['oextra'] == 'number' ) )
+               {
+                       $orderby = 'CAST(ovalue AS SIGNED)';
+               }
+               else
+               {
+                       $orderby = 'ovalue';
+               }
+               $query = "SELECT ovalue value, ocontextid id FROM %s WHERE oid = %d ORDER BY %s %s LIMIT 0,%d;";
+               $query = sprintf($query, sql_table('plugin_option'), $oid, $orderby, $sort, (integer) $amount);
+               $result = DB::getResult($query);
+               
+               // create the array
+               $i = 0;
+               $top = array();
+               foreach( $result as $row )
+               {
+                       $top[$i++] = $row;
+               }
+               
+               // return the array (duh!)
+               return $top;
+       }
+       
+       /**
+        * Creates an option in the database table plugin_option_desc
+        *      
+        * private
+        */
+       final protected function create_option($context, $name, $desc, $type, $defValue, $typeExtras = '')
+       {
+               // create in plugin_option_desc
+               $query = 'INSERT INTO ' . sql_table('plugin_option_desc')
+                               .' (opid, oname, ocontext, odesc, otype, odef, oextra)'
+                               .' VALUES ('.intval($this->plugid)
+                                       .', '.DB::quoteValue($name)
+                                       .', '.DB::quoteValue($context)
+                                       .', '.DB::quoteValue($desc)
+                                       .', '.DB::quoteValue($type)
+                                       .', '.DB::quoteValue($defValue)
+                                       .', '.DB::quoteValue($typeExtras).')';
+               DB::execute($query);
+               $oid = DB::getInsertId();
+               
+               $key = $context . '_' . $name;
+               $this->option_info[$key] = array('oid' => $oid, 'default' => $defValue);
+               return 1;
+       }
+       
+       /**
+        * Deletes an option from the database tables
+        * plugin_option and plugin_option_desc
+        *
+        * private
+        */
+       final protected function delete_option($context, $name)
+       {
+               $oid = $this->get_option_id($context, $name);
+               if ( !$oid )
+               {
+                       return 0; // no such option
+               }
+               
+               // delete all things from plugin_option
+               $query = "DELETE FROM %s WHERE oid=%d;";
+               $query = sprintf($query, sql_table('plugin_option'), (integer) $oid);
+               DB::execute($query);
+               
+               // delete entry from plugin_option_desc
+               $query = "DELETE FROM %s WHERE oid=%d;";
+               $query = sprintf($query, sql_table('plugin_option_desc'), $oid);
+               DB::execute($query);
+               
+               // clear from cache
+               unset($this->option_info["{$context}_{$name}"]);
+               $this->option_values = array();
+               return 1;
+       }
+       
+       /**
+        * Update an option in the database table plugin_option
+        *              
+        * returns: 1 on success, 0 on failure
+        * private
+        */
+       final protected function set_option($context, $contextid, $name, $value)
+       {
+               global $manager;
+               
+               $oid = $this->get_option_id($context, $name);
+               if ( !$oid )
+               {
+                       return 0;
+               }
+               
+               // check if context id exists
+               switch ( $context )
+               {
+                       case 'member':
+                               if ( !Member::existsID($contextid) )
+                               {
+                                       return 0;
+                               }
+                               break;
+                       case 'blog':
+                               if ( !$manager->existsBlogID($contextid) )
+                               {
+                                       return 0;
+                               }
+                               break;
+                       case 'category':
+                               if ( !$manager->existsCategory($contextid) )
+                               {
+                                       return 0;
+                               }
+                               break;
+                       case 'item':
+                               if ( !$manager->existsItem($contextid, true, true) )
+                               {
+                                       return 0;
+                               }
+                               break;
+                       case 'global':
+                               if ( $contextid != 0 )
+                               {
+                                       return 0;
+                               }
+                               break;
+               }
+               
+               // update plugin_option
+               $query = "DELETE FROM %s WHERE oid=%d and ocontextid=%d;";
+               $query = sprintf($query, sql_table('plugin_option'), (integer) $oid, (integer) $contextid);
+               DB::execute($query);
+               
+               $query = "INSERT INTO %s (ovalue, oid, ocontextid) VALUES (%s, %d, %d);";
+               $query = sprintf($query, sql_table('plugin_option'), DB::quoteValue($value), $oid, $contextid);
+               DB::execute($query);
+               
+               // update cache
+               $this->option_values["{$oid}_{$contextid}"] = $value;
+               if ( $context == 'global' )
+               {
+                       $this->plugin_options[strtolower($name)] = $value;
+               }
+               
+               return 1;
+       }
+       
+       /**
+        * Get an option from Cache or database
+        *       - if not in the option Cache read it from the database
+        *   - if not in the database write default values into the database
+        *              
+        * private              
+        */                                             
+       final protected function get_option($context, $contextid, $name)
+       {
+               $oid = $this->get_option_id($context, $name);
+               if ( !$oid )
+               {
+                       return '';
+               }
+               
+               $key = "{$oid}_{$contextid}";
+               
+               if ( isset($this->option_values[$key]) )
+               {
+                       return $this->option_values[$key];
+               }
+               
+               // get from DB
+               $query = "SELECT ovalue FROM %s WHERE oid=%d and ocontextid=%d;";
+               $query = sprintf($query, sql_table('plugin_option'), (integer) $oid, (integer) $contextid);
+               $result = DB::getResult($query);
+               
+               if ( !$result || ($result->rowCount() == 0) )
+               {
+                       // fill DB with default value
+                       $this->option_values[$key] = $this->get_default_value($context, $name);
+                       $query = "INSERT INTO %s (oid, ocontextid, ovalue) VALUES (%d, %d, %s);";
+                       $query = sprintf($query, sql_table('plugin_option'), (integer) $oid, (integer) $contextid, DB::quoteValue($this->option_values[$key]));
+                       DB::execute($query);
+               }
+               else
+               {
+                       $row = $result->fetch();
+                       $this->option_values[$key] = $row['ovalue'];
+               }
+               
+               return $this->option_values[$key];
+       }
+       
+       /**
+        * Returns assoc array with all values for a given option
+        * (one option per possible context id)
+        *
+        * private                              
+        */
+       final protected function get_all_options($context, $name)
+       {
+               $oid = $this->get_option_id($context, $name);
+               if ( !$oid )
+               {
+                       return array();
+               }
+               $default_value = $this->get_default_value($context, $name);
+               
+               $options = array();
+               $query = "SELECT %s as contextid FROM %s;";
+               switch ( $context )
+               {
+                       case 'blog':
+                               $query = sprintf($query, 'bnumber', sql_table('blog'));
+                               break;
+                       case 'category':
+                               $query = sprintf($query, 'catid', sql_table('category'));
+                               break;
+                       case 'member':
+                               $query = sprintf($query, 'mnumber', sql_table('member'));
+                               break;
+                       case 'item':
+                               $query = sprintf($query, 'inumber', sql_table('item'));
+                               break;
+               }
+               
+               $result = DB::getResult($query);
+               if ( $result )
+               {
+                       foreach ( $result as $row )
+                       {
+                               $options[$row['contextid']] = $default_value;
+                       }
+               }
+               
+               $query = "SELECT ocontextid, ovalue FROM %s WHERE oid=%d;";
+               $query = sprintf($query, sql_table('plugin_option'), $oid);
+               $result = DB::getResult($query);
+               foreach ( $result as $row )
+               {
+                       $options[$row['ocontextid']] = $row['ovalue'];
+               }
+
+               return $options;
+       }
+       
+       /**
+        * NucleusPlugin::get_option_id
+        * 
+        * Gets the 'option identifier' that corresponds to a given option name.
+        * When this method is called for the first time, all the OIDs for the plugin
+        * are loaded into memory, to avoid re-doing the same query all over.
+        * 
+        * @param       string  $context        option context
+        * @param       string  $name           plugin name
+        * @return              integer option id
+        */
+       final protected function get_option_id($context, $name)
+       {
+               $key = "{$context}_{$name}";
+               
+               if ( array_key_exists($key, $this->option_info)
+                && array_key_exists('oid', $this->option_info[$key]) )
+               {
+                       return $this->option_info[$key]['oid'];
+               }
+               
+               // load all OIDs for this plugin from the database
+               $this->option_info = array();
+               $query = "SELECT oid, oname, ocontext, odef FROM %s WHERE opid=%d;";
+               $query = sprintf($query, sql_table('plugin_option_desc'), $this->plugid);
+               $result = DB::getResult($query);
+               foreach ( $result as $row )
+               {
+                       $k = $row['ocontext'] . '_' . $row['oname'];
+                       $this->option_info[$k] = array('oid' => $row['oid'], 'default' => $row['odef']);
+               }
+               $result->closeCursor();
+               
+               return $this->option_info[$key]['oid'];
+       }
+       final protected function get_default_value($context, $name)
+       {
+               $key = $context . '_' . $name;
+               
+               if ( array_key_exists($key, $this->option_info)
+                && array_key_exists('default', $this->option_info[$key]) )
+               {
+                       return $this->option_info[$key]['default'];
+               }
+               return;
+       }
+       
+       /**
+        * NucleusPlugin::delete_option_values()
+        * Deletes all option values for a given context and contextid
+        * (used when e.g. a blog, member or category is deleted)
+        *
+        *@static
+        *@param        String  $context        global/blog/category/item/member
+        *@param        Integer $contextid              ID
+        *@return       Void
+        */
+       static public function delete_option_values($context, $contextid)
+       {
+               // delete all associated plugin options
+               $aOIDs = array();
+               // find ids
+               $query = "SELECT oid FROM %s WHERE ocontext=%s;";
+               $query = sprintf($query, sql_table('plugin_option_desc'), DB::quoteValue($context));
+               
+               $result = DB::getResult($query);
+               foreach ( $result as $row )
+               {
+                       array_push($aOIDs, $row['oid']);
+               }
+               $result->closeCursor();
+               // delete those options. go go go
+               if ( count($aOIDs) > 0 )
+               {
+                       $query = "DELETE FROM %s WHERE oid in (%s) and ocontextid=%d;";
+                       $query = sprintf($query, sql_table('plugin_option'), implode(',',$aOIDs), (integer) $contextid);
+                       DB::execute($query);
+               }
+               return;
+       }
+       
+       /**
+        * NucleusPlugin::getOptionMeta()
+        * splits the option's typeextra field (at ;'s) to split the meta collection
+        * 
+        * @static
+        * @param string $typeExtra the value of the typeExtra field of an option
+        * @return array array of the meta-key/value-pairs
+        */
+       static public function getOptionMeta($typeExtra)
+       {
+               $meta = array();
+               
+               /* 1. if $typeExtra includes delimiter ';', split it to tokens */
+               $tokens = preg_split('#;#', $typeExtra);
+               
+               /*
+                * 2. if each of tokens includes "=", it consists of key => value
+                *    else it's 'select' option
+                */
+               foreach ( $tokens as $token )
+               {
+                       $matches = array();
+                       if ( preg_match("#^([^=]+)?=([^=]+)?$#", $token, $matches) )
+                       {
+                               $meta[$matches[1]] = $matches[2];
+                       }
+                       else
+                       {
+                               $meta['select'] = $token;
+                       }
+               }
+               return $meta;
+       }
+       
+       /**
+        * NucleusPlugin::getOptionSelectValues()
+        * filters the selectlists out of the meta collection
+        * 
+        * @static
+        * @param string $typeExtra the value of the typeExtra field of an option
+        * @return string the selectlist
+        */
+       static public function getOptionSelectValues($typeExtra)
+       {
+               $meta = NucleusPlugin::getOptionMeta($typeExtra);
+               
+               if ( array_key_exists('select', $meta) )
+               {
+                       return $meta['select'];
+               }
+               return;
+       }
+       
+       /**
+        * checks if the eventlist in the database is up-to-date
+        * @return bool if it is up-to-date it return true, else false
+        * @author TeRanEX
+        */
+       public function subscribtionListIsUptodate()
+       {
+               $res = DB::getResult('SELECT event FROM '.sql_table('plugin_event').' WHERE pid = '.$this->plugid);
+               $ev = array();
+               foreach ( $res as $row )
+               {
+                       array_push($ev, $row['event']);
+               }
+               if ( count($ev) != count($this->getEventList()) )
+               {
+                       return false;
+               }
+               $d = array_diff($ev, $this->getEventList());
+               if ( count($d) > 0 )
+               {
+                       // there are differences so the db is not up-to-date
+                       return false;
+               }
+               return true;
+       }
+       
+       /**
+        * NucleusPlugin::apply_plugin_options()
+        * Update its entry in database table
+        * 
+        * @static
+        * @param       $options: array ( 'oid' => array( 'contextid' => 'value'))
+        *                       (taken from request using requestVar())
+        * @param       $new_contextid: integer (accepts a contextid when it is for a new
+        *                       contextid there was no id available at the moment of writing the
+        *                        formcontrols into the page (by ex: itemOptions for new item)
+        * @return void
+        */
+       static public function apply_plugin_options(&$options, $new_contextid = 0)
+       {
+               global $manager;
+               
+               if ( !is_array($options) )
+               {
+                       return;
+               }
+               
+               foreach ( $options as $oid => $values )
+               {
+                       // get option type info
+                       $query = "SELECT opid, oname, ocontext, otype, oextra, odef FROM %s WHERE oid=%d;";
+                       $query = sprintf($query, sql_table('plugin_option_desc'), (integer) $oid);
+                       $result = DB::getRow($query);
+                       if ( $result )
+                       {
+                               foreach ( $values as $id => $value )
+                               {
+                                       // decide wether we are using the contextid of newContextid
+                                       if ( $new_contextid != 0 )
+                                       {
+                                               $contextid = $new_contextid;
+                                       }
+                                       else
+                                       {
+                                               $contextid = $id;
+                                       }
+                                       
+                                       // retreive any metadata
+                                       $meta = NucleusPlugin::getOptionMeta($result['oextra']);
+                                       
+                                       // if the option is readonly or hidden it may not be saved
+                                       if ( array_key_exists('access', $meta)
+                                        && in_array($meta['access'], array('readonly', 'hidden')) )
+                                       {
+                                               return;
+                                       }
+                                       
+                                       // value comes from request
+                                       $value = undoMagic($value);
+                                       
+                                       /* validation the value according to its type */
+                                       switch ( $result['otype'] )
+                                       {
+                                               case 'yesno':
+                                                       if ( ($value != 'yes') && ($value != 'no') )
+                                                       {
+                                                               $value = 'no';
+                                                       }
+                                                       break;
+                                               case 'text':
+                                               case 'select':
+                                                       if ( array_key_exists('datatype', $meta)
+                                                        && ($meta['datatype'] == 'numerical') && ($value != (integer) $value) )
+                                                       {
+                                                               $value = (integer) $result['odef'];
+                                                       }
+                                                       break;
+                                               case 'password':
+                                               case 'textarea':
+                                               default:
+                                                       break;
+                                       }
+                                       
+                                       /*
+                                        * trigger event PrePluginOptionsUpdate to give the plugin the
+                                        * possibility to change/validate the new value for the option
+                                        */
+                                       $data = array(
+                                               'context'               => $result['ocontext'],
+                                               'plugid'                => $result['opid'],
+                                               'optionname'    => $result['oname'],
+                                               'contextid'     => $contextid,
+                                               'value'         => &$value);
+                                       $manager->notify('PrePluginOptionsUpdate', $data);
+                                       
+                                       // delete and insert its fields of table in database
+                                       $query = "DELETE FROM %s WHERE oid=%d AND ocontextid=%d;";
+                                       $query = sprintf($query, sql_table('plugin_option'), (integer) $oid, (integer) $contextid);
+                                       DB::execute($query);
+                                       $query = "INSERT INTO %s (oid, ocontextid, ovalue) VALUES (%d, %d, %s);";
+                                       $query = sprintf($query, sql_table('plugin_option'), (integer) $oid, (integer) $contextid, DB::quoteValue($value));
+                                       DB::execute($query);
+                                       
+                                       // clear option value cache if the plugin object is already loaded
+                                       $plugin=& $manager->pidLoaded($result['opid']);
+                                       if ( $plugin )
+                                       {
+                                               $plugin->clearOptionValueCache();
+                                       }
+                                       
+                                       continue;
+                               }
+                       }
+                       continue;
+               }
+               return;
+       }
+}
+>>>>>>> skinnable-master
index 56f2df6..e1fce52 100644 (file)
@@ -1,3 +1,4 @@
+<<<<<<< HEAD
 <?php\r
 \r
 /*\r
@@ -158,3 +159,172 @@ for (i=0;document.forms[i];i++){
        }\r
 }\r
 \r
+=======
+<?php
+
+/*
+ * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)
+ * Copyright (C) 2002-2012 The Nucleus Group
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * (see nucleus/documentation/index.html#license for more info)
+ */
+/**
+ * code to make it easier to create plugin admin areas
+ *
+ * @license http://nucleuscms.org/license.txt GNU General Public License
+ * @copyright Copyright (C) 2002-2012 The Nucleus Group
+ * @version $Id: PLUGINADMIN.php 1886 2012-06-17 08:27:27Z sakamocchi $
+ */
+
+class PluginAdmin
+{
+       public $strFullName;    // NP_SomeThing
+       public $plugin;         // ref. to plugin object
+       public $bValid;         // evaluates to true when object is considered valid
+       public $admin;                  // ref to an admin object
+
+       private $skinContents;  // PluginAdmin contents
+       private $extrahead;             // extrahead
+
+       public function __construct($pluginName)
+       {
+               global $manager, $DIR_LIBS;
+               
+               if ( !class_exists('Admin', FALSE) )
+               {
+                       include($DIR_LIBS . 'ADMIN.php');
+               }
+               
+               $this->strFullName = "NP_{$pluginName}";
+               
+               // check if plugin exists and is installed
+               if ( !$manager->pluginInstalled($this->strFullName) )
+               {
+                       doError(_ERROR_INVALID_PLUGIN);
+                       return;
+               }
+               
+               $this->plugin = &$manager->getPlugin($this->strFullName);
+               $this->bValid =  $this->plugin;
+               
+               if ( !$this->bValid )
+               {
+                       doError(_ERROR_INVALID_PLUGIN);
+                       return;
+               }
+               
+               Admin::initialize();
+               Admin::$action = "plugin_{$pluginName}";
+               
+               return;
+       }
+       
+       /**
+        * PluginAdmin::start()
+        * 
+        * @param       string  $extraHead      child elements for header element
+        * @return      void
+        */
+       public function start($extraHead = '')
+       {
+               global $CONF;
+               $this->extrahead = $extraHead . '<base href="' . Entity::hsc($CONF['AdminURL']) . '" />' . "\n";
+               ob_start();
+               return;
+       }
+       
+       /**
+        * PluginAdmin::end()
+        * 
+        * @param       void
+        * @return      void
+        */
+       public function end()
+       {
+               $this->AddTicketByJS();
+               $contents = ob_get_contents();
+               ob_end_clean();
+               $this->skinContents = '<%pagehead%>' . $contents . '<%pagefoot%>';
+               Admin::action_PluginAdmin($this->skinContents, $this->extrahead);
+               return;
+       }
+       
+       /**
+        * PluginAdmin::_AddTicketByJS()
+        * Add ticket when not used in plugin's admin page
+        * to avoid CSRF.
+        * 
+        * @param       void
+        * @return      void
+        */
+       private function AddTicketByJS()
+       {
+               global $CONF,$ticketforplugin;
+               if ( !($ticket = $ticketforplugin['ticket']) )
+               {
+                       return;
+               }
+               $ticket=Entity::hsc($ticket);
+
+?><script type="text/javascript">
+/*<![CDATA[*/
+/* Add tickets for available links (outside blog excluded) */
+for (i=0;document.links[i];i++){
+  if (document.links[i].href.indexOf('<?php echo $CONF['PluginURL']; ?>',0)<0
+    && !(document.links[i].href.indexOf('//',0)<0)) continue;
+  if ((j=document.links[i].href.indexOf('?',0))<0) continue;
+  if (document.links[i].href.indexOf('ticket=',j)>=0) continue;
+  document.links[i].href=document.links[i].href.substring(0,j+1)+'ticket=<?php echo $ticket; ?>&'+document.links[i].href.substring(j+1);
+}
+/* Add tickets for forms (outside blog excluded) */
+for (i=0;document.forms[i];i++){
+  /* check if ticket is already used */
+  for (j=0;document.forms[i].elements[j];j++) {
+    if (document.forms[i].elements[j].name=='ticket') {
+      j=-1;
+      break;
+    }
+  }
+  if (j==-1) continue;
+  /* check if the modification works */
+  try{document.forms[i].innerHTML+='';}catch(e){
+    /* Modificaion falied: this sometime happens on IE */
+    if (!document.forms[i].action.name && document.forms[i].method.toUpperCase()=="POST") {
+      /* <input name="action"/> is not used for POST method*/
+      if (document.forms[i].action.indexOf('<?php echo $CONF['PluginURL']; ?>',0)<0
+        && !(document.forms[i].action.indexOf('//',0)<0)) continue;
+      if (0<(j=document.forms[i].action.indexOf('?',0))) if (0<document.forms[i].action.indexOf('ticket=',j)) continue;
+      if (j<0) document.forms[i].action+='?'+'ticket=<?php echo $ticket; ?>';
+      else document.forms[i].action+='&'+'ticket=<?php echo $ticket; ?>';
+      continue;
+    }
+    document.write('<?php echo _PLUGINADMIN_TICKETS_JAVASCRIPT ?>');
+    j=document.forms[i].outerHTML;
+    while (j!=j.replace('<','&lt;')) j=j.replace('<','&lt;');
+    document.write('<p>'+j+'</p>');
+    continue;
+  }
+  /* check the action paramer in form tag */
+  /* note that <input name="action"/> may be used here */
+  j=document.forms[i].innerHTML;
+  document.forms[i].innerHTML='';
+  if ((document.forms[i].action+'').indexOf('<?php echo $CONF['PluginURL']; ?>',0)<0
+      && !((document.forms[i].action+'').indexOf('//',0)<0)) {
+    document.forms[i].innerHTML=j;
+    continue;
+  }
+  /* add ticket */
+  document.forms[i].innerHTML=j+'<input type="hidden" name="ticket" value="<?php echo $ticket; ?>"/>';
+}
+/*]]>*/
+</script><?php
+       return;
+       }
+}
+
+>>>>>>> skinnable-master
index ae28362..81edfb5 100644 (file)
@@ -1,3 +1,4 @@
+<<<<<<< HEAD
 <?php\r
 \r
 /*\r
@@ -219,3 +220,226 @@ class Search
        }\r
 }\r
 ?>\r
+=======
+<?php
+
+/*
+ * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)
+ * Copyright (C) 2003-2009 The Nucleus Group
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * (see nucleus/documentation/index.html#license for more info)
+ */
+/**
+ * SEARCH(querystring) offers different functionality to create an
+ * SQL query to find certain items. (and comments)
+ *
+ * based on code by David Altherr:
+ * http://www.evolt.org/article/Boolean_Fulltext_Searching_with_PHP_and_MySQL/18/15665/
+ * http://davidaltherr.net/web/php_functions/boolean/funcs.mysql.boolean.txt
+ *
+ * @license http://nucleuscms.org/license.txt GNU General Public License
+ * @copyright Copyright (C) 2002-2009 The Nucleus Group
+ * @version $Id: SEARCH.php 1886 2012-06-17 08:27:27Z sakamocchi $
+ */
+
+
+
+class Search
+{
+       var $querystring;
+       var $marked;
+       var $inclusive;
+       var $blogs;
+
+
+       function SEARCH($text) {
+               global $blogid;
+               $text = preg_replace ("/[<,>,=,?,!,#,^,(,),[,\],:,;,\\\,%]/","",$text);
+               $this->querystring      = $text;
+               $this->marked           = $this->boolean_mark_atoms($text);
+               $this->inclusive        = $this->boolean_inclusive_atoms($text);
+               $this->blogs            = array();
+
+               // get all public searchable blogs, no matter what, include the current blog allways.
+               $res = DB::getResult('SELECT bnumber FROM '.sql_table('blog').' WHERE bincludesearch=1 ');
+               foreach ( $res as $row )
+                       $this->blogs[] = intval($row['bnumber']);
+       }
+
+       function  boolean_sql_select($match){
+               if (i18n::strlen($this->inclusive) > 0) {
+                  /* build sql for determining score for each record */
+                  $result=preg_split("# #",$this->inclusive);
+                  for($cth=0;$cth<count($result);$cth++){
+                          if(i18n::strlen($result[$cth])>=4){
+                                  $stringsum_long .=  " $result[$cth] ";
+                          }else{
+                                  $stringsum_a[] = ' '.$this->boolean_sql_select_short($result[$cth],$match).' ';
+                          }
+                  }
+
+                  if(i18n::strlen($stringsum_long)>0){
+                               $stringsum_long = DB::quoteValue($stringsum_long);
+                               $stringsum_a[] = " match ({$match}) against ({$stringsum_long}) ";
+                  }
+
+                  $stringsum .= implode("+",$stringsum_a);
+                  return $stringsum;
+               }
+       }
+
+       function boolean_inclusive_atoms($string){
+               $result = trim($string);
+               $result = preg_replace("#([[:space:]]{2,})#", ' ', $result);
+
+               # replaced eregi_replace() below with preg_replace(). ereg* functions are deprecated in PHP 5.3.0
+               # just added delimiters to regex and the 'i' for case-insensitive matching
+
+               /* convert normal boolean operators to shortened syntax */
+               $result = preg_replace('# not #i', ' -', $result);
+               $result = preg_replace('# and #i', ' ', $result);
+               $result = preg_replace('# or #i', ',', $result);
+
+               /* drop unnecessary spaces */
+               $result = str_replace(' ,', ',', $result);
+               $result = str_replace(', ', ',', $result);
+               $result = str_replace('- ', '-', $result);
+               $result = str_replace('+', '', $result);
+
+               /* strip exlusive atoms */
+               $result = preg_replace(
+                       "#\-\([A-Za-z0-9]{1,}[A-Za-z0-9\-\.\_\,]{0,}\)#",
+                       '',
+                       $result);
+
+               $result = str_replace('(', ' ', $result);
+               $result = str_replace(')', ' ', $result);
+               $result = str_replace(',', ' ', $result);
+
+               return $result;
+       }
+
+    function boolean_sql_where($match){
+
+        $result = $this->marked;
+
+        $this->boolean_sql_where_cb1($match); // set the static $match
+
+        $result = preg_replace_callback(
+
+            "/foo\[\(\'([^\)]{4,})\'\)\]bar/",
+
+            array($this,'boolean_sql_where_cb1'),
+
+            $result);
+
+        $this->boolean_sql_where_cb2($match); // set the static $match
+
+        $result = preg_replace_callback(
+
+            "/foo\[\(\'([^\)]{1,3})\'\)\]bar/",
+
+            array($this,'boolean_sql_where_cb2'),
+
+            $result);
+
+        return $result;
+
+    }
+
+    function boolean_sql_where_cb1($matches){
+
+        static $match;
+
+        if (!is_array($matches)) $match=$matches;
+
+        else return ' match ('.$match.') against ('.DB::quoteValue($matches[1]).') > 0 ';
+
+    }
+
+    function boolean_sql_where_cb2($matches){
+
+        static $match;
+
+        if (!is_array($matches)) $match=$matches;
+
+        else return ' ('.$this->boolean_sql_where_short($matches[1], $match).') ';
+
+    }  
+
+       function boolean_mark_atoms($string){
+               $result = trim($string);
+               $result = preg_replace("/([[:space:]]{2,})/",' ',$result);
+
+               # replaced eregi_replace() below with preg_replace(). ereg* functions are deprecated in PHP 5.3.0
+               # just added delimiters to regex and the 'i' for case-insensitive matching
+
+               /* convert normal boolean operators to shortened syntax */
+               $result = preg_replace('# not #i', ' -', $result);
+               $result = preg_replace('# and #i', ' ', $result);
+               $result = preg_replace('# or #i', ',', $result);
+
+               /* strip excessive whitespace */
+               $result = str_replace('( ', '(', $result);
+               $result = str_replace(' )', ')', $result);
+               $result = str_replace(', ', ',', $result);
+               $result = str_replace(' ,', ',', $result);
+               $result = str_replace('- ', '-', $result);
+               $result = str_replace('+', '', $result);
+
+               // remove double spaces (we might have introduced some new ones above)
+               $result = trim($result);
+               $result = preg_replace("#([[:space:]]{2,})#", ' ', $result);
+
+               /* apply arbitrary function to all 'word' atoms */
+
+               $result_a = preg_split('# #', $result);
+
+               for($word = 0;$word<count($result_a);$word++)
+               {
+                       $result_a[$word] = "foo[('" . $result_a[$word] . "')]bar";
+               }
+
+               $result = implode(' ', $result_a);
+
+               /* dispatch ' ' to ' AND ' */
+               $result = str_replace(' ', ' AND ', $result);
+
+               /* dispatch ',' to ' OR ' */
+               $result = str_replace(',', ' OR ', $result);
+
+               /* dispatch '-' to ' NOT ' */
+               $result = str_replace(' -', ' NOT ', $result);
+               return $result;
+       }
+
+       function boolean_sql_where_short($string,$match){
+               $match_a = preg_split('#,#',$match);
+               for($ith=0;$ith<count($match_a);$ith++){
+                       $like_a[$ith] = ' $match_a[$ith] LIKE ' . DB::quoteValue("% {$string} %") . ' ';
+               }
+               $like = implode(" OR ",$like_a);
+
+               return $like;
+       }
+       function boolean_sql_select_short($string,$match){
+               $match_a = preg_split('#,#',$match);
+               $score_unit_weight = .2;
+               for($ith=0;$ith<count($match_a);$ith++){
+                       $score_a[$ith] =
+                                                  " $score_unit_weight*(
+                                                  LENGTH(" . DB::quoteValue($match_a[$ith]) . ") -
+                                                  LENGTH(REPLACE(LOWER(" . DB::quoteValue($match_a[$ith]) . "),LOWER(" . DB::quoteValue($string) . "),'')))
+                                                  /LENGTH(" . DB::quoteValue($string) . ") ";
+               }
+               $score = implode(" + ",$score_a);
+
+               return $score;
+       }
+}
+?>
+>>>>>>> skinnable-master
index e6a8a8f..55547be 100644 (file)
  *
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2009 The Nucleus Group
+<<<<<<< HEAD
  * @version $Id: SKIN.php 1816 2012-05-03 01:40:10Z sakamocchi $
+=======
+ * @version $Id: SKIN.php 1886 2012-06-17 08:27:27Z sakamocchi $
+>>>>>>> skinnable-master
  */
 
 if ( !function_exists('requestVar') )
@@ -54,9 +58,13 @@ class Skin
                
                $this->id = (integer) $id;
                
+<<<<<<< HEAD
                /*
                 * NOTE: include needed action class
                 */
+=======
+               /* NOTE: include needed action class */
+>>>>>>> skinnable-master
                if ( $action_class != 'Actions' )
                {
                        if ( !class_exists($action_class, FALSE)
@@ -338,6 +346,7 @@ class Skin
                
                // retrieve contents
                $contents = FALSE;
+<<<<<<< HEAD
                if ( $type != 'fileparse' )
                {
                        $contents = $this->getContentFromDB($type);
@@ -345,6 +354,22 @@ class Skin
                else if ( $path !== ''  && i18n::strpos(realpath($path), realpath("$DIR_NUCLEUS/../")) == 0 )
                {
                        $contents = $this->getContentFromFile($path);
+=======
+               if ( $type == 'pluginadmin' )
+               {
+                       $contents = $path;
+               }
+               else
+               {
+                       if ( $type != 'fileparse' && $type != 'importAdmin')
+                       {
+                               $contents = $this->getContentFromDB($type);
+                       }
+                       else if ( $path !== ''  && i18n::strpos(realpath($path), realpath("$DIR_NUCLEUS/../")) == 0 )
+                       {
+                               $contents = $this->getContentFromFile($path);
+                       }
+>>>>>>> skinnable-master
                }
                // use base skin if this skin does not have contents
                if ( $contents === FALSE )
@@ -450,7 +475,11 @@ class Skin
                $res = DB::getValue($query);
                
                $skintypeexists = !empty($res);
+<<<<<<< HEAD
                $skintypevalue = ($content == true);
+=======
+               $skintypevalue = !empty($content);
+>>>>>>> skinnable-master
                
                if( $skintypevalue && $skintypeexists )
                {
@@ -459,6 +488,7 @@ class Skin
                                'type'          =>  $type,
                                'content'       => &$content
                        );
+<<<<<<< HEAD
                        
                        // PreUpdateSkinPart event
                        $manager->notify("PreUpdate{{$this->event_identifier}}Part", $data);
@@ -474,24 +504,49 @@ class Skin
                        $manager->notify("PreAdd{$this->event_identifier}Part", $data);
                }
                else if( !$skintypevalue && $skintypeexists )
+=======
+                       $manager->notify("PreUpdate{$this->event_identifier}Part", $data);
+               }
+               else if( $skintypevalue )
+               {
+                       $data = array(
+                               'skinid'        =>  $this->id,
+                               'type'          =>  $type,
+                               'content'       => &$content
+                       );
+                       $manager->notify("PreAdd{$this->event_identifier}Part", $data);
+               }
+               else if( $skintypeexists )
+>>>>>>> skinnable-master
                {
                        $data = array(
                                'skinid'        => $this->id,
                                'type'          => $type
                        );
+<<<<<<< HEAD
                        
+=======
+>>>>>>> skinnable-master
                        $manager->notify("PreDelete{$this->event_identifier}Part", $data);
                }
                
                // delete old thingie
+<<<<<<< HEAD
                $query = "DELETE FROM %s WHERE stype=%s and sdesc=%d";
+=======
+               $query = "DELETE FROM %s WHERE stype=%s and sdesc=%d;";
+>>>>>>> skinnable-master
                $query = sprintf($query, sql_table('skin'), DB::quoteValue($type), (integer) $this->id);
                DB::execute($query);
                
                // write new thingie
                if ( $content )
                {
+<<<<<<< HEAD
                        $query = "INSERT INTO %s (scontent, stype, sdesc) VALUE (%s, %s, %d)";
+=======
+                       $query = "INSERT INTO %s (scontent, stype, sdesc) VALUES (%s, %s, %d);";
+>>>>>>> skinnable-master
                        $query = sprintf($query, sql_table('skin'), DB::quoteValue($content), DB::quoteValue($type), (integer) $this->id);
                        DB::execute($query);
                }
@@ -499,6 +554,7 @@ class Skin
                if( $skintypevalue && $skintypeexists )
                {
                        $data = array(
+<<<<<<< HEAD
                                'skinid'        => $this->id,
                                'type'          => $type,
                                'content'       => &$content
@@ -519,12 +575,33 @@ class Skin
                        $manager->notify("PostAdd{$this->event_identifier}Part", $data);
                }
                else if( (!$skintypevalue) && $skintypeexists )
+=======
+                               'skinid'        =>  $this->id,
+                               'type'          =>  $type,
+                               'content'       => &$content
+                       );
+                       $manager->notify("PostUpdate{$this->event_identifier}Part", $data);
+               }
+               else if( $skintypevalue )
+               {
+                       $data = array(
+                               'skinid'        =>  $this->id,
+                               'type'          =>  $type,
+                               'content'       => &$content
+                       );
+                       $manager->notify("PostAdd{$this->event_identifier}Part", $data);
+               }
+               else if( $skintypeexists )
+>>>>>>> skinnable-master
                {
                        $data = array(
                                'skinid'        => $this->id,
                                'type'          => $type
                        );
+<<<<<<< HEAD
                        
+=======
+>>>>>>> skinnable-master
                        $manager->notify("PostDelete{$this->event_identifier}Part", $data);
                }
                return;
@@ -613,14 +690,24 @@ class Skin
        }
        
        /**
+<<<<<<< HEAD
         * Skin::getDefaultTypes()
+=======
+        * Skin::getNormalTypes()
+>>>>>>> skinnable-master
         * 
         * @param       string  void
         * @return      array   default skin types
         */
+<<<<<<< HEAD
        public function getDefaultTypes()
        {
                return call_user_func(array($this->action_class, 'getAvailableSkinTypes'));
+=======
+       public function getNormalTypes()
+       {
+               return call_user_func(array($this->action_class, 'getNormalSkinTypes'));
+>>>>>>> skinnable-master
        }
        
        /**
@@ -631,7 +718,11 @@ class Skin
         */
        public function getAvailableTypes()
        {
+<<<<<<< HEAD
                $default_skintypes = $this->getDefaultTypes();
+=======
+               $default_skintypes = $this->getNormalTypes();
+>>>>>>> skinnable-master
                $query = "SELECT stype FROM %s WHERE sdesc=%d;";
                $query = sprintf($query, sql_table('skin'), (integer) $this->id);
                
@@ -659,7 +750,11 @@ class Skin
         * Skin::getAllowedActionsForType()
         * Get the allowed actions for a skin type
         * returns an array with the allowed actions
+<<<<<<< HEAD
         * 
+=======
+        * @return      array   allowed action types
+>>>>>>> skinnable-master
         * @param       string  $skintype       type of the skin
         * @return      array   allowed action types
         */
index 8421d64..ea7a6ac 100644 (file)
@@ -1,3 +1,4 @@
+<<<<<<< HEAD
 <?php\r
 \r
 /*\r
@@ -290,3 +291,278 @@ class Template
                return DB::getValue($query);\r
        }\r
 }\r
+=======
+<?php
+
+/*
+ * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)
+ * Copyright (C) 2002-2009 The Nucleus Group
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * (see nucleus/documentation/index.html#license for more info)
+ */
+/**
+ * A class representing a template
+ *
+ * @license http://nucleuscms.org/license.txt GNU General Public License
+ * @copyright Copyright (C) 2002-2009 The Nucleus Group
+ * @version $Id: TEMPLATE.php 1880 2012-06-17 07:48:14Z sakamocchi $
+ */
+class Template
+{
+       /**
+        * Template::$id
+        */
+       private $id;
+       
+       /**
+        * Template::__construct()
+        * 
+        * @param       integer $templateid     id for template
+        * @return      void
+        */
+       public function __construct($templateid)
+       {
+               $this->id = intval($templateid);
+               return;
+       }
+       
+       /**
+        * Template::getID()
+        * 
+        * @param       void
+        * @return      integer id for this instance of Template class
+        */
+       public function getID()
+       {
+               return (integer) $this->id;
+       }
+       
+       /**
+        * Template::createFromName()
+        * 
+        * @statc
+        * @param       string  $name   template name
+        * @return      object  instance of Template class generated by the name
+        */
+       static public function createFromName($name)
+       {
+               return new Template(Template::getIdFromName($name));
+       }
+       
+       /**
+        * Template::getIdFromName()
+        * 
+        * @static
+        * @param       string  $name   template name
+        * @return      integer id for the template
+        */
+       static public function getIdFromName($name)
+       {
+               $name = DB::quoteValue($name);
+               $query = "SELECT tdnumber FROM %s WHERE tdname=%s";
+               $query = sprintf($query, sql_table('template_desc'), $name);
+               return DB::getValue($query);
+       }
+       
+       /**
+        * Template::updateGeneralInfo()
+        * Updates the general information about the template
+        * 
+        * @param       string  $name   template name
+        * @param       string  $desc   description for this template
+        * @return      void
+        */
+       public function updateGeneralInfo($name, $desc)
+       {
+               $query =  "UPDATE %s SET tdname=%s, tddesc=%s WHERE tdnumber=%d";
+               $query = sprintf($query, sql_table('template_desc'), DB::quoteValue($name), DB::quoteValue($desc), (integer) $this->getID());
+               DB::execute($query);
+               return;
+       }
+       
+       /**
+        * Template::update()
+        * Updates the contents of one part of the template
+        * 
+        * @param       String  $type   value for nucleus_template.tpartname
+        * @param       String  $content        value for nucleus_template.tcontent
+        * @return      Void
+        */
+       public function update($type, $content)
+       {
+               // delete old thingie
+               $query = "DELETE FROM %s WHERE tpartname=%s and tdesc=%d";
+               $query = sprintf($query, sql_table('template'), DB::quoteValue($type), (integer) $this->getID());
+               DB::execute($query);
+               
+               // write new thingie
+               if ( $content )
+               {
+                       $query = "INSERT INTO %s (tcontent, tpartname, tdesc) VALUES (%s, %s, %d)";
+                       $query = sprintf($query, sql_table('template'), DB::quoteValue($content), DB::quoteValue($type), (integer) $this->getID());
+                       DB::execute($query);
+               }
+               return;
+       }
+       
+       /**
+        * Template::deleteAllParts()
+        * Deletes all template parts from the database
+        * 
+        * @param       void
+        * @return      void
+        */
+       public function deleteAllParts()
+       {
+               $query = "DELETE FROM %s WHERE tdesc=%d";
+               $query = sprintf($query, sql_table('template'), (integer) $this->getID());
+               DB::execute($query);
+               return;
+       }
+       
+       /**
+        * Template::createNew()
+        * Creates a new template
+        *
+        * @static
+        * @param       string  $name   name for new template
+        * @param       string  $desc   description for new template
+        * @return      integer id for new template
+        */
+       static public function createNew($name, $desc)
+       {
+               global $manager;
+
+               $data = array(
+                       'name'                  => &$name,
+                       'description'   => &$desc
+               );
+               $manager->notify('PreAddTemplate', $data);
+               
+               DB::execute('INSERT INTO '.sql_table('template_desc').' (tdname, tddesc) VALUES (' . DB::quoteValue($name) . ',' . DB::quoteValue($desc) . ')');
+               $newId = DB::getInsertId();
+
+               $data = array(
+                       'templateid'    => $newId,
+                       'name'                  => $name,
+                       'description'   => $desc
+               );
+               $manager->notify('PostAddTemplate', $data);
+               
+               return $newId;
+       }
+       
+       /**
+        * Reads a template and returns an array with the parts.
+        *
+        * @static
+        * @param       string  $name name of the template file
+        * @return      array   template array
+        */
+       static public function read($name)
+       {
+               global $manager;
+               $data = array('template' => &$name);
+               $manager->notify('PreTemplateRead', $data);
+               
+               $query = "SELECT tpartname, tcontent FROM %s, %s WHERE tdesc=tdnumber and tdname=%s";
+               $query = sprintf($query, sql_table('template_desc'), sql_table('template'), DB::quoteValue($name));
+               $res = DB::getResult($query);
+               
+               $template = array();
+               foreach ( $res as $row )
+               {
+                       $template[$row['tpartname']] = $row['tcontent'];
+               }
+               
+               return $template;
+       }
+       
+       /**
+        * fills a template with values
+        * 
+        * @static
+        * @param       string  $template       Template to be used
+        * @param       array   $values         Array of all the values
+        * @return      string  string filled with tag contents
+        */
+       static public function fill($template, $values)
+       {
+               
+               if ( sizeof($values) != 0 )
+               {
+                       foreach ( $values as $key => $value )
+                       {
+                               $template = preg_replace('#<%' . preg_quote($key, '#') . '%>#', $value, $template);
+                       }
+               }
+               
+               // remove non matched template-tags
+               return preg_replace('#<%([a-zA-Z]+)?%>#', '', $template);
+       }
+       
+       /**
+        * Template::exists()
+        * returns true if there is a template with the given shortname
+        * 
+        * @static
+        * @param       string  $name   template name
+        * @return      boolean exists or not
+        */
+       static public function exists($name)
+       {
+               $query = "SELECT * FROM %s WHERE tdname=%s";
+               $query = sprintf($query, sql_table('template_desc'), DB::quoteValue($name));
+               $r = DB::getResult($query);
+               return ($r->rowCount() != 0);
+       }
+       
+       /**
+        * Template::existsID()
+        * returns true if there is a template with the given ID
+        * 
+        * @static
+        * @param       integer $id     id for template
+        * @return      bookean exists or not
+        */
+       static public function existsID($id)
+       {
+               $query = "SELECT * FROM %s WHERE tdnumber=%d";
+               $query = sprintf($query, sql_table('template_desc'), (integer) $id);
+               $r = DB::getResult($query);
+               return ($r->rowCount() != 0);
+       }
+       
+       /**
+        * Template::getNameFromId()
+        * 
+        * @static
+        * @param       integer $id     id for template
+        * @return      object  sql object
+        */
+       static public function getNameFromId($id)
+       {
+               $query = "SELECT tdname as result FROM %s WHERE tdnumber=%d";
+               $query = sprintf($query, sql_table('template_desc'), (integer) $id);
+               return DB::getValue($query);
+       }
+       
+       /**
+        * Template::getDesc()
+        * 
+        * @static
+        * @param       integer $id     id for template
+        * @return      string  description for the template
+        */
+       static public function getDesc($id)
+       {
+               $query = "SELECT tddesc FROM %s WHERE tdnumber=%d";
+               $query = sprintf($query, sql_table('template_desc'), (integer) $id);
+               return DB::getValue($query);
+       }
+}
+>>>>>>> skinnable-master
index 64ae2da..ecc4762 100644 (file)
@@ -1,3 +1,4 @@
+<<<<<<< HEAD
 <?php\r
 /*\r
  * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)\r
@@ -429,4 +430,438 @@ class Backup
                }\r
                return $queries;\r
        }\r
+=======
+<?php
+/*
+ * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)
+ * Copyright (C) 2002-2009 The Nucleus Group
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * (see nucleus/documentation/index.html#license for more info)
+ */
+/**
+ * Scripts to create/restore a backup of the Nucleus database
+ *
+ * @license http://nucleuscms.org/license.txt GNU General Public License
+ * @copyright Copyright (C) 2002-2009 The Nucleus Group
+ * @version $Id: backup.php 1812 2012-05-01 14:59:07Z sakamocchi $
+ */
+
+class Backup
+{
+       /**
+        * Backup::Backup()
+        * Constructor, just for compatibility
+        *
+        * @deprecated
+        * @param       void
+        * @return      void
+        *
+        */
+       public function Backup()
+       {
+               return;
+       }
+
+       /**
+        * Backup::do_backup()
+        * This function creates an sql dump of the database and sends it to
+        * the user as a file (can be gzipped if they want)
+        *
+        * NOTE: this remains not-static for compatibility
+        *
+        * @param boolean       $gzip   1 = compress backup file, 0 = no compression (default)
+        * @return      void
+        *
+        */
+       public function do_backup($gzip = 0)
+       {
+               global $manager, $nucleus;
+
+               // tables of which backup is needed
+               $tables = array(
+                               sql_table('actionlog'),
+                               sql_table('ban'),
+                               sql_table('blog'),
+                               sql_table('comment'),
+                               sql_table('config'),
+                               sql_table('item'),
+                               sql_table('karma'),
+                               sql_table('member'),
+                               sql_table('skin'),
+                               sql_table('skin_desc'),
+                               sql_table('team'),
+                               sql_table('template'),
+                               sql_table('template_desc'),
+                               sql_table('plugin'),
+                               sql_table('plugin_event'),
+                               sql_table('plugin_option'),
+                               sql_table('plugin_option_desc'),
+                               sql_table('category'),
+                               sql_table('activation'),
+                               sql_table('tickets'),
+               );
+
+               // add tables that plugins want to backup to the list
+               // catch all output generated by plugins
+               ob_start();
+               $query = sprintf('SELECT pfile FROM %s', sql_table('plugin'));
+               $res = DB::getResult($query);
+               foreach ( $res as $row )
+               {
+                       $plug =& $manager->getPlugin($row['pfile']);
+                       if ( $plug )
+                       {
+                               $tables = array_merge($tables, (array) $plug->getTableList());
+                       }
+               }
+               ob_end_clean();
+
+               // remove duplicates
+               $tables = array_unique($tables);
+
+               // make sure browsers don't cache the backup
+               header("Pragma: no-cache");
+
+               // don't allow gzip compression when extension is not loaded
+               if ( ($gzip != 0) && !extension_loaded("zlib") )
+               {
+                       $gzip = 0;
+               }
+
+               if ( !$gzip )
+               {
+                       $filename = 'nucleus_db_backup_' . i18n::formatted_datetime('%Y-%m-%d-%H-%M-%S', time()) . ".sql";
+               }
+               else
+               {
+                       // use an output buffer
+                       @ob_start();
+                       @ob_implicit_flush(0);
+                               
+                       // set filename
+                       $filename = 'nucleus_db_backup_' . i18n::formatted_datetime('%Y-%m-%d-%H-%M-%S', time()) . ".sql.gz";
+               }
+
+               // send headers that tell the browser a file is coming
+               header("Content-Type: text/x-delimtext; name=\"$filename\"");
+               header("Content-disposition: attachment; filename=$filename");
+
+               // dump header
+               echo "/*\n";
+               echo " * This is a backup file generated by Nucleus \n";
+               echo " * http://www.nucleuscms.org/\n";
+               echo " * \n";
+               echo " * backup-date: " . i18n::formatted_datetime('rfc822GMT', time()) . "\n";
+               echo " * Nucleus CMS version: " . $nucleus['version'] . "\n";
+               echo " * \n";
+               echo " * WARNING: Only try to restore on servers running the exact same version of Nucleus\n";
+               echo " */\n";
+
+               // dump all tables
+               reset($tables);
+               /* NOTE: hope to use 'self' keyword here but works bad so here use __CLASS__ macro. */
+               array_walk($tables, array(__CLASS__, 'dump_table'));
+
+               if ( $gzip )
+               {
+                       $Size = ob_get_length();
+                       $Crc = crc32(ob_get_contents());
+                       $contents = gzcompress(ob_get_contents());
+                       ob_end_clean();
+                       echo "\x1f\x8b\x08\x00\x00\x00\x00\x00" . substr($contents, 0, strlen($contents) - 4)
+                       . self::gzip_print_four_characters($Crc) . self::gzip_print_four_characters($Size);
+               }
+               exit;
+       }
+
+       /**
+        * Backup::dump_table()
+        * Creates a dump for a single table
+        * ($tablename and $key are filled in by array_walk)
+        *
+        * @static
+        * @param       string  $tablename
+        * @param       string  $key
+        */
+       static private function dump_table($tablename, $key)
+       {
+               echo "/*\n";
+               echo " * TABLE: " . $tablename . "\n";
+               echo " */\n";
+
+               // dump table structure
+               self::dump_structure($tablename);
+
+               // dump table contents
+               self::dump_contents($tablename);
+               return;
+       }
+
+       /**
+        * Backup::dump_structure()
+        * Creates a dump of the table structure for one table
+        *
+        * @static
+        * @param       string  $tablename
+        * @return      void
+        *
+        */
+       static private function dump_structure($tablename)
+       {
+               // add command to drop table on restore
+               echo "DROP TABLE IF EXISTS {$tablename};\n\n";
+               $result = DB::getRow("SHOW CREATE TABLE {$tablename}");
+               echo $result['Create Table'];
+               echo ";\n\n";
+               return;
+       }
+
+       /**
+        * Backup::get_field_names()
+        * Returns the field named for the given table in the
+        * following format:
+        * (column1, column2, ..., columnn)
+        *
+        * @static
+        * @param       resource        $result
+        * @param       integer $num_fields
+        * @return      string
+        */
+       static private function get_field_names($result, $num_fields)
+       {
+               $fields = array();
+               for ( $j = 0; $j < $num_fields; $j++ )
+               {
+                       $col = $result->getColumnMeta($j);
+                       $fields[] = $col['name'];
+               }
+
+               return '(' . implode(', ', $fields) . ')';
+       }
+
+       /**
+        * Backup::dump_contents()
+        * Creates a dump of the table content for one table
+        *
+        * @static
+        * @param       string  $tablename
+        * @return      void
+        *
+        */
+       static private function dump_contents($tablename)
+       {
+               /*
+                * Grab the data from the table.
+               */
+               $result = DB::getResult("SELECT * FROM $tablename");
+
+               if ( $result->rowCount() > 0 )
+               {
+                       echo "\n";
+                       echo "/*\n";
+                       echo " * Table Data for {$tablename}\n";
+                       echo " */\n";
+               }
+
+               $num_fields = $result->columnCount();
+
+               /*
+                * Compose fieldname list
+               */
+               $tablename_list = self::get_field_names($result, $num_fields);
+
+               /*
+                * Loop through the resulting rows and build the sql statement.
+               */
+               foreach ( $result as $row )
+               {
+                       // Start building the SQL statement.
+                       echo 'INSERT INTO ' . $tablename . ' ' . $tablename_list . ' VALUES(';
+                               
+                       // Loop through the rows and fill in data for each column
+                       for ( $j = 0; $j < $num_fields; $j++ )
+                       {
+                               if ( !isset($row[$j]) )
+                               {
+                                       // no data for column
+                                       echo ' NULL';
+                               }
+                               elseif ( $row[$j] != '' )
+                               {
+                                       // data
+                                       echo ' ' . DB::quoteValue($row[$j]);
+                               }
+                               else
+                               {
+                                       // empty column (!= no data!)
+                                       echo "''";
+                               }
+
+                               // only add comma when not last column
+                               if ( $j != ($num_fields - 1) )
+                               {
+                                       echo ',';
+                               }
+                       }
+                       echo ");\n";
+               }
+               echo "\n";
+               return;
+       }
+
+       /**
+        * Backup::gzip_print_four_characters()
+        *
+        * @static
+        * @param       integer $val
+        * @return      integer
+        */
+       static private function gzip_print_four_characters($Val)
+       {
+               for ( $i = 0; $i < 4; $i ++ )
+               {
+                       $return .= chr($Val % 256);
+                       $Val = floor($Val / 256);
+               }
+               return $return;
+       }
+
+       /**
+        * Backup::do_restore()
+        * Restores a database backup
+        *
+        * NOTE: this remains not-static for compatibility
+        *
+        * @param       void
+        * @return      void
+        */
+       public function do_restore()
+       {
+               $uploadInfo = postFileInfo('backup_file');
+
+               // first of all: get uploaded file:
+               if ( array_key_exists('name', $uploadInfo) && empty($uploadInfo['name']) )
+               {
+                       return 'No file uploaded';
+               }
+               if ( !is_uploaded_file($uploadInfo['tmp_name']) )
+               {
+                       return 'No file uploaded';
+               }
+
+               $backup_file_name = $uploadInfo['name'];
+               $backup_file_tmpname = $uploadInfo['tmp_name'];
+               $backup_file_type = $uploadInfo['type'];
+
+               if ( !file_exists($backup_file_tmpname) )
+               {
+                       return 'File Upload Error';
+               }
+
+               if ( !preg_match("#^(text/[a-zA-Z]+)|(application/(x\-)?gzip(\-compressed)?)|(application/octet-stream)$#i", $backup_file_type) )
+               {
+                       return 'The uploaded file is not of the correct type';
+               }
+
+               $gzip = 0;
+               if ( preg_match("#\.gz#i", $backup_file_name) )
+               {
+                       $gzip = 1;
+               }
+
+               if ( !extension_loaded("zlib") && $gzip )
+               {
+                       return 'Cannot decompress gzipped backup (zlib package not installed)';
+               }
+
+               // get sql query according to gzip setting (either decompress, or not)
+               $contents = self::get_contents($backup_file_tmpname, $gzip);
+               if ( $contents == '' )
+               {
+                       return 'Cannot get contents from this file.';
+               }
+
+               /* detect lines */
+               $lines = preg_split('/[\r\n]/', $contents);
+               if( $lines === $contents )
+               {
+                       return 'Cannot parse contents from this file';
+               }
+
+               /* get sql statements from each lines */
+               $queries = self::get_queries($lines);
+               if ( $queries === array() )
+               {
+                       return "Cannot get SQL queries from this file.";
+               }
+
+               /* execute sql statements */
+               foreach ( $queries as $query )
+               {
+                       if ( DB::execute($query) === FALSE )
+                       {
+                               $error = DB::getError();
+                               debug('SQL Error: ' . $error[2]);
+                               break;
+                       }
+                       continue;
+               }
+               return;
+       }
+
+       static private function get_contents($temporary_name, $gzip = 0)
+       {
+               $contents = '';
+               if ( $gzip )
+               {
+                       // decompress and read
+                       $gz_ptr = gzopen($temporary_name, 'rb');
+                       while ( !gzeof($gz_ptr) )
+                       {
+                               $contents .= gzgets($gz_ptr, 100000);
+                       }
+               }
+               else
+               {
+                       // just read
+                       $fsize = filesize($temporary_name);
+                       if ( $fsize > 0 )
+                       {
+                               $contents = fread(fopen($temporary_name, 'r'), $fsize);
+                       }
+               }
+               return $contents;
+       }
+
+       static private function get_queries($lines)
+       {
+               $query = '';
+               $queries = array();
+               foreach ( $lines as $line )
+               {
+                       $line = trim($line);
+                       if ( !$line || $line[0] == '#' || preg_match('#^[\s|/]?\*#', $line) )
+                       {
+                               continue;
+                       }
+
+                       if ( preg_match('/^(.*);$/', $line, $matches) === 0 )
+                       {
+                               $query .= $line;
+                       }
+                       else
+                       {
+                               $query .= $matches[1];
+                               $queries[] = $query;
+                               $query = '';
+                       }
+                       continue;
+               }
+               return $queries;
+       }
+>>>>>>> skinnable-master
 }
\ No newline at end of file
index 9a7688a..e6448a8 100644 (file)
@@ -1,3 +1,4 @@
+<<<<<<< HEAD
 <?php\r
 \r
 /*\r
@@ -1804,6 +1805,1844 @@ function revertArrayForSanitizing($array, &$dst)
 }\r
 \r
 /**\r
+=======
+<?php
+
+/*
+ * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)
+ * Copyright (C) 2002-2009 The Nucleus Group
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * (see nucleus/documentation/index.html#license for more info)
+ */
+/**
+ * @license http://nucleuscms.org/license.txt GNU General Public License
+ * @copyright Copyright (C) 2002-2009 The Nucleus Group
+ * @version $Id: globalfunctions.php 1886 2012-06-17 08:27:27Z sakamocchi $
+ */
+
+/* needed if we include globalfunctions from install.php */
+global $nucleus, $CONF, $DIR_LIBS, $DIR_LOCALES, $manager, $member, $MYSQL_HANDLER, $StartTime;
+
+/* just for benchmark tag */
+$StartTime = microtime(TRUE);
+
+$nucleus['version'] = 'v4.00 SVN';
+$nucleus['codename'] = '';
+
+/*
+ * make sure there's no unnecessary escaping:
+ * set_magic_quotes_runtime(0);
+ */
+if ( version_compare(PHP_VERSION, '5.3.0', '<') )
+{
+       ini_set('magic_quotes_runtime', '0');
+}
+
+/* check and die if someone is trying to override internal globals (when register_globals turn on) */
+checkVars(array('nucleus', 'CONF', 'DIR_LIBS',
+'MYSQL_HOST', 'MYSQL_USER', 'MYSQL_PASSWORD', 'MYSQL_DATABASE',
+'DIR_LOCALES', 'DIR_PLUGINS',
+'HTTP_GET_VARS', 'HTTP_POST_VARS', 'HTTP_COOKIE_VARS', 'HTTP_ENV_VARS',
+'HTTP_SESSION_VARS', 'HTTP_POST_FILES', 'HTTP_SERVER_VARS',
+'GLOBALS', 'argv', 'argc', '_GET', '_POST', '_COOKIE', '_ENV', '_SESSION', '_SERVER', '_FILES'));
+
+if ( !isset($CONF) )
+{
+       $CONF = array();
+}
+
+/* debug mode */
+if ( array_key_exists('debug', $CONF) && $CONF['debug'] )
+{
+       /* report all errors! */
+       error_reporting(E_ALL | E_STRICT);
+}
+else
+{
+       ini_set('display_errors','0');
+       error_reporting(E_ERROR | E_WARNING | E_PARSE);
+}
+
+/*
+ * alertOnHeadersSent
+ *  Displays an error when visiting a public Nucleus page and headers have
+ *  been sent out to early. This usually indicates an error in either a
+ *  configuration file or a translation file, and could cause Nucleus to
+ *  malfunction
+ */
+if ( !array_key_exists('alertOnHeadersSent', $CONF) )
+{
+       $CONF['alertOnHeadersSent'] = 1;
+}
+/*
+ * alertOnSecurityRisk
+ * Displays an error only when visiting the admin area, and when one or
+ *  more of the installation files (install.php, install.sql, upgrades/
+ *  directory) are still on the server.
+ */
+if ( !array_key_exists('alertOnSecurityRisk', $CONF) )
+{
+       $CONF['alertOnSecurityRisk'] = 1;
+}
+/*
+ * Set these to 1 to allow viewing of future items or draft items
+ * Should really never do this, but can be useful for some plugins that might need to
+ * Could cause some other issues if you use future posts otr drafts
+ * So use with care
+ */
+$CONF['allowDrafts'] = 0;
+$CONF['allowFuture'] = 0;
+
+if ( getNucleusPatchLevel() > 0 )
+{
+       $nucleus['version'] .= '/' . getNucleusPatchLevel();
+}
+
+/* Avoid notices */
+if ( !array_key_exists('installscript', $CONF) || empty($CONF['installscript']) )
+{
+       $CONF['installscript'] = 0;
+}
+if ( !array_key_exists('UsingAdminArea', $CONF) )
+{
+       $CONF['UsingAdminArea'] = 0;
+}
+
+if ( !headers_sent() )
+{
+       header('Generator: Nucleus CMS ' . $nucleus['version']);
+}
+
+
+/* TODO: This is for compatibility since 4.0, should be obsoleted at future release. */
+if ( !isset($DIR_LOCALES) )
+{
+       $DIR_LOCALES = $DIR_NUCLEUS . 'locales/';
+}
+global $DIR_LANG;
+if ( !isset($DIR_LANG) )
+{
+       $DIR_LANG = $DIR_LOCALES;
+}
+
+/* load and initialize i18n class */
+if (!class_exists('i18n', FALSE))
+{
+       include($DIR_LIBS . 'i18n.php');
+}
+if ( !i18n::init('UTF-8', $DIR_LOCALES) )
+{
+       exit('Fail to initialize i18n class.');
+}
+
+/* TODO: This is just for compatibility since 4.0, should be obsoleted at future release. */
+define('_CHARSET', i18n::get_current_charset());
+
+
+/*
+ * NOTE: Since 4.0 release, Entity class becomes to be important class
+ *  with some wrapper functions for htmlspechalchars/htmlentity PHP's built-in function
+ */
+include($DIR_LIBS . 'ENTITY.php');
+
+/* we will use postVar, getVar, ... methods instead of $_GET, $_POST ... */
+if ( $CONF['installscript'] != 1 )
+{
+       /* vars were already included in install.php */
+       include_once($DIR_LIBS . 'vars4.1.0.php');
+       
+       /* added for 4.0 DB::* wrapper and compatibility sql_* */
+       include_once($DIR_LIBS . 'sql/sql.php');
+}
+
+/* include core classes that are needed for login & plugin handling */
+include($DIR_LIBS . 'MEMBER.php');
+include($DIR_LIBS . 'ACTIONLOG.php');
+include($DIR_LIBS . 'MANAGER.php');
+include($DIR_LIBS . 'PLUGIN.php');
+
+$manager =& MANAGER::instance();
+
+/* only needed when updating logs */
+if ( $CONF['UsingAdminArea'] )
+{
+       /* XML-RPC client classes */
+       include($DIR_LIBS . 'xmlrpc.inc.php');
+       include($DIR_LIBS . 'ADMIN.php');
+}
+
+
+/* connect to database */
+if ( !isset($MYSQL_HANDLER) )
+{
+       $MYSQL_HANDLER = array('mysql','');
+}
+if ( $MYSQL_HANDLER[0] == '' )
+{
+       $MYSQL_HANDLER[0] = 'mysql';
+}
+DB::setConnectionInfo($MYSQL_HANDLER[1], $MYSQL_HOST, $MYSQL_USER, $MYSQL_PASSWORD, $MYSQL_DATABASE);
+
+
+/* force locale or charset */
+$locale = '';
+$charset = i18n::get_current_charset();
+
+$data = array(
+       'locale'        => &$locale,
+       'charset'       => &$charset
+);
+$manager->notify('ForceLocale', $data);
+
+if ( $data['locale'] !== '' )
+{
+       i18n::set_forced_locale($data['locale']);
+}
+if ( $data['charset'] !== '' )
+{
+       i18n::set_forced_charset($data['charset']);
+}
+unset($locale);
+unset($charset);
+
+
+/* convert forced charset to current charset */
+if ( i18n::get_forced_charset() != i18n::get_current_charset() )
+{
+       $_POST          = i18n::convert_array($_POST, i18n::get_forced_charset());
+       $_GET           = i18n::convert_array($_GET, i18n::get_forced_charset());
+       $_REQUEST       = i18n::convert_array($_REQUEST, i18n::get_forced_charset());
+       $_COOKIE        = i18n::convert_array($_COOKIE, i18n::get_forced_charset());
+       $_FILES         = i18n::convert_array($_FILES, i18n::get_forced_charset());
+       
+       if ( session_id() !== '' )
+       {
+               $_SESSION = i18n::convert_array($_SESSION, i18n::get_forced_charset());
+       }
+}
+
+
+/* sanitize option */
+$bLoggingSanitizedResult = 0;
+$bSanitizeAndContinue = 0;
+$orgRequestURI = serverVar('REQUEST_URI');
+sanitizeParams();
+
+/* logs sanitized result if need */
+if ( $orgRequestURI !== serverVar('REQUEST_URI') )
+{
+       $msg = "Sanitized [" . serverVar('REMOTE_ADDR') . "] ";
+       $msg .= $orgRequestURI . " -> " . serverVar('REQUEST_URI');
+       if ( $bLoggingSanitizedResult )
+       {
+               addToLog(WARNING, $msg);
+       }
+       if ( !$bSanitizeAndContinue )
+       {
+               die("");
+       }
+}
+
+/* get all variables that can come from the request and put them in the global scope */
+$blogid                = requestVar('blogid');
+$itemid                = intRequestVar('itemid');
+$catid         = intRequestVar('catid');
+$skinid                = requestVar('skinid');
+$memberid      = requestVar('memberid');
+$archivelist = requestVar('archivelist');
+$imagepopup    = requestVar('imagepopup');
+$archive       = requestVar('archive');
+$query         = requestVar('query');
+$highlight     = requestVar('highlight');
+$amount                = requestVar('amount');
+$action                = requestVar('action');
+$nextaction    = requestVar('nextaction');
+$maxresults    = requestVar('maxresults');
+$startpos      = intRequestVar('startpos');
+$errormessage = '';
+$error         = '';
+$special       = requestVar('special');
+
+
+/* read config */
+getConfig();
+
+
+/* Properly set $CONF['Self'] and others if it's not set...
+ * usually when we are access from admin menu
+ */
+if ( !array_key_exists('Self', $CONF) )
+{
+       $CONF['Self'] = $CONF['IndexURL'];
+       /* strip trailing */
+       if ( $CONF['Self'][i18n::strlen($CONF['Self']) -1] == "/" )
+       {
+               $CONF['Self'] = i18n::substr($CONF['Self'], 0, i18n::strlen($CONF['Self']) -1);
+       }
+}
+
+$CONF['ItemURL']               = $CONF['Self'];
+$CONF['ArchiveURL']            = $CONF['Self'];
+$CONF['ArchiveListURL']        = $CONF['Self'];
+$CONF['MemberURL']             = $CONF['Self'];
+$CONF['SearchURL']             = $CONF['Self'];
+$CONF['BlogURL']               = $CONF['Self'];
+$CONF['CategoryURL']   = $CONF['Self'];
+
+/* automatically use simpler toolbar for mozilla */
+if ( ($CONF['DisableJsTools'] == 0)
+   && i18n::strpos(serverVar('HTTP_USER_AGENT'), 'Mozilla/5.0') !== FALSE
+   && i18n::strpos(serverVar('HTTP_USER_AGENT'), 'Gecko') !== FALSE )
+{
+       $CONF['DisableJsTools'] = 2;
+}
+
+/* login processing */
+$member = new Member();
+if ( $action == 'login' )
+{
+       $login = postVar('login');
+       $password = postVar('password');
+       $shared = intPostVar('shared');
+       $member->login($login, $password, $shared);
+}
+elseif ( ($action == 'logout') )
+{
+       $member->logout();
+}
+else
+{
+       $member->cookielogin();
+}
+
+/* TODO: This is for backward compatibility, should be obsoleted near future. */
+if ( !preg_match('#^(.+)_(.+)_(.+)$#', $CONF['Locale'])
+  && ($CONF['Locale'] = i18n::convert_old_language_file_name_to_locale($CONF['Locale'])) === FALSE )
+{
+       $CONF['Locale'] = 'en_Latn_US';
+}
+if ( !array_key_exists('Language', $CONF) )
+{
+       $CONF['Language'] = i18n::convert_locale_to_old_language_file_name($CONF['Locale']);
+}
+$locale = $CONF['Locale'];
+
+
+/* NOTE: include translation file and set locale */
+if ( $member->isLoggedIn() )
+{
+       if ( $member->getLocale() )
+       {
+               $locale = $member->getLocale();
+       }
+}
+else
+{
+       if ( i18n::get_forced_locale() !== '' )
+       {
+               $locale = i18n::get_forced_locale();
+       }
+}
+include_translation($locale);
+i18n::set_current_locale($locale);
+
+
+/* login completed */
+$data = array('loggedIn' => $member->isLoggedIn());
+$manager->notify('PostAuthentication', $data);
+
+/* next action */
+if ( $member->isLoggedIn() && $nextaction )
+{
+       $action = $nextaction;
+}
+
+/* first, let's see if the site is disabled or not. always allow admin area access. */
+if ( $CONF['DisableSite'] && !$member->isAdmin() && !$CONF['UsingAdminArea'] )
+{
+       redirect($CONF['DisableSiteURL']);
+       exit;
+}
+
+/* load other classes */
+include($DIR_LIBS . 'PARSER.php');
+include($DIR_LIBS . 'SKIN.php');
+include($DIR_LIBS . 'TEMPLATE.php');
+include($DIR_LIBS . 'BLOG.php');
+include($DIR_LIBS . 'BODYACTIONS.php');
+include($DIR_LIBS . 'COMMENTS.php');
+include($DIR_LIBS . 'COMMENT.php');
+include($DIR_LIBS . 'NOTIFICATION.php');
+include($DIR_LIBS . 'BAN.php');
+include($DIR_LIBS . 'SEARCH.php');
+include($DIR_LIBS . 'LINK.php');
+
+/* set lastVisit cookie (if allowed) */
+if ( !headers_sent() )
+{
+       if ( $CONF['LastVisit'] )
+       {
+               setcookie($CONF['CookiePrefix'] . 'lastVisit', time(), time() + 2592000, $CONF['CookiePath'], $CONF['CookieDomain'], $CONF['CookieSecure']);
+       }
+       else
+       {
+               setcookie($CONF['CookiePrefix'] . 'lastVisit', '', (time() - 2592000), $CONF['CookiePath'], $CONF['CookieDomain'], $CONF['CookieSecure']);
+       }
+}
+
+/* for path resolving */
+$virtualpath = getVar('virtualpath');
+if ( getVar('virtualpath') == '' )
+{
+       $virtualpath = serverVar('PATH_INFO');
+}
+
+/*
+ * switch URLMode back to normal when $CONF['Self'] ends in .php
+ * this avoids urls like index.php/item/13/index.php/item/15
+ */
+if ( !array_key_exists('URLMode', $CONF) || ($CONF['URLMode'] != 'pathinfo') )
+{
+       $CONF['URLMode'] = 'normal';
+}
+else
+{
+       if ( i18n::substr($CONF['Self'], i18n::strlen($CONF['Self']) - 4) != '.php' )
+       {
+               decodePathInfo($virtualpath);
+       }
+}
+
+/*
+ * PostParseURL is a place to cleanup any of the path-related global variables before the selector function is run.
+ * It has 2 values in the data in case the original virtualpath is needed, but most the use will be in tweaking
+ * global variables to clean up (scrub out catid or add catid) or to set someother global variable based on
+ * the values of something like catid or itemid
+ * New in 3.60
+ */
+$data = array(
+       'type' => basename(serverVar('SCRIPT_NAME')),
+       'info' => $virtualpath
+);
+$manager->notify('PostParseURL', $data);
+
+/*
+ * NOTE: Here is the end of initialization
+ */
+
+/**
+ * include_libs()
+ * This function includes or requires the specified library file
+ * 
+ * @param      string  $file
+ * @param      boolean $once use the _once() version
+ * @param      boolean $require use require() instead of include()
+ * @return     void
+ */
+function include_libs($file, $once = TRUE, $require = TRUE)
+{
+       global $DIR_LIBS;
+       
+       // $DIR_LIBS isn't a directory
+       if ( !is_dir($DIR_LIBS) )
+       {
+               exit;
+       }
+       
+       $lib_path = $DIR_LIBS . $file;
+       
+       if ( $once && $require )
+       {
+               require_once($lib_path);
+       }
+       else if ( $once && !$require )
+       {
+               include_once($lib_path);
+       }
+       else if ( $require )
+       {
+               require($lib_path);
+       }
+       else
+       {
+               include($lib_path);
+       }
+       return;
+}
+
+/**
+ * include_plugins()
+ * This function includes or requires the specified plugin file
+ * 
+ * @param      string  $file
+ * @param      boolean $once use the _once() version
+ * @param      boolean $require use require() instead of include()
+ * @return     
+ */
+function include_plugins($file, $once = TRUE, $require = TRUE)
+{
+       global $DIR_PLUGINS;
+       
+       // begin if: $DIR_LIBS isn't a directory
+       if ( !is_dir($DIR_PLUGINS) )
+       {
+               exit;
+       }
+       
+       $plugin_path = $DIR_PLUGINS . $file;
+       
+       // begin if: 
+       if ( $once && $require )
+       {
+               require_once($plugin_path);
+       }
+       else if ( $once && !$require )
+       {
+               include_once($plugin_path);
+       }
+       elseif ( $require )
+       {
+               require($plugin_path);
+       }
+       else
+       {
+               include($plugin_path);
+       }
+       return;
+}
+
+/**
+ * include_translation()
+ * This function decide which locale is used and include translation
+ * 
+ * @param      string  &$locale        locale name referring to 'language tags' defined in RFC 5646
+ * @return     void
+ */
+function include_translation(&$locale)
+{
+       global $DIR_LOCALES;
+       
+       $translation_file = $DIR_LOCALES . $locale . '.' . i18n::get_current_charset() . '.php';
+       if ( !file_exists($translation_file) )
+       {
+               $locale = 'en_Latn_US';
+               $translation_file = $DIR_LOCALES . 'en_Latn_US.ISO-8859-1.php';
+       }
+       include($translation_file);
+       
+       /*
+        * NOTE:
+        * PHP is written by C and utilize C library, whose APIs are defined in POSIX.
+        * 
+        * setlocale() is one of APIs of C library.
+        * but the argument value for setlocale() depends on each implements
+        * 
+        * The latest POSIX standard:
+        * The Open Group Base Specifications Issue 7
+        * IEEE Std 1003.1™-2008
+        * http://pubs.opengroup.org/onlinepubs/9699919799/mindex.html
+        * 
+        * Microsoft's operating system uses their own implementation
+        *  Language Strings
+        *   http://msdn.microsoft.com/en-us/library/39cwe7zf%28v=vs.110%29.aspx
+        *  Country/Region Strings
+        *   http://msdn.microsoft.com/en-us/library/cdax410z%28v=vs.110%29.aspx
+        * 
+        * Linux and Unix (in this meaning, Apple's OS X derives from UNIX) uses ISO standard.
+        *  two characters language tag (ISO 639-1)
+        *  two characters region and country lag (ISO 3166-1 alpha-1)
+        * 
+        */
+       if ( PHP_OS == "WIN32" || PHP_OS == "WINNT" )
+       {
+               /* LOCALE_IN_WINDOWS is defined in each translation files */
+               setlocale(LC_ALL, _LOCALE_IN_WINDOWS);
+       }
+       else
+       {
+               setlocale(LC_ALL, preg_replace('#(.+)_(.+)_(.+)#', '$1-$3', $locale));
+       }
+       return;
+}
+
+/**
+ * intPostVar()
+ * This function returns the integer value of $_POST for the variable $name
+ * 
+ * @param      string  $name   field to get the integer value of
+ * @return     integer
+ */
+function intPostVar($name)
+{
+       return (integer) postVar($name);
+}
+
+
+/**
+ * intGetVar()
+ * This function returns the integer value of $_GET for the variable $name
+ * 
+ * @param      string  $name   field to get the integer value of
+ * @return     integer
+ */
+function intGetVar($name)
+{
+       return (integer) getVar($name);
+}
+
+
+/**
+ * intRequestVar()
+ * This function returns the integer value of $_REQUEST for the variable $name. Also checks $_GET and $_POST if not found in $_REQUEST
+ * 
+ * @param string $name field to get the integer value of
+ * @return int
+ */
+function intRequestVar($name)
+{
+       return (integer) requestVar($name);
+}
+
+
+/**
+ * intCookieVar()
+ * This function returns the integer value of $_COOKIE for the variable $name
+ * 
+ * @param      string  $name   field to get the integer value of
+ * @return     integer
+ */
+function intCookieVar($name)
+{
+       return (integer) cookieVar($name);
+}
+
+/**
+ * getNucleusVersion()
+ * This function returns the current Nucleus version (100 = 1.00, 101 = 1.01, etc...)
+ * 
+ * @param      void
+ * @return     integer
+ */
+function getNucleusVersion()
+{
+       return 400;
+}
+
+/**
+ * getNucleusPatchLevel()
+ * TODO: Better description of this function.
+ *
+ * Power users can install patches in between nucleus releases. These patches
+ * usually add new functionality in the plugin API and allow those to
+ * be tested without having to install CVS.
+ *
+ *@param       void
+ * @return     integer
+ */
+function getNucleusPatchLevel()
+{
+       return 0;
+}
+
+/**
+ * getLatestVersion()
+ * This function returns the latest Nucleus version available for download from nucleuscms.org or FALSE if unable to attain data
+ * Format will be major.minor/patachlevel e.g. 3.41 or 3.41/02
+ * 
+ * @param      void
+ * @return     mixed
+ */
+function getLatestVersion()
+{
+       // begin if: cURL is not available in this PHP installation
+       if ( !function_exists('curl_init') )
+       {
+               return FALSE;
+       }
+       
+       $curl = curl_init();
+       $timeout = 5;
+       
+       curl_setopt ($curl, CURLOPT_URL, 'http://nucleuscms.org/version_check.php');
+       curl_setopt ($curl, CURLOPT_RETURNTRANSFER, 1);
+       curl_setopt ($curl, CURLOPT_CONNECTTIMEOUT, $timeout);
+       
+       $return = curl_exec($curl);
+       
+       curl_close($curl);
+       
+       return $return;
+}
+
+/**
+ * sql_table()
+ * This function returns a Nucleus table name with the appropriate prefix
+ * @param string $name
+ * @return string
+ */
+function sql_table($name)
+{
+       global $MYSQL_PREFIX;
+       
+       // begin if: no MySQL prefix
+       if ( empty($MYSQL_PREFIX) )
+       {
+               return 'nucleus_' . $name;
+       }
+       // else: use MySQL prefix
+       else
+       {
+               return $MYSQL_PREFIX . 'nucleus_' . $name;
+       }
+       return;
+}
+
+/**
+ * sendContentType()
+ * This function sends the Content-Type header if headers have not already been sent
+ * It also determines if the browser can accept application/xhtml+xml and sends it only to those that can.
+ * 
+ * if content type is application/xhtml+xml, only send it to browsers
+ * that can handle it (IE6 cannot). Otherwise, send text/html
+ *
+ * v2.5:
+ * For admin area pages, keep sending text/html (unless it's a debug version)
+ * application/xhtml+xml still causes too much problems with the javascript implementations
+ *
+ * v3.3:
+ * ($CONF['UsingAdminArea'] && !$CONF['debug']) gets removed,
+ * application/xhtml+xml seems to be working, so we're going to use it if we can.
+ * 
+ * @param      string  $content_type   MIME media type registered to IANA, http://www.iana.org/assignments/media-types/index.html
+ * @param      string  $page_type              
+ * @param      string  $charset                Deprecated. This has no meaning.
+ * @return     void
+ * 
+ */
+function sendContentType($content_type, $page_type = '', $charset = '')
+{
+       global $manager, $CONF;
+       
+       if ( headers_sent() )
+       {
+               return;
+       }
+       
+       /* NOTE: MIME Media Type */
+       if ( ($content_type == 'application/xhtml+xml')
+               && (!stristr(serverVar('HTTP_ACCEPT'), 'application/xhtml+xml') ) )
+       {
+               $content_type = 'text/html';
+       }
+       
+       /* NOTE: generate event */
+       $data = array(
+               'pageType'              =>  $page_type,
+               'contentType'   => &$content_type
+       );
+       $manager->notify('PreSendContentType', $data);
+       
+       /* NOTE: confirm MIME Media Type */
+       $content_type = preg_replace('#[^a-zA-Z0-9-+./]#', '', $content_type);
+       
+       /* NOTE: confirm character set */
+       $charset = i18n::get_current_charset();
+       if ( i18n::get_forced_charset() !== '' )
+       {
+               $charset = i18n::get_forced_charset();
+       }
+       
+       /* NOTE: send HTTP 1.1 header */
+       header("Content-Type: {$content_type}; charset={$charset}");
+       
+       /* NOTE: set handler for translating character set */
+       if ( $charset != i18n::get_current_charset() )
+       {
+               ob_start(array('i18n', 'convert_handler'));
+       }
+       
+       return;
+}
+
+/**
+ * parseHighlight()
+ * This function parses a query into an array of expressions that can be passed on to the highlight method
+ * @param      string  $query
+ * @return     void
+ */
+function parseHighlight($query)
+{
+       // TODO: add more intelligent splitting logic
+       
+       // get rid of quotes
+       $query = preg_replace('/\'|"/', '', $query);
+       
+       if ( !$query )
+       {
+               return array();
+       }
+       
+       $aHighlight = preg_split('# #', $query);
+       
+       for ( $i = 0; $i < count($aHighlight); $i++ )
+       {
+               $aHighlight[$i] = trim($aHighlight[$i]);
+               
+               if ( i18n::strlen($aHighlight[$i]) < 3 )
+               {
+                       unset($aHighlight[$i]);
+               }
+       }
+       
+       if ( count($aHighlight) == 1 )
+       {
+               return $aHighlight[0];
+       }
+       else
+       {
+               return $aHighlight;
+       }
+       return;
+}
+
+/**
+ * getConfig()
+ * 
+ * @param      void
+ * @return     void
+ */
+function getConfig()
+{
+       global $CONF;
+       
+       $query = sprintf('SELECT * FROM %s', sql_table('config'));
+       $res = DB::getResult($query);
+       
+       foreach ( $res as $row )
+       {
+               $CONF[$row['name']] = $row['value'];
+       }
+       return;
+}
+
+/**
+ * This function gets the blog ID from the blog name
+ * @param string $name
+ * @return
+ */
+function getBlogIDFromName($name)
+{
+       $query = sprintf('SELECT bnumber AS result FROM %s WHERE bshortname=%s', sql_table('blog'), DB::quoteValue($name));
+       return DB::getValue($query);
+}
+
+/**
+ * This function gets the blog name from the blog ID
+ * @param int $id
+ * @return object
+ */
+function getBlogNameFromID($id)
+{
+       $query = sprintf('SELECT bname AS result FROM %s WHERE bnumber=%d', sql_table('blog'), intval($id));
+       return DB::getValue($query);
+}
+
+/**
+ * This function gets the blog ID from the item ID
+ * @param int $item_id
+ * @return object
+ */
+function getBlogIDFromItemID($item_id)
+{
+       $query = sprintf('SELECT iblog AS result FROM %s WHERE inumber=%d', sql_table('item'), intval($item_id));
+       return DB::getValue($query);
+}
+
+/**
+ * This function gets the blog ID from the comment ID
+ * @param int $comment_id
+ * @return object
+ */
+function getBlogIDFromCommentID($comment_id)
+{
+       $query = sprintf('SELECT cblog AS result FROM %s WHERE cnumber=%d', sql_table('comment'), intval($comment_id));
+       return DB::getValue($query);
+}
+
+/**
+ * This function gets the blog ID from the category ID
+ * @param int $category_id
+ * @return object
+ */
+function getBlogIDFromCatID($category_id)
+{
+       $query = sprintf('SELECT cblog AS result FROM %s WHERE catid=%d', sql_table('category'), intval($category_id));
+       return DB::getValue($query);
+}
+
+/**
+ * This function gets the category ID from the category name
+ * @param int $name
+ * @return object
+ */
+function getCatIDFromName($name)
+{
+       $query = sprintf('SELECT catid AS result FROM %s WHERE cname=%s', sql_table('category'), DB::quoteValue($name));
+       return DB::getValue($query);
+}
+
+
+/**
+ * functions to be used in index.php to select something
+ */
+function selectBlog($shortname)
+{
+       global $blogid, $archivelist;
+       $blogid = getBlogIDFromName($shortname);
+       
+       // also force archivelist variable, if it is set
+       if ( $archivelist )
+       {
+               $archivelist = $blogid;
+       }
+       return;
+}
+function selectSkin($skinname)
+{
+       global $skinid;
+       $skinid = SKIN::getIdFromName($skinname);
+       return;
+}
+function selectCategory($cat)
+{
+       global $catid;
+       if ( is_numeric($cat) )
+       {
+               $catid = (integer) $cat;
+       }
+       else
+       {
+               $catid = getCatIDFromName($cat);
+       }
+       return;
+}
+function selectItem($id)
+{
+       global $itemid;
+       $itemid = (integer) $id;
+       return;
+}
+function selectSpecialSkinType($id)
+{
+       global $special;
+       $special = strtolower($id);
+       return;
+}
+function selector()
+{
+       global $archive, $archivelist, $archivenext, $archivenextexists, $archiveprev, $archiveprevexists, $archivetype;
+       global $blog, $blogid;
+       global $catid;
+       global $itemid, $itemidnext, $itemidprev, $itemtitlenext, $itemtitleprev;
+       global $CONF, $DIR_LIBS, $amount, $errormessage, $imagepopup;
+       global $manager, $maxresults, $query;
+       global $member, $memberid, $memberinfo;
+       global $skinid, $skinpart, $special;
+       
+       $actionNames = array('addcomment', 'sendmessage', 'createaccount', 'forgotpassword', 'votepositive', 'votenegative', 'plugin');
+       $action = requestVar('action');
+       
+       if ( in_array($action, $actionNames) )
+       {
+               include_once($DIR_LIBS . 'ACTION.php');
+               $a = new Action();
+               $errorInfo = $a->doAction($action);
+               
+               if ( $errorInfo )
+               {
+                       $errormessage = $errorInfo['message'];
+               }
+       }
+       
+       // show error when headers already sent out
+       if ( headers_sent() && $CONF['alertOnHeadersSent'] )
+       {
+               // try to get line number/filename (extra headers_sent params only exists in PHP 4.3+)
+               if ( function_exists('version_compare') && version_compare('4.3.0', phpversion(), '<=') )
+               {
+                       headers_sent($hsFile, $hsLine);
+                       $extraInfo = ' in <code>' . $hsFile . '</code> line <code>' . $hsLine . '</code>';
+               }
+               else
+               {
+                       $extraInfo = '';
+               }
+               
+               startUpError(
+                  "<p>The page headers have already been sent out{$extraInfo}. This could cause Nucleus not to work in the expected way.</p>"
+                . "<p>Usually, this is caused by spaces or newlines at the end of the <code>config.php</code> file, "
+                . "at the end of the translation file or at the end of a plugin file.</p>"
+                . "<p>Please check this and try again.</p>"
+                . "<p>If you don't want to see this error message again, without solving the problem, "
+                . "set <code>{$CONF['alertOnHeadersSent']}</code> in <code>globalfunctions.php</code> to <code>0</code></p>"
+                . "Page headers already sent"
+               );
+               exit;
+       }
+       
+       // make is so ?archivelist without blogname or blogid shows the archivelist
+       // for the default weblog
+       if ( serverVar('QUERY_STRING') == 'archivelist' )
+       {
+               $archivelist = $CONF['DefaultBlog'];
+       }
+       
+       // now decide which type of skin we need
+       if ( $itemid )
+       {
+               // itemid given -> only show that item
+               $type = 'item';
+               
+               if ( !$manager->existsItem($itemid,intval($CONF['allowFuture']),intval($CONF['allowDrafts'])) )
+               {
+                       doError(_ERROR_NOSUCHITEM);
+                       return;
+               }
+               
+               // 1. get timestamp, blogid and catid for item
+               $query = 'SELECT itime, iblog, icat FROM %s WHERE inumber=%d';
+               $query = sprintf($query, sql_table('item'), intval($itemid));
+               $row = DB::getRow($query);
+               
+               // if a different blog id has been set through the request or selectBlog(),
+               // deny access
+               
+               if ( $blogid && (intval($blogid) != $row['iblog']) )
+               {
+                       doError(_ERROR_NOSUCHITEM);
+                       return;
+               }
+               
+               // if a category has been selected which doesn't match the item, ignore the
+               // category. #85
+               if ( ($catid != 0) && ($catid != $row['icat']) )
+               {
+                       $catid = 0;
+               }
+               
+               $blogid = $row['iblog'];
+               $timestamp = strtotime($row['itime']);
+               
+               $b =& $manager->getBlog($blogid);
+               
+               if ( !$b->isValidCategory($catid) )
+               {
+                       $query = "SELECT inumber, ititle FROM %s WHERE itime<%s AND idraft=0 AND iblog=%d ORDER BY itime DESC LIMIT 1";
+                       $query = sprintf($query, sql_table('item'), DB::formatDateTime($timestamp), intval($blogid));
+               }
+               else
+               {
+                       $query = "SELECT inumber, ititle FROM %s WHERE itime<%s AND idraft=0 AND iblog=%d AND icat=%d ORDER BY itime DESC LIMIT 1";
+                       $query = sprintf($query, sql_table('item'), DB::formatDateTime($timestamp), intval($blogid), intval($catid));
+               }
+               $row = DB::getRow($query);
+               
+               if ( $row )
+               {
+                       $itemidprev = $row['inumber'];
+                       $itemtitleprev = $row['ititle'];
+               }
+               
+               // get next itemid and title
+               if ( !$b->isValidCategory($catid) )
+               {
+                       $query = "SELECT inumber, ititle FROM %s WHERE itime>%s AND itime<=%s AND idraft=0 AND iblog=%d ORDER BY itime ASC LIMIT 1";
+                       $query = sprintf($query, sql_table('item'), DB::formatDateTime($timestamp), DB::formatDateTime($b->getCorrectTime()), intval($blogid));
+               }
+               else
+               {
+                       $query = "SELECT inumber, ititle FROM %s WHERE itime>%s AND itime<=%s AND idraft=0 AND iblog=%d AND icat=%d ORDER BY itime ASC LIMIT 1";
+                       $query = sprintf($query, sql_table('item'), DB::formatDateTime($timestamp), DB::formatDateTime($b->getCorrectTime()), intval($blogid), intval($catid));
+               }
+               $row = DB::getRow($query);
+               
+               if ( $row )
+               {
+                       $itemidnext = $row['inumber'];
+                       $itemtitlenext = $row['ititle'];
+               }
+       }
+       elseif ( $archive )
+       {
+               // show archive
+               $type = 'archive';
+               
+               // sql queries for the timestamp of the first and the last published item
+               $query = sprintf('SELECT UNIX_TIMESTAMP(itime) as result FROM %s WHERE idraft=0 ORDER BY itime ASC', sql_table('item'));
+               $first_timestamp = DB::getValue($query);
+               $query = sprintf('SELECT UNIX_TIMESTAMP(itime) as result FROM %s WHERE idraft=0 ORDER BY itime DESC', sql_table('item'));
+               $last_timestamp = DB::getValue($query);
+               
+               sscanf($archive, '%d-%d-%d', $y, $m, $d);
+               
+               if ( $d != 0 )
+               {
+                       $archivetype = _LABEL_DAY_UNIT;
+                       $t = mktime(0, 0, 0, $m, $d, $y);
+                       // one day has 24 * 60 * 60 = 86400 seconds
+                       $archiveprev = i18n::formatted_datetime('%Y-%m-%d', $t - 86400 );
+                       // check for published items
+                       if ( $t > $first_timestamp )
+                       {
+                               $archiveprevexists = true;
+                       }
+                       else
+                       {
+                               $archiveprevexists = false;
+                       }
+                       
+                       // one day later
+                       $t += 86400;
+                       $archivenext = i18n::formatted_datetime('%Y-%m-%d', $t);
+                       if ( $t < $last_timestamp )
+                       {
+                               $archivenextexists = true;
+                       }
+                       else
+                       {
+                               $archivenextexists = false;
+                       }
+               }
+               elseif ( $m == 0 )
+               {
+                       $archivetype = _LABEL_YEAR_UNIT;
+                       $t = mktime(0, 0, 0, 12, 31, $y - 1);
+                       // one day before is in the previous year
+                       $archiveprev = i18n::formatted_datetime('%Y', $t);
+                       if ( $t > $first_timestamp )
+                       {
+                               $archiveprevexists = true;
+                       }
+                       else
+                       {
+                               $archiveprevexists = false;
+                       }
+
+                       // timestamp for the next year
+                       $t = mktime(0, 0, 0, 1, 1, $y + 1);
+                       $archivenext = i18n::formatted_datetime('%Y', $t);
+                       if ( $t < $last_timestamp )
+                       {
+                               $archivenextexists = true;
+                       }
+                       else
+                       {
+                               $archivenextexists = false;
+                       }
+               }
+               else
+               {
+                       $archivetype = _LABEL_MONTH_UNIT;
+                       $t = mktime(0, 0, 0, $m, 1, $y);
+                       // one day before is in the previous month
+                       $archiveprev = i18n::formatted_datetime('%Y-%m', $t - 86400);
+                       if ( $t > $first_timestamp )
+                       {
+                               $archiveprevexists = true;
+                       }
+                       else
+                       {
+                               $archiveprevexists = false;
+                       }
+                       
+                       // timestamp for the next month
+                       $t = mktime(0, 0, 0, $m+1, 1, $y);
+                       $archivenext = i18n::formatted_datetime('%Y-%m', $t);
+                       if ( $t < $last_timestamp )
+                       {
+                               $archivenextexists = true;
+                       }
+                       else
+                       {
+                               $archivenextexists = false;
+                       }
+               }
+       }
+       elseif ( $archivelist )
+       {
+               $type = 'archivelist';
+               
+               if ( is_numeric($archivelist) )
+               {
+                       $blogid = intVal($archivelist);
+               }
+               else
+               {
+                       $blogid = getBlogIDFromName($archivelist);
+               }
+       
+               if ( !$blogid )
+               {
+                       doError(_ERROR_NOSUCHBLOG);
+                       return;
+               }
+       }
+       elseif ( $query )
+       {
+               global $startpos;
+               $type = 'search';
+               $query = stripslashes($query);
+               
+               if ( is_numeric($blogid) )
+               {
+                       $blogid = intVal($blogid);
+               }
+               else
+               {
+                       $blogid = getBlogIDFromName($blogid);
+               }
+               
+               if ( !$blogid )
+               {
+                       doError(_ERROR_NOSUCHBLOG);
+                       return;
+               }
+       }
+       elseif ( $memberid )
+       {
+               $type = 'member';
+               
+               if ( !Member::existsID($memberid) )
+               {
+                       doError(_ERROR_NOSUCHMEMBER);
+                       return;
+               }
+               $memberinfo = $manager->getMember($memberid);
+       }
+       elseif ( $imagepopup )
+       {
+               // media object (images etc.)
+               $type = 'imagepopup';
+               
+               // TODO: check if media-object exists
+               // TODO: set some vars?
+       }
+       else
+       {
+               // show regular index page
+               global $startpos;
+               $type = 'index';
+       }
+       
+       // any type of skin with catid
+       if ( $catid && !$blogid )
+       {
+               $blogid = getBlogIDFromCatID($catid);
+       }
+       
+       // decide which blog should be displayed
+       if ( !$blogid )
+       {
+               $blogid = $CONF['DefaultBlog'];
+       }
+       
+       $b =& $manager->getBlog($blogid);
+       $blog = $b; // references can't be placed in global variables?
+       
+       if ( !$blog->isValid )
+       {
+               doError(_ERROR_NOSUCHBLOG);
+               return;
+       }
+       
+       // set catid if necessary
+       if ( $catid )
+       {
+               // check if the category is valid
+               if ( !$blog->isValidCategory($catid) )
+               {
+                       doError(_ERROR_NOSUCHCATEGORY);
+                       return;
+               }
+               else
+               {
+                       $blog->setSelectedCategory($catid);
+               }
+       }
+       
+       if ( !$skinid )
+       {
+               $skinid = $blog->getDefaultSkin();
+       }
+       
+       if ( !empty($special) && isValidShortName($special) )
+       {
+               $type = strtolower($special);
+       }
+       
+       $skin =& $manager->getSkin($skinid);
+       
+       if ( !$skin->isValid() )
+       {
+               doError(_ERROR_NOSUCHSKIN);
+               return;
+       }
+       
+       // set global skinpart variable so can determine quickly what is being parsed from any plugin or phpinclude
+       $skinpart = $type;
+       
+       // parse the skin
+       $skin->parse($type);
+       
+       // check to see we should throw JustPosted event
+       $blog->checkJustPosted();
+       return;
+}
+
+/**
+ * doError()
+ * Show error skin with given message. An optional skin-object to use can be given
+ * 
+ * @param      string  $msg
+ * @param      string  $skin
+ * @return     void
+ */
+function doError($msg, $skin = '')
+{
+       global $errormessage, $CONF, $skinid, $blogid, $manager;
+       
+       if ( $skin == '' )
+       {
+               if ( Skin::existsID($skinid) )
+               {
+                       $id = $skinid;
+               }
+               elseif ( $manager->existsBlogID($blogid) )
+               {
+                       $blog =& $manager->getBlog($blogid);
+                       $id = $blog->getDefaultSkin();
+               }
+               elseif ($CONF['DefaultBlog'] )
+               {
+                       $blog =& $manager->getBlog($CONF['DefaultBlog']);
+                       $id = $blog->getDefaultSkin();
+               }
+               else
+               {
+                       // this statement should actually never be executed
+                       $id = $CONF['BaseSkin'];
+               }
+               $skin =& $manager->getSkin($id);
+       }
+       
+       $errormessage = $msg;
+       $skin->parse('error');
+       return;
+}
+
+/**
+ * Errors before the database connection has been made
+ * 
+ * @param      string  $msg    message to notify
+ * @param      string  $title  page title
+ * @return     void
+ */
+function startUpError($msg, $title)
+{
+       header('Content-Type: text/xml; charset=' . i18n::get_current_charset());
+       echo "<html xmlns=\"http://www.w3.org/1999/xhtml\">\n";
+       echo "<head>\n";
+       echo "<title>{$title}</title></head>\n";
+       echo "<body>\n";
+       echo "<h1>{$title}</h1>\n";
+       echo $msg;
+       echo "</body>\n";
+       echo "</html>\n";
+       exit;
+}
+
+function isValidShortName($name)
+{
+       return preg_match('#^[a-z0-9]+$#i', $name);
+}
+function isValidDisplayName($name)
+{
+       return preg_match('#^[a-z0-9]+[a-z0-9 ]*[a-z0-9]+$#i', $name);
+}
+function isValidCategoryName($name)
+{
+       return 1;
+}
+function isValidTemplateName($name)
+{
+       return preg_match('#^[a-z0-9/_\-]+$#i', $name);
+}
+function isValidSkinName($name)
+{
+       return preg_match('#^[a-z0-9/_\-]+$#i', $name);
+}
+
+// add and remove linebreaks
+function addBreaks($var)
+{
+       return nl2br($var);
+}
+function removeBreaks($var)
+{
+       return preg_replace("/<br \/>([\r\n])/", "$1", $var);
+}
+
+/**
+ * parseFile()
+ * 
+ * @param      string  $filename
+ * @param      string  $includeMode
+ * @param      string  $includePrefix
+ * @return     void
+ */
+function parseFile($filename, $includeMode = 'normal', $includePrefix = '')
+{
+       global $manager, $skinid;
+       
+       if ( !$skinid || !existsID($skinid) )
+       {
+               $skin =& $manager->getSkin($CONF['BaseSkin']);
+       }
+       else
+       {
+               $skin =& $manager->getSkin($skinid);
+       }
+       
+       $oldIncludeMode = Parser::getProperty('IncludeMode');
+       $oldIncludePrefix = Parser::getProperty('IncludePrefix');
+       
+       $skin->parse('fileparse', $filename);
+       
+       Parser::setProperty('IncludeMode', $oldIncludeMode);
+       Parser::setProperty('IncludePrefix', $oldIncludePrefix);
+       
+       return;
+}
+
+/**
+ * debug()
+ * Outputs a debug message
+ * 
+ * @param      string  $msg
+ * @return     void
+ */
+function debug($msg)
+{
+       echo '<p><b>' . $msg . "</b></p>\n";
+       return;
+}
+
+// shows a link to help file
+function help($id)
+{
+       echo helpHtml($id);
+       return;
+}
+function helpHtml($id)
+{
+       global $CONF;
+       return helplink($id) . '<img src="' . $CONF['AdminURL'] . 'documentation/icon-help.gif" width="15" height="15" alt="' . _HELP_TT . '" title="' . _HELP_TT . '" /></a>';
+}
+function helplink($id)
+{
+       global $CONF;
+       return '<a href="' . $CONF['AdminURL'] . 'documentation/help.html#'. $id . '" onclick="if (event &amp;&amp; event.preventDefault) event.preventDefault(); return help(this.href);">';
+}
+
+/**
+ * includephp()
+ * Includes a PHP file. This method can be called while parsing templates and skins
+ * 
+ * @param      string  $filename       name of file to parse
+ * @return     void
+ */
+function includephp($filename)
+{
+       // make predefined variables global, so most simple scripts can be used here
+       
+       // apache (names taken from PHP doc)
+       global $GATEWAY_INTERFACE, $SERVER_NAME, $SERVER_SOFTWARE, $SERVER_PROTOCOL;
+       global $REQUEST_METHOD, $QUERY_STRING, $DOCUMENT_ROOT, $HTTP_ACCEPT;
+       global $HTTP_ACCEPT_CHARSET, $HTTP_ACCEPT_ENCODING, $HTTP_ACCEPT_LANGUAGE;
+       global $HTTP_CONNECTION, $HTTP_HOST, $HTTP_REFERER, $HTTP_USER_AGENT;
+       global $REMOTE_ADDR, $REMOTE_PORT, $SCRIPT_FILENAME, $SERVER_ADMIN;
+       global $SERVER_PORT, $SERVER_SIGNATURE, $PATH_TRANSLATED, $SCRIPT_NAME;
+       global $REQUEST_URI;
+       
+       // php (taken from PHP doc)
+       global $argv, $argc, $PHP_SELF, $HTTP_COOKIE_VARS, $HTTP_GET_VARS, $HTTP_POST_VARS;
+       global $HTTP_POST_FILES, $HTTP_ENV_VARS, $HTTP_SERVER_VARS, $HTTP_SESSION_VARS;
+       
+       // other
+       global $PATH_INFO, $HTTPS, $HTTP_RAW_POST_DATA, $HTTP_X_FORWARDED_FOR;
+       
+       if ( @file_exists($filename) )
+       {
+               include($filename);
+       }
+       return;
+}
+
+/**
+ * Checks if a certain plugin exists
+ * @param      string  $plug   name of plugin
+ * @return     boolean exists or not
+ */
+function checkPlugin($name)
+{
+       global $DIR_PLUGINS;
+       return file_exists($DIR_PLUGINS . preg_replace('#[\\\\|/]#', '', $name) . '.php');
+}
+
+/**
+ * alterQueryStr()
+ * 
+ * @param      string  $querystr       querystring to alter (e.g. foo=1&bar=2&x=y)
+ * @param      string  $param  name of parameter to change (e.g. 'foo')
+ * @param      string  $value  New value for that parameter (e.g. 3)
+ * @return     string  altered query string (for the examples above: foo=3&bar=2&x=y)
+ */
+function alterQueryStr($querystr, $param, $value)
+{
+       $vars = preg_split('#&#', $querystr);
+       $set = FALSE;
+       
+       for ( $i = 0; $i < count($vars); $i++ )
+       {
+               $v = preg_split('#=#', $vars[$i]);
+               
+               if ( $v[0] == $param )
+               {
+                       $v[1] = $value;
+                       $vars[$i] = implode('=', $v);
+                       $set = true;
+                       break;
+               }
+       }
+       if ( !$set )
+       {
+               $vars[] = "{$param}={$value}";
+       }
+       return ltrim(implode('&', $vars), '&');
+}
+
+/**
+ * passVar()
+ * passes one variable as hidden input field (multiple fields for arrays)
+ * @see passRequestVars in varsx.x.x.php
+ * 
+ * @param      string  $key
+ * @param      string  $value
+ * @return     void
+ */
+function passVar($key, $value)
+{
+       // array ?
+       if ( is_array($value) )
+       {
+               for ( $i = 0; $i < sizeof($value); $i++ )
+               {
+                       passVar($key . '[' . $i . ']', $value[$i]);
+               }
+               return;
+       }
+       
+       // other values: do stripslashes if needed
+       echo '<input type="hidden" name="' . Entity::hsc($key) . '" value="' . Entity::hsc(undoMagic($value)) . '" />' . "\n";
+       return;
+}
+
+/**
+ * checkVars()
+ * 
+ * @param      string  $variables
+ * @return     void
+ */
+function checkVars($variables)
+{
+       foreach ( $variables as $variable )
+       {
+               if ( array_key_exists($variable, $_GET)
+                 || array_key_exists($variable, $_POST)
+                 || array_key_exists($variable, $_COOKIE)
+                 || array_key_exists($variable, $_ENV)
+                 || (session_id() !== '' && array_key_exists($variable, $_SESSION))
+                 || array_key_exists($variable, $_FILES) )
+               {
+                       die('Sorry. An error occurred.');
+               }
+       }
+       return;
+}
+
+/**
+ * sanitizeParams()
+ * Sanitize parameters such as $_GET and $_SERVER['REQUEST_URI'] etc.
+ * to avoid XSS.
+ * 
+ * @param      void
+ * @return     void
+ */
+function sanitizeParams()
+{
+       $array = array();
+       $str = '';
+       $frontParam = '';
+       
+       // REQUEST_URI of $_SERVER
+       $str =& $_SERVER["REQUEST_URI"];
+       serverStringToArray($str, $array, $frontParam);
+       sanitizeArray($array);
+       arrayToServerString($array, $frontParam, $str);
+       
+       // QUERY_STRING of $_SERVER
+       $str =& $_SERVER["QUERY_STRING"];
+       serverStringToArray($str, $array, $frontParam);
+       sanitizeArray($array);
+       arrayToServerString($array, $frontParam, $str);
+       
+       // $_GET
+       convArrayForSanitizing($_GET, $array);
+       sanitizeArray($array);
+       revertArrayForSanitizing($array, $_GET);
+       
+       // $_REQUEST (only GET param)
+       convArrayForSanitizing($_REQUEST, $array);
+       sanitizeArray($array);
+       revertArrayForSanitizing($array, $_REQUEST);
+       
+       return;
+}
+
+function _addInputTags(&$keys,$prefix='')
+{
+       foreach ( $keys as $key=>$value )
+       {
+               if ( $prefix )
+               {
+                       $key=$prefix.'['.$key.']';
+               }
+               if ( is_array($value) )
+               {
+                       _addInputTags($value,$key);
+               }
+               else
+               {
+                       if ( get_magic_quotes_gpc() )
+                               {$value=stripslashes($value);
+                       }
+                       if ( $key == 'ticket' )
+                       {
+                               continue;
+                       }
+                       echo '<input type="hidden" name="'.Entity::hsc($key).
+                            '" value="'.Entity::hsc($value).'" />'."\n";
+               }
+       }
+       return;
+}
+
+/**
+ * serverStringToArray()
+ * Convert the server string such as $_SERVER['REQUEST_URI']
+ * to arry like arry['blogid']=1 and array['page']=2 etc.
+ * 
+ * @param      string   $uri                           string
+ * @param      string  &$query_elements        elements of query according to application/x-www-form-urlencoded
+ * @param      string  &$hier_part                     hierarchical part includes path
+ * 
+ * NOTE:
+ * RFC 3986: Uniform Resource Identifiers (URI): Generic Syntax
+ * 3.  Syntax Components
+ * http://www.ietf.org/rfc/rfc3986.txt
+ * 
+ * Hypertext Markup Language - 2.0
+ * 8.2.1. The form-urlencoded Media Type
+ * http://tools.ietf.org/html/rfc1866#section-8.2.1
+ * 
+ * $_SERVER > Language Reference > Predefined Variables > PHP Manual
+ * http://www.php.net/manual/en/reserved.variables.server.php
+ */
+function serverStringToArray($uri, &$query_elements, &$hier_part)
+{
+       // init param
+       $query_elements = array();
+       $hier_part = "";
+       
+       // split hierarchical part, e.g. /index.php, query and fragment, e.g. blogid=1&page=2#section1
+       if ( i18n::strpos($uri, "?") > 0 )
+       {
+               list($hier_part, $query_and_fragment) = preg_split("#\?#", $uri, 2);
+       }
+       else
+       {
+               $query_and_fragment = $uri;
+               $hier_part = '';
+       }
+       
+       // If there is no query like blogid=1&page=2, return
+       if ( i18n::strpos($uri, "=") == FALSE && !i18n::strlen($hier_part) )
+       {
+               $hier_part = $uri;
+               return;
+       }
+       
+       $query_elements = preg_split("#&#", $query_and_fragment);
+       return;
+}
+
+/**
+ * arrayToServerString()
+ * Convert array like array['blogid'] to server string
+ * such as $_SERVER['REQUEST_URI']
+ * 
+ * @param      array    $query_elements        elements of query according to application/x-www-form-urlencoded
+ * @param      string   $hier_part                     hier-part defined in RFC3986
+ * @param      string  &$uri                           return value
+ * @return     void
+ * 
+ * NOTE:
+ * RFC 3986: Uniform Resource Identifiers (URI): Generic Syntax
+ * 3.  Syntax Components
+ * http://www.ietf.org/rfc/rfc3986.txt
+ * 
+ * Hypertext Markup Language - 2.0
+ * 8.2.1. The form-urlencoded Media Type
+ * http://tools.ietf.org/html/rfc1866#section-8.2.1
+ * 
+ * $_SERVER > Language Reference > Predefined Variables > PHP Manual
+ * http://www.php.net/manual/en/reserved.variables.server.php
+ */
+function arrayToServerString($query_elements, $hier_part, &$uri)
+{
+       if ( i18n::strpos($uri, "?") !== FALSE )
+       {
+               $uri = $hier_part . "?";
+       }
+       else
+       {
+               $uri = $hier_part;
+       }
+       if ( count($query_elements) > 0 )
+       {
+               $uri .= implode("&", $query_elements);
+       }
+       return;
+}
+
+/**
+ * sanitizeArray()
+ * Sanitize array parameters.
+ * This function checks both key and value.
+ * - check key if it inclues " (double quote),  remove from array
+ * - check value if it includes \ (escape sequece), remove remaining string
+ * 
+ * @param      array   &$array elements of query according to application/x-www-form-urlencoded
+ * @return     void
+ */
+function sanitizeArray(&$array)
+{
+       $excludeListForSanitization = array('query');
+       
+       foreach ( $array as $k => $v )
+       {
+               // split to key and value
+               list($key, $val) = preg_split("#=#", $v, 2);
+               if ( !isset($val) )
+               {
+                       continue;
+               }
+               
+               // when magic quotes is on, need to use stripslashes,
+               // and then addslashes
+               if ( get_magic_quotes_gpc() )
+               {
+                       $val = stripslashes($val);
+               }
+               
+               // note that we must use addslashes here because this function is called before the db connection is made
+               // and sql_real_escape_string needs a db connection
+               $val = addslashes($val);
+               
+               // if $key is included in exclude list, skip this param
+               if ( !in_array($key, $excludeListForSanitization) )
+               {
+                       // check value
+                       if ( i18n::strpos($val, '\\') > 0 )
+                       {
+                               list($val, $tmp) = preg_split('#\\\\#', $val);
+                       }
+                       
+                       // remove control code etc.
+                       $val = strtr($val, "\0\r\n<>'\"", "       ");
+                       
+                       // check key
+                       if ( preg_match('#\"#', $key) > 0 )
+                       {
+                               unset($array[$k]);
+                               continue;
+                       }
+                       
+                       // set sanitized info
+                       $array[$k] = sprintf("%s=%s", $key, $val);
+               }
+       }
+       return;
+}
+
+/**
+ * convArrayForSanitizing()
+ * Convert array for sanitizeArray function
+ * 
+ * @param      string  $src    array to be sanitized
+ * @param      array   &$array array to be temporarily stored
+ * @return     void
+ */
+function convArrayForSanitizing($src, &$array)
+{
+       $array = array();
+       foreach ( $src as $key => $val )
+       {
+               if ( !key_exists($key, $_GET) )
+               {
+                       continue;
+               }
+               $array[] = sprintf("%s=%s", $key, $val);
+               continue;
+       }
+       return;
+}
+
+/**
+ * revertArrayForSanitizing()
+ * Revert array after sanitizeArray function
+ * 
+ * @param      array   $array  element of query according to application/x-www-form-urlencoded
+ * @param      array   &$dst   combination of key and value
+ * @return     void
+ */
+function revertArrayForSanitizing($array, &$dst)
+{
+       foreach ( $array as $v )
+       {
+               list($key, $val) = preg_split("#=#", $v, 2);
+               $dst[$key] = $val;
+               continue;
+       }
+       return;
+}
+
+/**
+>>>>>>> skinnable-master
  * decodePathInfo()
  * 
  * @param      string  $virtualpath
@@ -1948,6 +3787,7 @@ function decodePathInfo($virtualpath)
 
 
 /**
+<<<<<<< HEAD
  * redirect()\r
  * Stops processing the request and redirects to the given URL.\r
  * - no actual contents should have been sent to the output yet\r
@@ -2344,3 +4184,401 @@ function ticketForPlugin()
        $ticketforplugin['ticket'] = preg_split($ticket, i18n::strpos($ticket, 'ticket=') + 7);\r
        return;\r
 }\r
+=======
+ * redirect()
+ * Stops processing the request and redirects to the given URL.
+ * - no actual contents should have been sent to the output yet
+ * - the URL will be stripped of illegal or dangerous characters
+ * 
+ * @param      string  $uri
+ * @return     void
+ */
+function redirect($url)
+{
+       $url = preg_replace('#[^a-z0-9-~+_.?\#=&;,/:@%*]#i', '', $url);
+       header('Location: ' . $url);
+       exit;
+}
+
+/**
+ * getBookmarklet()
+ * Returns the Javascript code for a bookmarklet that works on most modern browsers
+ * 
+ * @param      integer $blogid ID for weblog
+ * @return     script to call Bookmarklet
+ */
+function getBookmarklet($blogid, $width=600,  $height=500)
+{
+       global $CONF;
+       
+       $script = "Q='';"
+               . "x=document;"
+               . "y=window;"
+               . "if ( x.selection )"
+               . "{"
+               . " Q=x.selection.createRange().text;"
+               . "}"
+               . "else if ( y.getSelection )"
+               . "{"
+               . " Q=y.getSelection();"
+               . "}"
+               . "else if ( x.getSelection )"
+               . "{"
+               . " Q=x.getSelection();"
+               . "}"
+               . "wingm = window.open('{$CONF['AdminURL']}bookmarklet.php?blogid={$blogid}"
+               . " &logtext=' + encodeURIComponent(Q) +"
+               . " '&loglink=' + encodeURIComponent(x.location.href) +"
+               . " '&loglinktitle=' + encodeURIComponent(x.title),"
+               . " 'nucleusbm',"
+               . " 'scrollbars=yes,width={$width},height={$height},left=10,top=10,status=yes,resizable=yes');"
+               . "wingm.focus();";
+       
+       return $script;
+}
+
+/**
+ * cleanFileName()
+ * cleans filename of uploaded file for writing to file system
+ *
+ * @param      string  $str
+ * @return     string  $cleaned filename ready for use
+ */
+function cleanFileName($str)
+{
+       $str = strtolower($str);
+       $ext_point = i18n::strrpos($str,".");
+       if ( $ext_point === FALSE )
+       {
+               return FALSE;
+       }
+       $ext = i18n::substr($str,$ext_point,i18n::strlen($str));
+       $str = i18n::substr($str,0,$ext_point);
+       
+       return preg_replace("#[^a-z0-9-]#", "_", $str) . $ext;
+}
+
+/**
+ * use Notification class instead of this
+ * Deprecated since 4.0:
+ */
+function getMailFooter()
+{
+       NOTIFICATION::get_mail_footer();
+}
+function isValidMailAddress($address)
+{
+       return NOTIFICATION::address_validation($address);
+}
+/**
+ * use Entity class instead of this
+ * Deprecated since 4.0:
+ */
+function highlight($text, $expression, $highlight)
+{
+       return Entity::highlight($text, $expression, $highlight);
+}
+function shorten($string, $maxlength, $suffix)
+{
+       return Entity::shorten($string, $maxlength, $suffix);
+}
+function stringStripTags ($string)
+{
+       return Entity::strip_tags($string);
+}
+function toAscii($string)
+{
+       return Entity::anchor_footnoting($string);
+}
+function stringToAttribute ($string)
+{
+       return Entity::hsc($string);
+}
+function stringToXML ($string)
+{
+       return Entity::hen($string);
+}
+function encode_desc($data)
+{
+       return Entity::hen($data);
+}
+/**
+ * Centralisation of the functions that deals with locales
+ * This functions is based on the old way to deal with languages
+ * Deprecated since 4.0:
+ */
+function getLanguageName()
+{
+       if( ($language = i18n::convert_locale_to_old_language_file_name(i18n::get_current_locale())) === FALSE )
+       {
+               $language ='english';
+       }
+       return $language;
+}
+function selectLanguage($language)
+{
+       global $DIR_LANG;
+       include($DIR_LANG . preg_replace('#[\\\\|/]#', '', $language) . '.php');
+       return;
+}
+/**
+ * use i18n class instead of these
+ * Deprecated since 4.0
+ */
+function checkLanguage($lang)
+{
+       return ( preg_match('#^(.+)_(.+)_(.+)$#', $lang)
+         || i18n::convert_old_language_file_name_to_locale($lang) );
+}
+function formatDate($format, $timestamp, $default_format, &$blog)
+{
+       $offset = date('Z', $timestamp);
+       if ( $blog )
+       {
+               $offset += $blog->getTimeOffset() * 3600;
+       }
+       return i18n::formatted_datetime($format, $timestamp, $offset, $default_format);
+}
+
+/**
+ * use DB class instead of these
+ * Deprecated since 4.0
+ */
+function quickQuery($query)
+{
+       $row = DB::getRow($query);
+       return $row['result'];
+}
+function mysqldate($timestamp)
+{
+       return DB::formatDateTime($timestamp);
+ }
+/**
+ * Centralisation of the functions that generate links
+ * Deprecated since 4.0:
+ * Please use Link::FunctionName(...) instead
+ */
+function createItemLink($itemid, $extra = '')
+{
+       return Link::create_item_link($itemid, $extra);
+}
+function createMemberLink($memberid, $extra = '')
+{
+       return Link::create_member_link($memberid, $extra);
+}
+function createCategoryLink($catid, $extra = '')
+{
+       return Link::create_category_link($catid, $extra);
+}
+function createArchiveListLink($blogid = '', $extra = '')
+{
+       return Link::create_archivelist_link($blogid, $extra);
+}
+function createArchiveLink($blogid, $archive, $extra = '')
+{
+       return Link::create_archive_link($blogid, $archive, $extra);
+}
+function createBlogidLink($blogid, $params = '')
+{
+       return Link::create_blogid_link($blogid, $params = '');
+}
+function createLink($type, $params)
+{
+       return Link::create_link($type, $params);
+}
+function createBlogLink($url, $params)
+{
+       return Link::create_blog_link($url, $params);
+}
+/**
+ * use ActionLog class instead of this
+ * Deprecated since 4.0
+ */
+function addToLog($level, $msg)
+{
+       ActionLog::add($level, $msg);
+}
+/**
+ * use PHP's implement
+ * Deprecated since 4.0
+ */
+function ifset(&$var)
+{
+       if ( isset($var) )
+       {
+               return $var;
+       }
+       
+       return NULL;
+}
+/**
+ * use Manager::getPluginNameFromPid() instead of this
+ * Deprecated since 4.0
+ */
+function getPluginNameFromPid($pid)
+{
+       global $manager;
+       return $manager->getPluginNameFromPid($pid);
+}
+/**
+ * use Manager::numberOfEventSubscribers() instead of this
+ * Deprecated since 4.0
+ */
+function numberOfEventSubscribers($event)
+{
+       global $manager;
+       return $manager->getNumberOfSubscribers($event);
+}
+
+/**
+ * PluginAdmin has already the alternative implement
+ * Deprecated since 4.0
+ */
+function ticketForPlugin()
+{
+       global $CONF, $DIR_LIBS, $DIR_LOCALES, $DIR_PLUGINS, $manager, $member, $ticketforplugin;
+       
+       /* initialize */
+       $ticketforplugin = array();
+       $ticketforplugin['ticket'] = FALSE;
+       
+       /* Check if using plugin's php file. */
+       $p_translated = serverVar('SCRIPT_FILENAME');
+       
+       if (!file_exists($p_translated) )
+       {
+               header("HTTP/1.0 404 Not Found");
+               exit('');
+       }
+       
+       // check whether this is plugin or not
+       $p_translated = str_replace('\\', '/', $p_translated);
+       $d_plugins = str_replace('\\', '/', $DIR_PLUGINS);
+       if ( i18n::strpos($p_translated, $d_plugins) !== 0 )
+       {
+               return;
+       }
+       
+       // Solve the plugin php file or admin directory
+       $phppath = i18n::substr($p_translated, i18n::strlen($d_plugins) );
+       // Remove the first "/" if exists.
+       $phppath = preg_replace('#^/#', '', $phppath);
+       // Remove the first "NP_" and the last ".php" if exists.
+       $path = preg_replace('#^NP_(.*)\.php$#', '$1', $phppath);
+       // Remove the "/" and beyond.
+       $path = preg_replace('#^([^/]*)/(.*)$#', '$1', $path);
+       
+       // Solve the plugin name.
+       $plugins = array();
+       $query = sprintf('SELECT pfile FROM %s;', sql_table('plugin'));
+       $res = DB::getResult($query);
+       
+       foreach ( $res as $row )
+       {
+               $name = i18n::substr($row['pfile'], 3);
+               $plugins[strtolower($name)] = $name;
+       }
+       
+       $res->closeCursor();
+       
+       if ( !array_key_exists($path, $plugins) )
+       {
+               header("HTTP/1.0 404 Not Found");
+               exit('');
+       }
+       else
+       {
+               $plugin_name = $plugins[$path];
+       }
+       
+       /* Return if not index.php */
+       if ( ($phppath != strtolower($plugin_name) . '/')
+         && ($phppath != strtolower($plugin_name) . '/index.php') )
+       {
+               return;
+       }
+       
+       /* Exit if not logged in. */
+       if ( !$member->isLoggedIn() )
+       {
+               exit('You aren\'t logged in.');
+       }
+       
+       /* Check if this feature is needed (ie, if "$manager->checkTicket()" is not included in the script). */
+       if ( $file = @file($p_translated) )
+       {
+               $prevline = '';
+               
+               foreach($file as $line)
+               {
+                       if (preg_match('#[\$]manager([\s]*)[\-]>([\s]*)checkTicket([\s]*)[\(]#i', $prevline . $line) )
+                       {
+                               return;
+                       }
+                       
+                       $prevline = $line;
+               }
+       }
+       
+       /* Show a form if not valid ticket */
+       if ( (i18n::strpos(serverVar('REQUEST_URI'), '?') !== FALSE
+         || serverVar('QUERY_STRING')
+         || strtoupper(serverVar('REQUEST_METHOD') ) == 'POST')
+         && !$manager->checkTicket() )
+       {
+               $oPluginAdmin = new PluginAdmin($plugin_name);
+               $oPluginAdmin->start();
+               
+               echo '<p>' . _ERROR_BADTICKET . "</p>\n";
+               
+               // Resolve URI and QUERY_STRING
+               if ($uri = serverVar('REQUEST_URI') )
+               {
+                       list($uri, $qstring) = preg_split('#\?#', $uri);
+               }
+               else
+               {
+                       if ( !($uri = serverVar('PHP_SELF') ) )
+                       {
+                               $uri = serverVar('SCRIPT_NAME');
+                       }
+                       $qstring = serverVar('QUERY_STRING');
+               }
+               if ($qstring)
+               {
+                       $qstring = '?' . $qstring;
+               }
+               
+               echo '<p>' . _SETTINGS_UPDATE . ' : ' . _QMENU_PLUGINS . ' <span style="color:red;">' . Entity::hsc($plugin_name) . "</span> ?</p>\n";
+               
+               switch(strtoupper(serverVar('REQUEST_METHOD') ) )
+               {
+                       case 'POST':
+                               echo '<form method="POST" action="'.Entity::hsc($uri.$qstring).'">';
+                               $manager->addTicketHidden();
+                               _addInputTags($_POST);
+                               break;
+                       
+                       case 'GET':
+                               echo '<form method="GET" action="'.Entity::hsc($uri).'">';
+                               $manager->addTicketHidden();
+                               _addInputTags($_GET);
+                       
+                       default:
+                               break;
+               }
+               
+               echo '<input type="submit" value="' . _YES . '" />&nbsp;&nbsp;&nbsp;&nbsp;';
+               echo '<input type="button" value="' . _NO . '" onclick="history.back(); return false;" />';
+               echo "</form>\n";
+               
+               $oPluginAdmin->end();
+               exit;
+       }
+       
+       /* Create new ticket */
+       $ticket=$manager->addTicketToUrl('');
+       $ticketforplugin['ticket'] = preg_split($ticket, i18n::strpos($ticket, 'ticket=') + 7);
+       return;
+}
+>>>>>>> skinnable-master
index 1b494ea..9f846df 100644 (file)
@@ -1,3 +1,4 @@
+<<<<<<< HEAD
 <?php\r
 /**\r
  * i18n class for Nucleus CMS\r
@@ -681,3 +682,689 @@ class i18n
                "portuguese_brazil"     => "pt_Latn_BR"\r
        );\r
 }\r
+=======
+<?php
+/**
+ * i18n class for Nucleus CMS
+ * written by Takashi Sakamoto as of Feb 03, 2012
+ * 
+ * This includes wrapper functions of iconv and mbstring
+ * for multibyte processing and includes parameters related to locale.
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * (see nucleus/documentation/index.html#license for more info)
+ *
+ * @license http://nucleuscms.org/license.txt GNU General Public License
+ * @copyright Copyright (C) 2002-2011 The Nucleus Group
+ * @version $Id: i18n.php 1876 2012-06-17 07:33:00Z sakamocchi $
+ */
+class i18n
+{
+       static private $mode = FALSE;
+       
+       static private $current_charset = '';
+       static private $current_language = '';
+       static private $current_script = '';
+       static private $current_region = '';
+       
+       static private $locale_list = array();
+       static private $timezone = 'UTC';
+       
+       static private $forced_charset = '';
+       static private $forced_language = '';
+       static private $forced_script = '';
+       static private $forced_region = '';
+       
+       /**
+        * i18n::init
+        * Initializing i18n class
+        * 
+        * @static
+        * @param       string  $charset        character set
+        * @return      boolean 
+        */
+       static public function init($charset, $dir)
+       {
+               /* i18n is already initialized */
+               if ( self::$mode )
+               {
+                       return TRUE;
+               }
+               
+               /* make locale list in this Nucleus CMS */
+               if ( ($handle = opendir($dir)) === FALSE )
+               {
+                       return FALSE;
+               }
+               while ($filename = readdir($handle))
+               {
+                       if (preg_match("#^(.+_.+_.+)\.{$charset}\.php$#", $filename, $matches) )
+                       {
+                               if ( !in_array($matches[1], self::$locale_list) )
+                               {
+                                       self::$locale_list[] = $matches[1];
+                               }
+                       }
+               }
+               closedir($handle);
+               
+               /* set i18n backend and validate character set */
+               if ( extension_loaded('iconv') )
+               {
+                       /* this is just for checking the charset. */
+                       if ( iconv_set_encoding('internal_encoding', $charset)
+                        && iconv_set_encoding('output_encoding', $charset)
+                        && iconv_set_encoding('internal_encoding', $charset) )
+                       {
+                               self::$current_charset = $charset;
+                               self::$mode = 'iconv';
+                       }
+               }
+               else if ( extension_loaded('mbstring') )
+               {
+                       /* this is just for checking the charset. */
+                       if ( mb_http_output($charset)
+                        && mb_internal_encoding($charset)
+                        && mb_regex_encoding($charset) )
+                       {
+                               self::$current_charset = $charset;
+                               self::$mode = 'mbstring';
+                       }
+               }
+               
+               return TRUE;
+       }
+       
+       /**
+        * i18n::get_available_locale_list
+        * return available locale list with current charset
+        * 
+        * @static
+        * @param       void
+        * @return      array   available locale list
+        */
+       static public function get_available_locale_list()
+       {
+               return self::$locale_list;
+       }
+       
+       /**
+        * i18n::get_current_charset
+        * return current charset
+        * 
+        * @static
+        * @param       void
+        * @return      string  $charset        current character set
+        */
+       static public function get_current_charset()
+       {
+               return self::$current_charset;
+       }
+       
+       /**
+        * i18n::set_locale
+        * Set current locale
+        * 
+        * NOTE:
+        * naming rule is "$language_$script_$region.$charset.php", refer to RFC 5646.
+        * @link http://www.ietf.org/rfc/rfc5646.txt
+        * @see 2.  The Language Tag
+        * 
+        * @static
+        * @param       string  $locale
+        * @return      bool    TRUE/FALSE
+        * 
+        */
+       static public function set_current_locale($locale)
+       {
+               if ( preg_match('#^(.+)_(.+)_(.+)$#', $locale, $match) )
+               {
+                       self::$current_language = $match[1];
+                       self::$current_script   = $match[2];
+                       self::$current_region   = $match[3];
+                       return TRUE;
+               }
+               return FALSE;
+       }
+       
+       /**
+        * i18n::get_locale
+        * Get current locale
+        * 
+        * @static
+        * @param       void
+        * @return      $locale
+        */
+       static public function get_current_locale()
+       {
+               $elements = array(self::$current_language, self::$current_script, self::$current_region);
+               return implode('_', $elements);
+       }
+       
+       /**
+        * i18n::set_forced_locale()
+        * Set forced locale
+        * 
+        * @static
+        * @param       string  $forced_locale
+        * @return      bool    TRUE/FALSE
+        * 
+        */
+       static public function set_forced_locale($forced_locale)
+       {
+               if ( preg_match('#^(.+)_(.+)_(.+)$#', $forced_locale, $match) )
+               {
+                       self::$forced_language  = $match[1];
+                       self::$forced_script    = $match[2];
+                       self::$forced_region    = $match[3];
+                       return TRUE;
+               }
+               return FALSE;
+       }
+       
+       /**
+        * i18n::get_forced_locale
+        * Get forced locale
+        * 
+        * @static
+        * @param       void
+        * @return      $forced_locale
+        */
+       static public function get_forced_locale()
+       {
+               if ( !self::$forced_language )
+               {
+                       return '';
+               }
+               
+               $elements = array(self::$forced_language, self::$forced_script, self::$forced_region);
+               return implode('_', $elements);
+       }
+       
+       /**
+        * i18n::set_forced_charset
+        * return forced charset
+        * 
+        * @static
+        * @param       void    $charset        forced character set
+        * @return      void
+        */
+       static public function set_forced_charset($forced_charset)
+       {
+               self::$forced_charset = $forced_charset;
+               return;
+       }
+       
+       /**
+        * i18n::get_forced_charset
+        * return forced charset
+        * 
+        * @static
+        * @param       void
+        * @return      string  $charset        forced character set
+        */
+       static public function get_forced_charset()
+       {
+               return self::$forced_charset;
+       }
+       
+       /**
+        * i18n::confirm_default_date_timezone
+        * to avoid E_NOTICE or E_WARNING generated when every calling to a date/time function.
+        * 
+        * NOTE:
+        * Some private servers are lack of its timezone setting
+        * http://www.php.net/manual/en/function.date-default-timezone-set.php
+        * 
+        * @static
+        * @param       void
+        * @return      void
+        */
+       static public function confirm_default_date_timezone()
+       {
+               if ( function_exists('date_default_timezone_get') 
+                && FALSE !== ($timezone = @date_default_timezone_get()))
+               {
+                       self::$timezone = $timezone;
+               }
+               if (function_exists('date_default_timezone_set')) {
+                        @date_default_timezone_set(self::$timezone);
+               }
+               return;
+       }
+       
+       /**
+        * i18n::get_current_date_timezone()
+        * get current timezone
+        * 
+        * @static
+        * @param       void
+        * @return      $timezone
+        */
+       static public function get_date_timezone()
+       {
+               return self::$timezone;
+       }
+       
+       /**
+        * i18n::convert
+        * character set converter
+        * 
+        * @static
+        * @param       string  $string target string binary
+        * @param       string  $from   original character set encoding
+        * @param       string  $to     target character set encoding
+        * @return      string  converted string
+        */
+       static public function convert($string, $from, $to='')
+       {
+               if ( $to == '' )
+               {
+                       $to = self::$current_charset;
+               }
+               
+               if ( $from == $to )
+               {
+                       /* do nothing */
+               }
+               else if ( self::$mode == 'iconv' )
+               {
+                       $string = iconv($from, $to.'//TRANSLIT', $string);
+               }
+               else if ( self::$mode == 'mbstring' )
+               {
+                       $string = mb_convert_encoding($string, $to, $from);
+               }
+               return (string) $string;
+       }
+       
+       /**
+        * i18n::convert_handler
+        * callable handler for character set converter
+        * 
+        * @static
+        * @param       string  $string target string binary
+        * @return      void
+        */
+       static public function convert_handler($string)
+       {
+               return self::convert($string, self::$current_charset, self::$forced_charset);
+       }
+       
+       /**
+        * i18n::convert_array
+        * recursively converting array
+        * 
+        * @static
+        * @param       array   $array  array to convert
+        * @return      void
+        */
+       static public function convert_array($array, $from, $to='')
+       {
+               if ( !is_array($array) )
+               {
+                       $array = self::convert($array, $from, $to);
+               }
+               else
+               {
+                       foreach ( $array as $key => $value )
+                       {
+                               if ( !is_array($value) )
+                               {
+                                       $array[$key] = self::convert($value, $from, $to);
+                               }
+                               else
+                               {
+                                       self::convert_array($array[$key]);
+                               }
+                       }
+               }
+               
+               return $array;
+       }
+       
+       /**
+        * i18n::strlen
+        * strlen wrapper
+        * 
+        * @static
+        * @param       string  $string target string
+        * @return      integer the number of letters
+        */
+       static public function strlen($string)
+       {
+               $length = 0;
+               if ( self::$mode == 'iconv' )
+               {
+                       $length = iconv_strlen($string, self::$current_charset);
+               }
+               else if ( self::$mode == 'mbstring' )
+               {
+                       $length = mb_strlen($string, self::$current_charset);
+               }
+               else
+               {
+                       $length = strlen($string);
+               }
+               return (integer) $length;
+       }
+       
+       /**
+        * i18n::strpos
+        * strpos wrapper
+        * 
+        * @static
+        * @param       string  $haystack       string to search
+        * @param       string  $needle string for search
+        * @param       integer $offset the position from which the search should be performed. 
+        * @return      integer/FALSE   the numeric position of the first occurrence of needle in haystack
+        */
+       static public function strpos($haystack, $needle, $offset=0)
+       {
+               $position = 0;
+               if ( self::$mode == 'iconv' )
+               {
+                       $position = iconv_strpos($haystack, $needle, $offset, self::$current_charset);
+               }
+               else if ( self::$mode == 'mbstring' )
+               {
+                       $position = mb_strpos($haystack, $needle, $offset, self::$current_charset);
+               }
+               else
+               {
+                       $position = strpos($haystack, $needle, $offset);
+               }
+               
+               if ( $position !== FALSE)
+               {
+                       $position = (integer) $position;
+               }
+               return $position;
+       }
+       
+       /**
+        * i18n::strrpos
+        * strrpos wrapper
+        * 
+        * @static
+        * @param       string  $haystack       string to search
+        * @param       string  $needle string for search
+        * @return      integer/FALSE   the numeric position of the last occurrence of needle in haystack
+        */
+       static public function strrpos ($haystack, $needle)
+       {
+               $position = 0;
+               if ( self::$mode == 'iconv' )
+               {
+                       $position = iconv_strrpos($haystack, $needle, self::$current_charset);
+               }
+               else if ( self::$mode == 'mbstring' )
+               {
+                       $position = mb_strrpos($haystack, $needle, 0, self::$current_charset);
+               }
+               else
+               {
+                       $position = strrpos($haystack, $needle, 0);
+               }
+               
+               if ( $position !== FALSE)
+               {
+                       $position = (integer) $position;
+               }
+               return $position;
+       }
+       
+       /**
+        * i18n::substr
+        * substr wrapper
+        * 
+        * @static
+        * @param       string  $string string to be cut
+        * @param       string  $start  the position of starting
+        * @param       integer $length the length to be cut
+        * @return      string  the extracted part of string
+        */
+       static public function substr($string, $start, $length=0)
+       {
+               $return = '';
+               
+               if ( $length == 0 )
+               {
+                       $length = self::strlen($string) - $start;
+               }
+               
+               if ( self::$mode == 'iconv' )
+               {
+                       $return = iconv_substr($string, $start, $length, self::$current_charset);
+               }
+               else if ( self::$mode == 'mbstring' )
+               {
+                       $return = mb_substr($string, $start, $length, self::$current_charset);
+               }
+               else
+               {
+                       $return = strrpos($string, $start, $length);
+               }
+               return (string) $return;
+       }
+       
+       /**
+        * i18n::strftime
+        * strftime function based on multibyte processing
+        * 
+        * @static
+        * @param       string  $format format with singlebyte or multibyte
+        * @param       timestamp       $timestamp      UNIX timestamp
+        * @return      string  formatted timestamp
+        */
+       static public function strftime($format, $timestamp='')
+       {
+               return preg_replace_callback('/(%[a-z%])/i',
+                       create_function('$matches', 'return strftime($matches[1], ' . intval($timestamp) . ');'),
+                       $format
+               );
+               }
+               
+       /**
+        * i18n::formatted_datetime()
+        * return formatted datetime string
+        * 
+        * Date and Time Formats
+        * @link        http://www.w3.org/TR/NOTE-datetime
+        * 
+        * Working with Time Zones
+        * @link        http://www.w3.org/TR/timezone/
+        * 
+        * @param       String  $format time expression format
+        * @param       String  $timestamp      UNIX timestamp
+        * @param       Integer $offset timestamp offset
+        * @return      String  formatted datetime
+        */
+       static public function formatted_datetime($format, $timestamp, $offset=0)
+       {
+               $suffix = '';
+               $string = '';
+               
+               switch ( $format )
+               {
+                       case 'mysql':
+                               /*
+                                * MySQL 5.0 Reference Manual
+                                *  10.3.1. The DATE, DATETIME, and TIMESTAMP Types
+                                *   http://dev.mysql.com/doc/refman/5.0/en/datetime.html
+                                */
+                               $timestamp += $offset;
+                               $format = '%Y-%m-%d %H:%M:%S';
+                               $suffix ='';
+                               break;
+                       
+                       case 'rfc822':
+                               /*
+                                * RFC 822: STANDARD FOR THE FORMAT OF ARPA INTERNET TEXT MESSAGES
+                                *  5.  DATE AND TIME SPECIFICATION
+                                *   http://www.ietf.org/rfc/rfc0822.txt
+                                */
+                               $format = '%a, %d %m %y %H:%M:%S ';
+                               if ( $offset < 0 )
+                               {
+                                       $suffix = '-';
+                                       $offset = -$offset;
+                               }
+                               else
+                               {
+                                       $suffix = '+';
+                               }
+                               
+                               $suffix .= sprintf("%02d%02d", floor($offset / 3600), round(($offset % 3600) / 60) );
+                               break;
+                       case 'rfc822GMT':
+                               /*
+                                * RFC 822: STANDARD FOR THE FORMAT OF ARPA INTERNET TEXT MESSAGES
+                                *  5.  DATE AND TIME SPECIFICATION
+                                *   http://www.ietf.org/rfc/rfc0822.txt
+                                */
+                               $format = '%a, %d %m %y %H:%M:%S ';
+                               $timestamp -= $offset;
+                               $suffix = 'GMT';
+                               break;
+                       case 'iso8601':
+                       case 'rfc3339':
+                               /*
+                                * RFC3339: Date and Time on the Internet: Timestamps
+                                *  5. Date and Time format
+                                *   http://www.ietf.org/rfc/rfc3339.txt
+                                */
+                               $format = '%Y-%m-%dT%H:%M:%S';
+                               if ( $offset < 0 )
+                               {
+                                       $suffix = '-';
+                                       $offset = -$offset;
+                               }
+                               else
+                               {
+                                       $suffix = '+';
+                               }
+                               $suffix .= sprintf("%02d:%02d", floor($offset / 3600), round(($offset % 3600) / 60) );
+                               break;
+                       case 'utc':
+                       case 'iso8601UTC':
+                       case 'rfc3339UTC':
+                               /*
+                                * RFC3339: Date and Time on the Internet: Timestamps
+                                *  5. Date and Time format
+                                *   http://www.ietf.org/rfc/rfc3339.txt
+                                */
+                               $timestamp -= $offset;
+                               $format = '%Y-%m-%dT%H:%M:%SZ';
+                               $suffix = '';
+                               break;
+                       case '':
+                               $format = '%X %x';
+                               $offset = '';
+                               break;
+                       default:
+                               $suffix = '';
+                               break;
+               }
+               return i18n::strftime($format, $timestamp) . $suffix;
+       }
+       
+       /**
+        * i18n::convert_locale_to_old_language_file_name()
+        * NOTE: this should be obsoleted near future.
+        * 
+        * @static
+        * @param       string  $target_locale  locale name as language_script_region
+        * @return      string  old translation file name
+        */
+       static public function convert_locale_to_old_language_file_name($target_locale)
+       {
+               $target_language = '';
+               foreach ( self::$lang_refs as $language => $locale )
+               {
+                       if ( preg_match('#-#', $language) )
+                       {
+                               if ( $target_locale . '.' . self::$current_charset == $locale )
+                               {
+                                       $target_language = $language;
+                                       break;
+                               }
+                       }
+                       else if ( $target_locale == $locale )
+                       {
+                               $target_language = $language;
+                       }
+               }
+               return $target_language;
+       }
+       
+       /**
+        * i18n::convert_old_language_file_name_to_locale()
+        * NOTE: this should be obsoleted near future.
+        * 
+        * @static
+        * @param       string  $target_language        old translation file name
+        * @return      string  locale name as language_script_region
+        */
+       static public function convert_old_language_file_name_to_locale($target_language)
+       {
+               $target_locale = '';
+               foreach ( self::$lang_refs as $language => $locale )
+               {
+                       if ( $target_language == $language )
+                       {
+                               if ( preg_match('#^(.+)\.(.+)$#', $locale, $match) )
+                               {
+                                       $target_locale = $match[1];
+                               }
+                               else
+                               {
+                                       $target_locale = $locale;
+                               }
+                               break;
+                       }
+               }
+               return $target_locale;
+       }
+       
+       /**
+        * i18n::$lang_refs
+        * reference table to convert old and new way to name translation files.
+        * NOTE: this should be obsoleted as soon as possible.
+        * 
+        * @static
+        */
+       static private $lang_refs = array(
+               "english"               => "en_Latn_US",
+               "english-utf8"  => "en_Latn_US.UTF-8",
+               "bulgarian"     => "bg_Cyrl_BG",
+               "finnish"               => "fi_Latn_FI",
+               "catalan"               => "ca_Latn_ES",
+               "french"                => "fr_Latn_FR",
+               "russian"               => "ru_Cyrl_RU",
+               "chinese"               => "zh_Hans_CN",
+               "simchinese"    => "zh_Hans_CN",
+               "chineseb5"     => "zh_Hant_TW",
+               "traditional_chinese"   =>      "zh_Hant_TW",
+               "galego"                => "gl_Latn_ES",
+               "german"                => "de_Latn_DE",
+               "korean-utf"    => "ko_Kore_KR.UTF-8",
+               "korean-euc-kr" => "ko_Kore_KR.EUC-KR",
+               "slovak"                => "sk_Latn_SK",
+               "czech"         => "cs_Latn_CZ",
+               "hungarian"     => "hu_Latn_HU",
+               "latvian"               => "lv_Latn_LV",
+               "nederlands"    => "nl_Latn_NL",
+               "italiano"              => "it_Latn_IT",
+               "persian"               => "fa_Arab_IR",
+               "spanish"               => "es_Latn_ES",
+               "spanish-utf8"  => "es_Latn_ES.UTF-8",
+               "japanese-euc"  => "ja_Jpan_JP.EUC-JP",
+               "japanese-utf8" => "ja_Jpan_JP.UTF-8",
+               "portuguese_brazil"     => "pt_Latn_BR"
+       );
+}
+>>>>>>> skinnable-master
diff --git a/nucleus/libs/include/readme.txt b/nucleus/libs/include/readme.txt
deleted file mode 100644 (file)
index 65de9e2..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-README for the libs/include directory\r
--------------------------------------\r
-\r
-This directory contains templates used by the admin-area. \r
-They're not really intended to be edited by the people using Nucleus (i.e. there's \r
-no documentation and little support). But if you really can't stop yourself,\r
-go ahead :)\r
index 079e5b5..3974d80 100644 (file)
@@ -1,11 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
-<html xmlns="http://www.w3.org/1999/xhtml">\r
-<head>\r
-       <title>Nothing Here</title>\r
-</head>\r
-<body>\r
-\r
-<h1>Nothing to see here</h1>\r
-\r
-</body>\r
-</html>\r
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+       <title>Nothing Here</title>
+</head>
+<body>
+
+<h1>Nothing to see here</h1>
+
+</body>
+</html>
\ No newline at end of file
index 8fcbccc..a0eaba9 100644 (file)
  *
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2009 The Nucleus Group
+<<<<<<< HEAD
  * @version $Id: showlist.php 1785 2012-04-22 11:25:14Z sakamocchi $
+=======
+ * @version $Id: showlist.php 1886 2012-06-17 08:27:27Z sakamocchi $
+>>>>>>> skinnable-master
  */
 
 
 // can take either an array of objects, or an SQL query
+<<<<<<< HEAD
 function showlist($query, $type, $template)
 {
        if ( is_array($query) )
@@ -222,10 +227,384 @@ function listplug_table_pluginlist($template, $type)
                        break;
                case 'BODY':
                        $current = $template['current'];
+=======
+function showlist($query, $type, $vars, $template_name = '')
+{
+       $contents = '';
+       
+       /* count */
+       if ( is_string($query) )
+       {
+               $resource = DB::getResult($query);
+       }
+       else
+       {
+               $resource = $query;
+       }
+       
+       /* HEAD */
+       $contents .= call_user_func("listplug_{$type}", $vars, 'HEAD', $template_name);
+       
+       /* BODY */
+       foreach ( $resource as $row )
+       {
+               $vars['current'] = $row;
+               $contents .= call_user_func("listplug_{$type}", $vars, 'BODY', $template_name);
+       }
+       
+       /* FOOT */
+       $contents .= call_user_func("listplug_{$type}", $vars, 'FOOT', $template_name);
+       
+       /* close SQL resource */
+       if ( is_string($query) )
+       {
+               $resource->closeCursor();
+       }
+       
+       return $contents;
+}
+
+function listplug_select($vars, $type, $template_name = '')
+{
+       global $manager;
+       
+       $templates = array();
+       if ( !empty($template_name) )
+       {
+               $templates =& $manager->getTemplate($template_name);
+       }
+       
+       switch( $type )
+       {
+               case 'HEAD':
+                       if ( !array_key_exists('SHOWLIST_LISTPLUG_SELECT_HEAD', $templates) || empty($templates['SHOWLIST_LISTPLUG_SELECT_HEAD']) )
+                       {
+                               $template = "<select name=\"<%name%>\" tabindex=\"<%tabindex%>\" <%javascript%>>\n"
+                                         . "<%extraoption%>\n";
+                       }
+                       else
+                       {
+                               $template = $templates['SHOWLIST_LISTPLUG_SELECT_HEAD'];
+                       }
+                       $data = array(
+                               'name'                  => $vars['name'],
+                               'tabindex'              => $vars['tabindex'],
+                               'javascript'    => !array_key_exists('javascript', $vars) ? '' : $vars['javascript'],
+                               'extraoption'   => !array_key_exists('extra', $vars) ? '' : "<option value=\"\">{$vars['extra']}</option>"
+                       );
+                       break;
+               case 'BODY':
+                       $current = $vars['current'];
+                       if ( !array_key_exists('SHOWLIST_LISTPLUG_SELECT_BODY', $templates) || empty($templates['SHOWLIST_LISTPLUG_SELECT_BODY']) )
+                       {
+                               $template = "<option value=\"<%value%>\" <%selected%> title=\"<%title%>\"><%option%></option>\n";
+                       }
+                       else
+                       {
+                               $template = $templates['SHOWLIST_LISTPLUG_SELECT_BODY'];
+                       }
+                       $data = array(
+                               'value'         => Entity::hsc($current['value']),
+                               'selected'      => ($vars['selected'] == $current['value']) ? 'selected="selected"' : '',
+                       );
+                       if ( array_key_exists('shorten', $vars) && $vars['shorten'] > 0 )
+                       {
+                               $data['title'] = Entity::hsc($current['text']);
+                               $data['option'] = Entity::hsc(Entity::shorten($current['text'], $vars['shorten'], $vars['shortenel']));
+                       }
+                       else
+                       {
+                               $data['title'] = '';
+                       }
+                       $data['option'] = Entity::hsc($current['text']);
+                       break;
+               case 'FOOT':
+                       if ( !array_key_exists('SHOWLIST_LISTPLUG_SELECT_FOOT', $templates) || empty($templates['SHOWLIST_LISTPLUG_SELECT_FOOT']) )
+                       {
+                               $template = "</select>\n";
+                       }
+                       else
+                       {
+                               $template = $templates['SHOWLIST_LISTPLUG_SELECT_FOOT'];
+                       }
+                       $data = array();
+                       break;
+       }
+       
+       return Template::fill($template, $data);
+}
+
+function listplug_table($vars, $type, $template_name = '')
+{
+       global $manager;
+       
+       $templates = array();
+       if ( !empty($template_name) )
+       {
+               $templates =& $manager->getTemplate($template_name);
+       }
+       
+       switch( $type )
+       {
+               case 'HEAD':
+                       if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_HEAD', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_HEAD']) )
+                       {
+                               $template = "<table frame=\"box\" rules=\"all\" summary=\"{$vars['content']}\">\n"
+                                         . "<thead>\n"
+                                         . "<tr>\n"
+                                         . "<%typehead%>\n"
+                                         . "</tr>\n"
+                                         . "</thead>\n"
+                                         . "<tbody>\n";
+                       }
+                       else
+                       {
+                               $template = $templates['SHOWLIST_LISTPLUG_TABLE_HEAD'];
+                       }
+                       $data = array(
+                               'summary'       =>      $vars['content'],
+                               'typehead' => call_user_func("listplug_table_" . $vars['content'] , $vars, 'HEAD', $template_name)
+                       );
+                       break;
+               case 'BODY':
+                       if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_BODY', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_BODY']) )
+                       {
+                               $template = "<tr onmouseover=\"focusRow(this);\" onmouseout=\"blurRow(this);\">\n"
+                                         . "<%typebody%>\n"
+                                         . "</tr>\n";
+                       }
+                       else
+                       {
+                               $template = $templates['SHOWLIST_LISTPLUG_TABLE_BODY'];
+                       }
+                       // tabletype specific thingies
+                       $data = array(
+                               'typebody' => call_user_func("listplug_table_" . $vars['content'] , $vars, 'BODY', $template_name)
+                       );
+                       break;
+               case 'FOOT':
+                       if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_FOOT', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_FOOT']) )
+                       {
+                               $template = "<%typefoot%>\n"
+                                         . "</tbody>\n"
+                                         . "</table>\n";
+                       }
+                       else
+                       {
+                               $template = $templates['SHOWLIST_LISTPLUG_TABLE_FOOT'];
+                       }
+                       // tabletype specific thingies
+                       $data = array(
+                               'typefoot' => call_user_func("listplug_table_" . $vars['content'] , $vars, 'FOOT', $template_name)
+                       );
+                       break;
+       }
+       
+       return Template::fill($template, $data);
+}
+
+function listplug_table_memberlist($vars, $type, $template_name = '')
+{
+       global $manager;
+       
+       $templates = array();
+       if ( !empty($template_name) )
+       {
+               $templates =& $manager->getTemplate($template_name);
+       }
+       
+       switch( $type )
+       {
+               case 'HEAD':
+                       if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_MEMBLIST_HEAD', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_MEMBLIST_HEAD']) )
+                       {
+                               $template = "<th><%colmembername%></th>\n"
+                                         . "<th><%colmemberrname%></th>\n"
+                                         . "<th><%colmemberurl%></th>\n"
+                                         . "<th><%colmemberadmin%><%helplink(superadmin)%></th>\n"
+                                         . "<th><%colmemberlogin%><%helplink(canlogin)%></th>\n"
+                                         . "<th colspan=\"2\"><%colactions%></th>\n";
+                       }
+                       else
+                       {
+                               $template = $templates['SHOWLIST_LISTPLUG_TABLE_MEMBLIST_HEAD'];
+                       }
+                       $data = array(
+                               'colmembername'         => _LIST_MEMBER_NAME,
+                               'colmemberrname'        => _LIST_MEMBER_RNAME,
+                               'colmemberurl'          => _LIST_MEMBER_URL,
+                               'colmemberadmin'        => _LIST_MEMBER_ADMIN,
+                               'colmemberlogin'        => _LIST_MEMBER_LOGIN,
+                               'colactions'            => _LISTS_ACTIONS,
+                       );
+                       break;
+               case 'BODY':
+                       $current = $vars['current'];
+                       if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_MEMBLIST_BODY', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_MEMBLIST_BODY']) )
+                       {
+                               $template = "<td>\n"
+                                         . "<input type=\"checkbox\" id=\"batch<%id%>\" name=\"batch[<%id%>]\" value=\"<%memberid%>\" />\n"
+                                         . "<label for=\"batch<%id%>\">\n"
+                                         . "<a href=\"mailto:<%mailaddress%>\" tabindex=\"<%tabindex%>\"><%name%></a>\n"
+                                         . "</label>\n</td>\n"
+                                         . "<td><%realname%></td>\n"
+                                         . "<td><a href=\"<%url%>\" tabindex=\"<%tabindex%>\"><%url%></a></td>\n"
+                                         . "<td><%admin%></td>\n"
+                                         . "<td><%login%></td>\n"
+                                         . "<td><a href=\"index.php?action=memberedit&amp;memberid=<%memberid%>\" tabindex=\"<%tabindex%>\"><%editbtn%></a></td>\n"
+                                         . "<td><a href=\"index.php?action=memberdelete&amp;memberid=<%memberid%>\" tabindex=\"<%tabindex%>\"><%deletebtn%></a></td>\n";
+                       }
+                       else
+                       {
+                               $template = $templates['SHOWLIST_LISTPLUG_TABLE_MEMBLIST_BODY'];
+                       }
+                       $data = array(
+                               'id'                    => listplug_nextBatchId(),
+                               'memberid'              => $current['mnumber'],
+                               'mailaddress'   => Entity::hsc($current['memail']),
+                               'tabindex'              => $vars['tabindex'],
+                               'name'                  => Entity::hsc($current['mname']),
+                               'realname'              => Entity::hsc($current['mrealname']),
+                               'url'                   => Entity::hsc($current['murl']),
+                               'admin'                 => $current['madmin'] ? _YES : _NO,
+                               'login'                 => $current['mcanlogin'] ? _YES : _NO,
+                               'editbtn'               => _LISTS_EDIT,
+                               'deletebtn'             => _LISTS_DELETE,
+                       );
+                       break;
+               case 'FOOT':
+                       if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_MEMBLIST_FOOT', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_MEMBLIST_FOOT']) )
+                       {
+                               $template = "";
+                       }
+                       else
+                       {
+                               $template = $templates['SHOWLIST_LISTPLUG_TABLE_MEMBLIST_FOOT'];
+                       }
+                       $data = array();
+                       break;
+       }
+       return Template::fill($template, $data);
+}
+
+function listplug_table_teamlist($vars, $type, $template_name = '')
+{
+       global $manager;
+       
+       $templates = array();
+       if ( !empty($template_name) )
+       {
+               $templates =& $manager->getTemplate($template_name);
+       }
+       
+       switch( $type )
+       {
+               case 'HEAD':
+                       if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_TEAMLIST_HEAD', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_TEAMLIST_HEAD']) )
+                       {
+                               $template = "<th><%colmembername%></th>\n"
+                                         . "<th><%colmemberrname%></th>\n"
+                                         . "<th><%colteamadmin%><%helplink(teamadmin)%></th>\n"
+                                         . "<th colspan=\"2\"><%colactions%></th>\n";
+                       }
+                       else
+                       {
+                               $template = $templates['SHOWLIST_LISTPLUG_TABLE_TEAMLIST_HEAD'];
+                       }
+                       $data = array(
+                               'colmembername'         => _LIST_MEMBER_NAME,
+                               'colmemberrname'        => _LIST_MEMBER_RNAME,
+                               'colteamadmin'          => _LIST_TEAM_ADMIN,
+                               'colactions'            => _LISTS_ACTIONS,
+                       );
+                       break;
+               case 'BODY':
+                       $current = $vars['current'];
+                       if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_TEAMLIST_BODY', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_TEAMLIST_BODY']) )
+                       {
+                               $template = "<td>\n"
+                                         . "<input type=\"checkbox\" id=\"batch<%id%>\" name=\"batch[<%id%>]\" value=\"<%memberid%>\" />\n"
+                                         . "<label for=\"batch<%id%>\">\n"
+                                         . "<a href=\"mailto:<%mailaddress%>\" tabindex=\"<%tabindex%>\"><%name%></a>\n"
+                                         . "</label>\n</td>\n"
+                                         . "<td><%realname%></td>\n"
+                                         . "<td><%admin%></td>\n"
+                                         . "<td><a href=\"index.php?action=teamdelete&amp;memberid=<%memberid%>&amp;blogid=<%blogid%>\" tabindex=\"<%tabindex%>\"><%deletebtn%></a></td>\n"
+                                         . "<td><a href=\"<%chadminurl%>\" tabindex=\"<%tabindex%>\"><%chadminbtn%></a></td>\n";
+                       }
+                       else
+                       {
+                               $template = $templates['SHOWLIST_LISTPLUG_TABLE_TEAMLIST_BODY'];
+                       }
+                       $url  = 'index.php?action=teamchangeadmin&memberid=' . intval($current['tmember']) . '&blogid=' . intval($current['tblog']);
+                       $url  = $manager->addTicketToUrl($url);
+                       $data = array(
+                                       'id'                    => listplug_nextBatchId(),
+                                       'memberid'              => $current['tmember'],
+                                       'mailaddress'   => Entity::hsc($current['memail']),
+                                       'tabindex'              => $vars['tabindex'],
+                                       'name'                  => Entity::hsc($current['mname']),
+                                       'realname'              => Entity::hsc($current['mrealname']),
+                                       'admin'                 => ($current['tadmin'] ? _YES : _NO),
+                                       'blogid'                => $current['tblog'],
+                                       'deletebtn'             => '<%text(_LISTS_DELETE)%>',
+                                       'chadminurl'    => Entity::hsc($url),
+                                       'chadminbtn'    => '<%text(_LIST_TEAM_CHADMIN)%>'
+                       );
+                       break;
+               case 'FOOT':
+                       if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_TEAMLIST_FOOT', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_TEAMLIST_FOOT']) )
+                       {
+                               $template = "";
+                       }
+                       else
+                       {
+                               $template = $templates['SHOWLIST_LISTPLUG_TABLE_TEAMLIST_FOOT'];
+                       }
+                       $data = array();
+                       break;
+       }
+       return Template::fill($template, $data);
+}
+
+function listplug_table_pluginlist($vars, $type, $template_name = '')
+{
+       static $plugins = array();
+       global $manager;
+       
+       $templates = array();
+       if ( !empty($template_name) )
+       {
+               $templates =& $manager->getTemplate($template_name);
+       }
+       
+       switch( $type )
+       {
+               case 'HEAD':
+                       if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HEAD', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HEAD']) )
+                       {
+                               $template = "<th><%colinfo%></th>\n"
+                                         . "<th><%coldesc%></th>\n"
+                                         . "<th colspan=\"2\"><%colactions%></th>\n";
+                       }
+                       else
+                       {
+                               $template = $templates['SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HEAD'];
+                       }
+                       $data = array(
+                               'colinfo'    => _LISTS_INFO,
+                               'coldesc'    => _LISTS_DESC,
+                               'colactions' => _LISTS_ACTIONS,
+                       );
+                       break;
+               case 'BODY':
+                       $current = $vars['current'];
+>>>>>>> skinnable-master
                        
                        $plug =& $manager->getPlugin($current['pfile']);
                        if ( $plug )
                        {
+<<<<<<< HEAD
                                echo "<td>\n";
                                echo '<h3>' . Entity::hsc($plug->getName()) . "</h3>\n";
                                
@@ -272,6 +651,127 @@ function listplug_table_pluginlist($template, $type)
                                foreach ( $res as $row )
                                {
                                        $preq =& $manager->getPlugin($row['pfile']);
+=======
+                               if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY']) )
+                               {
+                                       $template = "<td>\n"
+                                                 . "<strong><%plugname%></strong><br />\n"
+                                                 . "<%autherlabel%> <%plugauther%><br />\n"
+                                                 . "<%versionlabel%> <%plugversion%><br />\n"
+                                                 . "<%pluggeturl%><br />\n"
+                                                 . "</td>\n"
+                                                 . "<td>\n"
+                                                 . "<%desclabel%><br /><%plugdesc%>\n"
+                                                 . "<%eventlist%>\n"
+                                                 . "<%needupdate%>\n"
+                                                 . "<%dependlist%>\n"
+                                                 . "<%depreqlist%>\n"
+                                                 . "</td>\n";
+                               }
+                               else
+                               {
+                                       $template = $templates['SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY'];
+                               }
+                               $data = array(
+                                       'plugname'              => Entity::hsc($plug->getName()),
+                                       'autherlabel'   => _LIST_PLUGS_AUTHOR,
+                                       'plugauther'    => Entity::hsc($plug->getAuthor()),
+                                       'versionlabel'  => _LIST_PLUGS_VER,
+                                       'plugversion'   => Entity::hsc($plug->getVersion()),
+                                       'tabindex'              => $vars['tabindex'],
+                                       'desclabel'             => _LIST_PLUGS_DESC,
+                                       'plugdesc'              => Entity::hen($plug->getDescription()),
+                               );
+                               if ( $plug->getURL() )
+                               {
+                                       if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL']) )
+                                       {
+                                               $subTpl = "<a href=\"<%plugurl%>\" tabindex=\"<%tabindex%>\"><%plugsite%></a>";
+                                       }
+                                       else
+                                       {
+                                               $subTpl = $templates['SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL'];
+                                       }
+                                       $subData = array(
+                                               'plugurl'       => Entity::hsc($plug->getURL()),
+                                               'tabindex'      => $vars['tabindex'],
+                                               'plugsite'      => _LIST_PLUGS_SITE,
+                                       );
+                                       $data['pluggeturl'] = Template::fill($subTpl, $subData);
+                               }
+                               else
+                               {
+                                       $data['pluggeturl'] = '';
+                               }
+                               if ( count($plug->getEventList()) > 0 )
+                               {
+                                       if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST']) )
+                                       {
+                                               $subTpl = "<br /><br /><%evntlstlbl%><br /><%eventlist%>";
+                                       }
+                                       else
+                                       {
+                                               $subTpl = $templates['SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST'];
+                                       }
+                                       $subData = array(
+                                               'evntlstlbl'    => _LIST_PLUGS_SUBS,
+                                               'eventlist'             => Entity::hsc(implode(', ', $plug->getEventList())),
+                                       );
+                                       $data['eventlist'] = Template::fill($subTpl, $subData);
+                               }
+                               else
+                               {
+                                       $data['eventlist'] = '';
+                               }
+                               if ( !$plug->subscribtionListIsUptodate() )
+                               {
+                                       if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE']) )
+                                       {
+                                               $subTpl = "<br /><br /><strong><%updatealert%></strong>";
+                                       }
+                                       else
+                                       {
+                                               $subTpl = $templates['SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE'];
+                                       }
+                                       $subData = array(
+                                               'updatealert' => _LIST_PLUG_SUBS_NEEDUPDATE,
+                                       );
+                                       $data['needupdate'] = Template::fill($subTpl, $subData);
+                               }
+                               else
+                               {
+                                       $data['needupdate'] = '';
+                               }
+                               if ( count($plug->getPluginDep() ) > 0)
+                               {
+                                       if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND']) )
+                                       {
+                                               $subTpl = "<br /><br /><%deplistlbl%><br /><%dependlist%>";
+                                       }
+                                       else
+                                       {
+                                               $subTpl = $templates['SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND'];
+                                       }
+                                       $subData = array(
+                                               'deplistlbl' => _LIST_PLUGS_DEP,
+                                               'dependlist' => Entity::hsc(implode(', ', $plug->getPluginDep())),
+                                       );
+                                       $data['dependlist'] = Template::fill($subTpl, $subData);
+                               }
+                               else
+                               {
+                                       $data['dependlist'] = '';
+                               }
+                               /* check dependency */
+                               if ( empty($plugins) )
+                               {
+                                       $plugins = DB::getResult('SELECT pfile FROM ' . sql_table('plugin'));
+                               }
+                               $req = array();
+                               foreach ( $plugins as $plugin )
+                               {
+                                       $preq =& $manager->getPlugin($plugin['pfile']);
+>>>>>>> skinnable-master
                                        if ( $preq )
                                        {
                                                $depList = $preq->getPluginDep();
@@ -279,7 +779,11 @@ function listplug_table_pluginlist($template, $type)
                                                {
                                                        if ( $current['pfile'] == $depName )
                                                        {
+<<<<<<< HEAD
                                                                $req[] = $row['pfile'];
+=======
+                                                               $req[] = $plugin['pfile'];
+>>>>>>> skinnable-master
                                                        }
                                                }
                                        }
@@ -287,6 +791,7 @@ function listplug_table_pluginlist($template, $type)
                                
                                if ( count($req) > 0 )
                                {
+<<<<<<< HEAD
                                        echo '<dt>' . _LIST_PLUGS_DEPREQ . "</dt>\n";
                                        echo '<dd>' . Entity::hsc(implode(', ', $req)) . "</dd>\n";
                                }
@@ -367,45 +872,261 @@ function listplug_table_plugoptionlist($template, $type)
 
 function listplug_plugOptionRow($current)
 {
-       $varname = "plugoption[{$current['oid']}][{$current['contextid']}]";
-       
-       // retreive the optionmeta
-       $meta = NucleusPlugin::getOptionMeta($current['typeinfo']);
-       
-       // only if it is not a hidden option write the controls to the page
-       if ( in_array('access', $meta) && $meta['access'] == 'hidden' )
-       {
-               return;
-       }
-       
-       if ( !$current['description'] )
-       {
-               echo '<td>' , Entity::hsc($current['name']) . "</td>\n";
-       }
-       else
-       {
-               if ( !defined($current['description']) )
-               {
-                       echo '<td>' , Entity::hsc($current['description']) . "</td>\n";
-               }
-               else
-               {
-                       echo '<td>' , Entity::hsc(constant($current['description'])) . "</td>\n";
-               }
-       }
-       echo "<td>\n";
-       switch($current['type'])
-       {
-               case 'yesno':
-                       Admin::input_yesno($varname, $current['value'], 0, 'yes', 'no');
-                       break;
-               case 'password':
-                       echo '<input type="password" size="40" maxlength="128" name="',Entity::hsc($varname),'" value="',Entity::hsc($current['value']),"\" />\n";
-                       break;
-               case 'select':
-                       echo '<select name="'.Entity::hsc($varname)."\">\n";
-                       $options = NucleusPlugin::getOptionSelectValues($current['typeinfo']);
-                       $options = preg_split('/\|/', $options);
+=======
+                                       if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ']) )
+                                       {
+                                               $subTpl = "<br /><br /><%deprlstlbl%><br /><%depreqlist%>";
+                                       }
+                                       else
+                                       {
+                                               $subTpl = $templates['SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ'];
+                                       }
+                                       $subData = array(
+                                               'deprlstlbl' => _LIST_PLUGS_DEPREQ,
+                                               'depreqlist' => Entity::hsc(implode(', ', $req)),
+                                       );
+                                       $data['depreqlist'] = Template::fill($subTpl, $subData);
+                               }
+                               else
+                               {
+                                       $data['depreqlist'] = '';
+                               }
+                       }
+                       else
+                       {
+                               if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE']) )
+                               {
+                                       $template = "<td colspan=\"2\"><%noplugalert%></td>\n";
+                               }
+                               else
+                               {
+                                       $template = $templates['SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE'];
+                               }
+                               $data = array(
+                                       'noplugalert' => sprintf(_PLUGINFILE_COULDNT_BELOADED, Entity::hsc($current['pfile'])),
+                               );
+                       }
+                       if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN']) )
+                       {
+                               $template .= "<td>\n"
+                                          . "<a href=\"<%actionupurl%>\" tabindex=\"<%tabindex%>\"><%actionuptxt%></a><br />\n"
+                                          . "<a href=\"<%actiondownurl%>\" tabindex=\"<%tabindex%>\"><%actiondowntxt%></a><br />\n"
+                                          . "<a href=\"<%actuninsturl%>\" tabindex=\"<%tabindex%>\"><%actuninsttxt%></a><br />"
+                                          . "<%plugadminurl%>\n"
+                                          . "<%plughelpurl%>\n"
+                                          . "<%plugoptsetting%>\n"
+                                          . "</td>\n";
+                       }
+                       else
+                       {
+                               $template .= $templates['SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN'];
+                       }
+                       
+                       $baseUrl        = 'index.php?plugid=' . $current['pid'] . '&action=';
+                       $upUrl          = $manager->addTicketToUrl($baseUrl . 'pluginup');
+                       $downUrl        = $manager->addTicketToUrl($baseUrl . 'plugindown');
+                       
+                       $data['actionuptxt']    = _LIST_PLUGS_UP;
+                       $data['actionupurl']    = Entity::hsc($upUrl);
+                       $data['actiondowntxt']  = _LIST_PLUGS_DOWN;
+                       $data['actiondownurl']  = Entity::hsc($downUrl);
+                       $data['actuninsttxt']   = _LIST_PLUGS_UNINSTALL;
+                       $data['actuninsturl']   = 'index.php?action=plugindelete&amp;plugid=' . $current['pid'];
+                       
+                       if ( $plug && ($plug->hasAdminArea() > 0) )
+                       {
+                               if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN']) )
+                               {
+                                       $subTpl = "<a href=\"<%actadminurl%>\" tabindex=\"<%tabindex%>\"><%actadmintxt%></a><br />\n";
+                               }
+                               else
+                               {
+                                       $subTpl = $templates['SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN'];
+                               }
+                               $subData = array(
+                                       'actadminurl'   => Entity::hsc($plug->getAdminURL()),
+                                       'tabindex'              => $vars['tabindex'],
+                                       'actadmintxt'   => _LIST_PLUGS_ADMIN,
+                               );
+                               $data['plugadminurl'] = Template::fill($subTpl, $subData);
+                       }
+                       else
+                       {
+                               $data['plugadminurl'] = '';
+                       }
+                       if ( $plug && ($plug->supportsFeature('HelpPage') > 0) )
+                       {
+                               if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP']) )
+                               {
+                                       $subTpl = "<a href=\"<%acthelpurl%>\" tabindex=\"<%tabindex%>\"><%acthelptxt%></a><br />\n";
+                               }
+                               else
+                               {
+                                       $subTpl = $templates['SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP'];
+                               }
+                               $subData = array(
+                                       'acthelpurl'    => 'index.php?action=pluginhelp&amp;plugid=' . $current['pid'],
+                                       'tabindex'              => $vars['tabindex'],
+                                       'acthelptxt'    => _LIST_PLUGS_HELP,
+                               );
+                               $data['plughelpurl'] = Template::fill($subTpl, $subData);
+                       }
+                       else
+                       {
+                               $data['plughelpurl'] = '';
+                       }
+                       $optQuery = 'SELECT '
+                                 . '    COUNT(*) AS result '
+                                 . 'FROM '
+                                 .      sql_table('plugin_option_desc') . ' '
+                                 . 'WHERE '
+                                 . '    ocontext = "global" '
+                                 . 'AND opid     = %d';
+                       $pOptions = DB::getValue(sprintf($optQuery, $current['pid']));
+                       if ( $pOptions > 0 )
+                       {
+                               if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL']) )
+                               {
+                                       $subTpl = "<a href=\"<%actoptionurl%>\" tabindex=\"<%tabindex%>\"><%actoptiontxt%></a>\n";
+                               }
+                               else
+                               {
+                                       $subTpl = $templates['SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL'];
+                               }
+                               $subData = array(
+                                       'actoptionurl'  => 'index.php?action=pluginoptions&amp;plugid=' . $current['pid'],
+                                       'tabindex'              => $vars['tabindex'],
+                                       'actoptiontxt'  => _LIST_PLUGS_OPTIONS,
+                               );
+                               $data['plugoptsetting'] = Template::fill($subTpl, $subData);
+                       }
+                       else
+                       {
+                               $data['plugoptsetting'] = '';
+                       }
+                       break;
+               case 'FOOT':
+                       if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_PLUGLIST_FOOT', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_PLUGLIST_FOOT']) )
+                       {
+                               $template = "";
+                       }
+                       else
+                       {
+                               $template = $templates['SHOWLIST_LISTPLUG_TABLE_PLUGLIST_FOOT'];
+                       }
+                       $data = array();
+                       break;
+       }
+       return Template::fill($template, $data);
+}
+
+function listplug_table_plugoptionlist($vars, $type, $template_name = '')
+{
+       global $manager;
+       
+       $templates = array();
+       if ( !empty($template_name) )
+       {
+               $templates =& $manager->getTemplate($template_name);
+       }
+       
+       switch( $type )
+       {
+               case 'HEAD':
+                       if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_POPTLIST_HEAD', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_POPTLIST_HEAD']) )
+                       {
+                               $template = "<th><%colinfo%></th>\n"
+                                         . "<th><%colvalue%></th>\n";
+                       }
+                       else
+                       {
+                               $template = $templates['SHOWLIST_LISTPLUG_TABLE_POPTLIST_HEAD'];
+                       }
+                       $data = array(
+                               'colinfo'       => _LISTS_INFO,
+                               'colvalue'      => _LISTS_VALUE,
+                       );
+                       break;
+               case 'BODY':
+                       $current = $vars['current'];
+                       $template = listplug_plugOptionRow($current, $template_name);
+                       $data = array();
+                       break;
+               case 'FOOT':
+                       if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_POPTLIST_FOOT', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_POPTLIST_FOOT']) )
+                       {
+                               $template = "<tr>\n"
+                                         . "<th colspan=\"2\"><%savetext%></th>\n"
+                                         . "</tr>\n"
+                                         . "<tr>\n"
+                                         . "<td><%savetext%></td>\n"
+                                         . "<td><input type=\"submit\" value=\"<%savetext%>\" /></td>\n"
+                                         . "</tr>\n";
+                       }
+                       else
+                       {
+                               $template = $templates['SHOWLIST_LISTPLUG_TABLE_POPTLIST_FOOT'];
+                       }
+                       $data = array(
+                               'savetext' => _PLUGS_SAVE,
+                       );
+                       break;
+       }
+       
+       return Template::fill($template, $data);
+}
+
+function listplug_plugOptionRow($current, $template_name = '')
+{
+       global $manager;
+       
+       $templates = array();
+       if ( !empty($template_name) )
+       {
+               $templates =& $manager->getTemplate($template_name);
+       }
+       
+>>>>>>> skinnable-master
+       $varname = "plugoption[{$current['oid']}][{$current['contextid']}]";
+       
+       // retreive the optionmeta
+       $meta = NucleusPlugin::getOptionMeta($current['typeinfo']);
+       
+       // only if it is not a hidden option write the controls to the page
+       if ( in_array('access', $meta) && $meta['access'] == 'hidden' )
+       {
+<<<<<<< HEAD
+               return;
+       }
+       
+       if ( !$current['description'] )
+       {
+               echo '<td>' , Entity::hsc($current['name']) . "</td>\n";
+       }
+       else
+       {
+               if ( !defined($current['description']) )
+               {
+                       echo '<td>' , Entity::hsc($current['description']) . "</td>\n";
+               }
+               else
+               {
+                       echo '<td>' , Entity::hsc(constant($current['description'])) . "</td>\n";
+               }
+       }
+       echo "<td>\n";
+       switch($current['type'])
+       {
+               case 'yesno':
+                       Admin::input_yesno($varname, $current['value'], 0, 'yes', 'no');
+                       break;
+               case 'password':
+                       echo '<input type="password" size="40" maxlength="128" name="',Entity::hsc($varname),'" value="',Entity::hsc($current['value']),"\" />\n";
+                       break;
+               case 'select':
+                       echo '<select name="'.Entity::hsc($varname)."\">\n";
+                       $options = NucleusPlugin::getOptionSelectValues($current['typeinfo']);
+                       $options = preg_split('/\|/', $options);
                        
                        for ( $i=0; $i<(count($options)-1); $i+=2 )
                        {
@@ -469,499 +1190,2197 @@ function listplug_plugOptionRow($current)
 function listplug_table_itemlist($template, $type)
 {
        $cssclass = '';
-       
-       switch( $type )
-       {
-               case 'HEAD':
-                       echo "<th>"._LIST_ITEM_INFO."</th>\n";
-                       echo "<th>"._LIST_ITEM_CONTENT."</th>\n";
-                       echo "<th colspan='1'>"._LISTS_ACTIONS."</th>";
-                       break;
-               case 'BODY':
-                       $current = $template['current'];
-                       // string -> unix timestamp
-                       $current['itime'] = strtotime($current['itime']);
-                       
-                       if ( $current['idraft'] == 1 )
-                       {
-                               $cssclass = " class='draft'";
-                       }
-                       
-                       // (can't use offset time since offsets might vary between blogs)
-                       if ( $current['itime'] > $template['now'] )
-                       {
-                               $cssclass = " class='future'";
-                       }
-                       
-                       echo "<td{$cssclass}>\n";
-                       echo "<dl>\n";
-                       echo '<dt>' . _LIST_ITEM_BLOG . "</dt>\n";
-                       echo '<dd>' . Entity::hsc($current['bshortname']) . "</dd>\n";
-                       echo '<dt>' . _LIST_ITEM_CAT . "</dt>\n";
-                       echo '<dd>' . Entity::hsc($current['cname']) . "</dd>\n";
-                       echo '<dt>' . _LIST_ITEM_AUTHOR . "</dt>\n";
-                       echo '<dd>' . Entity::hsc($current['mname']) . "</dd>\n";
-                       echo '<dt>' . _LIST_ITEM_DATE . "</dt>\n";
-                       echo '<dd>' . date("Y-m-d",$current['itime']) . "</dd>\n";
-                       echo '<dt>' . _LIST_ITEM_TIME . "</dt>\n";
-                       echo '<dd>' . date("H:i",$current['itime']) . "</dd>\n";
-                       echo "</dl>\n";
-                       echo "</td>\n";
-                       
-                       $id = listplug_nextBatchId();
-                       
-                       echo "<td{$cssclass}>\n";
-                       echo "<h3>\n";
-                       echo "<input type=\"checkbox\" id=\"batch{$id}\" name=\"batch[{$id}]\" value=\"{$current['inumber']}\" />\n";
-                       echo "<label for=\"batch{$id}\">" . Entity::hsc(strip_tags($current['ititle'])) . "</label>\n";
-                       echo "</h3>\n";
-                       
-                       $current['ibody'] = strip_tags($current['ibody']);
-                       $current['ibody'] = Entity::hsc(Entity::shorten($current['ibody'], 300, '...'));
-                       echo "<p>{$current['ibody']}</p>\n";
-                       echo "</td>\n";
-                       
-                       echo "<td{$cssclass}>\n";
-                       echo "<ul>\n";
-                       echo "<li><a href=\"index.php?action=itemedit&amp;itemid={$current['inumber']}\">" . _LISTS_EDIT . "</a></li>\n";
-                       
-                       // evaluate amount of comments for the item
-                       $COMMENTS = new Comments($current['inumber']);
-                       $camount = $COMMENTS->amountComments();
-                       if ( $camount > 0 )
-                       {
-                               echo "<li><a href=\"index.php?action=itemcommentlist&amp;itemid={$current['inumber']}\">( ";
-                               echo sprintf(_LIST_ITEM_COMMENTS, $COMMENTS->amountComments()) . " )</a></li>\n";
-                       }
-                       else
-                       {
-                               echo '<li>' . _LIST_ITEM_NOCONTENT . "</li>\n";
-                       }
-                       
-                       echo "<li><a href=\"index.php?action=itemmove&amp;itemid={$current['inumber']}\">" . _LISTS_MOVE . "</a></li>\n";
-                       echo "<li><a href=\"index.php?action=itemdelete&amp;itemid={$current['inumber']}\">" . _LISTS_DELETE . "</a></li>\n";
-                       echo "</ul>\n";
-                       echo "</td>\n";
-                       break;
+=======
+               return false;
        }
-       return;
-}
-
-// for batch operations: generates the index numbers for checkboxes
-function listplug_nextBatchId()
-{
-       static $id = 0;
-       return $id++;
-}
-
-function listplug_table_commentlist($template, $type)
-{
-       switch( $type )
+       else
        {
-               case 'HEAD':
-                       echo '<th>' . _LISTS_INFO . "</th>\n";
-                       echo '<th>' . _LIST_COMMENT . "</th>\n";
-                       echo '<th colspan="3">' . _LISTS_ACTIONS . "</th>";
-                       break;
-               case 'BODY':
-                       $current = $template['current'];
-                       $current['ctime'] = strtotime($current['ctime']);       // string -> unix timestamp
-                       
-                       echo "<td>\n";
-                       echo "<ul>\n";
-                       echo '<li>' . date("Y-m-d@H:i",$current['ctime']) . "</li>\n";
-                       if ( isset($current['mname']) )
-                       {
-                               echo '<li>' . Entity::hsc($current['mname']) ,' ', _LIST_COMMENTS_MEMBER . "</li>\n";
-                       }
-                       else
-                       {
-                               echo '<li>' . Entity::hsc($current['cuser']) . "</li>\n";
-                       }
-                       if ( isset($current['cmail']) && $current['cmail'] )
-                       {
-                               echo '<li>' . Entity::hsc($current['cmail']) . "</li>\n";
-                       }
-                       if ( isset($current['cemail']) && $current['cemail'] )
-                       {
-                               echo '<li>' . Entity::hsc($current['cemail']) . "</li>\n";
+               if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_POPTLIST_BODY', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_POPTLIST_BODY']) )
+               {
+                       $template = "<td><%description%></td>\n"
+                                 . "<td>\n";
+               }
+               else
+               {
+                       $template = $templates['SHOWLIST_LISTPLUG_TABLE_POPTLIST_BODY'];
+               }
+               
+               $data = array();
+               
+               switch($current['type'])
+               {
+                       case 'yesno':
+                               $template .= listplug_input_yesno($varname, $current['value'], 0, 'yes', 'no', _YES, _NO, 0, $template_name, 1);
+                               break;
+                       case 'password':
+                               if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_PLGOPT_OPWORD', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_PLGOPT_OPWORD']) )
+                               {
+                                       $template .= "<input type=\"password\" size=\"40\" maxlength=\"128\" name=\"<%varname%>\" value=\"<%value%>\" />\n";
+                               }
+                               else
+                               {
+                                       $template .= $templates['SHOWLIST_LISTPLUG_TABLE_PLGOPT_OPWORD'];
+                               }
+                               $data = array(
+                                       'varname'       => Entity::hsc($varname),
+                                       'value'         => Entity::hsc($current['value']),
+                               );
+                               break;
+                       case 'select':
+                               if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_PLGOPT_OSELEP', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_PLGOPT_OSELEP']) )
+                               {
+                                       $template .= "<select name=\"<%varname%>\">\n";
+                               }
+                               else
+                               {
+                                       $template .= $templates['SHOWLIST_LISTPLUG_TABLE_PLGOPT_OSELEP'];
+                               }
+                               if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_PLGOPT_OSELEO', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_PLGOPT_OSELEO']) )
+                               {
+                                       $subTpl = "<option value=\"<%value%>\"<%selected%>><%optname%></option>\n";
+                               }
+                               else
+                               {
+                                       $subTpl = $templates['SHOWLIST_LISTPLUG_TABLE_PLGOPT_OSELEO'];
+                               }
+                               $options = NucleusPlugin::getOptionSelectValues($current['typeinfo']);
+                               $options = preg_split('#\|#', $options);
+                               
+                               for ( $i=0; $i<(count($options)-1); $i+=2 )
+                               {
+                                       $name   = $options[$i];
+                                       $value  = $options[$i+1];
+                                       if ( defined($name) )
+                                       {
+                                               $name = constant($name);
+                                       }
+                                       
+                                       $subData = array(
+                                               'optname'       => Entity::hsc($name),
+                                               'value'         => Entity::hsc($value)
+                                       );
+                                       if ($value != $current['value'])
+                                       {
+                                               $subData['selected'] = '';
+                                       }
+                                       else
+                                       {
+                                               $subData['selected'] = ' selected="selected"';
+                                       }
+                                       $template .= Template::fill($subTpl, $subData);
+                               }
+                               if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_PLGOPT_OSELEC', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_PLGOPT_OSELEC']) )
+                               {
+                                       $template .= "</select>\n";
+                               }
+                               else
+                               {
+                                       $template .= $templates['SHOWLIST_LISTPLUG_TABLE_PLGOPT_OSELEC'];
+                               }
+                               $data['varname'] = Entity::hsc($varname);
+                               break;
+                       case 'textarea':
+                               if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_PLGOPT_OTAREA', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_PLGOPT_OTAREA']) )
+                               {
+                                       $template .= "<textarea class=\"pluginoption\" cols=\"30\" rows=\"5\" name=\"<%varname%>\"<%readonly%>><%value%></textarea>\n";
+                               }
+                               else
+                               {
+                                       $template .= $templates['SHOWLIST_LISTPLUG_TABLE_PLGOPT_OTAREA'];
+                               }
+                               $data = array(
+                                       'varname'       => Entity::hsc($varname),
+                                       'value'         => Entity::hsc($current['value'])
+                               );
+                               if ( !array_key_exists('access', $current) || $current['access'] != 'readonly')
+                               {
+                                       $data['readonly'] = '';
+                               }
+                               else
+                               {
+                                       $data['readonly'] = ' readonly="readonly"';
+                               }
+                               break;
+                       case 'text':
+                       default:
+                               if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_PLGOPT_OITEXT', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_PLGOPT_OITEXT']) )
+                               {
+                                       $template .= "<input type=\"text\" size=\"40\" maxlength=\"128\" name=\"<%varname%>\" value=\"<%value%>\"<%datatype%><%readonly%> />\n";
+                               }
+                               else
+                               {
+                                       $template .= $templates['SHOWLIST_LISTPLUG_TABLE_PLGOPT_OITEXT'];
+                               }
+                               $data = array(
+                                       'varname'       => Entity::hsc($varname),
+                                       'value'         => Entity::hsc($current['value'])
+                               );
+                               if ( !array_key_exists('datatype', $current) || $current['datatype'] != 'numerical')
+                               {
+                                       $data['datatype'] = '';
+                               }
+                               else
+                               {
+                                       $data['datatype'] = ' onkeyup="checkNumeric(this)" onblur="checkNumeric(this)"';
+                               }
+                               if ( !array_key_exists('access', $current) || $current['access'] != 'readonly')
+                               {
+                                       $data['readonly'] = '';
+                               }
+                               else
+                               {
+                                       $data['readonly'] = ' readonly="readonly"';
+                               }
+               }
+               
+               if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_PLUGOPTN_FOOT', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_PLUGOPTN_FOOT']) )
+               {
+                       $template .= "<%extra%></td>\n";
+               }
+               else
+               {
+                       $template .= $templates['SHOWLIST_LISTPLUG_TABLE_PLUGOPTN_FOOT'];
+               }
+               
+               if ( !array_key_exists('extra', $current) )
+               {
+                       $data['extra'] = '';
+               }
+               else
+               {
+                       $data['extra'] = Entity::hsc($current['extra']);
+               }
+               
+               if ( !array_key_exists('description', $current) )
+               {
+                       $data['description'] = Entity::hsc($current['name']);
+               }
+               else if ( !defined($current['description']) )
+               {
+                       $data['description'] = Entity::hsc($current['description']);
+               }
+               else
+               {
+                       $data['description'] = Entity::hsc(constant($current['description']));
+               }
+       }
+       return Template::fill($template, $data, 1);
+}
+
+/**
+ * listplug_templateEditRow()
+ * 
+ * @param      array   $content                content of target template
+ * @param      string  $desc                   description of target template
+ * @param      string  $name                   name of target template
+ * @param      string  $help                   help text
+ * @param      integer $tabindex               a number for tab index
+ * @param      boolean $big                    large or small textarea
+ * @param      array   $template_name  name of template for filling
+ * @return     void
+ */
+function listplug_templateEditRow($content, $desc, $name, $help = '', $tabindex = 0, $big = 0, $template_name = '')
+{
+       global $manager;
+       
+       static $count = 0;
+       
+       $tmplt = array();
+       $base  = array();
+       
+       $templates = array();
+       if ( $template_name )
+       {
+               $templates =& $manager->getTemplate($template_name);
+       }
+       
+       $data = array(
+               'description'   => $desc,
+               'help'                  => empty($help) ? '' : helpHtml('template' . $help),
+               'count'                 => $count++,
+               'name'                  => $name,
+               'tabindex'              => $tabindex,
+               'rows'                  => $big ? 10 : 5,
+       );
+       
+       $message = '';
+       
+       /* row head */
+       if ( !array_key_exists('TEMPLATE_EDIT_ROW_HEAD', $templates) || empty($tmplt['TEMPLATE_EDIT_ROW_HEAD']) )
+       {
+               $template = "<tr>\n"
+                         . "<td><%description%><%help%></td>\n"
+                         . "<td id=\"td<%count%>\">\n"
+                         . "<textarea class=\"templateedit\" name=\"<%name%>\" tabindex=\"<%tabindex%>\" cols=\"50\" rows=\"<%rows%>\" id=\"textarea<%count%>\">";
+       }
+       else
+       {
+               $template = $tmplt['TEMPLATE_EDIT_ROW_HEAD'];
+       }
+       $message .= TEMPLATE::fill($template, $data);
+       
+       /* row content */
+       $message .= ENTITY::hsc($content);
+       
+       /* row tail */
+       if ( !array_key_exists('TEMPLATE_EDIT_ROW_TAIL', $templates) || empty($tmplt['TEMPLATE_EDIT_ROW_TAIL']) )
+       {
+               $template = "</textarea>\n"
+                         . "</td>\n"
+                         . "</tr>\n";
+       }
+       else
+       {
+               $template = $tmplt['TEMPLATE_EDIT_ROW_TAIL'];
+       }
+       $message .= TEMPLATE::fill($template, $data);
+       
+       return $message;
+}
+
+function listplug_table_itemlist($vars, $type, $template_name = '')
+{
+       global $manager;
+       
+       $cssclass  = '';
+       
+       $templates = array();
+       if ( !empty($template_name) )
+       {
+               $templates =& $manager->getTemplate($template_name);
+       }
+>>>>>>> skinnable-master
+       
+       switch( $type )
+       {
+               case 'HEAD':
+<<<<<<< HEAD
+                       echo "<th>"._LIST_ITEM_INFO."</th>\n";
+                       echo "<th>"._LIST_ITEM_CONTENT."</th>\n";
+                       echo "<th colspan='1'>"._LISTS_ACTIONS."</th>";
+                       break;
+               case 'BODY':
+                       $current = $template['current'];
+                       // string -> unix timestamp
+                       $current['itime'] = strtotime($current['itime']);
+                       
+                       if ( $current['idraft'] == 1 )
+                       {
+                               $cssclass = " class='draft'";
+                       }
+                       
+                       // (can't use offset time since offsets might vary between blogs)
+                       if ( $current['itime'] > $template['now'] )
+                       {
+                               $cssclass = " class='future'";
+                       }
+                       
+                       echo "<td{$cssclass}>\n";
+                       echo "<dl>\n";
+                       echo '<dt>' . _LIST_ITEM_BLOG . "</dt>\n";
+                       echo '<dd>' . Entity::hsc($current['bshortname']) . "</dd>\n";
+                       echo '<dt>' . _LIST_ITEM_CAT . "</dt>\n";
+                       echo '<dd>' . Entity::hsc($current['cname']) . "</dd>\n";
+                       echo '<dt>' . _LIST_ITEM_AUTHOR . "</dt>\n";
+                       echo '<dd>' . Entity::hsc($current['mname']) . "</dd>\n";
+                       echo '<dt>' . _LIST_ITEM_DATE . "</dt>\n";
+                       echo '<dd>' . date("Y-m-d",$current['itime']) . "</dd>\n";
+                       echo '<dt>' . _LIST_ITEM_TIME . "</dt>\n";
+                       echo '<dd>' . date("H:i",$current['itime']) . "</dd>\n";
+                       echo "</dl>\n";
+                       echo "</td>\n";
+                       
+                       $id = listplug_nextBatchId();
+                       
+                       echo "<td{$cssclass}>\n";
+                       echo "<h3>\n";
+                       echo "<input type=\"checkbox\" id=\"batch{$id}\" name=\"batch[{$id}]\" value=\"{$current['inumber']}\" />\n";
+                       echo "<label for=\"batch{$id}\">" . Entity::hsc(strip_tags($current['ititle'])) . "</label>\n";
+                       echo "</h3>\n";
+                       
+                       $current['ibody'] = strip_tags($current['ibody']);
+                       $current['ibody'] = Entity::hsc(Entity::shorten($current['ibody'], 300, '...'));
+                       echo "<p>{$current['ibody']}</p>\n";
+                       echo "</td>\n";
+                       
+                       echo "<td{$cssclass}>\n";
+                       echo "<ul>\n";
+                       echo "<li><a href=\"index.php?action=itemedit&amp;itemid={$current['inumber']}\">" . _LISTS_EDIT . "</a></li>\n";
+                       
+                       // evaluate amount of comments for the item
+                       $COMMENTS = new Comments($current['inumber']);
+                       $camount = $COMMENTS->amountComments();
+                       if ( $camount > 0 )
+                       {
+                               echo "<li><a href=\"index.php?action=itemcommentlist&amp;itemid={$current['inumber']}\">( ";
+                               echo sprintf(_LIST_ITEM_COMMENTS, $COMMENTS->amountComments()) . " )</a></li>\n";
+                       }
+                       else
+                       {
+                               echo '<li>' . _LIST_ITEM_NOCONTENT . "</li>\n";
                        }
+                       
+                       echo "<li><a href=\"index.php?action=itemmove&amp;itemid={$current['inumber']}\">" . _LISTS_MOVE . "</a></li>\n";
+                       echo "<li><a href=\"index.php?action=itemdelete&amp;itemid={$current['inumber']}\">" . _LISTS_DELETE . "</a></li>\n";
                        echo "</ul>\n";
                        echo "</td>\n";
+                       break;
+       }
+       return;
+=======
+                       if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_ITEMLIST_HEAD', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_ITEMLIST_HEAD']) )
+                       {
+                               $template = "<th><%colinfo%></th>\n"
+                                         . "<th><%colcontent%></th>\n"
+                                         . "<th style=\"white-space:nowrap\"><%colaction%></th>\n";
+                       }
+                       else
+                       {
+                               $template = $templates['SHOWLIST_LISTPLUG_TABLE_ITEMLIST_HEAD'];
+                       }
+                       $data = array(
+                               'colinfo'               => _LIST_ITEM_INFO,
+                               'colcontent'    => _LIST_ITEM_CONTENT,
+                               'colaction'             => _LISTS_ACTIONS
+                       );
+                       break;
+               case 'BODY':
+                       $current = $vars['current'];
+                       // string -> unix timestamp
+                       $current['itime'] = strtotime($current['itime']);
+                       if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_ITEMLIST_BODY', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_ITEMLIST_BODY']) )
+                       {
+                               $template = "<td<%cssclass%>>\n"
+                                         . "<%bshortlabel%> <%bshortnameval%><br />\n"
+                                         . "<%categorylabel%> <%categorynameval%><br />\n"
+                                         . "<%authorlabel%> <%authornameval%><br />\n"
+                                         . "<%itemdatelabel%> <%itemdateval%><br />\n"
+                                         . "<%itemtimelabel%> <%itemtimeval%>\n"
+                                         . "</td>\n"
+                                         . "<td<%cssclass%>>\n"
+                                         . "<input type=\"checkbox\" id=\"batch<%batchid%>\" name=\"batch[<%batchid%>]\" value=\"<%itemid%>\" />\n"
+                                         . "<label for=\"batch<%batchid%>\"><b><%itemtitle%></b></label><br />\n"
+                                         . "<%itembody%>\n"
+                                         . "</td>\n"
+                                         . "<td<%cssclass%>>\n"
+                                         . "<a href=\"index.php?action=itemedit&amp;itemid=<%itemid%>\"><%editbtn%></a><br />\n"
+                                         . "<a href=\"index.php?action=itemmove&amp;itemid=<%itemid%>\"><%movebtn%></a><br />\n"
+                                         . "<a href=\"index.php?action=itemdelete&amp;itemid=<%itemid%>\"><%delbtn%></a><br />\n"
+                                         . "<%camount%>\n"
+                                         . "</td>\n";
+                       }
+                       else
+                       {
+                               $template = $templates['SHOWLIST_LISTPLUG_TABLE_ITEMLIST_BODY'];
+                       }
+                       $cssclass  = '';
+                       
+                       if ( $current['idraft'] == 1 )
+                       {
+                               $cssclass = ' class="draft"';
+                       }
+                       
+                       // (can't use offset time since offsets might vary between blogs)
+                       if ( $current['itime'] > $vars['now'] )
+                       {
+                               $cssclass = ' class="future"';
+                       }
+                       $body = strip_tags($current['ibody']);
+                       $data = array(
+                               'cssclass'                      => $cssclass,
+                               'bshortlabel'           => _LIST_ITEM_BLOG,
+                               'bshortnameval'         => Entity::hsc($current['bshortname']),
+                               'categorylabel'         => _LIST_ITEM_CAT,
+                               'categorynameval'       => Entity::hsc($current['cname']),
+                               'authorlabel'           => _LIST_ITEM_AUTHOR,
+                               'authornameval'         => Entity::hsc($current['mname']),
+                               'itemdatelabel'         => _LIST_ITEM_DATE,
+                               'itemdateval'           => date("Y-m-d",$current['itime']),
+                               'itemdatelabel'         => _LIST_ITEM_TIME,
+                               'itemdateval'           => date("H:i",$current['itime']),
+                               'batchid'                       => listplug_nextBatchId(),
+                               'itemid'                        => $current['inumber'],
+                               'itemtitle'                     => Entity::hsc(strip_tags($current['ititle'])),
+                               'itembody'                      => Entity::hsc(Entity::shorten($body, 300, '...')),
+                               'editbtn'                       => _LISTS_EDIT,
+                               'movebtn'                       => _LISTS_MOVE,
+                               'delbtn'                        => _LISTS_DELETE,
+                       );
+                       // evaluate amount of comments for the item
+                       $comment = new Comments($current['inumber']);
+                       $camount = $comment->amountComments();
+                       if ( $camount > 0 )
+                       {
+                               $data['camount'] = "<a href=\"index.php?action=itemcommentlist&amp;itemid={$current['inumber']}\">(" . sprintf(_LIST_ITEM_COMMENTS, $comment->amountComments()) . ")</a><br />\n";
+                       }
+                       else
+                       {
+                               $data['camount'] = _LIST_ITEM_NOCONTENT . "<br />\n";
+                       }
+                       break;
+               case 'FOOT':
+                       if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_ITEMLIST_FOOT', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_ITEMLIST_FOOT']) )
+                       {
+                               $template = "\n";
+                       }
+                       else
+                       {
+                               $template = $templates['SHOWLIST_LISTPLUG_TABLE_ITEMLIST_FOOT'];
+                       }
+                       $data = array();
+                       break;
+       }
+       return Template::fill($template, $data);
+>>>>>>> skinnable-master
+}
 
-                       $id = listplug_nextBatchId();
+// for batch operations: generates the index numbers for checkboxes
+function listplug_nextBatchId()
+{
+       static $id = 0;
+       return $id++;
+}
+
+<<<<<<< HEAD
+function listplug_table_commentlist($template, $type)
+{
+       switch( $type )
+       {
+               case 'HEAD':
+                       echo '<th>' . _LISTS_INFO . "</th>\n";
+                       echo '<th>' . _LIST_COMMENT . "</th>\n";
+                       echo '<th colspan="3">' . _LISTS_ACTIONS . "</th>";
+                       break;
+               case 'BODY':
+                       $current = $template['current'];
+                       $current['ctime'] = strtotime($current['ctime']);       // string -> unix timestamp
                        
-                       echo '<td>';
-                       echo "<input type=\"checkbox\" id=\"batch{$id}\" name=\"batch[{$id}\" value=\"{$current['cnumber']}\" />\n";
-                       echo "<label for=\"batch{$id}\">\n";
-                       $current['cbody'] = strip_tags($current['cbody']);
-                       $current['cbody'] = Entity::hsc(Entity::shorten($current['cbody'], 300, '...'));
+                       echo "<td>\n";
+                       echo "<ul>\n";
+                       echo '<li>' . date("Y-m-d@H:i",$current['ctime']) . "</li>\n";
+                       if ( isset($current['mname']) )
+                       {
+                               echo '<li>' . Entity::hsc($current['mname']) ,' ', _LIST_COMMENTS_MEMBER . "</li>\n";
+                       }
+                       else
+                       {
+                               echo '<li>' . Entity::hsc($current['cuser']) . "</li>\n";
+                       }
+                       if ( isset($current['cmail']) && $current['cmail'] )
+                       {
+                               echo '<li>' . Entity::hsc($current['cmail']) . "</li>\n";
+                       }
+                       if ( isset($current['cemail']) && $current['cemail'] )
+                       {
+                               echo '<li>' . Entity::hsc($current['cemail']) . "</li>\n";
+                       }
+                       echo "</ul>\n";
+                       echo "</td>\n";
+
+                       $id = listplug_nextBatchId();
+                       
+                       echo '<td>';
+                       echo "<input type=\"checkbox\" id=\"batch{$id}\" name=\"batch[{$id}\" value=\"{$current['cnumber']}\" />\n";
+                       echo "<label for=\"batch{$id}\">\n";
+                       $current['cbody'] = strip_tags($current['cbody']);
+                       $current['cbody'] = Entity::hsc(Entity::shorten($current['cbody'], 300, '...'));
                        echo $current['cbody'];
                        echo '</label>';
                        echo '</td>';
                        
-                       echo '<td><a href="index.php?action=commentedit&amp;commentid=' . $current['cnumber'] . '">' . _LISTS_EDIT . "</a></td>\n";
-                       echo '<td><a href="index.php?action=commentdelete&amp;commentid=' . $current['cnumber'] . '">' . _LISTS_DELETE . "</a></td>\n";
-                       if ( $template['canAddBan'] )
-                       {
-                               echo '<td><a href="index.php?action=banlistnewfromitem&amp;itemid=' . $current['citem'] . '&amp;ip=' . Entity::hsc($current['cip']), '" title="' . Entity::hsc($current['chost']) . '">' . _LIST_COMMENT_BANIP . "</a></td>\n";
-                       }
+                       echo '<td><a href="index.php?action=commentedit&amp;commentid=' . $current['cnumber'] . '">' . _LISTS_EDIT . "</a></td>\n";
+                       echo '<td><a href="index.php?action=commentdelete&amp;commentid=' . $current['cnumber'] . '">' . _LISTS_DELETE . "</a></td>\n";
+                       if ( $template['canAddBan'] )
+                       {
+                               echo '<td><a href="index.php?action=banlistnewfromitem&amp;itemid=' . $current['citem'] . '&amp;ip=' . Entity::hsc($current['cip']), '" title="' . Entity::hsc($current['chost']) . '">' . _LIST_COMMENT_BANIP . "</a></td>\n";
+                       }
+                       break;
+       }
+       return;
+}
+
+function listplug_table_bloglist($template, $type)
+{
+       switch( $type )
+       {
+               case 'HEAD':
+                       echo '<th>' . _NAME . "</th>\n";
+                       echo '<th colspan="7">' . _LISTS_ACTIONS . "</th>\n";
+                       break;
+               case 'BODY':
+                       $current = $template['current'];
+                       $current['bname'] = Entity::hsc($current['bname']);
+                       
+                       echo "<td title=\"blogid:{$current['bnumber']} shortname:{$current['bshortname']}\"><a href=\"{$current['burl']}\"><img src=\"images/globe.gif\" width=\"13\" height=\"13\" alt=\"". _BLOGLIST_TT_VISIT."\" /></a>{$current['bname']}</td>\n";
+                       echo "<td><a href=\"index.php?action=createitem&amp;blogid={$current['bnumber']}\" title=\"" . _BLOGLIST_TT_ADD ."\">" . _BLOGLIST_ADD . "</a></td>\n";
+                       echo "<td><a href=\"index.php?action=itemlist&amp;blogid={$current['bnumber']}\" title=\"". _BLOGLIST_TT_EDIT."\">". _BLOGLIST_EDIT."</a></td>\n";
+                       echo "<td><a href=\"index.php?action=blogcommentlist&amp;blogid={$current['bnumber']}\" title=\"". _BLOGLIST_TT_COMMENTS."\">". _BLOGLIST_COMMENTS."</a></td>\n";
+                       echo "<td><a href=\"index.php?action=bookmarklet&amp;blogid={$current['bnumber']}\" title=\"". _BLOGLIST_TT_BMLET."\">". _BLOGLIST_BMLET . "</a></td>\n";
+                       
+                       if ( $current['tadmin'] == 1 )
+                       {
+                               echo "<td><a href=\"index.php?action=blogsettings&amp;blogid={$current['bnumber']}\" title=\"" . _BLOGLIST_TT_SETTINGS . "\">" . _BLOGLIST_SETTINGS . "</a></td>\n";
+                               echo "<td><a href=\"index.php?action=banlist&amp;blogid={$current['bnumber']}\" title=\"" . _BLOGLIST_TT_BANS . "\">" . _BLOGLIST_BANS . "</a></td>\n";
+                       }
+                       
+                       if ( $template['superadmin'] )
+                       {
+                               echo "<td><a href=\"index.php?action=deleteblog&amp;blogid={$current['bnumber']}\" title=\"". _BLOGLIST_TT_DELETE."\">" ._BLOGLIST_DELETE. "</a></td>\n";
+                       }
+                       break;
+       }
+       return;
+}
+
+function listplug_table_shortblognames($template, $type)
+{
+       switch( $type )
+       {
+               case 'HEAD':
+                       echo '<th>' . _EBLOG_SHORTNAME . "</th>\n";
+                       echo '<th>' . _EBLOG_NAME. "</th>";
+                       break;
+               case 'BODY':
+                       $current = $template['current'];
+                       $current['bshortname'] = Entity::hsc($current['bshortname']);
+                       $current['bname'] = Entity::hsc($current['bname']);
+                       
+                       echo "<td>{$current['bshortname']}</td>\n";
+                       echo "<td>{$current['bname']}</td>\n";
+                       break;
+       }
+       return;
+}
+
+function listplug_table_shortnames($template, $type)
+{
+       switch( $type )
+       {
+               case 'HEAD':
+                       echo '<th>' . _NAME . "</th>\n";
+                       echo '<th>' . _LISTS_DESC. "</th>\n";
+                       break;
+               case 'BODY':
+                       $current = $template['current'];
+                       $current['name'] = Entity::hsc($current['name']);
+                       $current['description'] = Entity::hsc($current['description']);
+                       
+                       echo "<td>{$current['name']}</td>\n";
+                       echo "<td>{$current['description']}</td>\n";
+                       break;
+       }
+       return;
+}
+
+
+function listplug_table_categorylist($template, $type)
+{
+       switch( $type )
+       {
+               case 'HEAD':
+                       echo '<th>' . _LISTS_NAME . "</th>";
+                       echo '<th>' . _LISTS_DESC."</th>\n";
+                       echo '<th colspan="2">' . _LISTS_ACTIONS . "</th>\n";
+                       break;
+               case 'BODY':
+                       $id = listplug_nextBatchId();
+                       
+                       $current = $template['current'];
+                       $current['cname'] = Entity::hsc($current['cname']);
+                       $current['cdesc'] = Entity::hsc($current['cdesc']);
+                       
+                       echo "<td>\n";
+                       echo "<input type=\"checkbox\" id=\"batch{$id}\" name=\"batch[{$id}]\" value=\"{$current['catid']}\" />\n";
+                       echo "<label for=\"batch{$id}\">{$current['cname']}</label>\n";
+                       echo "</td>\n";
+                       echo "<td>{$current['cdesc']}</td>\n";
+                       echo "<td><a href=\"index.php?action=categoryedit&amp;blogid={$current['cblog']}&amp;catid={$current['catid']}\" tabindex=\"{$template['tabindex']}\">" . _LISTS_EDIT . "</a></td>\n";
+                       echo "<td><a href=\"index.php?action=categorydelete&amp;blogid={$current['cblog']}&amp;catid={$current['catid']}\" tabindex=\"{$template['tabindex']}\">" . _LISTS_DELETE . "</a></td>\n";
+                       break;
+       }
+       return;
+}
+
+function listplug_table_templatelist($template, $type)
+{
+       global $manager;
+       switch( $type )
+       {
+               case 'HEAD':
+                       echo '<th>' . _LISTS_NAME . "</th>\n";
+                       echo '<th>' . _LISTS_DESC . "</th>\n";
+                       echo '<th colspan="3">' . _LISTS_ACTIONS . "</th>\n";
+                       break;
+               case 'BODY':
+                       $current = $template['current'];
+                       $current['tdnumber'] = (integer) $current['tdnumber'];
+                       $current['tdname'] = Entity::hsc($current['tdname']);
+                       $current['tddesc'] = Entity::hsc($current['tddesc']);
+                       
+                       $url = "index.php?action=templateclone&templateid={$current['tdnumber']}";
+                       $url = Entity::hsc($manager->addTicketToUrl($url));
+                       
+                       echo "<td>{$current['tdname']}</td>\n";
+                       echo "<td>{$current['tddesc']}</td>\n";
+                       echo "<td>\n";
+                       echo "<a href=\"index.php?action=templateedit&amp;templateid={$current['tdnumber']}\" tabindex=\"{$template['tabindex']}\">" . _LISTS_EDIT . "</a>\n";
+                       echo "</td>\n";
+                       echo "<td>\n";
+                       echo "<a href=\"{$url}\" tabindex=\"{$template['tabindex']}\">" . _LISTS_CLONE . "</a>\n";
+                       echo "</td>\n";
+                       echo "<td>\n";
+                       echo "<a href=\"index.php?action=templatedelete&amp;templateid={$current['tdnumber']}\" tabindex=\"{$template['tabindex']}\">" . _LISTS_DELETE . "</a>\n";
+                       echo "</td>\n";
+                       break;
+       }
+       return;
+}
+
+function listplug_table_skinlist($template, $type)
+{
+       global $CONF, $DIR_SKINS, $manager;
+       switch( $type )
+       {
+               case 'HEAD':
+                       echo '<th>' . _LISTS_NAME . "</th>\n";
+                       echo '<th>' . _LISTS_DESC . "</th>\n";
+                       echo '<th colspan="3">' . _LISTS_ACTIONS . "</th>\n";
+                       break;
+               case 'BODY':
+                       $current = $template['current'];
+                       $current['sdnumber'] = (integer) $current['sdnumber'];
+                       $current['sdname'] = Entity::hsc($current['sdname']);
+                       $current['sdtype'] = Entity::hsc($current['sdtype']);
+                       
+                       echo "<td>\n";
+                       
+                       // use a special style for the default skin
+                       if ( $current['sdnumber'] == $CONF['BaseSkin'] )
+                       {
+                               echo '<h3 id="base_skin">' . $current['sdname'] . "</h3>\n";
+                       }
+                       else
+                       {
+                               echo '<h3>' . $current['sdname'] . "</h3>\n";
+                       }
+                       
+                       echo "<dl>\n";
+                       echo '<dt>' . _LISTS_TYPE . "</dt>\n";
+                       echo '<dd>' . $current['sdtype'] . "</dd>\n";
+                       
+                       echo '<dt>' . _LIST_SKINS_INCMODE . "</dt>\n";
+                       
+                       if ( $current['sdincmode'] == 'skindir' )
+                       {
+                               echo '<dd>' . _PARSER_INCMODE_SKINDIR . "</dd>\n";
+                       }
+                       else
+                       {
+                               echo '<dd>' . _PARSER_INCMODE_NORMAL . "</dd>\n";
+                       }
+                       
+                       if ( $current['sdincpref'] )
+                       {
+                               echo '<dt>' . _LIST_SKINS_INCPREFIX . "</dt>\n";
+                               echo '<dd>' . Entity::hsc($current['sdincpref']) . "</dd>\n";
+                       }
+                       echo "</dl>\n";
+=======
+function listplug_table_commentlist($vars, $type, $template_name = '')
+{
+       global $manager;
+       
+       $templates = array();
+       if ( !empty($template_name) )
+       {
+               $templates =& $manager->getTemplate($template_name);
+       }
+       
+       switch( $type )
+       {
+               case 'HEAD':
+                       if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_CMNTLIST_HEAD', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_CMNTLIST_HEAD']) )
+                       {
+                               $template = "<th><%colinfo%></th>\n"
+                                         . "<th><%colcontent%></th>\n"
+                                         . "<th colspan=\"3\"><%colaction%></th>\n";
+                       }
+                       else
+                       {
+                               $template = $templates['SHOWLIST_LISTPLUG_TABLE_CMNTLIST_HEAD'];
+                       }
+                       $data = array(
+                               'colinfo'               => _LISTS_INFO,
+                               'colcontent'    => _LIST_COMMENT,
+                               'colaction'             => _LISTS_ACTIONS
+                       );
+                       break;
+               case 'BODY':
+                       if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_CMNTLIST_BODY', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_CMNTLIST_BODY']) )
+                       {
+                               $template = "<td><%commentdate%><br /><%commentator%><br /><%commentsite%><br /><%commentmail%><br /></td>\n"
+                                         . "<td>\n"
+                                         . "<input type=\"checkbox\" id=\"batch<%batchid%>\" name=\"batch[<%batchid%>]\" value=\"<%commentid%>\" />"
+                                         . "<label for=\"batch<%batchid%>\"><%commentbody%></label>\n"
+                                         . "</td>\n"
+                                         . "<td style=\"white-space:nowrap\">\n"
+                                         . "<a href=\"index.php?action=commentedit&amp;commentid=<%commentid%>\"><%editbtn%></a>\n"
+                                         . "</td>\n"
+                                         . "<td style=\"white-space:nowrap\">\n"
+                                         . "<a href=\"index.php?action=commentdelete&amp;commentid=<%commentid%>\"><%delbtn%></a>\n"
+                                         . "</td>\n"
+                                         . "<%addbanlist%>";
+                       }
+                       else
+                       {
+                               $template = $templates['SHOWLIST_LISTPLUG_TABLE_CMNTLIST_BODY'];
+                       }
+                       $current = $vars['current'];
+                       $body = strip_tags($current['cbody']);
+                       $data = array(
+                               'commentdate'   => date("Y-m-d@H:i", strtotime($current['ctime'])),
+                               'batchid'               => listplug_nextBatchId(),
+                               'commentid'             => $current['cnumber'],
+                               'commentbody'   => Entity::hsc(Entity::shorten($current['cbody'], 300, '...')),
+                               'editbtn'               => _LISTS_EDIT,
+                               'delbtn'                => _LISTS_DELETE,
+                       );
+                       if ( isset($current['mname']) )
+                       {
+                               $data['commentator'] = Entity::hsc($current['mname']) . ' ' . _LIST_COMMENTS_MEMBER;
+                       }
+                       else
+                       {
+                               $data['commentator'] = Entity::hsc($current['cuser']);
+                       }
+                       if ( isset($current['cmail']) && $current['cmail'] )
+                       {
+                               $data['commentsite'] = Entity::hsc($current['cmail']);
+                       }
+                               else
+                       {
+                               $data['commentsite'] = '';
+                       }
+                       if ( isset($current['cemail']) && $current['cemail'] )
+                       {
+                               $data['commentmail'] = Entity::hsc($current['cemail']);
+                       }
+                               else
+                       {
+                               $data['commentmail'] = '';
+                       }
+                       if ( $vars['canAddBan'] )
+                       {
+                               if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_CMNTLIST_ABAN', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_CMNTLIST_ABAN']) )
+                               {
+                                       $subTpl = "<td style=\"white-space:nowrap\">"
+                                               . "<a href=\"index.php?action=banlistnewfromitem&amp;itemid=<%itemid%>&amp;ip=<%banip%>\" title=\"<%banhost%>\"><%banbtn%></a>"
+                                               . "</td>\n";
+                               }
+                               else
+                               {
+                                       $subTpl = $templates['SHOWLIST_LISTPLUG_TABLE_CMNTLIST_ABAN'];
+                               }
+                               $subData = array(
+                                       'itemid'        => $current['citem'],
+                                       'banip'         => Entity::hsc($current['cip']),
+                                       'banbtn'        => _LIST_COMMENT_BANIP,
+                               );
+                               $data['addbanlist'] = Template::fill($subTpl, $subData);
+                       }
+                       break;
+               case 'FOOT':
+                       if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_CMNTLIST_FOOT', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_CMNTLIST_FOOT']) )
+                       {
+                               $template = "";
+                       }
+                       else
+                       {
+                               $template = $templates['SHOWLIST_LISTPLUG_TABLE_CMNTLIST_FOOT'];
+                       }
+                       $data = array();
+                       break;
+       }
+       return Template::fill($template, $data);
+}
+
+function listplug_table_bloglist($vars, $type, $template_name = '')
+{
+       global $manager;
+       
+       $templates = array();
+       if ( !empty($template_name) )
+       {
+               $templates =& $manager->getTemplate($template_name);
+       }
+       
+       switch( $type )
+       {
+               case 'HEAD':
+                       if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_BLOGLIST_HEAD', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_BLOGLIST_HEAD']) )
+                       {
+                               $template = "<th><%blognames%></th>\n"
+                                         . "<th colspan=\"7\"><%actionshead%></th>\n";
+                       }
+                       else
+                       {
+                               $template = $templates['SHOWLIST_LISTPLUG_TABLE_BLOGLIST_HEAD'];
+                       }
+                       $data = array(
+                               'blognames'   => _NAME,
+                               'actionshead' => _LISTS_ACTIONS,
+                       );
+                       break;
+               case 'BODY':
+                       $current = $vars['current'];
+                       if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_BLOGLIST_BODY', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_BLOGLIST_BODY']) )
+                       {
+                               $template = "<td title=\"blogid:<%blogid%> shortname:<%shortname%>\">\n"
+                                         . "<a href=\"<%blogurl%>\"><img src=\"images/globe.gif\" width=\"13\" height=\"13\" alt=\"<%iconalt%>\" /></a><%blogname%></td>\n"
+                                         . "<td><a href=\"index.php?action=createitem&amp;blogid=<%blogid%>\" title=\"<%ttaddtext%>\"><%addtext%></a></td>\n"
+                                         . "<td><a href=\"index.php?action=itemlist&amp;blogid=<%blogid%>\" title=\"<%ttedittext%>\"><%edittext%></a></td>\n"
+                                         . "<td><a href=\"index.php?action=blogcommentlist&amp;blogid=<%blogid%>\" title=\"<%ttcommenttext%>\"><%commenttext%></a></td>\n"
+                                         . "<td><a href=\"index.php?action=bookmarklet&amp;blogid=<%blogid%>\" title=\"<%ttbmlettext%>\"><%bmlettext%></a></td>\n";
+                       }
+                       else
+                       {
+                               $template = $templates['SHOWLIST_LISTPLUG_TABLE_BLOGLIST_BODY'];
+                       }
+                       $data = array(
+                               'blogid'                => $current['bnumber'],
+                               'shortname'             => Entity::hsc($current['bshortname']),
+                               'blogurl'               => $current['burl'],
+                               'blogname'              => Entity::hsc($current['bname']),
+                               'ttaddtext'             => _BLOGLIST_TT_ADD,
+                               'addtext'               => _BLOGLIST_ADD,
+                               'ttedittext'    => _BLOGLIST_TT_EDIT,
+                               'edittext'              => _BLOGLIST_EDIT,
+                               'ttcommenttext' => _BLOGLIST_TT_COMMENTS,
+                               'commenttext'   => _BLOGLIST_COMMENTS,
+                               'ttbmlettext'   => _BLOGLIST_TT_BMLET,
+                               'bmlettext'             => _BLOGLIST_BMLET,
+                       );
+                       if ( $current['tadmin'] == 1 )
+                       {
+                               if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM']) )
+                               {
+                                       $template .= "<td><a href=\"index.php?action=blogsettings&amp;blogid=<%blogid%>\" title=\"<%ttsettingtext%>\"><%settingtext%></a></td>\n"
+                                                  . "<td><a href=\"index.php?action=banlist&amp;blogid=<%blogid%>\" title=\"<%ttbanstext%>\"><%banstext%></a></td>\n";
+                               }
+                               else
+                               {
+                                       $template .= $templates['SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM'];
+                               }
+                               $data['ttsettingtext']  = _BLOGLIST_TT_SETTINGS;
+                               $data['settingtext']    = _BLOGLIST_SETTINGS;
+                               $data['ttbanstext']             = _BLOGLIST_TT_BANS;
+                               $data['banstext']               = _BLOGLIST_BANS;
+                       }
+                       
+                       if ( $vars['superadmin'] )
+                       {
+                               if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM']) )
+                               {
+                                       $template .= "<td><a href=\"index.php?action=deleteblog&amp;blogid=<%blogid%>\" title=\"<%ttdeletetext%>\"><%deletetext%></a></td>\n";
+                               }
+                               else
+                               {
+                                       $template .= $templates['SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM'];
+                               }
+                               $data['ttdeletetext']   = _BLOGLIST_TT_DELETE;
+                               $data['deletetext']             = _BLOGLIST_DELETE;
+                       }
+                       break;
+               case 'FOOT':
+                       if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_BLOGLIST_FOOT', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_BLOGLIST_FOOT']) )
+                       {
+                               $template = "\n";
+                       }
+                       else
+                       {
+                               $template = $templates['SHOWLIST_LISTPLUG_TABLE_BLOGLIST_FOOT'];
+                       }
+                       $data = array();
+                       break;
+       }
+       return Template::fill($template, $data);
+}
+
+function listplug_table_shortblognames($vars, $type, $template_name = '')
+{
+       global $manager;
+       
+       $templates = array();
+       if ( !empty($template_name) )
+       {
+               $templates =& $manager->getTemplate($template_name);
+       }
+       
+       switch( $type )
+       {
+               case 'HEAD':
+                       if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_BLOGSNAM_HEAD', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_BLOGSNAM_HEAD']) )
+                       {
+                               $template = "<th><%colshortname%></th>\n"
+                                         . "<th><%colblogname%></th>\n";
+                       }
+                       else
+                       {
+                               $template = $templates['SHOWLIST_LISTPLUG_TABLE_BLOGSNAM_HEAD'];
+                       }
+                       $data = array(
+                               'colshortname' => _EBLOG_SHORTNAME,
+                               'colblogname'  => _EBLOG_NAME,
+                       );
+                       break;
+               case 'BODY':
+                       $current = $vars['current'];
+                       if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_BLOGSNAM_BODY', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_BLOGSNAM_BODY']) )
+                       {
+                               $template = "<td><%bshortname%></td>\n"
+                                         . "<td><%blogname%></td>\n";
+                       }
+                       else
+                       {
+                               $template = $templates['SHOWLIST_LISTPLUG_TABLE_BLOGSNAM_BODY'];
+                       }
+                       $data = array(
+                               'bshortname' => Entity::hsc($current['bshortname']),
+                               'blogname'   => Entity::hsc($current['bname']),
+                       );
+                       break;
+               case 'FOOT':
+                       $current = $vars['current'];
+                       if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_BLOGSNAM_FOOT', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_BLOGSNAM_FOOT']) )
+                       {
+                               $template = "\n";
+                       }
+                       else
+                       {
+                               $template = $templates['SHOWLIST_LISTPLUG_TABLE_BLOGSNAM_FOOT'];
+                       }
+                       $data = array();
+                       break;
+       }
+       return Template::fill($template, $data);
+}
+
+function listplug_table_shortnames($vars, $type, $template_name = '')
+{
+       global $manager;
+       
+       $templates = array();
+       if ( !empty($template_name) )
+       {
+               $templates =& $manager->getTemplate($template_name);
+       }
+       
+       switch( $type )
+       {
+               case 'HEAD':
+                       if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_SHORTNAM_HEAD', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_SHORTNAM_HEAD']) )
+                       {
+                               $template = "<th><%colname%></th>\n"
+                                         . "<th><%coldesc%></th>\n";
+                       }
+                       else
+                       {
+                               $template = $templates['SHOWLIST_LISTPLUG_TABLE_SHORTNAM_HEAD'];
+                       }
+                       $data = array(
+                               'colname' => _NAME,
+                               'coldesc' => _LISTS_DESC,
+                       );
+                       break;
+               case 'BODY':
+                       $current = $vars['current'];
+                       if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_SHORTNAM_BODY', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_SHORTNAM_BODY']) )
+                       {
+                               $template = "<td><%name%></td>\n"
+                                         . "<td><%desc%></td>\n";
+                       }
+                       else
+                       {
+                               $template = $templates['SHOWLIST_LISTPLUG_TABLE_SHORTNAM_BODY'];
+                       }
+                       $data = array(
+                               'name' => Entity::hsc($current['name']),
+                               'desc' => Entity::hsc($current['description']),
+                       );
+                       break;
+               case 'FOOT':
+                       $current = $vars['current'];
+                       if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_SHORTNAM_FOOT', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_SHORTNAM_FOOT']) )
+                       {
+                               $template = "\n";
+                       }
+                       else
+                       {
+                               $template = $templates['SHOWLIST_LISTPLUG_TABLE_SHORTNAM_FOOT'];
+                       }
+                       $data = array();
+                       break;
+       }
+       return Template::fill($template, $data);
+}
+
+function listplug_table_categorylist($vars, $type, $template_name = '')
+{
+       global $manager;
+       
+       $templates = array();
+       if ( !empty($template_name) )
+       {
+               $templates =& $manager->getTemplate($template_name);
+       }
+       
+       switch( $type )
+       {
+               case 'HEAD':
+                       if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_CATELIST_HEAD', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_CATELIST_HEAD']) )
+                       {
+                               $template = "<th><%colname%></th>\n"
+                                         . "<th><%coldesc%></th>\n"
+                                         . "<th colspan=\"2\"><%colact%></th>\n";
+                       }
+                       else
+                       {
+                               $template = $templates['SHOWLIST_LISTPLUG_TABLE_CATELIST_HEAD'];
+                       }
+                       $data = array(
+                               'colname' => _LISTS_NAME,
+                               'coldesc' => _LISTS_DESC,
+                               'colact'  => _LISTS_ACTIONS,
+                       );
+                       break;
+               case 'BODY':
+                       $current = $vars['current'];
+                       if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_CATELIST_BODY', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_CATELIST_BODY']) )
+                       {
+                               $template = "<td>\n"
+                                         . "<input type=\"checkbox\" id=\"batch<%batchid%>\" name=\"batch[<%batchid%>]\" value=\"<%catid%>\" />\n"
+                                         . "<label for=\"batch<%batchid%>\"><%catname%></label>\n"
+                                         . "</td>\n"
+                                         . "<td><%catdesc%></td>\n"
+                                         . "<td><a href=\"index.php?action=categoryedit&amp;blogid=<%blogid%>&amp;catid=<%catid%>\" tabindex=\"<%tabindex%>\"><%editbtn%></a></td>\n"
+                                         . "<td><a href=\"index.php?action=categorydelete&amp;blogid=<%blogid%>&amp;catid=<%catid%>\" tabindex=\"<%tabindex%>\"><%delbtn%></a></td>\n";
+                       }
+                       else
+                       {
+                               $template = $templates['SHOWLIST_LISTPLUG_TABLE_CATELIST_BODY'];
+                       }
+                       
+                       $data = array(
+                               'batchid'       => listplug_nextBatchId(),
+                               'catid'         => intval($current['catid']),
+                               'catname'       => Entity::hsc($current['cname']),
+                               'catdesc'       => Entity::hsc($current['cdesc']),
+                               'blogid'        => intval($current['cblog']),
+                               'tabindex'      => intval($vars['tabindex']),
+                               'editbtn'       => _LISTS_EDIT,
+                               'delbtn'        => _LISTS_DELETE,
+                       );
+                       break;
+               case 'FOOT':
+                       if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_CATELIST_FOOT', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_CATELIST_FOOT']) )
+                       {
+                               $template = "\n";
+                       }
+                       else
+                       {
+                               $template = $templates['SHOWLIST_LISTPLUG_TABLE_CATELIST_FOOT'];
+                       }
+                       $data = array();
+                       break;
+       }
+       return Template::fill($template, $data);
+}
+
+function listplug_table_templatelist($vars, $type, $template_name = '')
+{
+       global $manager, $CONF;
+       
+       $templates = array();
+       if ( !empty($template_name) )
+       {
+               $templates =& $manager->getTemplate($template_name);
+       }
+       
+       switch( $type )
+       {
+               case 'HEAD':
+                       if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_TPLTLIST_HEAD', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_TPLTLIST_HEAD']) )
+                       {
+                               $template = "<th><%colname%></th>\n"
+                                         . "<th><%coldesc%></th>\n"
+                                         . "<th colspan=\"3\"><%colact%></th>\n";
+                       }
+                       else
+                       {
+                               $template = $templates['SHOWLIST_LISTPLUG_TABLE_TPLTLIST_HEAD'];
+                       }
+                       $data = array(
+                               'colname' => _LISTS_NAME,
+                               'coldesc' => _LISTS_DESC,
+                               'colact'  => _LISTS_ACTIONS,
+                       );
+                       break;
+               case 'BODY':
+                       $current = $vars['current'];
+                       if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_TPLTLIST_BODY', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_TPLTLIST_BODY']) )
+                       {
+                               $template = "<td><%templatename%></td>\n"
+                                         . "<td><%templatedesc%></td>\n"
+                                         . "<td style=\"white-space:nowrap\">"
+                                         . "<a href=\"<%editurl%>\" tabindex=\"<%tabindex%>\"><%editbtn%></a>\n"
+                                         . "</td>\n"
+                                         . "<td style=\"white-space:nowrap\">\n"
+                                         . "<a href=\"<%cloneurl%>\" tabindex=\"<%tabindex%>\"><%clonebtn%></a>\n"
+                                         . "</td>\n"
+                                         . "<td style=\"white-space:nowrap\">\n"
+                                         . "<a href=\"<%deleteurl%>\" tabindex=\"<%tabindex%>\"><%delbtn%></a>\n"
+                                         . "</td>\n";
+                       }
+                       else
+                       {
+                               $template = $templates['SHOWLIST_LISTPLUG_TABLE_TPLTLIST_BODY'];
+                       }
+                       
+                       $data = array(
+                               'templatename'  => Entity::hsc($current['tdname']),
+                               'templatedesc'  => Entity::hsc($current['tddesc']),
+                               'templateid'    => (integer) $current['tdnumber'],
+                               'tabindex'              => (integer) $vars['tabindex'],
+                               
+                               'clonebtn'              => _LISTS_CLONE,
+                               'cloneaction'   => $vars['cloneaction'],
+                               'cloneurl'              => "{$CONF['AdminURL']}index.php?action={$vars['cloneaction']}&amp;templateid={$current['tdnumber']}",
+                               
+                               'delbtn'                => _LISTS_DELETE,
+                               'deleteaction'  => $vars['deleteaction'],
+                               'deleteurl'             => "{$CONF['AdminURL']}index.php?action={$vars['deleteaction']}&amp;templateid={$current['tdnumber']}",
+                               
+                               'editbtn'               => _LISTS_EDIT,
+                               'editaction'    => $vars['editaction'],
+                               'editurl'               => "{$CONF['AdminURL']}index.php?action={$vars['editaction']}&amp;templateid={$current['tdnumber']}"
+                       );
+                       break;
+               case 'FOOT':
+                       if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_TPLTLIST_FOOT', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_TPLTLIST_FOOT']) )
+                       {
+                               $template = "\n";
+                       }
+                       else
+                       {
+                               $template = $templates['SHOWLIST_LISTPLUG_TABLE_TPLTLIST_FOOT'];
+                       }
+                       $data = array();
+                       break;
+       }
+       return Template::fill($template, $data);
+}
+
+function listplug_table_skinlist($vars, $type, $template_name = '')
+{
+       global $CONF, $DIR_SKINS, $manager;
+       
+       $templates = array();
+       if ( !empty($template_name) )
+       {
+               $templates =& $manager->getTemplate($template_name);
+       }
+       
+       switch( $type )
+       {
+               case 'HEAD':
+                       if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_SKINLIST_HEAD', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_SKINLIST_HEAD']) )
+                       {
+                               $template = "<th><%colname%></th>\n"
+                                         . "<th><%coldesc%></th>\n"
+                                         . "<th colspan=\"3\"><%colact%></th>\n";
+                       }
+                       else
+                       {
+                               $template = $templates['SHOWLIST_LISTPLUG_TABLE_SKINLIST_HEAD'];
+                       }
+                       $data = array(
+                               'colname'       => _LISTS_NAME,
+                               'coldesc'       => _LISTS_DESC,
+                               'colact'        => _LISTS_ACTIONS,
+                       );
+                       break;
+               case 'BODY':
+                       $current = $vars['current'];
+                       if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_SKINLIST_BODY', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_SKINLIST_BODY']) )
+                       {
+                               $template = "<td><%skinname%><br /><br />\n"
+                                         . "<%skintypelabel%> <%skintype%><br />\n"
+                                         . "<%incmodelabel%> <%incmode%><br />\n"
+                                         . "<%incpreflabel%> <%incpref%><br />\n"
+                                         . "<%skinthumb%>"
+                                         . "<%readme%></td>\n"
+                                         . "<td class=\"availableSkinTypes\"><%skindesc%><%skinparts%></td>\n"
+                                         . "<td style=\"white-space:nowrap\">"
+                                         . "<a href=\"index.php?action=skinedit&amp;skinid=<%skinid%>\" tabindex=\"<%tabindex%>\"><%editbtn%></a>"
+                                         . "</td>\n"
+                                         . "<td style=\"white-space:nowrap\">"
+                                         . "<a href=\"<%cloneurl%>\" tabindex=\"<%tabindex%>\"><%clonebtn%></a>"
+                                         . "</td>\n"
+                                         . "<td style=\"white-space:nowrap\">"
+                                         . "<a href=\"index.php?action=skindelete&amp;skinid=<%skinid%>\" tabindex=\"<%tabindex%>\"><%delbtn%></a>"
+                                         . "</td>\n";
+                       }
+                       else
+                       {
+                               $template = $templates['SHOWLIST_LISTPLUG_TABLE_SKINLIST_BODY'];
+                       }
+                       
+                       $data = array(
+                               'tabindex'              => $vars['tabindex']++,
+                               
+                               'skinid'                => (integer) $current['sdnumber'],
+                               'skindesc'              => Entity::hsc($current['sddesc']),
+                               
+                               'skintypelabel' => _LISTS_TYPE,
+                               'skintype'              => Entity::hsc($current['sdtype']),
+                               
+                               'incmodelabel'  => _LIST_SKINS_INCMODE,
+                               'incmode'               => ($current['sdincmode'] == 'skindir') ? _PARSER_INCMODE_SKINDIR : _PARSER_INCMODE_NORMAL,
+                               
+                               'incpreflabel'  => ($current['sdincpref']) ? _SKIN_INCLUDE_PREFIX : '',
+                               'incpref'               => ($current['sdincpref']) ? Entity::hsc($current['sdincpref']) : '',
+                               
+                               'editbtn'               => _LISTS_EDIT,
+                               'editaction'    => $vars['editaction'],
+                               'editurl'               => "{$CONF['AdminURL']}index.php?action={$vars['editaction']}&skinid={$current['sdnumber']}",
+                               
+                               'clonebtn'              => _LISTS_CLONE,
+                               'cloneaction'   => $vars['cloneaction'],
+                               'cloneurl'              => "{$CONF['AdminURL']}index.php?action={$vars['cloneaction']}&skinid={$current['sdnumber']}",
+                               
+                               'delbtn'                => _LISTS_DELETE,
+                               'deleteaction'  => $vars['deleteaction'],
+                               'deleteurl'             => "{$CONF['AdminURL']}index.php?action={$vars['deleteaction']}&skinid={$current['sdnumber']}"
+                       );
+                       
+                       if ( $current['sdnumber'] != $vars['default'] )
+                       {
+                               $data['skinname'] = Entity::hsc($current['sdname']);
+                       }
+                       else
+                       {
+                               $data['skinname'] = '<strong>' . Entity::hsc($current['sdname']) . '</strong>';
+                       }
+>>>>>>> skinnable-master
+                       
+                       // add preview image when present
+                       if ( $current['sdincpref'] && @file_exists("{$DIR_SKINS}{$current['sdincpref']}preview.png") )
+                       {
+<<<<<<< HEAD
+                               echo "<p>\n";
+=======
+                               $data['skinthumb'] = "<p>\n";
+>>>>>>> skinnable-master
+                               
+                               $alternatve_text = sprintf(_LIST_SKIN_PREVIEW, $current['sdname']);
+                               $has_enlargement = @file_exists($DIR_SKINS . $current['sdincpref'] . 'preview-large.png');
+                               if ( $has_enlargement )
+                               {
+<<<<<<< HEAD
+                                       echo '<a href="',$CONF['SkinsURL'], Entity::hsc($current['sdincpref']),'preview-large.png" title="' . _LIST_SKIN_PREVIEW_VIEWLARGER . "\">\n";
+                                       echo '<img class="skinpreview" src="',$CONF['SkinsURL'], Entity::hsc($current['sdincpref']),'preview.png" width="100" height="75" alt="' . $alternatve_text . "\" />\n";
+                                       echo "</a><br />\n";
+                               }
+                               else
+                               {
+                                       echo '<img class="skinpreview" src="',$CONF['SkinsURL'], Entity::hsc($current['sdincpref']),'preview.png" width="100" height="75" alt="' . $alternatve_text . "\" /><br />\n";
+=======
+                                       $data['skinthumb'] .= '<a href="' . $CONF['SkinsURL'] . Entity::hsc($current['sdincpref']) . 'preview-large.png" title="' . _LIST_SKIN_PREVIEW_VIEWLARGER . "\">\n";
+                               }
+                               $data['skinthumb'] .= '<img class="skinpreview" src="' . $CONF['SkinsURL'] . Entity::hsc($current['sdincpref']) . 'preview.png" width="100" height="75" alt="' . $alternatve_text . "\" />\n";
+                               if ( $has_enlargement )
+                               {
+                                       $data['skinthumb'] .= "</a><br />\n";
+>>>>>>> skinnable-master
+                               }
+                               
+                               if ( @file_exists("{$DIR_SKINS}{$current['sdincpref']}readme.html") )
+                               {
+                                       $url = $CONF['SkinsURL'] . Entity::hsc($current['sdincpref']) . 'readme.html';
+                                       $title = sprintf(_LIST_SKIN_README, $current['sdname']);
+<<<<<<< HEAD
+                                       echo "<a href=\"{$url}\" title=\"{$title}\">" . _LIST_SKIN_README_TXT . "</a>\n";
+                               }
+                               
+                               echo "</p>\n";
+                       }
+                       
+                       echo "</td>\n";
+                       
+                       echo "<td>\n";
+                       echo '<p>' . Entity::hsc($current['sddesc']) . "</p>\n";
+                       
+                       /* make list of defined skins */
+                       $skin = new Skin($current['sdnumber']);
+                       $available_skin_types = $skin->getAvailableTypes();
+                       
+                       echo _LIST_SKINS_DEFINED;
+                       echo "<ul>\n";
+                       foreach ( $available_skin_types as $type => $friendlyName )
+                       {
+                               if ( $friendlyName === FALSE )
+                               {
+                                       $friendlyName = ucfirst($type);
+=======
+                                       $data['readme'] = "<a href=\"{$url}\" title=\"{$title}\">" . _LIST_SKIN_README_TXT . "</a>\n";
+                               }
+                               else
+                               {
+                                       $data['readme'] ="";
+                               }
+                               
+                               $data['skinthumb'] .=  "</p>\n";
+                       }
+                       
+                       $skin =& $manager->getSkin($current['sdnumber'], $vars['handler']);
+                       $available_types = $skin->getAvailableTypes();
+                       
+                       $data['skinparts'] = _LIST_SKINS_DEFINED
+                                          . "<ul>\n";
+                       foreach ( $available_types as $type => $label )
+                       {
+                               if ( $label === FALSE )
+                               {
+                                       $label = ucfirst($type);
+>>>>>>> skinnable-master
+                                       $article = 'skinpartspecial';
+                               }
+                               else
+                               {
+                                       $article = "skinpart{$type}";
+                               }
+<<<<<<< HEAD
+                               echo "<li>\n";
+                               echo helpHtml($article) . "\n";
+                               echo "<a href=\"index.php?action=skinedittype&amp;skinid={$current['sdnumber']}&amp;type={$type}\" tabindex=\"{$template['tabindex']}\">";
+                               echo Entity::hsc($friendlyName);
+                               echo "</a>\n";
+                               echo "</li>\n";
+                       }
+                       echo "</ul>\n";
+                       
+                       echo "</td>";
+                       echo "<td>\n";
+                       echo "<a href=\nindex.php?action=skinedit&amp;skinid={$current['sdnumber']}\n tabindex=\n{$template['tabindex']}>" . _LISTS_EDIT . "</a>\n";
+                       echo "</td>\n";
+                       
+                       $url = "index.php?action=skinclone&skinid={$current['sdnumber']}";
+                       $url = Entity::hsc($manager->addTicketToUrl($url));
+                       echo "<td>\n";
+                       echo "<a href=\"{$url}\" tabindex=\"{$template['tabindex']}\">" . _LISTS_CLONE . "</a>\n";
+                       echo "</td>\n";
+                       echo "<td>\n";
+                       echo "<a href=\"index.php?action=skindelete&amp;skinid={$current['sdnumber']}\" tabindex=\"{$template['tabindex']}\">" . _LISTS_DELETE . "</a></td>\n";
                        break;
        }
        return;
 }
 
-function listplug_table_bloglist($template, $type)
+function listplug_table_draftlist($template, $type)
 {
        switch( $type )
        {
                case 'HEAD':
-                       echo '<th>' . _NAME . "</th>\n";
-                       echo '<th colspan="7">' . _LISTS_ACTIONS . "</th>\n";
+                       echo '<th>' . _LISTS_BLOG . "</th>\n";
+                       echo '<th>' . _LISTS_TITLE . "</th>\n";
+                       echo '<th colspan="2">' . _LISTS_ACTIONS . "</th>\n";
                        break;
                case 'BODY':
                        $current = $template['current'];
-                       $current['bname'] = Entity::hsc($current['bname']);
-                       
-                       echo "<td title=\"blogid:{$current['bnumber']} shortname:{$current['bshortname']}\"><a href=\"{$current['burl']}\"><img src=\"images/globe.gif\" width=\"13\" height=\"13\" alt=\"". _BLOGLIST_TT_VISIT."\" /></a>{$current['bname']}</td>\n";
-                       echo "<td><a href=\"index.php?action=createitem&amp;blogid={$current['bnumber']}\" title=\"" . _BLOGLIST_TT_ADD ."\">" . _BLOGLIST_ADD . "</a></td>\n";
-                       echo "<td><a href=\"index.php?action=itemlist&amp;blogid={$current['bnumber']}\" title=\"". _BLOGLIST_TT_EDIT."\">". _BLOGLIST_EDIT."</a></td>\n";
-                       echo "<td><a href=\"index.php?action=blogcommentlist&amp;blogid={$current['bnumber']}\" title=\"". _BLOGLIST_TT_COMMENTS."\">". _BLOGLIST_COMMENTS."</a></td>\n";
-                       echo "<td><a href=\"index.php?action=bookmarklet&amp;blogid={$current['bnumber']}\" title=\"". _BLOGLIST_TT_BMLET."\">". _BLOGLIST_BMLET . "</a></td>\n";
-                       
-                       if ( $current['tadmin'] == 1 )
-                       {
-                               echo "<td><a href=\"index.php?action=blogsettings&amp;blogid={$current['bnumber']}\" title=\"" . _BLOGLIST_TT_SETTINGS . "\">" . _BLOGLIST_SETTINGS . "</a></td>\n";
-                               echo "<td><a href=\"index.php?action=banlist&amp;blogid={$current['bnumber']}\" title=\"" . _BLOGLIST_TT_BANS . "\">" . _BLOGLIST_BANS . "</a></td>\n";
-                       }
+                       $current['bshortname'] = Entity::hsc($current['bshortname']);
+                       $current['ititle'] = Entity::hsc(strip_tags($current['ititle']));
                        
-                       if ( $template['superadmin'] )
-                       {
-                               echo "<td><a href=\"index.php?action=deleteblog&amp;blogid={$current['bnumber']}\" title=\"". _BLOGLIST_TT_DELETE."\">" ._BLOGLIST_DELETE. "</a></td>\n";
-                       }
+                       echo "<td>{$current['bshortname']}</td>\n";
+                       echo "<td>{$current['ititle']}</td>\n";
+                       echo "<td><a href=\"index.php?action=itemedit&amp;itemid={$current['inumber']}\">" . _LISTS_EDIT . "</a></td>\n";
+                       echo "<td><a href=\"index.php?action=itemdelete&amp;itemid={$current['inumber']}\">" . _LISTS_DELETE . "</a></td>\n";
                        break;
        }
        return;
 }
 
-function listplug_table_shortblognames($template, $type)
+function listplug_table_otherdraftlist($template, $type)
 {
        switch( $type )
        {
                case 'HEAD':
-                       echo '<th>' . _EBLOG_SHORTNAME . "</th>\n";
-                       echo '<th>' . _EBLOG_NAME. "</th>";
+                       echo '<th>' . _LISTS_BLOG . "</th>\n";
+                       echo '<th>' . _LISTS_TITLE . "</th>\n";
+                       echo '<th>' . _LISTS_AUTHOR . "</th>\n";
+                       echo '<th colspan="2">' . _LISTS_ACTIONS . "</th>\n";
                        break;
                case 'BODY':
                        $current = $template['current'];
                        $current['bshortname'] = Entity::hsc($current['bshortname']);
-                       $current['bname'] = Entity::hsc($current['bname']);
+                       $current['ititle'] = Entity::hsc(strip_tags($current['ititle']));
+                       $current['mname'] = Entity::hsc($current['mname']);
                        
                        echo "<td>{$current['bshortname']}</td>\n";
-                       echo "<td>{$current['bname']}</td>\n";
+                       echo "<td>{$current['ititle']}</td>\n";
+                       echo "<td>{$current['mname']}</td>\n";
+                       echo "<td><a href=\"index.php?action=itemedit&amp;itemid={$current['inumber']}\">" . _LISTS_EDIT . "</a></td>\n";
+                       echo "<td><a href=\"index.php?action=itemdelete&amp;itemid={$current['inumber']}\">" . _LISTS_DELETE . "</a></td>\n";
                        break;
        }
        return;
 }
 
-function listplug_table_shortnames($template, $type)
+function listplug_table_actionlist($template, $type)
 {
        switch( $type )
        {
                case 'HEAD':
-                       echo '<th>' . _NAME . "</th>\n";
-                       echo '<th>' . _LISTS_DESC. "</th>\n";
+                       echo '<th>' . _LISTS_TIME . "</th>\n";
+                       echo '<th>' . _LIST_ACTION_MSG . "</th>\n";
                        break;
                case 'BODY':
                        $current = $template['current'];
-                       $current['name'] = Entity::hsc($current['name']);
-                       $current['description'] = Entity::hsc($current['description']);
+                       $current['timestamp'] = Entity::hsc($current['timestamp']);
+                       $current['message'] = Entity::hsc($current['message']);
                        
-                       echo "<td>{$current['name']}</td>\n";
-                       echo "<td>{$current['description']}</td>\n";
+                       echo "<td>{$current['timestamp']}</td>\n";
+                       echo "<td>{$current['message']}</td>\n";
                        break;
        }
        return;
 }
 
-
-function listplug_table_categorylist($template, $type)
+function listplug_table_banlist($template, $type)
 {
        switch( $type )
        {
                case 'HEAD':
-                       echo '<th>' . _LISTS_NAME . "</th>";
-                       echo '<th>' . _LISTS_DESC."</th>\n";
-                       echo '<th colspan="2">' . _LISTS_ACTIONS . "</th>\n";
+                       echo '<th>' . _LIST_BAN_IPRANGE . "</th>\n";
+                       echo '<th>' . _LIST_BAN_REASON."</th>\n";
+                       echo '<th>' . _LISTS_ACTIONS . "</th>\n";
                        break;
                case 'BODY':
-                       $id = listplug_nextBatchId();
-                       
                        $current = $template['current'];
-                       $current['cname'] = Entity::hsc($current['cname']);
-                       $current['cdesc'] = Entity::hsc($current['cdesc']);
+                       $current['blogid'] = (integer) $current['blogid'];
+                       $current['iprange'] = Entity::hsc($current['iprange']);
+                       $current['reason'] = Entity::hsc($current['reason']);
                        
-                       echo "<td>\n";
-                       echo "<input type=\"checkbox\" id=\"batch{$id}\" name=\"batch[{$id}]\" value=\"{$current['catid']}\" />\n";
-                       echo "<label for=\"batch{$id}\">{$current['cname']}</label>\n";
-                       echo "</td>\n";
-                       echo "<td>{$current['cdesc']}</td>\n";
-                       echo "<td><a href=\"index.php?action=categoryedit&amp;blogid={$current['cblog']}&amp;catid={$current['catid']}\" tabindex=\"{$template['tabindex']}\">" . _LISTS_EDIT . "</a></td>\n";
-                       echo "<td><a href=\"index.php?action=categorydelete&amp;blogid={$current['cblog']}&amp;catid={$current['catid']}\" tabindex=\"{$template['tabindex']}\">" . _LISTS_DELETE . "</a></td>\n";
+                       echo "<td>{$current['iprange']}</td>\n";
+                       echo "<td>{$current['reason']}</td>\n";
+                       echo '<td><a href="index.php?action=banlistdelete&amp;blogid=' . $current['blogid'] . '&amp;iprange=' . Entity::hsc($current['iprange']) . '">' . _LISTS_DELETE . "</a></td>\n";
                        break;
        }
        return;
+=======
+                               $data['skinparts'] .= "<li>\n"
+                                                  . helpHtml($article) . "\n"
+                                                  . "<a href=\"{$CONF['AdminURL']}index.php?action={$vars['edittypeaction']}&amp;skinid={$current['sdnumber']}&amp;type={$type}\" tabindex=\"{$vars['tabindex']}\">"
+                                                  . Entity::hsc($label)
+                                                  . "</a>\n"
+                                                  . "</li>\n";
+                       }
+                       $data['skinparts'] .= "</ul>\n";
+                       break;
+               case 'FOOT':
+                       if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_SKINLIST_FOOT', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_SKINLIST_FOOT']) )
+                       {
+                               $template = "";
+                       }
+                       else
+                       {
+                               $template = $templates['SHOWLIST_LISTPLUG_TABLE_SKINLIST_FOOT'];
+                       }
+                       $data = array();
+                       break;
+       }
+       return Template::fill($template, $data);
 }
 
-function listplug_table_templatelist($template, $type)
+function listplug_table_draftlist($vars, $type, $template_name = '')
 {
        global $manager;
+       
+       $templates = array();
+       if ( !empty($template_name) )
+       {
+               $templates =& $manager->getTemplate($template_name);
+       }
        switch( $type )
        {
                case 'HEAD':
-                       echo '<th>' . _LISTS_NAME . "</th>\n";
-                       echo '<th>' . _LISTS_DESC . "</th>\n";
-                       echo '<th colspan="3">' . _LISTS_ACTIONS . "</th>\n";
+                       if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_DRFTLIST_HEAD', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_DRFTLIST_HEAD']) )
+                       {
+                               $template = "<th><%colblog%></th>\n"
+                                         . "<th><%coldesc%></th>\n"
+                                         . "<th colspan=\"2\"><%colact%></th>\n";
+                       }
+                       else
+                       {
+                               $template = $templates['SHOWLIST_LISTPLUG_TABLE_DRFTLIST_HEAD'];
+                       }
+                       $data = array(
+                               'colblog'       => _LISTS_BLOG,
+                               'coldesc'       => _LISTS_TITLE,
+                               'colact'        => _LISTS_ACTIONS,
+                       );
                        break;
                case 'BODY':
-                       $current = $template['current'];
-                       $current['tdnumber'] = (integer) $current['tdnumber'];
-                       $current['tdname'] = Entity::hsc($current['tdname']);
-                       $current['tddesc'] = Entity::hsc($current['tddesc']);
-                       
-                       $url = "index.php?action=templateclone&templateid={$current['tdnumber']}";
-                       $url = Entity::hsc($manager->addTicketToUrl($url));
-                       
-                       echo "<td>{$current['tdname']}</td>\n";
-                       echo "<td>{$current['tddesc']}</td>\n";
-                       echo "<td>\n";
-                       echo "<a href=\"index.php?action=templateedit&amp;templateid={$current['tdnumber']}\" tabindex=\"{$template['tabindex']}\">" . _LISTS_EDIT . "</a>\n";
-                       echo "</td>\n";
-                       echo "<td>\n";
-                       echo "<a href=\"{$url}\" tabindex=\"{$template['tabindex']}\">" . _LISTS_CLONE . "</a>\n";
-                       echo "</td>\n";
-                       echo "<td>\n";
-                       echo "<a href=\"index.php?action=templatedelete&amp;templateid={$current['tdnumber']}\" tabindex=\"{$template['tabindex']}\">" . _LISTS_DELETE . "</a>\n";
-                       echo "</td>\n";
+                       $current = $vars['current'];
+                       if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_DRFTLIST_BODY', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_DRFTLIST_BODY']) )
+                       {
+                               $template = "<td><%bshortname%></td>\n"
+                                         . "<td><%ititle%></td>\n"
+                                         . "<td><a href=\"index.php?action=itemedit&amp;itemid=<%itemid%>\"><%editbtn%></a></td>\n"
+                                         . "<td><a href=\"index.php?action=itemdelete&amp;itemid=<%itemid%>\"><%delbtn%></a></td>\n";
+                       }
+                       else
+                       {
+                               $template = $templates['SHOWLIST_LISTPLUG_TABLE_DRFTLIST_BODY'];
+                       }
+                       $data = array(
+                               'bshortname'    => Entity::hsc($current['bshortname']),
+                               'ititle'                => Entity::hsc(strip_tags($current['ititle'])),
+                               'itemid'                => intval($current['inumber']),
+                               'editbtn'               => _LISTS_EDIT,
+                               'delbtn'                => _LISTS_DELETE,
+                       );
+                       break;
+               case 'FOOT':
+                       if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_DRFTLIST_FOOT', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_DRFTLIST_FOOT']) )
+                       {
+                               $template = "\n";
+                       }
+                       else
+                       {
+                               $template = $templates['SHOWLIST_LISTPLUG_TABLE_DRFTLIST_FOOT'];
+                       }
+                       $data = array();
                        break;
        }
-       return;
+       return Template::fill($template, $data);
 }
 
-function listplug_table_skinlist($template, $type)
+function listplug_table_otherdraftlist($vars, $type, $template_name = '')
 {
-       global $CONF, $DIR_SKINS, $manager;
+       global $manager;
+       
+       $templates = array();
+       if ( !empty($template_name) )
+       {
+               $templates =& $manager->getTemplate($template_name);
+       }
+       
        switch( $type )
        {
                case 'HEAD':
-                       echo '<th>' . _LISTS_NAME . "</th>\n";
-                       echo '<th>' . _LISTS_DESC . "</th>\n";
-                       echo '<th colspan="3">' . _LISTS_ACTIONS . "</th>\n";
+                       if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_ODRFTLIST_HEAD', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_ODRFTLIST_HEAD']) )
+                       {
+                               $template = "<th><%colblog%></th>\n"
+                                         . "<th><%coldesc%></th>\n"
+                                         . "<th><%colautr%></th>\n"
+                                         . "<th colspan=\"2\"><%colact%></th>\n";
+                       }
+                       else
+                       {
+                               $template = $templates['SHOWLIST_LISTPLUG_TABLE_ODRFTLIST_HEAD'];
+                       }
+                       $data = array(
+                               'colblog'       => _LISTS_BLOG,
+                               'coldesc'       => _LISTS_TITLE,
+                               'colautr'       => _LISTS_AUTHOR,
+                               'colact'        => _LISTS_ACTIONS,
+                       );
                        break;
                case 'BODY':
-                       $current = $template['current'];
-                       $current['sdnumber'] = (integer) $current['sdnumber'];
-                       $current['sdname'] = Entity::hsc($current['sdname']);
-                       $current['sdtype'] = Entity::hsc($current['sdtype']);
-                       
-                       echo "<td>\n";
-                       
-                       // use a special style for the default skin
-                       if ( $current['sdnumber'] == $CONF['BaseSkin'] )
+                       $current = $vars['current'];
+                       if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_ODRFTLIST_BODY', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_ODRFTLIST_BODY']) )
+                       {
+                               $template = "<td><%bshortname%></td>\n"
+                                         . "<td><%ititle%></td>\n"
+                                         . "<td><%iauthor%></td>\n"
+                                         . "<td><a href=\"index.php?action=itemedit&amp;itemid=<%itemid%>\"><%editbtn%></a></td>\n"
+                                         . "<td><a href=\"index.php?action=itemdelete&amp;itemid=<%itemid%>\"><%delbtn%></a></td>\n";
+                       }
+                       else
+                       {
+                               $template = $templates['SHOWLIST_LISTPLUG_TABLE_ODRFTLIST_BODY'];
+                       }
+                       $data = array(
+                               'bshortname'    => Entity::hsc($current['bshortname']),
+                               'ititle'                => Entity::hsc(strip_tags($current['ititle'])),
+                               'iauthor'               => Entity::hsc(strip_tags($current['mname'])),
+                               'itemid'                => intval($current['inumber']),
+                               'editbtn'               => _LISTS_EDIT,
+                               'delbtn'                => _LISTS_DELETE,
+                       );
+                       break;
+               case 'FOOT':
+                       if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_ODRFTLIST_FOOT', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_ODRFTLIST_FOOT']) )
+                       {
+                               $template = "\n";
+                       }
+                       else
+                       {
+                               $template = $templates['SHOWLIST_LISTPLUG_TABLE_ODRFTLIST_FOOT'];
+                       }
+                       $data = array();
+                       break;
+       }
+       return Template::fill($template, $data);
+}
+
+function listplug_table_actionlist($vars, $type, $template_name = '')
+{
+       global $manager;
+       
+       $templates = array();
+       if ( !empty($template_name) )
+       {
+               $templates =& $manager->getTemplate($template_name);
+       }
+       
+       switch( $type )
+       {
+               case 'HEAD':
+                       if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_ACTNLIST_HEAD', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_ACTNLIST_HEAD']) )
+                       {
+                               $template = "<th><%coltime%></th>\n"
+                                         . "<th><%colmesg%></th>\n";
+                       }
+                       else
+                       {
+                               $template = $templates['SHOWLIST_LISTPLUG_TABLE_ACTNLIST_HEAD'];
+                       }
+                       $data = array(
+                               'coltime' => _LISTS_TIME,
+                               'colmesg' => _LIST_ACTION_MSG,
+                       );
+                       break;
+               case 'BODY':
+                       $current = $vars['current'];
+                       if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_ACTNLIST_BODY', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_ACTNLIST_BODY']) )
+                       {
+                               $template = "<td><%timestamp%></td>\n"
+                                         . "<td><%message%></td>\n";
+                       }
+                       else
+                       {
+                               $template = $templates['SHOWLIST_LISTPLUG_TABLE_ACTNLIST_BODY'];
+                       }
+                       $data = array(
+                               'timestamp'     => Entity::hsc($current['timestamp']),
+                               'message'       => Entity::hsc($current['message']),
+                       );
+                       break;
+               case 'FOOT':
+                       $current = $vars['current'];
+                       if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_ACTNLIST_FOOT', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_ACTNLIST_FOOT']) )
+                       {
+                               $template = "\n";
+                       }
+                       else
+                       {
+                               $template = $templates['SHOWLIST_LISTPLUG_TABLE_ACTNLIST_FOOT'];
+                       }
+                       $data = array();
+                       break;
+       }
+       return Template::fill($template, $data);
+}
+
+function listplug_table_banlist($vars, $type, $template_name = '')
+{
+       global $manager;
+       
+       $templates = array();
+       if ( !empty($template_name) )
+       {
+               $templates =& $manager->getTemplate($template_name);
+       }
+       
+       switch( $type )
+       {
+               case 'HEAD':
+                       if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_IBANLIST_HEAD', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_IBANLIST_HEAD']) )
+                       {
+                               $template = "<th><%iprange%></th>\n"
+                                         . "<th><%reason%></th>\n"
+                                         . "<th><%colact%></th>\n";
+                       }
+                       else
+                       {
+                               $template = $templates['SHOWLIST_LISTPLUG_TABLE_IBANLIST_HEAD'];
+                       }
+                       $data = array(
+                               'iprange'       => _LIST_BAN_IPRANGE,
+                               'reason'        => _LIST_BAN_REASON,
+                               'colact'        => _LISTS_ACTIONS,
+                       );
+                       break;
+               case 'BODY':
+                       $current = $vars['current'];
+                       if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_IBANLIST_BODY', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_IBANLIST_BODY']) )
+                       {
+                               $template = "<td><%iprange%></td>\n"
+                                         . "<td><%reason%></td>\n"
+                                         . "<td><a href=\"index.php?action=banlistdelete&amp;blogid=<%blogid%>&amp;iprange=<%iprange%>\"><%delbtn%></a></td>\n";
+                       }
+                       else
+                       {
+                               $template = $templates['SHOWLIST_LISTPLUG_TABLE_IBANLIST_BODY'];
+                       }
+                       $data = array(
+                               'iprange'       => Entity::hsc($current['iprange']),
+                               'reason'        => Entity::hsc($current['reason']),
+                               'blogid'        => intval($current['blogid']),
+                               'delbtn'        => _LISTS_DELETE,
+                       );
+                       break;
+               case 'FOOT':
+                       $current = $vars['current'];
+                       if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_IBANLIST_FOOT', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_IBANLIST_FOOT']) )
+                       {
+                               $template = "\n";
+                       }
+                       else
+                       {
+                               $template = $templates['SHOWLIST_LISTPLUG_TABLE_IBANLIST_FOOT'];
+                       }
+                       $data = array();
+                       break;
+       }
+       return Template::fill($template, $data);
+}
+
+/**
+ * listplug_list_normalskinlist()
+ * 
+ * @param      array   $vars                   array for variables
+ * @param      string  $type                   HEAD/BODY/FOOT
+ * @param      string  $template_name  name of template
+ * @return     string  marked-up string
+ */
+function listplug_list_normalskinlist($vars, $type, $template_name = '')
+{
+       global $manager, $CONF;
+       
+       /* available variables as a default */
+       $data = array(
+               'skinid'        => (integer) $vars['skinid'],
+               'skinname'      => Entity::hsc($vars['skinname']),
+       );
+       
+       $templates = array();
+       if ( $template_name )
+       {
+               $templates =& $manager->getTemplate($template_name);
+       }
+       
+       switch ( $type )
+       {
+               case 'HEAD':
+                       if ( !array_key_exists('NORMALSKINLIST_HEAD', $templates) || empty($templates['NORMALSKINLIST_HEAD']) )
                        {
-                               echo '<h3 id="base_skin">' . $current['sdname'] . "</h3>\n";
+                               $template = "<ul>\n";
                        }
                        else
                        {
-                               echo '<h3>' . $current['sdname'] . "</h3>\n";
+                               $template = $templates['NORMALSKINLIST_HEAD'];
                        }
                        
-                       echo "<dl>\n";
-                       echo '<dt>' . _LISTS_TYPE . "</dt>\n";
-                       echo '<dd>' . $current['sdtype'] . "</dd>\n";
-                       
-                       echo '<dt>' . _LIST_SKINS_INCMODE . "</dt>\n";
-                       
-                       if ( $current['sdincmode'] == 'skindir' )
+                       break;
+               case 'BODY':
+                       $current = $vars['current'];
+                       if ( !array_key_exists('NORMALSKINLIST_BODY', $templates) || empty($templates['NORMALSKINLIST_BODY']) )
                        {
-                               echo '<dd>' . _PARSER_INCMODE_SKINDIR . "</dd>\n";
+                               $template = "<li>"
+                                         . "<a href=\"<%editurl%>\" tabindex=\"<%tabindex%>\"><%skintypename%></a>"
+                                         . " <%help%>"
+                                         . "</li>\n";
                        }
                        else
                        {
-                               echo '<dd>' . _PARSER_INCMODE_NORMAL . "</dd>\n";
-                       }
-                       
-                       if ( $current['sdincpref'] )
-                       {
-                               echo '<dt>' . _LIST_SKINS_INCPREFIX . "</dt>\n";
-                               echo '<dd>' . Entity::hsc($current['sdincpref']) . "</dd>\n";
+                               $template = $templates['NORMALSKINLIST_BODY'];
                        }
-                       echo "</dl>\n";
                        
-                       // add preview image when present
-                       if ( $current['sdincpref'] && @file_exists("{$DIR_SKINS}{$current['sdincpref']}preview.png") )
+                       $data['tabindex']               = $vars['tabindex']++;
+                       $data['skintype']               = $current['skintype'];
+                       $data['skintypename']   = $current['skintypename'];
+                       $data['editaction']             = $vars['editaction'];
+                       $data['editurl']                = "{$CONF['AdminURL']}?action={$vars['editaction']}&amp;skinid={$vars['skinid']}&amp;type={$current['skintype']}";
+                       /* TODO: removeaction? */
+                       /* TODO: customHelpHtml("skinpart{$skintype}-{$template_name}") */
+                       $data['help']                   = '';
+                       break;
+               case 'FOOT':
+                       if ( !array_key_exists('NORMALSKINLIST_FOOT', $templates) || empty($templates['NORMALSKINLIST_FOOT']) )
                        {
-                               echo "<p>\n";
-                               
-                               $alternatve_text = sprintf(_LIST_SKIN_PREVIEW, $current['sdname']);
-                               $has_enlargement = @file_exists($DIR_SKINS . $current['sdincpref'] . 'preview-large.png');
-                               if ( $has_enlargement )
-                               {
-                                       echo '<a href="',$CONF['SkinsURL'], Entity::hsc($current['sdincpref']),'preview-large.png" title="' . _LIST_SKIN_PREVIEW_VIEWLARGER . "\">\n";
-                                       echo '<img class="skinpreview" src="',$CONF['SkinsURL'], Entity::hsc($current['sdincpref']),'preview.png" width="100" height="75" alt="' . $alternatve_text . "\" />\n";
-                                       echo "</a><br />\n";
-                               }
-                               else
-                               {
-                                       echo '<img class="skinpreview" src="',$CONF['SkinsURL'], Entity::hsc($current['sdincpref']),'preview.png" width="100" height="75" alt="' . $alternatve_text . "\" /><br />\n";
-                               }
-                               
-                               if ( @file_exists("{$DIR_SKINS}{$current['sdincpref']}readme.html") )
-                               {
-                                       $url = $CONF['SkinsURL'] . Entity::hsc($current['sdincpref']) . 'readme.html';
-                                       $title = sprintf(_LIST_SKIN_README, $current['sdname']);
-                                       echo "<a href=\"{$url}\" title=\"{$title}\">" . _LIST_SKIN_README_TXT . "</a>\n";
-                               }
-                               
-                               echo "</p>\n";
+                               $template = "</ul>\n";
                        }
-                       
-                       echo "</td>\n";
-                       
-                       echo "<td>\n";
-                       echo '<p>' . Entity::hsc($current['sddesc']) . "</p>\n";
-                       
-                       /* make list of defined skins */
-                       $skin = new Skin($current['sdnumber']);
-                       $available_skin_types = $skin->getAvailableTypes();
-                       
-                       echo _LIST_SKINS_DEFINED;
-                       echo "<ul>\n";
-                       foreach ( $available_skin_types as $type => $friendlyName )
+                       else
                        {
-                               if ( $friendlyName === FALSE )
-                               {
-                                       $friendlyName = ucfirst($type);
-                                       $article = 'skinpartspecial';
-                               }
-                               else
-                               {
-                                       $article = "skinpart{$type}";
-                               }
-                               echo "<li>\n";
-                               echo helpHtml($article) . "\n";
-                               echo "<a href=\"index.php?action=skinedittype&amp;skinid={$current['sdnumber']}&amp;type={$type}\" tabindex=\"{$template['tabindex']}\">";
-                               echo Entity::hsc($friendlyName);
-                               echo "</a>\n";
-                               echo "</li>\n";
+                               $template = $templates['NORMALSKINLIST_FOOT'];
                        }
-                       echo "</ul>\n";
                        
-                       echo "</td>";
-                       echo "<td>\n";
-                       echo "<a href=\nindex.php?action=skinedit&amp;skinid={$current['sdnumber']}\n tabindex=\n{$template['tabindex']}>" . _LISTS_EDIT . "</a>\n";
-                       echo "</td>\n";
-                       
-                       $url = "index.php?action=skinclone&skinid={$current['sdnumber']}";
-                       $url = Entity::hsc($manager->addTicketToUrl($url));
-                       echo "<td>\n";
-                       echo "<a href=\"{$url}\" tabindex=\"{$template['tabindex']}\">" . _LISTS_CLONE . "</a>\n";
-                       echo "</td>\n";
-                       echo "<td>\n";
-                       echo "<a href=\"index.php?action=skindelete&amp;skinid={$current['sdnumber']}\" tabindex=\"{$template['tabindex']}\">" . _LISTS_DELETE . "</a></td>\n";
                        break;
        }
-       return;
+       
+       return Template::fill($template, $data);
 }
 
-function listplug_table_draftlist($template, $type)
+/**
+ * listplug_list_specialskinlist()
+ * 
+ * @param      array   $vars                   array for variables
+ * @param      string  $type                   HEAD/BODY/FOOT
+ * @param      string  $template_name  name of template
+ * @return     string  marked-up string
+ */
+function listplug_list_specialskinlist($vars, $type, $template_name = '')
 {
-       switch( $type )
+       global $manager, $CONF;
+       
+       /* available variables as a default */
+       $data = array(
+               'skinid'        => (integer) $vars['skinid'],
+               'skinname'      => Entity::hsc($vars['skinname']),
+       );
+       
+       /* retrieve templates */
+       $templates = array();
+       if ( $template_name )
+       {
+               $templates =& $manager->getTemplate($template_name);
+       }
+       
+       switch ( $type )
        {
                case 'HEAD':
-                       echo '<th>' . _LISTS_BLOG . "</th>\n";
-                       echo '<th>' . _LISTS_TITLE . "</th>\n";
-                       echo '<th colspan="2">' . _LISTS_ACTIONS . "</th>\n";
+                       if ( !array_key_exists('SPECIALSKINLIST_HEAD', $templates) || empty($templates['SPECIALSKINLIST_HEAD']) )
+                       {
+                               $template = "<ul>\n";
+                       }
+                       else
+                       {
+                               $template = $templates['SPECIALSKINLIST_HEAD'];
+                       }
                        break;
                case 'BODY':
-                       $current = $template['current'];
-                       $current['bshortname'] = Entity::hsc($current['bshortname']);
-                       $current['ititle'] = Entity::hsc(strip_tags($current['ititle']));
+                       $current = $vars['current'];
+                       if ( !array_key_exists('SPECIALSKINLIST_BODY', $templates) || empty($templates['SPECIALSKINLIST_BODY']) )
+                       {
+                               $template = "<li>"
+                                         . "<a href=\"<%editurl%>\" tabindex=\"<%tabindex%>\">"
+                                         . "<%skintype%>"
+                                         . "</a>"
+                                         . " ("
+                                         . "<a href=\"<%removeurl%>\" tabindex=\"<%tabindex%>\" >"
+                                         . "<%text(_LISTS_DELETE)%>"
+                                         . "</a>"
+                                         . ")"
+                                         . "</li>\n";
+                       }
+                       else
+                       {
+                               $template = $templates['SPECIALSKINLIST_BODY'];
+                       }
                        
-                       echo "<td>{$current['bshortname']}</td>\n";
-                       echo "<td>{$current['ititle']}</td>\n";
-                       echo "<td><a href=\"index.php?action=itemedit&amp;itemid={$current['inumber']}\">" . _LISTS_EDIT . "</a></td>\n";
-                       echo "<td><a href=\"index.php?action=itemdelete&amp;itemid={$current['inumber']}\">" . _LISTS_DELETE . "</a></td>\n";
+                       $data['tabindex']               = (integer) $vars['tabindex']++;
+                       $data['skintype']               = Entity::hsc($current['skintype']);
+                       $data['skintypename']   = Entity::hsc($current['skintypename']);
+                       $data['editaction']             = $vars['editaction'];
+                       $data['editurl']                = "{$CONF['AdminURL']}?action={$vars['editaction']}&amp;skinid={$vars['skinid']}&amp;type={$current['skintype']}";
+                       $data['removeaction']   = $vars['editaction'];
+                       $data['removeurl']              = "{$CONF['AdminURL']}?action={$vars['removeaction']}&amp;skinid={$vars['skinid']}&amp;type={$current['skintype']}";
+                       
+                       break;
+               case 'FOOT':
+                       if ( !array_key_exists('SPECIALSKINLIST_FOOT', $templates) || empty($templates['SPECIALSKINLIST_FOOT']) )
+                       {
+                               $template = "</ul>\n";
+                       }
+                       else
+                       {
+                               $template = $templates['SPECIALSKINLIST_FOOT'];
+                       }
                        break;
        }
-       return;
+       
+       return Template::fill($template, $data);
 }
 
-function listplug_table_otherdraftlist($template, $type)
+/**
+ * listplug_input_yesno()
+ *
+ * @param      string  $name                   name of input element with radio type attribute
+ * @param      string  $checkedval             value which should be checked
+ * @param      integer $tabindex               tabindex number
+ * @param      string  $value1                 value of radio 1
+ * @param      string  $value2                 value of radio 2
+ * @param      string  $yesval                 label for yes
+ * @param      string  $noval                  label for no
+ * @param      boolean $isAdmin                super admin or not
+ * @param      string  $template_name  name of template
+ * @param      boolean $showlist               used in showlist or not
+ * @return     string  marked-up string
+ */
+function listplug_input_yesno($name, $checkedval, $tabindex = 0,
+       $value1 = 1, $value2 = 0, $yesval = _YES, $noval = _NO,
+       $isAdmin = 0, $template_name = '', $showlist = FALSE)
 {
-       switch( $type )
+       global $manager;
+       
+       $templates = array();
+       if ( $template_name )
        {
-               case 'HEAD':
-                       echo '<th>' . _LISTS_BLOG . "</th>\n";
-                       echo '<th>' . _LISTS_TITLE . "</th>\n";
-                       echo '<th>' . _LISTS_AUTHOR . "</th>\n";
-                       echo '<th colspan="2">' . _LISTS_ACTIONS . "</th>\n";
-                       break;
-               case 'BODY':
-                       $current = $template['current'];
-                       $current['bshortname'] = Entity::hsc($current['bshortname']);
-                       $current['ititle'] = Entity::hsc(strip_tags($current['ititle']));
-                       $current['mname'] = Entity::hsc($current['mname']);
-                       
-                       echo "<td>{$current['bshortname']}</td>\n";
-                       echo "<td>{$current['ititle']}</td>\n";
-                       echo "<td>{$current['mname']}</td>\n";
-                       echo "<td><a href=\"index.php?action=itemedit&amp;itemid={$current['inumber']}\">" . _LISTS_EDIT . "</a></td>\n";
-                       echo "<td><a href=\"index.php?action=itemdelete&amp;itemid={$current['inumber']}\">" . _LISTS_DELETE . "</a></td>\n";
-                       break;
+               $templates =& $manager->getTemplate($template_name);
        }
-       return;
+       
+       if ( $name == 'admin' )
+       {
+               if ( !array_key_exists('INPUTYESNO_TEMPLATE_ADMIN', $templates) || empty($templates['INPUTYESNO_TEMPLATE_ADMIN']) )
+               {
+                       $template = "<input type=\"radio\" id=\"<%yesid%>\" name=\"<%name%>\" value=\"<%yesval%>\" <%yescheckedval%> onclick=\"selectCanLogin(true);\" />\n"
+                                 . "<label for=\"<%yesid%>\"><%yesvaltext%></label>\n"
+                                 . "<input type=\"radio\" id=\"<%noid%>\" name=\"<%name%>\" value=\"<%noval%>\" <%nocheckedval%> <%disabled%> onclick=\"selectCanLogin(false);\" />\n"
+                                 . "<label for=\"<%noid%>\"><%novaltext%></label>\n";
+               }
+               else
+               {
+                       $template = $templates['INPUTYESNO_TEMPLATE_ADMIN'];
+               }
+       }
+       else
+       {
+               if ( array_key_exists('INPUTYESNO_TEMPLATE_NORMAL', $templates) && !empty($templates['INPUTYESNO_TEMPLATE_NORMAL']) )
+               {
+                       $template = $templates['INPUTYESNO_TEMPLATE_NORMAL'];
+               }
+               else if ( $showlist && array_key_exists('SHOWLIST_LISTPLUG_TABLE_PLGOPT_OYESNO', $templates) && !empty($templates['SHOWLIST_LISTPLUG_TABLE_PLGOPT_OYESNO']) )
+               {
+                       $template = $templates['SHOWLIST_LISTPLUG_TABLE_PLGOPT_OYESNO'];
+               }
+               else
+               {
+               $template = "<input type=\"radio\" id=\"<%yesid%>\" name=\"<%name%>\" value=\"<%yesval%>\" <%yescheckedval%> />\n"
+                         . "<label for=\"<%yesid%>\"><%yesvaltext%></label>\n"
+                         . "<input type=\"radio\" id=\"<%noid%>\" name=\"<%name%>\" value=\"<%noval%>\" <%nocheckedval%> <%disabled%> />\n"
+                         . "<label for=\"<%noid%>\"><%novaltext%></label>\n";
+               }
+       }
+       
+       $id             = preg_replace('#[|]#', '-', $name);
+       $id1    = $id . $value1;
+       $id2    = $id . $value2;
+       $dat = array(
+               'name'                  => Entity::hsc($name),
+               'yesval'                => Entity::hsc($value1),
+               'noval'                 => Entity::hsc($value2),
+               'yesid'                 => Entity::hsc($id1),
+               'noid'                  => Entity::hsc($id2),
+               'yesvaltext'    => $yesval,
+               'novaltext'             => $noval,
+               'yescheckedval' => ($checkedval == $value1) ? 'checked="checked" tabindex="' . $tabindex . '"': '',
+               'nocheckedval'  => ($checkedval != $value1) ? 'checked="checked" tabindex="' . $tabindex . '"': '',
+               'disabled'              => ($isAdmin && $name == 'canlogin') ? ' disabled="disabled"' : '',
+       );
+       
+       return Template::fill($template, $dat);
 }
 
-function listplug_table_actionlist($template, $type)
+/**
+ * listplug_batchlist()
+ * 
+ * @param      string          $attr   item/member/team/category/comment
+ * @param      resource        $query  SQL resorce
+ * @param      string          $type   type for showlist()
+ * @param      array           $vars   array for variables
+ */
+function listplug_batchlist($attr, $query, $type, $vars, $template_name)
 {
-       switch( $type )
+       global $manager;
+       
+       /* HEAD */
+       $content = "<form method=\"post\" action=\"index.php\">\n";
+       
+       /* BODY */
+       $content .= showlist($query, $type, $vars, $template_name);
+       
+       /* FOOT */
+       switch ( $attr )
        {
-               case 'HEAD':
-                       echo '<th>' . _LISTS_TIME . "</th>\n";
-                       echo '<th>' . _LIST_ACTION_MSG . "</th>\n";
+               case 'item':
+                       $options = array(
+                               'delete'        => _BATCH_ITEM_DELETE,
+                               'move'          => _BATCH_ITEM_MOVE
+                       );
                        break;
-               case 'BODY':
-                       $current = $template['current'];
-                       $current['timestamp'] = Entity::hsc($current['timestamp']);
-                       $current['message'] = Entity::hsc($current['message']);
-                       
-                       echo "<td>{$current['timestamp']}</td>\n";
-                       echo "<td>{$current['message']}</td>\n";
+               case 'member':
+                       $options = array(
+                               'delete'        => _BATCH_MEMBER_DELETE,
+                               'setadmin'      => _BATCH_MEMBER_SET_ADM,
+                               'unsetadmin' => _BATCH_MEMBER_UNSET_ADM
+                       );
+                       break;
+               case 'team':
+                       $options = array(
+                               'delete'        => _BATCH_TEAM_DELETE,
+                               'setadmin'      => _BATCH_TEAM_SET_ADM,
+                               'unsetadmin' => _BATCH_TEAM_UNSET_ADM,
+                       );
+                       break;
+               case 'category':
+                       $options = array(
+                               'delete'        => _BATCH_CAT_DELETE,
+                               'move'          => _BATCH_CAT_MOVE,
+                       );
+                       break;
+               case 'comment':
+                       $options = array(
+                               'delete'        => _BATCH_COMMENT_DELETE,
+                       );
+                       break;
+               default:
+                       $options = array();
                        break;
        }
-       return;
+       
+       $content .= "<p class=\"batchoperations\">\n"
+                  . _BATCH_WITH_SEL
+                  . "<select name=\"batchaction\">\n";
+       
+       foreach ( $options as $option => $label )
+       {
+               $content .= "<option value=\"{$option}\">{$label}</option>\n";
+       }
+       $content .= "</select>\n";
+       
+       if ( $attr == 'team' )
+       {
+               $content .= '<input type="hidden" name="blogid" value="' . intRequestVar('blogid') . '" />';
+       }
+       else if ( $attr == 'comment' )
+       {
+               $content .= '<input type="hidden" name="itemid" value="' . intRequestVar('itemid') . '" />';
+       }
+       
+       $content .= '<input type="submit" value="' . _BATCH_EXEC . '" />'
+                  . "("
+                  . "<a href=\"\" onclick=\"if( event &amp;&amp; event.preventDefault ) event.preventDefault(); return batchSelectAll(1); \">" . _BATCH_SELECTALL . "</a>"
+                  . " - "
+                  . "<a href=\"\" onclick=\"if( event &amp;&amp; event.preventDefault ) event.preventDefault(); return batchSelectAll(0); \">" . _BATCH_DESELECTALL . "</a>"
+                  . ")\n"
+                  . "<input type=\"hidden\" name=\"action\" value=\"batch{$attr}\" />\n"
+                  . '<input type="hidden" name="ticket" value="' . Entity::hsc($manager->getNewTicket()) . '" />' . "\n"
+                  . "</p>\n"
+                  . "</form>\n";
+       
+       return $content;
 }
 
-function listplug_table_banlist($template, $type)
+/**
+ * listplug_navlist()
+ * 
+ * @param      string          $attr                   item/member/team/category/comment
+ * @param      resource        $query                  SQL resorce
+ * @param      string          $type                   type for showlist()
+ * @param      array           $vars                   array for variables
+ * @param      string          $template_name  name of template
+ * @return     string          contents
+ */
+function listplug_navlist($attribute, $query, $type, $vars, $template_name)
 {
-       switch( $type )
+       global $CONF, $manager;
+       $dat['adminurl'] = $CONF['AdminURL'];
+       
+       $templates = array();
+       if ( $template_name )
        {
-               case 'HEAD':
-                       echo '<th>' . _LIST_BAN_IPRANGE . "</th>\n";
-                       echo '<th>' . _LIST_BAN_REASON."</th>\n";
-                       echo '<th>' . _LISTS_ACTIONS . "</th>\n";
-                       break;
-               case 'BODY':
-                       $current = $template['current'];
-                       $current['blogid'] = (integer) $current['blogid'];
-                       $current['iprange'] = Entity::hsc($current['iprange']);
-                       $current['reason'] = Entity::hsc($current['reason']);
-                       
-                       echo "<td>{$current['iprange']}</td>\n";
-                       echo "<td>{$current['reason']}</td>\n";
-                       echo '<td><a href="index.php?action=banlistdelete&amp;blogid=' . $current['blogid'] . '&amp;iprange=' . Entity::hsc($current['iprange']) . '">' . _LISTS_DELETE . "</a></td>\n";
-                       break;
+               $templates =& $manager->getTemplate($template_name);
        }
-       return;
+       
+       $dat['prev'] = $vars['start'] - $vars['amount'];
+       if ( $dat['prev'] < $vars['minamount'] )
+       {
+               $dat['prev'] = $vars['minamount'];
+       }
+       
+       $dat['next'] = $vars['start'] + $vars['amount'];
+       
+       $navi = "\n";
+       if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_NAVILIST', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_NAVILIST']) )
+       {
+               $navi .= "<table frame=\"box\" rules=\"all\" sumamry=\"navigation actions\" class=\"navigation\">\n"
+                      . "<tr>\n";
+               $navi .= "<td>\n"
+                      . "<form method=\"post\" action=\"<%adminurl%>\">\n"
+                      . "<input type=\"hidden\" name=\"start\" value=\"<%prev%>\" />\n"
+                      . "<button type=\"submit\" name=\"action\" value=\"<%action%>\">&lt; &lt; <%listsprev%></button>\n"
+                      . "<input type=\"hidden\" name=\"blogid\" value=\"<%blogid%>\" />\n"
+                      . "<input type=\"hidden\" name=\"itemid\" value=\"<%itemid%>\" />\n"
+                      . "<input type=\"hidden\" name=\"search\" value=\"<%search%>\" />\n"
+                      . "<input type=\"hidden\" name=\"amount\" value=\"<%amount%>\" />\n"
+                      . "</form>\n"
+                      . "</td>\n";
+               $navi .= "<td>\n"
+                      . "<form method=\"post\" action=\"<%adminurl%>\">\n"
+                      . "<input type=\"text\" name=\"amount\" size=\"3\" value=\"<%amount%>\" />\n"
+                      . "<%listsperpage%>"
+                      . "<input type=\"hidden\" name=\"start\" value=\"0\" />\n"
+                      . "<button type=\"submit\" name=\"action\" value=\"<%action%>\">&gt; <%listschange%></button>\n"
+                      . "<input type=\"hidden\" name=\"blogid\" value=\"<%blogid%>\" />\n"
+                      . "<input type=\"hidden\" name=\"itemid\" value=\"<%itemid%>\" />\n"
+                      . "<input type=\"hidden\" name=\"search\" value=\"<%search%>\" />\n"
+                      . "<input type=\"hidden\" name=\"amount\" value=\"<%amount%>\" />\n"
+                      . "</form>\n"
+                      . "</td>\n";
+               $navi .= "<td>\n"
+                      . "<form method=\"post\" action=\"<%adminurl%>\">\n"
+                      . "<input type=\"text\" name=\"search\" value=\"<%search%>\" size=\"7\" />\n"
+                      . "<input type=\"hidden\" name=\"start\" value=\"0\" />\n"
+                      . "<button type=\"submit\" name=\"action\" value=\"<%action%>\">&gt; <%listssearch%></button>\n"
+                      . "<input type=\"hidden\" name=\"blogid\" value=\"<%blogid%>\" />\n"
+                      . "<input type=\"hidden\" name=\"itemid\" value=\"<%itemid%>\" />\n"
+                      . "<input type=\"hidden\" name=\"search\" value=\"<%search%>\" />\n"
+                      . "<input type=\"hidden\" name=\"amount\" value=\"<%amount%>\" />\n"
+                      . "</form>\n"
+                      . "</td>\n";
+               $navi .= "<td>\n"
+                      . "<form method=\"post\" action=\"<%adminurl%>\">\n"
+                      . "<input type=\"hidden\" name=\"start\" value=\"<%next%>\" />\n"
+                      . "<button type=\"submit\" name=\"action\" value=\"<%action%>\"><%listsnext%>&gt; &gt; </button>\n"
+                      . "<input type=\"hidden\" name=\"blogid\" value=\"<%blogid%>\" />\n"
+                      . "<input type=\"hidden\" name=\"itemid\" value=\"<%itemid%>\" />\n"
+                      . "<input type=\"hidden\" name=\"search\" value=\"<%search%>\" />\n"
+                      . "<input type=\"hidden\" name=\"amount\" value=\"<%amount%>\" />\n"
+                      . "</form>\n"
+                      . "</td>\n";
+               $navi .= "</tr>\n"
+                      . "</table>\n";
+       }
+       else
+       {
+               $navi .= $templates['SHOWLIST_LISTPLUG_TABLE_NAVILIST'];
+       }
+       $dat['listsprev']               = _LISTS_PREV;
+       $dat['listschange']             = _LISTS_CHANGE;
+       $dat['listssearch']             = _LISTS_SEARCH;
+       $dat['listsnext']               = _LISTS_NEXT;
+       $dat['listsperpage']    = _LISTS_PERPAGE;
+       /* HEAD */
+       $template = Template::fill($navi, $dat);
+       
+       /* BODY */
+       $template .= listplug_batchlist($attribute, $query, $type, $vars, $template_name);
+       
+       /* FOOT */
+       $template .= Template::fill($navi, $dat);
+       
+       return $template;
+>>>>>>> skinnable-master
 }
index e15d0bd..03be6c1 100644 (file)
@@ -1,3 +1,4 @@
+<<<<<<< HEAD
 <?php\r
 /*\r
  * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)\r
@@ -742,3 +743,753 @@ class SkinExport
                return preg_replace('/]]>/', ']]]]><![CDATA[>', $cdata);\r
        }\r
 }\r
+=======
+<?php
+/*
+ * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)
+ * Copyright (C) 2002-2009 The Nucleus Group
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * (see nucleus/documentation/index.html#license for more info)
+ */
+/**
+ *     This class contains two classes that can be used for importing and
+ *     exporting Nucleus skins: SKINIMPORT and SKINEXPORT
+ *
+ * @license http://nucleuscms.org/license.txt GNU General Public License
+ * @copyright Copyright (C) 2002-2009 The Nucleus Group
+ * @version $Id: skinie.php 1883 2012-06-17 07:55:47Z sakamocchi $
+ */
+
+class SkinImport
+{
+       // hardcoded value (see constructor). When 1, interesting info about the
+       // parsing process is sent to the output
+       private $debug;
+       
+       // parser/file pointer
+       private $parser;
+       private $fp;
+       
+       // parset internal charset, US-ASCII/ISO-8859-1/UTF-8
+       private $parse_charset = 'UTF-8';
+       
+       // which data has been read?
+       private $metaDataRead;
+       private $allRead;
+       
+       // extracted data
+       private $skins;
+       private $templates;
+       private $info;
+       
+       // to maintain track of where we are inside the XML file
+       private $inXml;
+       private $inData;
+       private $inMeta;
+       private $inSkin;
+       private $inTemplate;
+       private $currentName;
+       private $currentPartName;
+       private $cdata;
+       
+       /**
+        * constructor initializes data structures
+        */
+       public function __construct()
+       {
+               // disable magic_quotes_runtime if it's turned on
+               //set_magic_quotes_runtime(0);
+               if ( version_compare(PHP_VERSION, '5.3.0', '<') )
+               {
+                       ini_set('magic_quotes_runtime', '0');
+               }
+               
+               // debugging mode?
+               $this->debug = 0;
+               
+               $this->reset();
+               return;
+       }
+       
+       public function __destruct()
+       {
+               return;
+       }
+       
+       public function reset()
+       {
+               if ( $this->parser )
+               {
+                       xml_parser_free($this->parser);
+               }
+               
+               // XML file pointer
+               $this->fp = 0;
+               
+               // which data has been read?
+               $this->metaDataRead = 0;
+               $this->allRead = 0;
+               
+               // to maintain track of where we are inside the XML file
+               $this->inXml = 0;
+               $this->inData = 0;
+               $this->inMeta = 0;
+               $this->inSkin = 0;
+               $this->inTemplate = 0;
+               $this->currentName = '';
+               $this->currentPartName = '';
+               
+               // character data pile
+               $this->cdata = '';
+               
+               // list of skinnames and templatenames (will be array of array)
+               $this->skins = array();
+               $this->templates = array();
+               
+               // extra info included in the XML files (e.g. installation notes)
+               $this->info = '';
+               
+               // init XML parser, this parser deal with characters as encoded by UTF-8
+               $this->parser = xml_parser_create($this->parse_charset);
+               xml_set_object($this->parser, $this);
+               xml_set_element_handler($this->parser, 'start_element', 'end_element');
+               xml_set_character_data_handler($this->parser, 'character_data');
+               xml_parser_set_option($this->parser, XML_OPTION_CASE_FOLDING, 0);
+               
+               return;
+       }
+       
+       /**
+        * Reads an XML file into memory
+        *
+        * @param $filename
+        *              Which file to read
+        * @param $metaOnly
+        *              Set to 1 when only the metadata needs to be read (optional, default 0)
+        */
+       public function readFile($filename, $metaOnly = 0)
+       {
+               // open file
+               $this->fp = @fopen($filename, 'r');
+               if ( !$this->fp )
+               {
+                       return _SKINIE_ERROR_FAILEDOPEN_FILEURL;
+               }
+               
+               // here we go!
+               $this->inXml = 1;
+               
+               $tempbuffer = null;
+               
+               while ( !feof($this->fp) )
+               {
+                       $tempbuffer .= fread($this->fp, 4096);
+               }
+               fclose($this->fp);
+               
+               /*
+                * NOTE: conver character set.
+                * We hope all characters in the file also includes UTF-8 coded character set,
+                *  because this PHP extension implements support for James Clark's expat in PHP
+                *   and it supports juust US-ASCII, ISO-8859-1, UTF-8 character coding scheme.
+                */
+               if ( i18n::get_current_charset() != $this->parse_charset )
+               {
+                       $tempbuffer = i18n::convert($tempbuffer, i18n::get_current_charset(), $this->parse_charset);
+               }
+               
+               $temp = tmpfile();
+               fwrite($temp, $tempbuffer);
+               rewind($temp);
+               
+               while ( ($buffer = fread($temp, 4096) )
+                && (!$metaOnly || ($metaOnly && !$this->metaDataRead)) )
+                {
+                       $err = xml_parse( $this->parser, $buffer, feof($temp) );
+                       if ( !$err && $this->debug )
+                       {
+                               echo 'ERROR: ', xml_error_string(xml_get_error_code($this->parser)), '<br />';
+                       }
+               }
+               
+               // all done
+               $this->inXml = 0;
+               fclose($temp);
+               
+               return;
+       }
+       
+       /**
+        * Returns the list of skin names
+        */
+       public function getSkinNames()
+       {
+               return array_keys($this->skins);
+       }
+       
+       /**
+        * Returns the list of template names
+        */
+       public function getTemplateNames()
+       {
+               return array_keys($this->templates);
+       }
+       
+       /**
+        * Returns the extra information included in the XML file
+        */
+       public function getInfo()
+       {
+               return $this->info;
+       }
+       
+       /**
+        * Writes the skins and templates to the database
+        *
+        * @param $allowOverwrite
+        *              set to 1 when allowed to overwrite existing skins with the same name
+        *              (default = 0)
+        */
+       public function writeToDatabase($allowOverwrite = 0)
+       {
+               global $manager;
+               
+               $existingSkins = $this->checkSkinNameClashes();
+               $existingTemplates = $this->checkTemplateNameClashes();
+               $invalidSkinNames = $this->checkSkinNamesValid();
+               $invalidTemplateNames = $this->checkTemplateNamesValid();
+               
+               // if there are invalid skin or template names, stop executioin and return and error
+               if ( (sizeof($invalidSkinNames) > 0) || (sizeof($invalidTemplateNames) > 0) )
+               {
+                       $inames_error = "<p>"._SKINIE_INVALID_NAMES_DETECTED."</p>\n";
+                       $inames_error .= "<ul>";
+                       foreach( $invalidSkinNames as $sName )
+                       {
+                               $inames_error .= "<li>".Entity::hsc($sName)."</li>";
+                       }
+                       foreach( $invalidTemplateNames as $sName )
+                       {
+                               $inames_error .= "<li>".Entity::hsc($sName)."</li>";
+                       }
+                       $inames_error .= "</ul>";
+                       return $inames_error;
+               }
+               
+               // if not allowed to overwrite, check if any nameclashes exists
+               if ( !$allowOverwrite )
+               {
+                       if ( (sizeof($existingSkins) > 0) || (sizeof($existingTemplates) > 0) )
+                       {
+                               return _SKINIE_NAME_CLASHES_DETECTED;
+                       }
+               }
+               
+               foreach ( $this->skins as $skinName => $data )
+               {
+                       // 1. if exists: delete all part data, update desc data
+                       //    if not exists: create desc
+                       if ( in_array($skinName, $existingSkins) )
+                       {
+                               $skinObj = SKIN::createFromName($skinName);
+                               
+                               // delete all parts of the skin
+                               $skinObj->deleteAllParts();
+                               
+                               // update general info
+                               $skinObj->updateGeneralInfo(
+                                       $skinName,
+                                       $data['description'],
+                                       $data['type'],
+                                       $data['includeMode'],
+                                       $data['includePrefix']
+                               );
+                       }
+                       else
+                       {
+                               $skinid = SKIN::createNew(
+                                       $skinName,
+                                       $data['description'],
+                                       $data['type'],
+                                       $data['includeMode'],
+                                       $data['includePrefix']
+                               );
+                               $skinObj =& $manager->getSkin($skinid);
+                       }
+                       
+                       // 2. add parts
+                       foreach ( $data['parts'] as $partName => $partContent )
+                       {
+                               $skinObj->update($partName, $partContent);
+                       }
+               }
+               
+               foreach ( $this->templates as $templateName => $data )
+               {
+                       // 1. if exists: delete all part data, update desc data
+                       //    if not exists: create desc
+                       if ( in_array($templateName, $existingTemplates) )
+                       {
+                               $templateObj = Template::createFromName($templateName);
+                               
+                               // delete all parts of the template
+                               $templateObj->deleteAllParts();
+                               
+                               // update general info
+                               $templateObj->updateGeneralInfo($templateName, $data['description']);
+                       }
+                       else
+                       {
+                               $templateid = Template::createNew($templateName, $data['description']);
+                               $templateObj = new Template($templateid);
+                       }
+                       
+                       // 2. add parts
+                       foreach ( $data['parts'] as $partName => $partContent )
+                       {
+                               $templateObj->update($partName, $partContent);
+                       }
+               }
+               return;
+       }
+       
+       /**
+         * returns an array of all the skin nameclashes (empty array when no name clashes)
+         */
+       public function checkSkinNameClashes()
+       {
+               $clashes = array();
+               
+               foreach ( $this->skins as $skinName => $data )
+               {
+                       if ( SKIN::exists($skinName) )
+                       {
+                               array_push($clashes, $skinName);
+                       }
+               }
+               return $clashes;
+       }
+       
+       /**
+         * returns an array of all the template nameclashes
+         * (empty array when no name clashes)
+         */
+       public function checkTemplateNameClashes()
+       {
+               $clashes = array();
+               
+               foreach ( $this->templates as $templateName => $data )
+               {
+                       if ( Template::exists($templateName) )
+                       {
+                               array_push($clashes, $templateName);
+                       }
+               }
+               return $clashes;
+       }
+       
+       /**
+         * returns an array of all the invalid skin names (empty array when no invalid names )
+         */
+       private function checkSkinNamesValid()
+       {
+               $notValid = array();
+               
+               foreach ( $this->skins as $skinName => $data )
+               {
+                       if ( !isValidSkinName($skinName) )
+                       {
+                               array_push($notValid, $skinName);
+                       }
+               }
+               return $notValid;
+       }
+       
+       /**
+         * returns an array of all the invalid template names (empty array when no invalid names )
+         */
+       private function checkTemplateNamesValid()
+       {
+               $notValid = array();
+               
+               foreach ( $this->templates as $templateName => $data )
+               {
+                       if ( !isValidTemplateName($templateName) )
+                       {
+                               array_push($notValid, $templateName);
+                       }
+               }
+               return $notValid;
+       }
+       
+       /**
+        * Called by XML parser for each new start element encountered
+        */
+       private function start_element($parser, $name, $attrs)
+       {
+               foreach( $attrs as $key=>$value )
+               {
+                       if ( $this->parse_charset != i18n::get_current_charset() )
+                       {
+                               $name = i18n::convert($name, $this->parse_charset, i18n::get_current_charset());
+                               $value = i18n::convert($value, $this->parse_charset, i18n::get_current_charset());
+                       }
+                       
+                       $attrs[$key] = $value;
+               }
+               
+               if ( $this->debug )
+               {
+                       echo 'START: ', Entity::hsc($name), '<br />';
+               }
+               
+               switch ( $name )
+               {
+                       case 'nucleusskin':
+                               $this->inData = 1;
+                               break;
+                       case 'meta':
+                               $this->inMeta = 1;
+                               break;
+                       case 'info':
+                               // no action needed
+                               break;
+                       case 'skin':
+                               if ( !$this->inMeta )
+                               {
+                                       $this->inSkin = 1;
+                                       $this->currentName = $attrs['name'];
+                                       $this->skins[$this->currentName]['type'] = $attrs['type'];
+                                       $this->skins[$this->currentName]['includeMode'] = $attrs['includeMode'];
+                                       $this->skins[$this->currentName]['includePrefix'] = $attrs['includePrefix'];
+                                       $this->skins[$this->currentName]['parts'] = array();
+                               }
+                               else
+                               {
+                                       $this->skins[$attrs['name']] = array();
+                                       $this->skins[$attrs['name']]['parts'] = array();
+                               }
+                               break;
+                       case 'template':
+                               if ( !$this->inMeta )
+                               {
+                                       $this->inTemplate = 1;
+                                       $this->currentName = $attrs['name'];
+                                       $this->templates[$this->currentName]['parts'] = array();
+                               }
+                               else
+                               {
+                                       $this->templates[$attrs['name']] = array();
+                                       $this->templates[$attrs['name']]['parts'] = array();
+                               }
+                               break;
+                       case 'description':
+                               // no action needed
+                               break;
+                       case 'part':
+                               $this->currentPartName = $attrs['name'];
+                               break;
+                       default:
+                               echo _SKINIE_SEELEMENT_UNEXPECTEDTAG . Entity::hsc($name) . '<br />';
+                               break;
+               }
+               // character data never contains other tags
+               $this->clear_character_data();
+               return;
+       }
+       
+       /**
+         * Called by the XML parser for each closing tag encountered
+         */
+       private function end_element($parser, $name)
+       {
+               if ( $this->debug )
+               {
+                       echo 'END: ' . Entity::hsc($name) . '<br />';
+               }
+               
+               if ( $this->parse_charset != i18n::get_current_charset() )
+               {
+                       $name = i18n::convert($name, $this->parse_charset, i18n::get_current_charset());
+                       $charset_data = i18n::convert($this->get_character_data(), $this->parse_charset, i18n::get_current_charset());
+               }
+               else
+               {
+                       $charset_data = $this->get_character_data();
+               }
+               
+               switch ( $name )
+               {
+                       case 'nucleusskin':
+                               $this->inData = 0;
+                               $this->allRead = 1;
+                               break;
+                       case 'meta':
+                               $this->inMeta = 0;
+                               $this->metaDataRead = 1;
+                               break;
+                       case 'info':
+                               $this->info = $charset_data;
+                       case 'skin':
+                               if ( !$this->inMeta )
+                               {
+                                       $this->inSkin = 0;
+                               }
+                               break;
+                       case 'template':
+                               if ( !$this->inMeta )
+                               {
+                                       $this->inTemplate = 0;
+                               }
+                               break;
+                       case 'description':
+                               if ( $this->inSkin )
+                               {
+                                       $this->skins[$this->currentName]['description'] = $charset_data;
+                               }
+                               else
+                               {
+                                       $this->templates[$this->currentName]['description'] = $charset_data;
+                               }
+                               break;
+                       case 'part':
+                               if ( $this->inSkin )
+                               {
+                                       $this->skins[$this->currentName]['parts'][$this->currentPartName] = $charset_data;
+                               }
+                               else
+                               {
+                                       $this->templates[$this->currentName]['parts'][$this->currentPartName] = $charset_data;
+                               }
+                               break;
+                       default:
+                               echo _SKINIE_SEELEMENT_UNEXPECTEDTAG . Entity::hsc($name) . '<br />';
+                               break;
+               }
+               $this->clear_character_data();
+               return;
+       }
+       
+       /**
+        * Called by XML parser for data inside elements
+        */
+       private function character_data ($parser, $data)
+       {
+               if ( $this->debug )
+               {
+                       echo 'NEW DATA: ' . Entity::hsc($data) . '<br />';
+               }
+               $this->cdata .= $data;
+               return;
+       }
+       
+       /**
+        * Returns the data collected so far
+        */
+       private function get_character_data()
+       {
+               return $this->cdata;
+       }
+       
+       /**
+        * Clears the data buffer
+        */
+       private function clear_character_data()
+       {
+               $this->cdata = '';
+               return;
+       }
+       
+       /**
+        * Static method that looks for importable XML files in subdirs of the given dir
+        */
+       static public function searchForCandidates($dir)
+       {
+               $candidates = array();
+               
+               $dirhandle = opendir($dir);
+               while ( $filename = readdir($dirhandle) )
+               {
+                       if ( @is_dir($dir . $filename) && ($filename != '.') && ($filename != '..') )
+                       {
+                               $xml_file = $dir . $filename . '/skinbackup.xml';
+                               if ( file_exists($xml_file) && is_readable($xml_file) )
+                               {
+                                       //$xml_file;
+                                       $candidates[$filename] = $filename;
+                               }
+                               
+                               // backwards compatibility
+                               $xml_file = $dir . $filename . '/skindata.xml';
+                               if ( file_exists($xml_file) && is_readable($xml_file) )
+                               {
+                                       //$xml_file;
+                                       $candidates[$filename] = $filename;
+                               }
+                       }
+               }
+               closedir($dirhandle);
+               return $candidates;
+       }
+}
+
+class SkinExport
+{
+       private $templates;
+       private $skins;
+       private $info;
+       
+       /**
+        * Constructor initializes data structures
+        */
+       public function __construct()
+       {
+               // list of templateIDs to export
+               $this->templates = array();
+               
+               // list of skinIDs to export
+               $this->skins = array();
+               
+               // extra info to be in XML file
+               $this->info = '';
+       }
+       
+       /**
+        * Adds a template to be exported
+        *
+        * @param id
+        *              template ID
+        * @result false when no such ID exists
+        */
+       public function addTemplate($id)
+       {
+               if ( !Template::existsID($id) )
+               {
+                       return 0;
+               }
+               
+               $this->templates[$id] = Template::getNameFromId($id);
+               return 1;
+       }
+       
+       /**
+        * Adds a skin to be exported
+        *
+        * @param id
+        *              skin ID
+        * @result false when no such ID exists
+        */
+       public function addSkin($id)
+       {
+               if ( !SKIN::existsID($id) )
+               {
+                       return 0;
+               }
+               
+               $this->skins[$id] = SKIN::getNameFromId($id);
+               return 1;
+       }
+       
+       /**
+        * Sets the extra info to be included in the exported file
+        */
+       public function setInfo($info)
+       {
+               $this->info = $info;
+       }
+       
+       /**
+        * Outputs the XML contents of the export file
+        *
+        * @param $setHeaders
+        *              set to 0 if you don't want to send out headers
+        *              (optional, default 1)
+        */
+       public function export($setHeaders = 1)
+       {
+               global $manager;
+               
+               if ( $setHeaders )
+               {
+                       // make sure the mimetype is correct, and that the data does not show up
+                       // in the browser, but gets saved into and XML file (popup download window)
+                       header('Content-Type: text/xml; charset=' . i18n::get_current_charset());
+                       header('Content-Disposition: attachment; filename="skinbackup.xml"');
+                       header('Expires: 0');
+                       header('Pragma: no-cache');
+               }
+               
+               echo "<nucleusskin>\n";
+               
+               // meta
+               echo "\t<meta>\n";
+               // skins
+               foreach ( $this->skins as $skinId => $skinName )
+               {
+                       echo "\t\t" . '<skin name="' . Entity::hsc($skinName) . '" />' . "\n";
+               }
+               // templates
+               foreach ( $this->templates as $templateId => $templateName )
+               {
+                       echo "\t\t" . '<template name="' . Entity::hsc($templateName) . '" />' . "\n";
+               }
+               // extra info
+               if ( $this->info )
+               {
+                       echo "\t\t<info><![CDATA[" . $this->info . "]]></info>\n";
+               }
+               echo "\t</meta>\n\n\n";
+               
+               // contents skins
+               foreach ($this->skins as $skinId => $skinName)
+               {
+                       $skinId = (integer) $skinId;
+                       $skinObj =& $manager->getSkin($skinId);
+                       
+                       echo "\t" . '<skin name="' . Entity::hsc($skinName) . '" type="' . Entity::hsc($skinObj->getContentType()) . '" includeMode="' . Entity::hsc($skinObj->getIncludeMode()) . '" includePrefix="' . Entity::hsc($skinObj->getIncludePrefix()) . '">' . "\n";
+                       echo "\t\t<description>" . Entity::hsc($skinObj->getDescription()) . "</description>\n";
+                       
+                       $res = DB::getResult('SELECT stype, scontent FROM '. sql_table('skin') .' WHERE sdesc=' . $skinId);
+                       foreach ( $res as $row )
+                       {
+                               echo "\t\t" . '<part name="',Entity::hsc($row['stype']) . '">';
+                               echo '<![CDATA[' . $this->escapeCDATA($row['scontent']) . ']]>';
+                               echo "</part>\n\n";
+                       }
+                       echo "\t</skin>\n\n\n";
+               }
+               
+               // contents templates
+               foreach ( $this->templates as $templateId => $templateName )
+               {
+                       $templateId = intval($templateId);
+                       
+                       echo "\t" . '<template name="' . Entity::hsc($templateName) . '">' . "\n";
+                       echo "\t\t<description>" . Entity::hsc(Template::getDesc($templateId)) . "</description>\n";
+                       
+                       $res = DB::getResult('SELECT tpartname, tcontent FROM '. sql_table('template') .' WHERE tdesc=' . $templateId);
+                       foreach ( $res as $row )
+                       {
+                               echo "\t\t" . '<part name="' . Entity::hsc($row['tpartname']) . '">';
+                               echo '<![CDATA[' . $this->escapeCDATA($row['tcontent']) . ']]>';
+                               echo "</part>\n\n";
+                       }
+                       
+                       echo "\t</template>\n\n\n";
+               }
+               echo '</nucleusskin>';
+       }
+       
+       /**
+        * Escapes CDATA content so it can be included in another CDATA section
+        */
+       private function escapeCDATA($cdata)
+       {
+               return preg_replace('/]]>/', ']]]]><![CDATA[>', $cdata);
+       }
+}
+>>>>>>> skinnable-master
index bc0dd90..d8f1d5a 100644 (file)
@@ -1,3 +1,4 @@
+<<<<<<< HEAD
 <?php\r
 \r
 /*\r
@@ -317,3 +318,323 @@ class DB
        }\r
        \r
 }\r
+=======
+<?php
+
+/*
+ * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)
+ * Copyright (C) 2012 The Nucleus Group
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * (see nucleus/documentation/index.html#license for more info)
+ */
+/**
+ * @license http://nucleuscms.org/license.txt GNU General Public License
+ * @copyright Copyright (C) 2012 The Nucleus Group
+ * @version $Id$
+ */
+
+class DB
+{
+       private static $dbh;
+       private static $execCount = 0;
+       private static $dateFormat = '\'%Y-%m-%d %H:%M:%S\'';
+       
+       /**
+        * DB::setConnectionInfo()
+        * Set the information to connect to the database, it will attempt to connect.
+        * @param string $engine Engine
+        * @param string $host Host
+        * @param string $user User
+        * @param string $password Password
+        * @param string $database Database
+        * @return bool Returns TRUE if able to connect, otherwise it returns FALSE.
+        */
+       public static function setConnectionInfo($engine, $host, $user, $password, $database)
+       {
+               self::disConnect();
+
+               try
+               {
+                       if ( i18n::strpos($host, ':') === false )
+                       {
+                               $portnum = '';
+                       }
+                       else
+                       {
+                               list($host, $portnum) = i18n::explode(":", $host);
+                               if ( isset($portnum) )
+                               {
+                                       $portnum = trim($portnum);
+                               }
+                               else
+                               {
+                                       $portnum = '';
+                               }
+                       }
+
+                       switch ( $engine )
+                       {
+                               case 'sybase':
+                               case 'dblib':
+                                       $port = is_numeric($portnum) ? ':' . intval($portnum) : '';
+                                       $db = $database ? ';dbname=' . $database : '';
+                                       self::$dbh = new PDO($engine . ':host=' . $host . $port . $db, $user, $password);
+                                       break;
+                               case 'mssql':
+                                       $port = is_numeric($portnum) ? ',' . intval($portnum) : '';
+                                       $db = $database ? ';dbname=' . $database : '';
+                                       self::$dbh = new PDO($engine . ':host=' . $host . $port . $db, $user, $password);
+                                       break;
+                               case 'oci':
+                                       $port = is_numeric($portnum) ? ':' . intval($portnum) : '';
+                                       self::$dbh = new PDO($engine . ':dbname=//' . $host . $port . '/' . $database, $user, $password);
+                                       break;
+                               case 'odbc':
+                                       $port = is_numeric($portnum) ? ';PORT=' . intval($portnum) : '';
+                                       self::$dbh = new PDO(
+                                               $engine . ':DRIVER={IBM DB2 ODBC DRIVER};HOSTNAME=' . $host . $port . ';DATABASE=' . $database . ';PROTOCOL=TCPIP;UID='
+                                                       . $user . ';PWD=' . $password);
+                                       break;
+                               case 'pgsql':
+                                       $port = is_numeric($portnum) ? ';port=' . intval($portnum) : '';
+                                       $db = $database ? ';dbname=' . $database : '';
+                                       self::$dbh = new PDO($engine . ':host=' . $host . $port . $db, $user, $password);
+                                       break;
+                               case 'sqlite':
+                               case 'sqlite2':
+                                       $port = is_numeric($portnum) ? ':' . intval($portnum) : '';
+                                       self::$dbh = new PDO($engine . ':' . $database, $user, $password);
+                                       if ( self::$dbh )
+                                       {
+                                               self::$dbh->sqliteCreateFunction('SUBSTRING', 'substr', 3);
+                                               self::$dbh->sqliteCreateFunction('UNIX_TIMESTAMP', 'strtotime', 1);
+                                       }
+                                       break;
+                               case 'mysql':
+                                       $port = is_numeric($portnum) ? ';port=' . intval($portnum) : '';
+                                       $db = $database ? ';dbname=' . $database : '';
+                                       self::$dbh = new PDO(
+                                               'mysql' . ':host=' . $host . $port . $db,
+                                               $user,
+                                               $password,
+                                               array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'utf8\''));
+                                       break;
+                               default: // mysql
+                                       if ( !class_exists('MysqlPDO') )
+                                       {
+                                               include_once realpath(dirname(__FILE__)) . '/MYSQLPDO.php';
+                                       }
+                                       $port = is_numeric($portnum) ? ';port=' . intval($portnum) : '';
+                                       $db = $database ? ';dbname=' . $database : '';
+                                       self::$dbh = new MysqlPDO(
+                                               'mysql' . ':host=' . $host . $port . $db,
+                                               $user,
+                                               $password,
+                                               array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'utf8\''));
+                                       break;
+                       }
+               }
+               catch (PDOException $e)
+               {
+                       self::disConnect();
+                       return FALSE;
+               }
+               return TRUE;
+       }
+
+       /**
+        * DB::disConnect()
+        * Disconnect the connection to the database.
+        */
+       public static function disConnect()
+       {
+               self::$dbh = null;
+       }
+
+       /**
+        * DB::getExecCount()
+        * To get the number of times you run the statement.
+        * @return int Number of executions
+        */
+       public static function getExecCount()
+       {
+               return self::$execCount;
+       }
+
+       /**
+        * DB::formatDateTime()
+        * The value converted to a format that can be passed to the database datetime.
+        * @param int $timestamp UNIX timestamp
+        * @param int $offset timestamp offset
+        * @return string formatted datetime (quart treated)
+        */
+       public static function formatDateTime($timestamp = null, $offset=0)
+       {
+               if ( $timestamp == null )
+               {
+                       $timestamp = time();
+               }
+               $timestamp += $offset;
+               return preg_replace_callback('/(%[a-z%])/i',
+                       create_function('$matches', 'return strftime($matches[1], ' . intval($timestamp) . ');'),
+                       self::$dateFormat
+               );
+       }
+       
+       /**
+        * DB::getValue()
+        * Gets the value of the first column of the first row of the results obtained in the statement.
+        * @param string $statement SQL Statement
+        * @return mixed Result value. If the call fails, it will return FALSE.
+        */
+       public static function getValue($statement)
+       {
+               if ( self::$dbh == null ) return FALSE;
+               self::$execCount++;
+               $result = self::callQuery($statement);
+               if ( $row = $result->fetch(PDO::FETCH_NUM) )
+               {
+                       return $row[0];
+               }
+               return FALSE;
+       }
+
+       /**
+        * DB::getRow()
+        * Gets the first row of the results obtained in the statement.
+        * @param string $statement SQL Statement
+        * @return array Result row. If the call fails, it will return FALSE.
+        */
+       public static function getRow($statement)
+       {
+               if ( self::$dbh == null ) return FALSE;
+               self::$execCount++;
+               $result = self::callQuery($statement);
+               return $result->fetch(PDO::FETCH_BOTH);
+       }
+
+       /**
+        * DB::getResult()
+        * Gets the set of results obtained in the statement.
+        * @param string $statement SQL Statement
+        * @return PDOStatement Result set object. If the call fails, it will return FALSE.
+        */
+       public static function getResult($statement)
+       {
+               if ( self::$dbh == null ) return FALSE;
+               self::$execCount++;
+               return self::callQuery($statement);
+       }
+
+       /**
+        * DB::execute()
+        * Execute an SQL statement and return the number of affected rows.
+        * @param string $statement SQL Statement
+        * @return int number of rows that were modified or deleted by the SQL statement you issued. If the call fails, it will return FALSE.
+        */
+       public static function execute($statement)
+       {
+               if ( self::$dbh == null ) return FALSE;
+               self::$execCount++;
+               return self::callExec($statement);
+       }
+
+       /**
+        * DB::callQuery()
+        * Run the query to retrieve the result set.
+        * @param string $statement query to be executed
+        * @return PDOStatement Result set object. If the call fails, it will return FALSE.
+        */
+       private static function callQuery($statement)
+       {
+               $result = self::$dbh->query($statement);
+               if ( $result === FALSE )
+               {
+                       self::showErrorDisplay($statement);
+               }
+               return $result;
+       }
+       
+       /**
+        * DB::callExec()
+        * Run the query and returns the number of rows affected.
+        * @param string $statement query to be executed
+        * @return int number of rows that were modified or deleted by the SQL statement you issued. If the call fails, it will return FALSE.
+        */
+       private static function callExec($statement)
+       {
+               $result = self::$dbh->exec($statement);
+               if ( $result === FALSE )
+               {
+                       self::showErrorDisplay($statement);
+               }
+               return $result;
+       }
+       
+       /**
+        * DB::showErrorDisplay()
+        * The error message is output to the screen of the query.
+        * @param string $statement query output to the screen
+        */
+       private static function showErrorDisplay($statement)
+       {
+               global $CONF;
+               if ( array_key_exists('debug', $CONF) && $CONF['debug'] )
+               {
+                       $err = self::getError();
+                       print("mySQL error with query '{$statement}' : " . $err[2]);
+               }
+               return;
+       }
+       
+       /**
+        * DB::getError()
+        * Gets the error information associated with the last operation.
+        * @return array Error info
+        */
+       public static function getError()
+       {
+               if ( self::$dbh == null ) return FALSE;
+               return self::$dbh->errorInfo();
+       }
+
+       /**
+        * DB::quoteValue()
+        * Quotes a string for use in a query.
+        * @param string $value Value to quote
+        * @return string Quoted value
+        */
+       public static function quoteValue($value)
+       {
+               if ( self::$dbh == null ) return FALSE;
+               return self::$dbh->quote($value);
+       }
+
+       /**
+        * DB::getInsertId()
+        * Get the value of the ID of the rows that are inserted at the end.
+        * @return string ID of the row
+        */
+       public static function getInsertId()
+       {
+               if ( self::$dbh == null ) return FALSE;
+               return self::$dbh->lastInsertId();
+       }
+
+       /**
+        * DB::getAttribute()
+        * Gets the attribute of the database.
+        * @return string Attribute
+        */
+       public static function getAttribute($attribute)
+       {
+               if ( self::$dbh == null ) return FALSE;
+               return self::$dbh->getAttribute($attribute);
+       }
+       
+}
+>>>>>>> skinnable-master
index 2142ff5..65bcb48 100644 (file)
@@ -1,3 +1,4 @@
+<<<<<<< HEAD
 <?php\r
 /*\r
  * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)\r
@@ -660,3 +661,666 @@ class MysqlPDOStatement implements Iterator
                return null;\r
        }\r
 }\r
+=======
+<?php
+/*
+ * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)
+ * Copyright (C) 2012 The Nucleus Group
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * (see nucleus/documentation/index.html#license for more info)
+ */
+/**
+ * @license http://nucleuscms.org/license.txt GNU General Public License
+ * @copyright Copyright (C) 2012 The Nucleus Group
+ * @version $Id$
+ */
+
+if ( !class_exists('PDO') )
+{
+       /**
+        * Dummy constant of the PDO class
+        */
+       class PDO
+       {
+               /* constant values */
+               const PARAM_NULL = 0;
+               const PARAM_INT = 1;
+               const PARAM_STR = 2;
+               const PARAM_LOB = 3;
+               const PARAM_STMT = 4;
+               const PARAM_BOOL = 5;
+               const PARAM_INPUT_OUTPUT = 128; // orignal is undefined.
+               const FETCH_LAZY = 1;
+               const FETCH_ASSOC = 2;
+               const FETCH_NUM = 3;
+               const FETCH_BOTH = 4;
+               const FETCH_OBJ = 5;
+               const FETCH_BOUND = 6;
+               const FETCH_COLUMN = 7;
+               const FETCH_CLASS = 8;
+               const FETCH_INTO = 9;
+               const FETCH_FUNC = 10;
+               const FETCH_NAMED = 11;
+               const FETCH_KEY_PAIR = 12;
+               const FETCH_GROUP = 65536;
+               const FETCH_UNIQUE = 196608;
+               const FETCH_CLASSTYPE = 262144;
+               const FETCH_SERIALIZE = 524288;
+               const FETCH_PROPS_LATE = 1048576;
+               const ATTR_AUTOCOMMIT = 0;
+               const ATTR_PREFETCH = 1;
+               const ATTR_TIMEOUT = 2;
+               const ATTR_ERRMODE = 3;
+               const ATTR_SERVER_VERSION = 4;
+               const ATTR_CLIENT_VERSION = 5;
+               const ATTR_SERVER_INFO = 6;
+               const ATTR_CONNECTION_STATUS = 7;
+               const ATTR_CASE = 8;
+               const ATTR_CURSOR_NAME = 9;
+               const ATTR_CURSOR = 10;
+               const ATTR_ORACLE_NULLS = 11;
+               const ATTR_PERSISTENT = 12;
+               const ATTR_STATEMENT_CLASS = 13;
+               const ATTR_FETCH_TABLE_NAMES = 14;
+               const ATTR_FETCH_CATALOG_NAMES = 15;
+               const ATTR_DRIVER_NAME = 16;
+               const ATTR_STRINGIFY_FETCHES = 17;
+               const ATTR_MAX_COLUMN_LEN = 18;
+               const ATTR_DEFAULT_FETCH_MODE = 19;
+               const ATTR_EMULATE_PREPARES = 20;
+               const ERRMODE_SILENT = 0;
+               const ERRMODE_WARNING = 1;
+               const ERRMODE_EXCEPTION = 2;
+               const CASE_NATURAL = 0;
+               const CASE_UPPER = 1;
+               const CASE_LOWER = 2;
+               const NULL_NATURAL = 0;
+               const NULL_EMPTY_STRING = 1;
+               const NULL_TO_STRING = 2;
+               const FETCH_ORI_NEXT = 0;
+               const FETCH_ORI_PRIOR = 1;
+               const FETCH_ORI_FIRST = 2;
+               const FETCH_ORI_LAST = 3;
+               const FETCH_ORI_ABS = 4;
+               const FETCH_ORI_REL = 5;
+               const CURSOR_FWDONLY = 0;
+               const CURSOR_SCROLL = 1;
+               // from here orignal is undefined.
+               const ERR_CANT_MAP = 0;
+               const ERR_SYNTAX = 0;
+               const ERR_CONSTRAINT = 0;
+               const ERR_NOT_FOUND = 0;
+               const ERR_ALREADY_EXISTS = 0;
+               const ERR_NOT_IMPLEMENTED = 0;
+               const ERR_MISMATCH = 0;
+               const ERR_TRUNCATED = 0;
+               const ERR_DISCONNECTED = 0;
+               const ERR_NO_PERM = 0;
+               // so far
+               const ERR_NONE = '00000';
+               const PARAM_EVT_ALLOC = 0;
+               const PARAM_EVT_FREE = 1;
+               const PARAM_EVT_EXEC_PRE = 2;
+               const PARAM_EVT_EXEC_POST = 3;
+               const PARAM_EVT_FETCH_PRE = 4;
+               const PARAM_EVT_FETCH_POST = 5;
+               const PARAM_EVT_NORMALIZE = 6;
+
+               const MYSQL_ATTR_INIT_COMMAND = 1002;
+       }
+
+       /**
+        * PDOException class of dummy
+        */
+       class PDOException extends Exception
+       {}
+}
+
+/**
+ * MysqlPDO class that wraps the mysql_ or mysqli_ function like PDO class
+ */
+class MysqlPDO
+{
+       // Prefix function name
+       public static $handler;
+
+       private $dbcon;
+
+       /**
+        * Creates a PDO instance representing a connection to a MySQL database.
+        * @param string $dsn DSN
+        * @param string $username UserName
+        * @param string $password Password
+        * @param mixed $driver_options Options[optional]
+        * @throws PDOException Thrown when failed to connect to the database.
+        */
+       public function __construct($dsn, $username, $password, $driver_options = '')
+       {
+               // select use function
+               if ( function_exists('mysql_query') )
+               {
+                       MysqlPDO::$handler = 'mysql_';
+               }
+               else if ( function_exists('mysqli_query') )
+               {
+                       MysqlPDO::$handler = 'mysqli_';
+               }
+               else
+               {
+                       throw new PDOException('Can not be found mysql_ or mysqli_ functions.', 'IM000');
+               }
+
+               if ( preg_match('/host=([^;]+)/', $dsn, $matches) )
+               {
+                       $host = $matches[1];
+               }
+               else
+               {
+                       throw new PDOException('Host has not been set.', '01000');
+               }
+               if ( preg_match('/port=([^;]+)/', $dsn, $matches) )
+               {
+                       $host .= ':' . $matches[1];
+               }
+
+               // mysql connect
+               $this->dbcon = @call_user_func(MysqlPDO::$handler . 'connect', $host, $username, $password);
+
+               if ( $this->dbcon == FALSE )
+               {
+                       throw new PDOException('Failed to connect to the server.', '01000');
+               }
+
+               // select database
+               if ( preg_match('/dbname=([^;]+)/', $dsn, $matches) )
+               {
+                       $dbname = $matches[1];
+                       if ( $dbname )
+                       {
+                               if ( MysqlPDO::$handler == 'mysql_' )
+                               {
+                                       call_user_func(MysqlPDO::$handler . 'select_db', $dbname, $this->dbcon);
+                               }
+                               else
+                               {
+                                       call_user_func(MysqlPDO::$handler . 'select_db', $this->dbcon, $dbname);
+                               }
+
+                               // set use character
+                               $charset = 'utf8';
+                               if ( is_array($driver_options) && array_key_exists(PDO::MYSQL_ATTR_INIT_COMMAND, $driver_options) )
+                               {
+                                       if ( preg_match('/SET\s+CHARACTER\s+SET\s+\'?([a-z0-9_-]+)\'?/', $driver_options[PDO::MYSQL_ATTR_INIT_COMMAND], $matches) )
+                                       {
+                                               $charset = $matches[1];
+                                       }
+                               }
+                               $server_info = call_user_func(MysqlPDO::$handler . 'get_server_info', $this->dbcon);
+                               $mysql_version = preg_replace('/^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{1,2})(.*)$/', '$1.$2.$3', $server_info);
+
+                               if ( version_compare($mysql_version, '5.0.7', '>=') && function_exists(MysqlPDO::$handler . 'set_charset') )
+                               {
+                                       call_user_func(MysqlPDO::$handler . 'set_charset', $charset);
+                               }
+                               else if ( version_compare($mysql_version, '5.0.7', '<') )
+                               {
+                                       $this->exec("SET CHARACTER SET '{$charset}';");
+                               }
+                               else
+                               {
+                                       $this->exec("SET NAMES '{$charset}';");
+                               }
+                       }
+               }
+       }
+
+       /**
+        * Close the connection to the MySQL server.
+        */
+       public function __destruct()
+       {
+               if ( $this->dbcon )
+               {
+                       @call_user_func(MysqlPDO::$handler . 'close', $this->dbcon);
+               }
+       }
+
+       /**
+        * Not supported
+        */
+       public function beginTransaction()
+       {
+               return FALSE;
+       }
+
+       /**
+        * Not supported
+        */
+       public function commit()
+       {
+               return FALSE;
+       }
+
+       /**
+        * Fetch the SQLSTATE associated with the last operation.
+        * However, if successful '00000' Otherwise, the return to '01000'.
+        * @return string Error code
+        */
+       public function errorCode()
+       {
+               $errno = call_user_func(MysqlPDO::$handler . 'errno', $this->dbcon);
+               return $errno === 0 ? '00000' : '01000';
+       }
+
+       /**
+        * To get extended error information associated with the last operation.
+        * Element 0: if successful '00000' Otherwise, the return to '01000'
+        * Element 1: The return value of mysql_errno()
+        * Element 2: The return value of mysql_error()
+        * @return array Array of error information
+        */
+       public function errorInfo()
+       {
+               $errno = call_user_func(MysqlPDO::$handler . 'errno', $this->dbcon);
+               $error = call_user_func(MysqlPDO::$handler . 'error', $this->dbcon);
+               return array($errno === 0 ? '00000' : '01000', $errno, $error);
+       }
+
+       public function exec($statement)
+       {
+               $result = @call_user_func(MysqlPDO::$handler . 'query', $statement, $this->dbcon);
+               if ( $result === TRUE )
+               {
+                       return @call_user_func(MysqlPDO::$handler . 'affected_rows', $this->dbcon);
+               }
+               else if ( is_resource($result) )
+               {
+                       return;
+               }
+               return FALSE;
+       }
+
+       public function getAttribute($attribute)
+       {
+               switch ( $attribute )
+               {
+                       case PDO::ATTR_SERVER_VERSION:
+                               return call_user_func(MysqlPDO::$handler . 'get_server_info', $this->dbcon);
+                               break;
+                       case PDO::ATTR_CLIENT_VERSION:
+                               return call_user_func(MysqlPDO::$handler . 'get_client_info');
+                               break;
+                       default:
+                               return FALSE;
+               }
+       }
+
+       public static function getAvailableDrivers()
+       {
+               return array('mysql');
+       }
+
+       /**
+        * Not supported
+        */
+       public function inTransaction()
+       {
+               return FALSE;
+       }
+
+       public function lastInsertId($name = null)
+       {
+               return call_user_func(MysqlPDO::$handler . 'insert_id', $this->dbcon);
+       }
+
+       /**
+        * Not supported
+        */
+       public function prepare($statement, $driver_options = array())
+       {
+               return FALSE;
+       }
+
+       public function query($statement)
+       {
+               $result = @call_user_func(MysqlPDO::$handler . 'query', $statement, $this->dbcon);
+               return ($result == FALSE) ? FALSE : new MysqlPDOStatement($statement, $result, $this->dbcon);
+       }
+
+       public function quote($string, $parameter_type = PDO::PARAM_STR)
+       {
+               switch ( $parameter_type )
+               {
+                       case PDO::PARAM_NULL:
+                               return 'null';
+                       case PDO::PARAM_BOOL:
+                               return $string ? '1' : '0';
+                       default:
+                               if ( $parameter_type == PDO::PARAM_INT && is_numeric($string) )
+                               {
+                                       return $string;
+                               }
+                               else
+                               {
+                                       return '\'' . call_user_func(MysqlPDO::$handler . 'real_escape_string', $string) . '\'';
+                               }
+               }
+       }
+
+       /**
+        * Not supported
+        */
+       public function rollBack()
+       {
+               return FALSE;
+       }
+
+       /**
+        * Not supported
+        */
+       public function setAttribute($attribute, $value)
+       {
+               return FALSE;
+       }
+}
+
+/**
+ * MysqlPDOStatement class PDOStatement class like.
+ */
+class MysqlPDOStatement implements Iterator
+{
+       private $result;
+       private $dbcon;
+       private $_queryString = '';
+
+       private $def_fetch_mode = PDO::FETCH_BOTH;
+       private $def_col_num = 0;
+       private $def_class_name = 'stdClass';
+       private $def_ctorargs = null;
+       private $bind_object = null;
+
+       public function __get($name)
+       {
+               if ( $name == 'queryString' )
+               {
+                       return $this->_queryString;
+               }
+       }
+
+       public function __construct($query, $result, $dbconnect = null)
+       {
+               $this->dbcon = $dbconnect;
+               $this->_queryString = $query;
+               $this->result = $result;
+       }
+
+       public function __destruct()
+       {
+               $this->result = null;
+       }
+
+       /**
+        * Not supported
+        */
+       public function bindColumn($column, &$param, $type, $maxlen, $driverdata)
+       {
+               return FALSE;
+       }
+
+       /**
+        * Not supported
+        */
+       public function bindParam($parameter, &$variable, $data_type = PDO::PARAM_STR, $length, $driver_options)
+       {
+               return FALSE;
+       }
+
+       /**
+        * Not supported
+        */
+       public function bindValue($parameter, $value, $data_type = PDO::PARAM_STR)
+       {
+               return FALSE;
+       }
+
+       public function closeCursor()
+       {
+               return call_user_func(MysqlPDO::$handler . 'free_result', $this->result);
+       }
+
+       public function columnCount()
+       {
+               return call_user_func(MysqlPDO::$handler . 'num_fields', $this->result);
+       }
+
+       /**
+        * Not supported
+        */
+       public function debugDumpParams()
+       {
+               return;
+       }
+
+       public function errorCode()
+       {
+               $errno = call_user_func(MysqlPDO::$handler . 'errno', $this->dbcon);
+               return $errno === 0 ? '00000' : '01000';
+       }
+
+       public function errorInfo()
+       {
+               $errno = call_user_func(MysqlPDO::$handler . 'errno', $this->dbcon);
+               $error = call_user_func(MysqlPDO::$handler . 'error', $this->dbcon);
+               return array($errno === 0 ? '00000' : '01000', $errno, $error);
+       }
+
+       /**
+        * Not supported
+        */
+       public function execute($input_parameters)
+       {
+               return FALSE;
+       }
+
+       public function fetch($fetch_style = PDO::ATTR_DEFAULT_FETCH_MODE, $cursor_orientation = PDO::FETCH_ORI_NEXT, $cursor_offset = 0)
+       {
+               if ( !is_resource($this->result) || $cursor_orientation != PDO::FETCH_ORI_NEXT )
+               {
+                       return FALSE;
+               }
+               
+               if ( $fetch_style == PDO::ATTR_DEFAULT_FETCH_MODE )
+               {
+                       $fetch_style = $this->def_fetch_mode;
+               }
+
+               switch ( $fetch_style )
+               {
+                       case PDO::FETCH_ASSOC:
+                               return @call_user_func(MysqlPDO::$handler . 'fetch_array', $this->result, MYSQL_ASSOC);
+                       case PDO::FETCH_BOTH:
+                               return @call_user_func(MysqlPDO::$handler . 'fetch_array', $this->result, MYSQL_BOTH);
+                       case PDO::FETCH_NUM:
+                               return @call_user_func(MysqlPDO::$handler . 'fetch_array', $this->result, MYSQL_NUM);
+                       case PDO::FETCH_OBJ:
+                               return $this->fetchObject();
+                       case PDO::FETCH_CLASS:
+                               return $this->fetchObject($this->def_class_name, $this->def_ctorargs);
+                       case PDO::FETCH_COLUMN:
+                               return $this->fetchColumn($this->def_col_num);
+                       case PDO::FETCH_BOUND:
+                               return FALSE; // Not supported
+                       case PDO::FETCH_INTO:
+                               return FALSE; // Not supported
+                       case PDO::FETCH_LAZY:
+                               return FALSE; // Not supported
+                       default:
+                               return FALSE;
+               }
+       }
+
+       public function fetchAll($fetch_style = PDO::ATTR_DEFAULT_FETCH_MODE, $fetch_argument = null, $ctor_args = array())
+       {
+               if ( $fetch_style == PDO::ATTR_DEFAULT_FETCH_MODE )
+               {
+                       $fetch_style = PDO::FETCH_BOTH;
+               }
+               
+               $ret = array();
+               if ( ($fetch_style & PDO::FETCH_COLUMN) != 0 )
+               {
+                       if ( $fetch_style == PDO::FETCH_COLUMN )
+                       {
+                               $column = $fetch_argument == null ? 0 : intval($fetch_argument);
+                               while ( $row = $this->fetchColumn($column) )
+                               {
+                                       $ret[] = $row;
+                               }
+                       }
+                       elseif ( ($fetch_style & PDO::FETCH_UNIQUE) != 0 )
+                       {
+                               return FALSE;
+                       }
+                       elseif ( ($fetch_style & PDO::FETCH_GROUP) != 0 )
+                       {
+                               return FALSE;
+                       }
+               }
+               elseif ( $fetch_style == PDO::FETCH_CLASS )
+               {
+                       while ( $row = $this->fetchObject($fetch_argument, $ctor_args) )
+                       {
+                               $ret[] = $row;
+                       }
+               }
+               elseif ( $fetch_style == PDO::FETCH_FUNC )
+               {
+                       while ( $row = $this->fetch(PDO::FETCH_ASSOC) )
+                       {
+                               $ret[] = call_user_func_array($fetch_argument, array_values($row));
+                       }
+               }
+               else
+               {
+                       while ( $row = $this->fetch($fetch_style) )
+                       {
+                               $ret[] = $row;
+                       }
+               }
+               return $ret;
+       }
+
+       public function fetchColumn($column_number = 0)
+       {
+               if ( $ret = $this->fetch(PDO::FETCH_NUM) )
+               {
+                       return $ret[$column_number];
+               }
+               return FALSE;
+       }
+
+       public function fetchObject($class_name = 'stdClass', $ctor_args = null)
+       {
+               if ( is_array($ctor_args) && !empty($ctor_args) )
+               {
+                       return @call_user_func(MysqlPDO::$handler . 'fetch_object', $this->result, $class_name, $ctor_args);
+               }
+               else
+               {
+                       return @call_user_func(MysqlPDO::$handler . 'fetch_object', $this->result, $class_name);
+               }
+       }
+
+       public function getAttribute($attribute)
+       {
+               switch ( $attribute )
+               {
+                       default:
+                               return FALSE;
+               }
+       }
+
+       /**
+        * Not supported
+        */
+       public function getColumnMeta($column)
+       {
+               $result = array();
+               if ( MysqlPDO::$handler == 'mysql_' )
+               {
+                       $result['name'] = @call_user_func(MysqlPDO::$handler . 'field_name', $this->result, $column);
+               }
+               return $result;
+       }
+
+       /**
+        * Not supported
+        */
+       public function nextRowset()
+       {
+               return FALSE;
+       }
+
+       public function rowCount()
+       {
+               return @call_user_func(MysqlPDO::$handler . 'affected_rows', $this->dbcon);
+       }
+
+       /**
+        * Not supported
+        */
+       public function setAttribute($attribute, $value)
+       {
+               return FALSE;
+       }
+
+       public function setFetchMode($mode, &$mode_argument, $ctorargs)
+       {
+               switch ( $mode )
+               {
+                       case PDO::FETCH_COLUMN:
+                               $this->def_col_num = $mode_argument;
+                               break;
+                       case PDO::FETCH_CLASS:
+                               $this->def_class_name = $mode_argument;
+                               $this->def_ctorargs = $ctorargs;
+                               break;
+                       case PDO::FETCH_INTO:
+                               $this->bind_object = &$mode_argument;
+                               return FALSE; // Not supported
+                       default:
+                               $this->def_fetch_mode = $mode;
+                               break;
+               }
+               return 1;
+       }
+
+       // Iterator
+       private $iterator_value;
+
+       function rewind()
+       {}
+
+       function next()
+       {}
+
+       function valid()
+       {
+               return ($this->iterator_value = $this->fetch());
+       }
+
+       function current()
+       {
+               return $this->iterator_value;
+       }
+
+       function key()
+       {
+               return null;
+       }
+}
+>>>>>>> skinnable-master
index 84d42bd..e1b5e42 100644 (file)
@@ -1,3 +1,4 @@
+<<<<<<< HEAD
 <?php\r
 \r
 /*\r
@@ -314,3 +315,320 @@ function sql_set_charset($charset)
 {\r
        return TRUE;\r
 }\r
+=======
+<?php
+
+/*
+ * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)
+ * Copyright (C) 2012 The Nucleus Group
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * (see nucleus/documentation/index.html#license for more info)
+ */
+/**
+ * @license http://nucleuscms.org/license.txt GNU General Public License
+ * @copyright Copyright (C) 2012 The Nucleus Group
+ * @version $Id$
+ */
+/*
+ * sql_* wrappers for DB class access
+ */
+if ( !class_exists('DB') )
+{
+       include_once realpath(dirname(__FILE__)) . '/DB.php';
+}
+
+/**
+ * Connects to database server with arguments
+ * @deprecated
+ */
+function sql_connect_args($host = 'localhost', $user = '', $password = '', $database = '', $new_link = FALSE)
+{
+       global $MYSQL_HANDLER;
+       return DB::setConnectionInfo($MYSQL_HANDLER[1], $host, $user, $password, $database);
+}
+
+/**
+ * Connects to database server
+ * @deprecated
+ */
+function sql_connect()
+{
+       global $MYSQL_HANDLER, $MYSQL_HOST, $MYSQL_USER, $MYSQL_PASSWORD, $MYSQL_DATABASE;
+
+       return DB::setConnectionInfo($MYSQL_HANDLER[1], $MYSQL_HOST, $MYSQL_USER, $MYSQL_PASSWORD, $MYSQL_DATABASE);
+}
+
+/**
+ * disconnects from SQL server
+ * @deprecated
+ */
+function sql_disconnect($conn = false)
+{
+       DB::disConnect();
+}
+
+/**
+ * disconnects from SQL server
+ * @deprecated
+ * @param unknown_type $conn
+ */
+function sql_close($conn = false)
+{
+       DB::disConnect();
+}
+
+/**
+ * executes an SQL query
+ * @deprecated
+ */
+function sql_query($query, $conn = false)
+{
+       global $mysql_affected_row;
+       $mysql_affected_row = -1;
+       if ( preg_match('/^\W*(INSERT|UPDATE|DELETE|DROP)/i', $query) )
+       {
+               $mysql_affected_row = DB::execute($query);
+               return $mysql_affected_row !== FALSE ? TRUE : FALSE;
+       }
+       return DB::getResult($query);
+}
+
+/**
+ * executes an SQL error
+ * @deprecated
+ */
+function sql_error($conn = false)
+{
+       $err = DB::getError();
+       return $err[2];
+}
+
+/**
+ * executes an SQL db select
+ * @deprecated
+ */
+function sql_select_db($db, $conn = false)
+{
+       sql_disconnect();
+       return sql_connect();
+}
+
+/**
+ * executes an SQL real escape
+ * @deprecated
+ */
+function sql_real_escape_string($val, $conn = false)
+{
+       if ( is_numeric($val) )
+       {
+               return $val;
+       }
+       $escapeval = DB::quoteValue($val);
+       if ( preg_match("/^'(.*)'$/", $escapeval, $matches) )
+       {
+               $escapeval = $matches[1];
+       }
+       return $escapeval;
+}
+
+/**
+ * executes an PDO::quote() like escape, ie adds quotes arround the string and escapes chars as needed
+ * @deprecated
+ */
+function sql_quote_string($val, $conn = false)
+{
+       if ( is_numeric($val) )
+       {
+               return $val;
+       }
+       return DB::quoteValue($val);
+}
+
+/**
+ * executes an SQL insert id
+ * @deprecated
+ */
+function sql_insert_id($conn = false)
+{
+       return DB::getInsertId();
+}
+
+/**
+ * executes an SQL result request
+ * @deprecated
+ */
+function sql_result($res, $row, $col)
+{
+       if ( !method_exists($res, 'fetch') ) return FALSE;
+       for ( $i = 0; $i < $row; $i++ )
+               $res->fetch();
+       return $res->fetchColumn($col);
+}
+
+/**
+ * frees sql result resources
+ * @deprecated
+ */
+function sql_free_result($res)
+{
+       if ( !method_exists($res, 'closeCursor') ) return FALSE;
+       return $res->closeCursor();
+}
+
+/**
+ * returns number of rows in SQL result
+ * @deprecated
+ */
+function sql_num_rows($res)
+{
+       if ( !method_exists($res, 'rowCount') ) return FALSE;
+       return $res->rowCount();
+}
+
+/**
+ * returns number of rows affected by SQL query
+ * @deprecated
+ */
+function sql_affected_rows($conn = false)
+{
+       global $mysql_affected_row;
+       return $mysql_affected_row;
+}
+
+/**
+ * Get number of fields in result
+ * @deprecated
+ */
+function sql_num_fields($res)
+{
+       if ( !method_exists($res, 'columnCount') ) return FALSE;
+       return $res->columnCount();
+}
+
+/**
+ * fetches next row of SQL result as an associative array
+ * @deprecated
+ */
+function sql_fetch_assoc($res)
+{
+       if ( !method_exists($res, 'fetch') ) return FALSE;
+       return $res->fetch(PDO::FETCH_ASSOC);
+}
+
+/**
+ * Fetch a result row as an associative array, a numeric array, or both
+ * @deprecated
+ */
+function sql_fetch_array($res)
+{
+       if ( !method_exists($res, 'fetch') ) return FALSE;
+       return $res->fetch(PDO::FETCH_BOTH);
+}
+
+/**
+ * fetches next row of SQL result as an object
+ * @deprecated
+ */
+function sql_fetch_object($res)
+{
+       if ( !method_exists($res, 'fetch') ) return FALSE;
+       return $res->fetch(PDO::FETCH_OBJ);
+}
+
+/**
+ * Get a result row as an enumerated array
+ * @deprecated
+ */
+function sql_fetch_row($res)
+{
+       if ( !method_exists($res, 'fetch') ) return FALSE;
+       return $res->fetch(PDO::FETCH_NUM);
+}
+
+/**
+ * Get column information from a result and return as an object
+ * @deprecated
+ */
+function sql_fetch_field($res, $offset = 0)
+{
+       return FALSE;
+}
+
+/**
+ * Get current system status (returns string)
+ * @deprecated
+ */
+function sql_stat($conn = false)
+{
+       return FALSE;
+}
+
+/**
+ * Returns the name of the character set
+ * @deprecated
+ */
+function sql_client_encoding($conn = false)
+{
+       return FALSE;
+}
+
+/**
+ * Get SQL client version
+ * @deprecated
+ */
+function sql_get_client_info()
+{
+       return DB::getAttribute(PDO::ATTR_CLIENT_VERSION);
+}
+
+/**
+ * Get SQL server version
+ * @deprecated
+ */
+function sql_get_server_info($conn = false)
+{
+       return DB::getAttribute(PDO::ATTR_SERVER_VERSION);
+}
+
+/**
+ * Returns a string describing the type of SQL connection in use for the connection or FALSE on failure
+ * @deprecated
+ */
+function sql_get_host_info($conn = false)
+{
+       return FALSE;
+}
+
+/**
+ * Returns the SQL protocol on success, or FALSE on failure.
+ * @deprecated
+ */
+function sql_get_proto_info($conn = false)
+{
+       return FALSE;
+}
+
+/**
+ * Get the name of the specified field in a result
+ * @deprecated
+ */
+function sql_field_name($res, $offset = 0)
+{
+       if ( !method_exists($res, 'getColumnMeta') ) return FALSE;
+       $column = $res->getColumnMeta($offset);
+       return $column['name'];
+}
+
+/**
+ * Set character encodings in each fields related to MySQL connection.
+ * @deprecated
+ */
+function sql_set_charset($charset)
+{
+       return TRUE;
+}
+>>>>>>> skinnable-master
index 4855a6f..84b3550 100644 (file)
-<?php\r
-\r
-/*\r
- * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)\r
- * Copyright (C) 2002-2012 The Nucleus Group\r
- *\r
- * This program is free software; you can redistribute it and/or\r
- * modify it under the terms of the GNU General Public License\r
- * as published by the Free Software Foundation; either version 2\r
- * of the License, or (at your option) any later version.\r
- * (see nucleus/documentation/index.html#license for more info)\r
- */\r
-/**\r
- * @license http://nucleuscms.org/license.txt GNU General Public License\r
- * @copyright Copyright (C) 2002-2012 The Nucleus Group\r
- * @version $Id: vars4.1.0.php 1544 2011-06-25 22:32:50Z kaigreve $\r
- */\r
-\r
-/**\r
- * Return the value of $_GET for the variable $name\r
- * \r
- * If the variable is set the function returns the value,\r
- * if it is not set it returns null (which is equal to false).\r
- * \r
- * @param unknown_type $name\r
- */\r
-function getVar($name) {\r
-       if (!isset($_GET[$name])) {\r
-               return;\r
-       }\r
-\r
-       return undoMagic($_GET[$name]);\r
-}\r
-\r
-/**\r
- * Return the value of $_POST for the variable $name\r
- * \r
- * If the variable is set the function returns the value,\r
- * if it is not set it returns null (which is equal to false).\r
- * \r
- * @param unknown_type $name\r
- */\r
-function postVar($name) {\r
-       if (!isset($_POST[$name])) {\r
-               return;\r
-       }\r
-\r
-       return undoMagic($_POST[$name]);\r
-}\r
-\r
-/**\r
- * Return the value of $_COOKIE for the variable $name\r
- * \r
- * If the variable is set the function returns the value,\r
- * if it is not set it returns null (which is equal to false).\r
- * \r
- * @param unknown_type $name\r
- */\r
-function cookieVar($name) {\r
-       if (!isset($_COOKIE[$name])) {\r
-               return;\r
-       }\r
-\r
-       return undoMagic($_COOKIE[$name]);\r
-}\r
-\r
-/**\r
- * Return the request var for the variable $name\r
- * \r
- * If the variable is set the function returns the value,\r
- * if it is not set it returns null (which is equal to false).\r
- * Trys to resolve also $_GET and $_POST\r
- * \r
- * @param unknown_type $name\r
- */\r
-function requestVar($name) {\r
-       if(array_key_exists($name,$_REQUEST))\r
-               return undoMagic($_REQUEST[$name]);\r
-       elseif( array_key_exists($name,$_GET))\r
-               return undoMagic($_GET[$name]);\r
-       elseif( array_key_exists($name,$_POST))\r
-               return undoMagic($_POST[$name]);\r
-       else\r
-               return;\r
-}\r
-\r
-/**\r
- * Return the value of $_SERVER for the variable $name\r
- * \r
- * If the variable is set the function returns the value,\r
- * if it is not set it returns null (which is equal to false)\r
- * \r
- * @param unknown_type $name\r
- */\r
-function serverVar($name) {\r
-       if (!isset($_SERVER[$name])) {\r
-               return false;\r
-       }\r
-\r
-       return $_SERVER[$name];\r
-}\r
-\r
-/**\r
- * Removes magic quotes if that option is enabled\r
- * \r
- * @param $data\r
- */\r
-function undoMagic($data) {\r
-       if (!get_magic_quotes_gpc())\r
-               return $data;\r
-       if (ini_get('magic_quotes_sybase') != 1)\r
-               return stripslashes_array($data);\r
-       else\r
-               return undoSybaseQuotes_array($data);\r
-}\r
-\r
-/**\r
- * Strip slashes from a variable or an array\r
- * \r
- * @param $data\r
- */\r
-function stripslashes_array($data) {\r
-       return is_array($data) ? array_map('stripslashes_array', $data) : stripslashes($data);\r
-}\r
-\r
-/**\r
- * Undo Sybase Quotes from an array\r
- * \r
- * @param $data\r
- */\r
-function undoSybaseQuotes_array($data) {\r
-       return is_array($data) ? array_map('undoSybaseQuotes', $data) : stripslashes($data);\r
-}\r
-\r
-/**\r
- * Undo Sybase Quotes from a variable\r
- * \r
- * @param $data\r
- */\r
-function undoSybaseQuotes($data) {\r
-       return str_replace("''", "'", $data);\r
-}\r
-\r
-/**\r
- * Integer array from request\r
- * \r
- * @param unknown_type $name\r
- */\r
-function requestIntArray($name) {\r
-       if (!isset($_REQUEST[$name])) {\r
-               return;\r
-       }\r
-\r
-       return $_REQUEST[$name];\r
-}\r
-\r
-/**\r
- * Array from request. Be sure to call undoMagic on the strings inside.\r
- * \r
- * @param $name\r
- */\r
-function requestArray($name) {\r
-       if (!isset($_REQUEST[$name])) {\r
-               return;\r
-       }\r
-\r
-       return $_REQUEST[$name];\r
-}\r
-\r
-/**\r
- *  add all the variables from the request as hidden input field\r
- *  @see globalfunctions.php#passVar\r
- * \r
- */\r
-function passRequestVars() {\r
-       foreach ($_REQUEST as $key => $value) {\r
-               if (($key == 'action') && ($value != requestVar('nextaction')))\r
-                       $key = 'nextaction';\r
-\r
-               // a nextaction of 'showlogin' makes no sense\r
-               if (($key == 'nextaction') && ($value == 'showlogin'))\r
-                       continue;\r
-\r
-               if (($key != 'login') && ($key != 'password'))\r
-                       passVar($key, $value);\r
-       }\r
-}\r
-\r
-/**\r
- * Return the value of $_FILES for the variable $name\r
- * \r
- * If the variable is set the function returns the value,\r
- * if it is not set it returns null (which is equal to false)\r
- * \r
- * @param $name\r
- */\r
-function postFileInfo($name) {\r
-       if (!isset($_FILES[$name])) {\r
-               return;\r
-       }\r
-\r
-       return $_FILES[$name];\r
-}\r
-\r
-/**\r
- * Sets the $_POST variable oldaction to the given value\r
- * \r
- * @param $value\r
- */\r
-function setOldAction($value) {\r
-       $_POST['oldaction'] = $value;\r
-}\r
-\r
-?>\r
+<?php
+
+/*
+ * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)
+ * Copyright (C) 2002-2009 The Nucleus Group
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * (see nucleus/documentation/index.html#license for more info)
+ */
+/**
+ * @license http://nucleuscms.org/license.txt GNU General Public License
+ * @copyright Copyright (C) 2002-2009 The Nucleus Group
+ * @version $Id: vars4.1.0.php 1544 2011-06-25 22:32:50Z kaigreve $
+ */
+
+/**
+ * Return the value of $_GET for the variable $name
+ * 
+ * If the variable is set the function returns the value,
+ * if it is not set it returns null (which is equal to false).
+ * 
+ * @param unknown_type $name
+ */
+function getVar($name) {
+       if (!isset($_GET[$name])) {
+               return;
+       }
+
+       return undoMagic($_GET[$name]);
+}
+
+/**
+ * Return the value of $_POST for the variable $name
+ * 
+ * If the variable is set the function returns the value,
+ * if it is not set it returns null (which is equal to false).
+ * 
+ * @param unknown_type $name
+ */
+function postVar($name) {
+       if (!isset($_POST[$name])) {
+               return;
+       }
+
+       return undoMagic($_POST[$name]);
+}
+
+/**
+ * Return the value of $_COOKIE for the variable $name
+ * 
+ * If the variable is set the function returns the value,
+ * if it is not set it returns null (which is equal to false).
+ * 
+ * @param unknown_type $name
+ */
+function cookieVar($name) {
+       if (!isset($_COOKIE[$name])) {
+               return;
+       }
+
+       return undoMagic($_COOKIE[$name]);
+}
+
+/**
+ * Return the request var for the variable $name
+ * 
+ * If the variable is set the function returns the value,
+ * if it is not set it returns null (which is equal to false).
+ * Trys to resolve also $_GET and $_POST
+ * 
+ * @param unknown_type $name
+ */
+function requestVar($name) {
+       if(array_key_exists($name,$_REQUEST))
+               return undoMagic($_REQUEST[$name]);
+       elseif( array_key_exists($name,$_GET))
+               return undoMagic($_GET[$name]);
+       elseif( array_key_exists($name,$_POST))
+               return undoMagic($_POST[$name]);
+       else
+               return;
+}
+
+/**
+ * Return the value of $_SERVER for the variable $name
+ * 
+ * If the variable is set the function returns the value,
+ * if it is not set it returns null (which is equal to false)
+ * 
+ * @param unknown_type $name
+ */
+function serverVar($name) {
+       if (!isset($_SERVER[$name])) {
+               return false;
+       }
+
+       return $_SERVER[$name];
+}
+
+/**
+ * Removes magic quotes if that option is enabled
+ * 
+ * @param $data
+ */
+function undoMagic($data) {
+       if (!get_magic_quotes_gpc())
+               return $data;
+       if (ini_get('magic_quotes_sybase') != 1)
+               return stripslashes_array($data);
+       else
+               return undoSybaseQuotes_array($data);
+}
+
+/**
+ * Strip slashes from a variable or an array
+ * 
+ * @param $data
+ */
+function stripslashes_array($data) {
+       return is_array($data) ? array_map('stripslashes_array', $data) : stripslashes($data);
+}
+
+/**
+ * Undo Sybase Quotes from an array
+ * 
+ * @param $data
+ */
+function undoSybaseQuotes_array($data) {
+       return is_array($data) ? array_map('undoSybaseQuotes', $data) : stripslashes($data);
+}
+
+/**
+ * Undo Sybase Quotes from a variable
+ * 
+ * @param $data
+ */
+function undoSybaseQuotes($data) {
+       return str_replace("''", "'", $data);
+}
+
+/**
+ * Integer array from request
+ * 
+ * @param unknown_type $name
+ */
+function requestIntArray($name) {
+       if (!isset($_REQUEST[$name])) {
+               return;
+       }
+
+       return $_REQUEST[$name];
+}
+
+/**
+ * Array from request. Be sure to call undoMagic on the strings inside.
+ * 
+ * @param $name
+ */
+function requestArray($name) {
+       if (!isset($_REQUEST[$name])) {
+               return;
+       }
+
+       return $_REQUEST[$name];
+}
+
+/**
+ *  add all the variables from the request as hidden input field
+ *  @see globalfunctions.php#passVar
+ * 
+ */
+function passRequestVars() {
+       foreach ($_REQUEST as $key => $value) {
+               if (($key == 'action') && ($value != requestVar('nextaction')))
+                       $key = 'nextaction';
+
+               // a nextaction of 'showlogin' makes no sense
+               if (($key == 'nextaction') && ($value == 'showlogin'))
+                       continue;
+
+               if (($key != 'login') && ($key != 'password'))
+                       passVar($key, $value);
+       }
+}
+
+/**
+ * Return the value of $_FILES for the variable $name
+ * 
+ * If the variable is set the function returns the value,
+ * if it is not set it returns null (which is equal to false)
+ * 
+ * @param $name
+ */
+function postFileInfo($name) {
+       if (!isset($_FILES[$name])) {
+               return;
+       }
+
+       return $_FILES[$name];
+}
+
+/**
+ * Sets the $_POST variable oldaction to the given value
+ * 
+ * @param $value
+ */
+function setOldAction($value) {
+       $_POST['oldaction'] = $value;
+}
+
+?>
\ No newline at end of file
index 3f9e55e..0881030 100644 (file)
-<?php\r
-// by Edd Dumbill (C) 1999-2002\r
-// <edd@usefulinc.com>\r
-// $Original: xmlrpc.inc,v 1.158 2007/03/01 21:21:02 ggiunta Exp $\r
-// $Id: xmlrpc.inc.php 1624 2012-01-09 11:36:20Z sakamocchi $\r
-\r
-\r
-// Copyright (c) 1999,2000,2002 Edd Dumbill.\r
-// All rights reserved.\r
-//\r
-// Redistribution and use in source and binary forms, with or without\r
-// modification, are permitted provided that the following conditions\r
-// are met:\r
-//\r
-//    * Redistributions of source code must retain the above copyright\r
-//      notice, this list of conditions and the following disclaimer.\r
-//\r
-//    * Redistributions in binary form must reproduce the above\r
-//      copyright notice, this list of conditions and the following\r
-//      disclaimer in the documentation and/or other materials provided\r
-//      with the distribution.\r
-//\r
-//    * Neither the name of the "XML-RPC for PHP" nor the names of its\r
-//      contributors may be used to endorse or promote products derived\r
-//      from this software without specific prior written permission.\r
-//\r
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\r
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\r
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\r
-// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\r
-// REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\r
-// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\r
-// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\r
-// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
-// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
-// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED\r
-// OF THE POSSIBILITY OF SUCH DAMAGE.\r
-\r
-       if(!function_exists('xml_parser_create'))\r
-       {\r
-               // For PHP 4 onward, XML functionality is always compiled-in on windows:\r
-               // no more need to dl-open it. It might have been compiled out on *nix...\r
-               //if(strtoupper(substr(PHP_OS, 0, 3) != 'WIN'))\r
-               $phpver = phpversion();\r
-               if (!extension_loaded('xml') && version_compare($phpver,'5.3.0','<'))\r
-               {\r
-                       dl('xml.so');\r
-               }\r
-       }\r
-\r
-       // Try to be backward compat with php < 4.2 (are we not being nice ?)\r
-       $phpversion = phpversion();\r
-       if($phpversion[0] == '4' && $phpversion[2] < 2)\r
-       {\r
-               // give an opportunity to user to specify where to include other files from\r
-               if(!defined('PHP_XMLRPC_COMPAT_DIR'))\r
-               {\r
-                       define('PHP_XMLRPC_COMPAT_DIR',dirname(__FILE__).'/compat/');\r
-               }\r
-               if($phpversion[2] == '0')\r
-               {\r
-                       if($phpversion[4] < 6)\r
-                       {\r
-                               include(PHP_XMLRPC_COMPAT_DIR.'is_callable.php');\r
-                       }\r
-                       include(PHP_XMLRPC_COMPAT_DIR.'is_scalar.php');\r
-                       include(PHP_XMLRPC_COMPAT_DIR.'array_key_exists.php');\r
-                       include(PHP_XMLRPC_COMPAT_DIR.'version_compare.php');\r
-               }\r
-               include(PHP_XMLRPC_COMPAT_DIR.'var_export.php');\r
-               include(PHP_XMLRPC_COMPAT_DIR.'is_a.php');\r
-       }\r
-\r
-       // G. Giunta 2005/01/29: declare global these variables,\r
-       // so that xmlrpc.inc will work even if included from within a function\r
-       // Milosch: 2005/08/07 - explicitly request these via $GLOBALS where used.\r
-       $GLOBALS['xmlrpcI4']='i4';\r
-       $GLOBALS['xmlrpcInt']='int';\r
-       $GLOBALS['xmlrpcBoolean']='boolean';\r
-       $GLOBALS['xmlrpcDouble']='double';\r
-       $GLOBALS['xmlrpcString']='string';\r
-       $GLOBALS['xmlrpcDateTime']='dateTime.iso8601';\r
-       $GLOBALS['xmlrpcBase64']='base64';\r
-       $GLOBALS['xmlrpcArray']='array';\r
-       $GLOBALS['xmlrpcStruct']='struct';\r
-       $GLOBALS['xmlrpcValue']='undefined';\r
-\r
-       $GLOBALS['xmlrpcTypes']=array(\r
-               $GLOBALS['xmlrpcI4']       => 1,\r
-               $GLOBALS['xmlrpcInt']      => 1,\r
-               $GLOBALS['xmlrpcBoolean']  => 1,\r
-               $GLOBALS['xmlrpcString']   => 1,\r
-               $GLOBALS['xmlrpcDouble']   => 1,\r
-               $GLOBALS['xmlrpcDateTime'] => 1,\r
-               $GLOBALS['xmlrpcBase64']   => 1,\r
-               $GLOBALS['xmlrpcArray']    => 2,\r
-               $GLOBALS['xmlrpcStruct']   => 3\r
-       );\r
-\r
-       $GLOBALS['xmlrpc_valid_parents'] = array(\r
-               'VALUE' => array('MEMBER', 'DATA', 'PARAM', 'FAULT'),\r
-               'BOOLEAN' => array('VALUE'),\r
-               'I4' => array('VALUE'),\r
-               'INT' => array('VALUE'),\r
-               'STRING' => array('VALUE'),\r
-               'DOUBLE' => array('VALUE'),\r
-               'DATETIME.ISO8601' => array('VALUE'),\r
-               'BASE64' => array('VALUE'),\r
-               'MEMBER' => array('STRUCT'),\r
-               'NAME' => array('MEMBER'),\r
-               'DATA' => array('ARRAY'),\r
-               'ARRAY' => array('VALUE'),\r
-               'STRUCT' => array('VALUE'),\r
-               'PARAM' => array('PARAMS'),\r
-               'METHODNAME' => array('METHODCALL'),\r
-               'PARAMS' => array('METHODCALL', 'METHODRESPONSE'),\r
-               'FAULT' => array('METHODRESPONSE'),\r
-               'NIL' => array('VALUE') // only used when extension activated\r
-       );\r
-\r
-       // define extra types for supporting NULL (useful for json or <NIL/>)\r
-       $GLOBALS['xmlrpcNull']='null';\r
-       $GLOBALS['xmlrpcTypes']['null']=1;\r
-\r
-       // Not in use anymore since 2.0. Shall we remove it?\r
-       /// @deprecated\r
-       $GLOBALS['xmlEntities']=array(\r
-               'amp'  => '&',\r
-               'quot' => '"',\r
-               'lt'   => '<',\r
-               'gt'   => '>',\r
-               'apos' => "'"\r
-       );\r
-\r
-       // tables used for transcoding different charsets into us-ascii xml\r
-\r
-       $GLOBALS['xml_iso88591_Entities']=array();\r
-       $GLOBALS['xml_iso88591_Entities']['in'] = array();\r
-       $GLOBALS['xml_iso88591_Entities']['out'] = array();\r
-       for ($i = 0; $i < 32; $i++)\r
-       {\r
-               $GLOBALS['xml_iso88591_Entities']['in'][] = chr($i);\r
-               $GLOBALS['xml_iso88591_Entities']['out'][] = '&#'.$i.';';\r
-       }\r
-       for ($i = 160; $i < 256; $i++)\r
-       {\r
-               $GLOBALS['xml_iso88591_Entities']['in'][] = chr($i);\r
-               $GLOBALS['xml_iso88591_Entities']['out'][] = '&#'.$i.';';\r
-       }\r
-\r
-       /// @todo add to iso table the characters from cp_1252 range, i.e. 128 to 159.\r
-       /// These will NOT be present in true ISO-8859-1, but will save the unwary\r
-       /// windows user from sending junk.\r
-/*\r
-$cp1252_to_xmlent =\r
-  array(\r
-   '\x80'=>'&#x20AC;', '\x81'=>'?', '\x82'=>'&#x201A;', '\x83'=>'&#x0192;',\r
-   '\x84'=>'&#x201E;', '\x85'=>'&#x2026;', '\x86'=>'&#x2020;', \x87'=>'&#x2021;',\r
-   '\x88'=>'&#x02C6;', '\x89'=>'&#x2030;', '\x8A'=>'&#x0160;', '\x8B'=>'&#x2039;',\r
-   '\x8C'=>'&#x0152;', '\x8D'=>'?', '\x8E'=>'&#x017D;', '\x8F'=>'?',\r
-   '\x90'=>'?', '\x91'=>'&#x2018;', '\x92'=>'&#x2019;', '\x93'=>'&#x201C;',\r
-   '\x94'=>'&#x201D;', '\x95'=>'&#x2022;', '\x96'=>'&#x2013;', '\x97'=>'&#x2014;',\r
-   '\x98'=>'&#x02DC;', '\x99'=>'&#x2122;', '\x9A'=>'&#x0161;', '\x9B'=>'&#x203A;',\r
-   '\x9C'=>'&#x0153;', '\x9D'=>'?', '\x9E'=>'&#x017E;', '\x9F'=>'&#x0178;'\r
-  );\r
-*/\r
-\r
-       $GLOBALS['xmlrpcerr']['unknown_method']=1;\r
-       $GLOBALS['xmlrpcstr']['unknown_method']='Unknown method';\r
-       $GLOBALS['xmlrpcerr']['invalid_return']=2;\r
-       $GLOBALS['xmlrpcstr']['invalid_return']='Invalid return payload: enable debugging to examine incoming payload';\r
-       $GLOBALS['xmlrpcerr']['incorrect_params']=3;\r
-       $GLOBALS['xmlrpcstr']['incorrect_params']='Incorrect parameters passed to method';\r
-       $GLOBALS['xmlrpcerr']['introspect_unknown']=4;\r
-       $GLOBALS['xmlrpcstr']['introspect_unknown']="Can't introspect: method unknown";\r
-       $GLOBALS['xmlrpcerr']['http_error']=5;\r
-       $GLOBALS['xmlrpcstr']['http_error']="Didn't receive 200 OK from remote server.";\r
-       $GLOBALS['xmlrpcerr']['no_data']=6;\r
-       $GLOBALS['xmlrpcstr']['no_data']='No data received from server.';\r
-       $GLOBALS['xmlrpcerr']['no_ssl']=7;\r
-       $GLOBALS['xmlrpcstr']['no_ssl']='No SSL support compiled in.';\r
-       $GLOBALS['xmlrpcerr']['curl_fail']=8;\r
-       $GLOBALS['xmlrpcstr']['curl_fail']='CURL error';\r
-       $GLOBALS['xmlrpcerr']['invalid_request']=15;\r
-       $GLOBALS['xmlrpcstr']['invalid_request']='Invalid request payload';\r
-       $GLOBALS['xmlrpcerr']['no_curl']=16;\r
-       $GLOBALS['xmlrpcstr']['no_curl']='No CURL support compiled in.';\r
-       $GLOBALS['xmlrpcerr']['server_error']=17;\r
-       $GLOBALS['xmlrpcstr']['server_error']='Internal server error';\r
-       $GLOBALS['xmlrpcerr']['multicall_error']=18;\r
-       $GLOBALS['xmlrpcstr']['multicall_error']='Received from server invalid multicall response';\r
-\r
-       $GLOBALS['xmlrpcerr']['multicall_notstruct'] = 9;\r
-       $GLOBALS['xmlrpcstr']['multicall_notstruct'] = 'system.multicall expected struct';\r
-       $GLOBALS['xmlrpcerr']['multicall_nomethod']  = 10;\r
-       $GLOBALS['xmlrpcstr']['multicall_nomethod']  = 'missing methodName';\r
-       $GLOBALS['xmlrpcerr']['multicall_notstring'] = 11;\r
-       $GLOBALS['xmlrpcstr']['multicall_notstring'] = 'methodName is not a string';\r
-       $GLOBALS['xmlrpcerr']['multicall_recursion'] = 12;\r
-       $GLOBALS['xmlrpcstr']['multicall_recursion'] = 'recursive system.multicall forbidden';\r
-       $GLOBALS['xmlrpcerr']['multicall_noparams']  = 13;\r
-       $GLOBALS['xmlrpcstr']['multicall_noparams']  = 'missing params';\r
-       $GLOBALS['xmlrpcerr']['multicall_notarray']  = 14;\r
-       $GLOBALS['xmlrpcstr']['multicall_notarray']  = 'params is not an array';\r
-\r
-       $GLOBALS['xmlrpcerr']['cannot_decompress']=103;\r
-       $GLOBALS['xmlrpcstr']['cannot_decompress']='Received from server compressed HTTP and cannot decompress';\r
-       $GLOBALS['xmlrpcerr']['decompress_fail']=104;\r
-       $GLOBALS['xmlrpcstr']['decompress_fail']='Received from server invalid compressed HTTP';\r
-       $GLOBALS['xmlrpcerr']['dechunk_fail']=105;\r
-       $GLOBALS['xmlrpcstr']['dechunk_fail']='Received from server invalid chunked HTTP';\r
-       $GLOBALS['xmlrpcerr']['server_cannot_decompress']=106;\r
-       $GLOBALS['xmlrpcstr']['server_cannot_decompress']='Received from client compressed HTTP request and cannot decompress';\r
-       $GLOBALS['xmlrpcerr']['server_decompress_fail']=107;\r
-       $GLOBALS['xmlrpcstr']['server_decompress_fail']='Received from client invalid compressed HTTP request';\r
-\r
-       // The charset encoding used by the server for received messages and\r
-       // by the client for received responses when received charset cannot be determined\r
-       // or is not supported\r
-       $GLOBALS['xmlrpc_defencoding']='UTF-8';\r
-\r
-       // The encoding used internally by PHP.\r
-       // String values received as xml will be converted to this, and php strings will be converted to xml\r
-       // as if having been coded with this\r
-       $GLOBALS['xmlrpc_internalencoding']='ISO-8859-1';\r
-\r
-       $GLOBALS['xmlrpcName']='XML-RPC for PHP';\r
-       $GLOBALS['xmlrpcVersion']='2.2';\r
-\r
-       // let user errors start at 800\r
-       $GLOBALS['xmlrpcerruser']=800;\r
-       // let XML parse errors start at 100\r
-       $GLOBALS['xmlrpcerrxml']=100;\r
-\r
-       // formulate backslashes for escaping regexp\r
-       // Not in use anymore since 2.0. Shall we remove it?\r
-       /// @deprecated\r
-       $GLOBALS['xmlrpc_backslash']=chr(92).chr(92);\r
-\r
-       // set to TRUE to enable correct decoding of <NIL/> values\r
-       $GLOBALS['xmlrpc_null_extension']=false;\r
-\r
-       // used to store state during parsing\r
-       // quick explanation of components:\r
-       //   ac - used to accumulate values\r
-       //   isf - used to indicate a parsing fault (2) or xmlrpcresp fault (1)\r
-       //   isf_reason - used for storing xmlrpcresp fault string\r
-       //   lv - used to indicate "looking for a value": implements\r
-       //        the logic to allow values with no types to be strings\r
-       //   params - used to store parameters in method calls\r
-       //   method - used to store method name\r
-       //   stack - array with genealogy of xml elements names:\r
-       //           used to validate nesting of xmlrpc elements\r
-       $GLOBALS['_xh']=null;\r
-\r
-       /**\r
-       * Convert a string to the correct XML representation in a target charset\r
-       * To help correct communication of non-ascii chars inside strings, regardless\r
-       * of the charset used when sending requests, parsing them, sending responses\r
-       * and parsing responses, an option is to convert all non-ascii chars present in the message\r
-       * into their equivalent 'charset entity'. Charset entities enumerated this way\r
-       * are independent of the charset encoding used to transmit them, and all XML\r
-       * parsers are bound to understand them.\r
-       * Note that in the std case we are not sending a charset encoding mime type\r
-       * along with http headers, so we are bound by RFC 3023 to emit strict us-ascii.\r
-       *\r
-       * @todo do a bit of basic benchmarking (strtr vs. str_replace)\r
-       * @todo make usage of iconv() or recode_string() or mb_string() where available\r
-       */\r
-       function xmlrpc_encode_entitites($data, $src_encoding='', $dest_encoding='')\r
-       {\r
-               if ($src_encoding == '')\r
-               {\r
-                       // lame, but we know no better...\r
-                       $src_encoding = $GLOBALS['xmlrpc_internalencoding'];\r
-               }\r
-\r
-               switch(strtoupper($src_encoding.'_'.$dest_encoding))\r
-               {\r
-                       case 'ISO-8859-1_':\r
-                       case 'ISO-8859-1_US-ASCII':\r
-                               $escaped_data = str_replace(array('&', '"', "'", '<', '>'), array('&amp;', '&quot;', '&apos;', '&lt;', '&gt;'), $data);\r
-                               $escaped_data = str_replace($GLOBALS['xml_iso88591_Entities']['in'], $GLOBALS['xml_iso88591_Entities']['out'], $escaped_data);\r
-                               break;\r
-                       case 'ISO-8859-1_UTF-8':\r
-                               $escaped_data = str_replace(array('&', '"', "'", '<', '>'), array('&amp;', '&quot;', '&apos;', '&lt;', '&gt;'), $data);\r
-                               $escaped_data = utf8_encode($escaped_data);\r
-                               break;\r
-                       case 'ISO-8859-1_ISO-8859-1':\r
-                       case 'US-ASCII_US-ASCII':\r
-                       case 'US-ASCII_UTF-8':\r
-                       case 'US-ASCII_':\r
-                       case 'US-ASCII_ISO-8859-1':\r
-                       case 'UTF-8_UTF-8':\r
-                               $escaped_data = str_replace(array('&', '"', "'", '<', '>'), array('&amp;', '&quot;', '&apos;', '&lt;', '&gt;'), $data);\r
-                               break;\r
-                       case 'UTF-8_':\r
-                       case 'UTF-8_US-ASCII':\r
-                       case 'UTF-8_ISO-8859-1':\r
-       // NB: this will choke on invalid UTF-8, going most likely beyond EOF\r
-       $escaped_data = '';\r
-       // be kind to users creating string xmlrpcvals out of different php types\r
-       $data = (string) $data;\r
-       $ns = i18n::strlen ($data);\r
-       for ($nn = 0; $nn < $ns; $nn++)\r
-       {\r
-               $ch = $data[$nn];\r
-               $ii = ord($ch);\r
-               //1 7 0bbbbbbb (127)\r
-               if ($ii < 128)\r
-               {\r
-                       /// @todo shall we replace this with a (supposedly) faster str_replace?\r
-                       switch($ii){\r
-                               case 34:\r
-                                       $escaped_data .= '&quot;';\r
-                                       break;\r
-                               case 38:\r
-                                       $escaped_data .= '&amp;';\r
-                                       break;\r
-                               case 39:\r
-                                       $escaped_data .= '&apos;';\r
-                                       break;\r
-                               case 60:\r
-                                       $escaped_data .= '&lt;';\r
-                                       break;\r
-                               case 62:\r
-                                       $escaped_data .= '&gt;';\r
-                                       break;\r
-                               default:\r
-                                       $escaped_data .= $ch;\r
-                       } // switch\r
-               }\r
-               //2 11 110bbbbb 10bbbbbb (2047)\r
-               else if ($ii>>5 == 6)\r
-               {\r
-                       $b1 = ($ii & 31);\r
-                       $ii = ord($data[$nn+1]);\r
-                       $b2 = ($ii & 63);\r
-                       $ii = ($b1 * 64) + $b2;\r
-                       $ent = sprintf ('&#%d;', $ii);\r
-                       $escaped_data .= $ent;\r
-                       $nn += 1;\r
-               }\r
-               //3 16 1110bbbb 10bbbbbb 10bbbbbb\r
-               else if ($ii>>4 == 14)\r
-               {\r
-                       $b1 = ($ii & 31);\r
-                       $ii = ord($data[$nn+1]);\r
-                       $b2 = ($ii & 63);\r
-                       $ii = ord($data[$nn+2]);\r
-                       $b3 = ($ii & 63);\r
-                       $ii = ((($b1 * 64) + $b2) * 64) + $b3;\r
-                       $ent = sprintf ('&#%d;', $ii);\r
-                       $escaped_data .= $ent;\r
-                       $nn += 2;\r
-               }\r
-               //4 21 11110bbb 10bbbbbb 10bbbbbb 10bbbbbb\r
-               else if ($ii>>3 == 30)\r
-               {\r
-                       $b1 = ($ii & 31);\r
-                       $ii = ord($data[$nn+1]);\r
-                       $b2 = ($ii & 63);\r
-                       $ii = ord($data[$nn+2]);\r
-                       $b3 = ($ii & 63);\r
-                       $ii = ord($data[$nn+3]);\r
-                       $b4 = ($ii & 63);\r
-                       $ii = ((((($b1 * 64) + $b2) * 64) + $b3) * 64) + $b4;\r
-                       $ent = sprintf ('&#%d;', $ii);\r
-                       $escaped_data .= $ent;\r
-                       $nn += 3;\r
-               }\r
-       }\r
-                               break;\r
-                       default:\r
-                               $escaped_data = '';\r
-                               error_log("Converting from $src_encoding to $dest_encoding: not supported...");\r
-               }\r
-               return $escaped_data;\r
-       }\r
-\r
-       /// xml parser handler function for opening element tags\r
-       function xmlrpc_se($parser, $name, $attrs, $accept_single_vals=false)\r
-       {\r
-               // if invalid xmlrpc already detected, skip all processing\r
-               if ($GLOBALS['_xh']['isf'] < 2)\r
-               {\r
-                       // check for correct element nesting\r
-                       // top level element can only be of 2 types\r
-                       /// @todo optimization creep: save this check into a bool variable, instead of using count() every time:\r
-                       ///       there is only a single top level element in xml anyway\r
-                       if (count($GLOBALS['_xh']['stack']) == 0)\r
-                       {\r
-                               if ($name != 'METHODRESPONSE' && $name != 'METHODCALL' && (\r
-                                       $name != 'VALUE' && !$accept_single_vals))\r
-                               {\r
-                                       $GLOBALS['_xh']['isf'] = 2;\r
-                                       $GLOBALS['_xh']['isf_reason'] = 'missing top level xmlrpc element';\r
-                                       return;\r
-                               }\r
-                               else\r
-                               {\r
-                                       $GLOBALS['_xh']['rt'] = strtolower($name);\r
-                               }\r
-                       }\r
-                       else\r
-                       {\r
-                               // not top level element: see if parent is OK\r
-                               $parent = end($GLOBALS['_xh']['stack']);\r
-                               if (!array_key_exists($name, $GLOBALS['xmlrpc_valid_parents']) || !in_array($parent, $GLOBALS['xmlrpc_valid_parents'][$name]))\r
-                               {\r
-                                       $GLOBALS['_xh']['isf'] = 2;\r
-                                       $GLOBALS['_xh']['isf_reason'] = "xmlrpc element $name cannot be child of $parent";\r
-                                       return;\r
-                               }\r
-                       }\r
-\r
-                       switch($name)\r
-                       {\r
-                               // optimize for speed switch cases: most common cases first\r
-                               case 'VALUE':\r
-                                       /// @todo we could check for 2 VALUE elements inside a MEMBER or PARAM element\r
-                                       $GLOBALS['_xh']['vt']='value'; // indicator: no value found yet\r
-                                       $GLOBALS['_xh']['ac']='';\r
-                                       $GLOBALS['_xh']['lv']=1;\r
-                                       $GLOBALS['_xh']['php_class']=null;\r
-                                       break;\r
-                               case 'I4':\r
-                               case 'INT':\r
-                               case 'STRING':\r
-                               case 'BOOLEAN':\r
-                               case 'DOUBLE':\r
-                               case 'DATETIME.ISO8601':\r
-                               case 'BASE64':\r
-                                       if ($GLOBALS['_xh']['vt']!='value')\r
-                                       {\r
-                                               //two data elements inside a value: an error occurred!\r
-                                               $GLOBALS['_xh']['isf'] = 2;\r
-                                               $GLOBALS['_xh']['isf_reason'] = "$name element following a {$GLOBALS['_xh']['vt']} element inside a single value";\r
-                                               return;\r
-                                       }\r
-                                       $GLOBALS['_xh']['ac']=''; // reset the accumulator\r
-                                       break;\r
-                               case 'STRUCT':\r
-                               case 'ARRAY':\r
-                                       if ($GLOBALS['_xh']['vt']!='value')\r
-                                       {\r
-                                               //two data elements inside a value: an error occurred!\r
-                                               $GLOBALS['_xh']['isf'] = 2;\r
-                                               $GLOBALS['_xh']['isf_reason'] = "$name element following a {$GLOBALS['_xh']['vt']} element inside a single value";\r
-                                               return;\r
-                                       }\r
-                                       // create an empty array to hold child values, and push it onto appropriate stack\r
-                                       $cur_val = array();\r
-                                       $cur_val['values'] = array();\r
-                                       $cur_val['type'] = $name;\r
-                                       // check for out-of-band information to rebuild php objs\r
-                                       // and in case it is found, save it\r
-                                       if (@isset($attrs['PHP_CLASS']))\r
-                                       {\r
-                                               $cur_val['php_class'] = $attrs['PHP_CLASS'];\r
-                                       }\r
-                                       $GLOBALS['_xh']['valuestack'][] = $cur_val;\r
-                                       $GLOBALS['_xh']['vt']='data'; // be prepared for a data element next\r
-                                       break;\r
-                               case 'DATA':\r
-                                       if ($GLOBALS['_xh']['vt']!='data')\r
-                                       {\r
-                                               //two data elements inside a value: an error occurred!\r
-                                               $GLOBALS['_xh']['isf'] = 2;\r
-                                               $GLOBALS['_xh']['isf_reason'] = "found two data elements inside an array element";\r
-                                               return;\r
-                                       }\r
-                               case 'METHODCALL':\r
-                               case 'METHODRESPONSE':\r
-                               case 'PARAMS':\r
-                                       // valid elements that add little to processing\r
-                                       break;\r
-                               case 'METHODNAME':\r
-                               case 'NAME':\r
-                                       /// @todo we could check for 2 NAME elements inside a MEMBER element\r
-                                       $GLOBALS['_xh']['ac']='';\r
-                                       break;\r
-                               case 'FAULT':\r
-                                       $GLOBALS['_xh']['isf']=1;\r
-                                       break;\r
-                               case 'MEMBER':\r
-                                       $GLOBALS['_xh']['valuestack'][count($GLOBALS['_xh']['valuestack'])-1]['name']=''; // set member name to null, in case we do not find in the xml later on\r
-                                       //$GLOBALS['_xh']['ac']='';\r
-                                       // Drop trough intentionally\r
-                               case 'PARAM':\r
-                                       // clear value type, so we can check later if no value has been passed for this param/member\r
-                                       $GLOBALS['_xh']['vt']=null;\r
-                                       break;\r
-                               case 'NIL':\r
-                                       if ($GLOBALS['xmlrpc_null_extension'])\r
-                                       {\r
-                                               if ($GLOBALS['_xh']['vt']!='value')\r
-                                               {\r
-                                                       //two data elements inside a value: an error occurred!\r
-                                                       $GLOBALS['_xh']['isf'] = 2;\r
-                                                       $GLOBALS['_xh']['isf_reason'] = "$name element following a {$GLOBALS['_xh']['vt']} element inside a single value";\r
-                                                       return;\r
-                                               }\r
-                                               $GLOBALS['_xh']['ac']=''; // reset the accumulator\r
-                                               break;\r
-                                       }\r
-                                       // we do not support the <NIL/> extension, so\r
-                                       // drop through intentionally\r
-                               default:\r
-                                       /// INVALID ELEMENT: RAISE ISF so that it is later recognized!!!\r
-                                       $GLOBALS['_xh']['isf'] = 2;\r
-                                       $GLOBALS['_xh']['isf_reason'] = "found not-xmlrpc xml element $name";\r
-                                       break;\r
-                       }\r
-\r
-                       // Save current element name to stack, to validate nesting\r
-                       $GLOBALS['_xh']['stack'][] = $name;\r
-\r
-                       /// @todo optimization creep: move this inside the big switch() above\r
-                       if($name!='VALUE')\r
-                       {\r
-                               $GLOBALS['_xh']['lv']=0;\r
-                       }\r
-               }\r
-       }\r
-\r
-       /// Used in decoding xml chunks that might represent single xmlrpc values\r
-       function xmlrpc_se_any($parser, $name, $attrs)\r
-       {\r
-               xmlrpc_se($parser, $name, $attrs, true);\r
-       }\r
-\r
-       /// xml parser handler function for close element tags\r
-       function xmlrpc_ee($parser, $name, $rebuild_xmlrpcvals = true)\r
-       {\r
-               if ($GLOBALS['_xh']['isf'] < 2)\r
-               {\r
-                       // push this element name from stack\r
-                       // NB: if XML validates, correct opening/closing is guaranteed and\r
-                       // we do not have to check for $name == $curr_elem.\r
-                       // we also checked for proper nesting at start of elements...\r
-                       $curr_elem = array_pop($GLOBALS['_xh']['stack']);\r
-\r
-                       switch($name)\r
-                       {\r
-                               case 'VALUE':\r
-                                       // This if() detects if no scalar was inside <VALUE></VALUE>\r
-                                       if ($GLOBALS['_xh']['vt']=='value')\r
-                                       {\r
-                                               $GLOBALS['_xh']['value']=$GLOBALS['_xh']['ac'];\r
-                                               $GLOBALS['_xh']['vt']=$GLOBALS['xmlrpcString'];\r
-                                       }\r
-\r
-                                       if ($rebuild_xmlrpcvals)\r
-                                       {\r
-                                               // build the xmlrpc val out of the data received, and substitute it\r
-                                               $temp = new xmlrpcval($GLOBALS['_xh']['value'], $GLOBALS['_xh']['vt']);\r
-                                               // in case we got info about underlying php class, save it\r
-                                               // in the object we're rebuilding\r
-                                               if (isset($GLOBALS['_xh']['php_class']))\r
-                                                       $temp->_php_class = $GLOBALS['_xh']['php_class'];\r
-                                               // check if we are inside an array or struct:\r
-                                               // if value just built is inside an array, let's move it into array on the stack\r
-                                               $vscount = count($GLOBALS['_xh']['valuestack']);\r
-                                               if ($vscount && $GLOBALS['_xh']['valuestack'][$vscount-1]['type']=='ARRAY')\r
-                                               {\r
-                                                       $GLOBALS['_xh']['valuestack'][$vscount-1]['values'][] = $temp;\r
-                                               }\r
-                                               else\r
-                                               {\r
-                                                       $GLOBALS['_xh']['value'] = $temp;\r
-                                               }\r
-                                       }\r
-                                       else\r
-                                       {\r
-                                               /// @todo this needs to treat correctly php-serialized objects,\r
-                                               /// since std deserializing is done by php_xmlrpc_decode,\r
-                                               /// which we will not be calling...\r
-                                               if (isset($GLOBALS['_xh']['php_class']))\r
-                                               {\r
-                                               }\r
-\r
-                                               // check if we are inside an array or struct:\r
-                                               // if value just built is inside an array, let's move it into array on the stack\r
-                                               $vscount = count($GLOBALS['_xh']['valuestack']);\r
-                                               if ($vscount && $GLOBALS['_xh']['valuestack'][$vscount-1]['type']=='ARRAY')\r
-                                               {\r
-                                                       $GLOBALS['_xh']['valuestack'][$vscount-1]['values'][] = $GLOBALS['_xh']['value'];\r
-                                               }\r
-                                       }\r
-                                       break;\r
-                               case 'BOOLEAN':\r
-                               case 'I4':\r
-                               case 'INT':\r
-                               case 'STRING':\r
-                               case 'DOUBLE':\r
-                               case 'DATETIME.ISO8601':\r
-                               case 'BASE64':\r
-                                       $GLOBALS['_xh']['vt']=strtolower($name);\r
-                               /// @todo: optimization creep - remove the if/elseif cycle below\r
-                    /// since the case() in which we are already did that\r
-                                       if ($name=='STRING')\r
-                                       {\r
-                                               $GLOBALS['_xh']['value']=$GLOBALS['_xh']['ac'];\r
-                                       }\r
-                                       elseif ($name=='DATETIME.ISO8601')\r
-                                       {\r
-                                               if (!preg_match('/^[0-9]{8}T[0-9]{2}:[0-9]{2}:[0-9]{2}$/', $GLOBALS['_xh']['ac']))\r
-                                               {\r
-                                                       error_log('XML-RPC: invalid value received in DATETIME: '.$GLOBALS['_xh']['ac']);\r
-                                               }\r
-                                               $GLOBALS['_xh']['vt']=$GLOBALS['xmlrpcDateTime'];\r
-                                               $GLOBALS['_xh']['value']=$GLOBALS['_xh']['ac'];\r
-                                       }\r
-                                       elseif ($name=='BASE64')\r
-                                       {\r
-                                               /// @todo check for failure of base64 decoding / catch warnings\r
-                                               $GLOBALS['_xh']['value']=base64_decode($GLOBALS['_xh']['ac']);\r
-                                       }\r
-                                       elseif ($name=='BOOLEAN')\r
-                                       {\r
-                                               // special case here: we translate boolean 1 or 0 into PHP\r
-                                               // constants true or false.\r
-                                               // Strings 'true' and 'false' are accepted, even though the\r
-                                               // spec never mentions them (see eg. Blogger api docs)\r
-                                               // NB: this simple checks helps a lot sanitizing input, ie no\r
-                                               // security problems around here\r
-                                               if ($GLOBALS['_xh']['ac']=='1' || strcasecmp($GLOBALS['_xh']['ac'], 'true') == 0)\r
-                                               {\r
-                                                       $GLOBALS['_xh']['value']=true;\r
-                                               }\r
-                                               else\r
-                                               {\r
-                                                       // log if receiveing something strange, even though we set the value to false anyway\r
-                                                       if ($GLOBALS['_xh']['ac']!='0' && strcasecmp($_xh[$parser]['ac'], 'false') != 0)\r
-                                                               error_log('XML-RPC: invalid value received in BOOLEAN: '.$GLOBALS['_xh']['ac']);\r
-                                                       $GLOBALS['_xh']['value']=false;\r
-                                               }\r
-                                       }\r
-                                       elseif ($name=='DOUBLE')\r
-                                       {\r
-                                               // we have a DOUBLE\r
-                                               // we must check that only 0123456789-.<space> are characters here\r
-                                               if (!preg_match('/^[+-]?[eE0123456789 \t.]+$/', $GLOBALS['_xh']['ac']))\r
-                                               {\r
-                                                       /// @todo: find a better way of throwing an error\r
-                                                       // than this!\r
-                                                       error_log('XML-RPC: non numeric value received in DOUBLE: '.$GLOBALS['_xh']['ac']);\r
-                                                       $GLOBALS['_xh']['value']='ERROR_NON_NUMERIC_FOUND';\r
-                                               }\r
-                                               else\r
-                                               {\r
-                                                       // it's ok, add it on\r
-                                                       $GLOBALS['_xh']['value']=(double)$GLOBALS['_xh']['ac'];\r
-                                               }\r
-                                       }\r
-                                       else\r
-                                       {\r
-                                               // we have an I4/INT\r
-                                               // we must check that only 0123456789-<space> are characters here\r
-                                               if (!preg_match('/^[+-]?[0123456789 \t]+$/', $GLOBALS['_xh']['ac']))\r
-                                               {\r
-                                                       /// @todo find a better way of throwing an error\r
-                                                       // than this!\r
-                                                       error_log('XML-RPC: non numeric value received in INT: '.$GLOBALS['_xh']['ac']);\r
-                                                       $GLOBALS['_xh']['value']='ERROR_NON_NUMERIC_FOUND';\r
-                                               }\r
-                                               else\r
-                                               {\r
-                                                       // it's ok, add it on\r
-                                                       $GLOBALS['_xh']['value']=(int)$GLOBALS['_xh']['ac'];\r
-                                               }\r
-                                       }\r
-                                       //$GLOBALS['_xh']['ac']=''; // is this necessary?\r
-                                       $GLOBALS['_xh']['lv']=3; // indicate we've found a value\r
-                                       break;\r
-                               case 'NAME':\r
-                                       $GLOBALS['_xh']['valuestack'][count($GLOBALS['_xh']['valuestack'])-1]['name'] = $GLOBALS['_xh']['ac'];\r
-                                       break;\r
-                               case 'MEMBER':\r
-                                       //$GLOBALS['_xh']['ac']=''; // is this necessary?\r
-                                       // add to array in the stack the last element built,\r
-                                       // unless no VALUE was found\r
-                                       if ($GLOBALS['_xh']['vt'])\r
-                                       {\r
-                                               $vscount = count($GLOBALS['_xh']['valuestack']);\r
-                                               $GLOBALS['_xh']['valuestack'][$vscount-1]['values'][$GLOBALS['_xh']['valuestack'][$vscount-1]['name']] = $GLOBALS['_xh']['value'];\r
-                                       } else\r
-                                               error_log('XML-RPC: missing VALUE inside STRUCT in received xml');\r
-                                       break;\r
-                               case 'DATA':\r
-                                       //$GLOBALS['_xh']['ac']=''; // is this necessary?\r
-                                       $GLOBALS['_xh']['vt']=null; // reset this to check for 2 data elements in a row - even if they're empty\r
-                                       break;\r
-                               case 'STRUCT':\r
-                               case 'ARRAY':\r
-                                       // fetch out of stack array of values, and promote it to current value\r
-                                       $curr_val = array_pop($GLOBALS['_xh']['valuestack']);\r
-                                       $GLOBALS['_xh']['value'] = $curr_val['values'];\r
-                                       $GLOBALS['_xh']['vt']=strtolower($name);\r
-                                       if (isset($curr_val['php_class']))\r
-                                       {\r
-                                               $GLOBALS['_xh']['php_class'] = $curr_val['php_class'];\r
-                                       }\r
-                                       break;\r
-                               case 'PARAM':\r
-                                       // add to array of params the current value,\r
-                                       // unless no VALUE was found\r
-                                       if ($GLOBALS['_xh']['vt'])\r
-                                       {\r
-                                               $GLOBALS['_xh']['params'][]=$GLOBALS['_xh']['value'];\r
-                                               $GLOBALS['_xh']['pt'][]=$GLOBALS['_xh']['vt'];\r
-                                       }\r
-                                       else\r
-                                               error_log('XML-RPC: missing VALUE inside PARAM in received xml');\r
-                                       break;\r
-                               case 'METHODNAME':\r
-                                       $GLOBALS['_xh']['method']=preg_replace('/^[\n\r\t ]+/', '', $GLOBALS['_xh']['ac']);\r
-                                       break;\r
-                               case 'NIL':\r
-                                       if ($GLOBALS['xmlrpc_null_extension'])\r
-                                       {\r
-                                               $GLOBALS['_xh']['vt']='null';\r
-                                               $GLOBALS['_xh']['value']=null;\r
-                                               $GLOBALS['_xh']['lv']=3;\r
-                                               break;\r
-                                       }\r
-                                       // drop through intentionally if nil extension not enabled\r
-                               case 'PARAMS':\r
-                               case 'FAULT':\r
-                               case 'METHODCALL':\r
-                               case 'METHORESPONSE':\r
-                                       break;\r
-                               default:\r
-                                       // End of INVALID ELEMENT!\r
-                                       // shall we add an assert here for unreachable code???\r
-                                       break;\r
-                       }\r
-               }\r
-       }\r
-\r
-       /// Used in decoding xmlrpc requests/responses without rebuilding xmlrpc values\r
-       function xmlrpc_ee_fast($parser, $name)\r
-       {\r
-               xmlrpc_ee($parser, $name, false);\r
-       }\r
-\r
-       /// xml parser handler function for character data\r
-       function xmlrpc_cd($parser, $data)\r
-       {\r
-               // skip processing if xml fault already detected\r
-               if ($GLOBALS['_xh']['isf'] < 2)\r
-               {\r
-                       // "lookforvalue==3" means that we've found an entire value\r
-                       // and should discard any further character data\r
-                       if($GLOBALS['_xh']['lv']!=3)\r
-                       {\r
-                               // G. Giunta 2006-08-23: useless change of 'lv' from 1 to 2\r
-                               //if($GLOBALS['_xh']['lv']==1)\r
-                               //{\r
-                                       // if we've found text and we're just in a <value> then\r
-                                       // say we've found a value\r
-                                       //$GLOBALS['_xh']['lv']=2;\r
-                               //}\r
-                               // we always initialize the accumulator before starting parsing, anyway...\r
-                               //if(!@isset($GLOBALS['_xh']['ac']))\r
-                               //{\r
-                               //      $GLOBALS['_xh']['ac'] = '';\r
-                               //}\r
-                               $GLOBALS['_xh']['ac'].=$data;\r
-                       }\r
-               }\r
-       }\r
-\r
-       /// xml parser handler function for 'other stuff', ie. not char data or\r
-       /// element start/end tag. In fact it only gets called on unknown entities...\r
-       function xmlrpc_dh($parser, $data)\r
-       {\r
-               // skip processing if xml fault already detected\r
-               if ($GLOBALS['_xh']['isf'] < 2)\r
-               {\r
-                       if(i18n::substr($data, 0, 1) == '&' && i18n::substr($data, -1, 1) == ';')\r
-                       {\r
-                               // G. Giunta 2006-08-25: useless change of 'lv' from 1 to 2\r
-                               //if($GLOBALS['_xh']['lv']==1)\r
-                               //{\r
-                               //      $GLOBALS['_xh']['lv']=2;\r
-                               //}\r
-                               $GLOBALS['_xh']['ac'].=$data;\r
-                       }\r
-               }\r
-               return true;\r
-       }\r
-\r
-       class xmlrpc_client\r
-       {\r
-               var $path;\r
-               var $server;\r
-               var $port=0;\r
-               var $method='http';\r
-               var $errno;\r
-               var $errstr;\r
-               var $debug=0;\r
-               var $username='';\r
-               var $password='';\r
-               var $authtype=1;\r
-               var $cert='';\r
-               var $certpass='';\r
-               var $cacert='';\r
-               var $cacertdir='';\r
-               var $key='';\r
-               var $keypass='';\r
-               var $verifypeer=true;\r
-               var $verifyhost=1;\r
-               var $no_multicall=false;\r
-               var $proxy='';\r
-               var $proxyport=0;\r
-               var $proxy_user='';\r
-               var $proxy_pass='';\r
-               var $proxy_authtype=1;\r
-               var $cookies=array();\r
-               /**\r
-               * List of http compression methods accepted by the client for responses.\r
-               * NB: PHP supports deflate, gzip compressions out of the box if compiled w. zlib\r
-               *\r
-               * NNB: you can set it to any non-empty array for HTTP11 and HTTPS, since\r
-               * in those cases it will be up to CURL to decide the compression methods\r
-               * it supports. You might check for the presence of 'zlib' in the output of\r
-               * curl_version() to determine wheter compression is supported or not\r
-               */\r
-               var $accepted_compression = array();\r
-               /**\r
-               * Name of compression scheme to be used for sending requests.\r
-               * Either null, gzip or deflate\r
-               */\r
-               var $request_compression = '';\r
-               /**\r
-               * CURL handle: used for keep-alive connections (PHP 4.3.8 up, see:\r
-               * http://curl.haxx.se/docs/faq.html#7.3)\r
-               */\r
-               var $xmlrpc_curl_handle = null;\r
-               /// Wheter to use persistent connections for http 1.1 and https\r
-               var $keepalive = false;\r
-               /// Charset encodings that can be decoded without problems by the client\r
-               var $accepted_charset_encodings = array();\r
-               /// Charset encoding to be used in serializing request. NULL = use ASCII\r
-               var $request_charset_encoding = '';\r
-               /**\r
-               * Decides the content of xmlrpcresp objects returned by calls to send()\r
-               * valid strings are 'xmlrpcvals', 'phpvals' or 'xml'\r
-               */\r
-               var $return_type = 'xmlrpcvals';\r
-\r
-               /**\r
-               * @param string $path either the complete server URL or the PATH part of the xmlrc server URL, e.g. /xmlrpc/server.php\r
-               * @param string $server the server name / ip address\r
-               * @param integer $port the port the server is listening on, defaults to 80 or 443 depending on protocol used\r
-               * @param string $method the http protocol variant: defaults to 'http', 'https' and 'http11' can be used if CURL is installed\r
-               */\r
-               function xmlrpc_client($path, $server='', $port='', $method='')\r
-               {\r
-                       // allow user to specify all params in $path\r
-                       if($server == '' and $port == '' and $method == '')\r
-                       {\r
-                               $parts = parse_url($path);\r
-                               $server = $parts['host'];\r
-                               $path = $parts['path'];\r
-                               if(isset($parts['query']))\r
-                               {\r
-                                       $path .= '?'.$parts['query'];\r
-                               }\r
-                               if(isset($parts['fragment']))\r
-                               {\r
-                                       $path .= '#'.$parts['fragment'];\r
-                               }\r
-                               if(isset($parts['port']))\r
-                               {\r
-                                       $port = $parts['port'];\r
-                               }\r
-                               if(isset($parts['scheme']))\r
-                               {\r
-                                       $method = $parts['scheme'];\r
-                               }\r
-                               if(isset($parts['user']))\r
-                               {\r
-                                       $this->username = $parts['user'];\r
-                               }\r
-                               if(isset($parts['pass']))\r
-                               {\r
-                                       $this->password = $parts['pass'];\r
-                               }\r
-                       }\r
-                       if($path == '' || $path[0] != '/')\r
-                       {\r
-                               $this->path='/'.$path;\r
-                       }\r
-                       else\r
-                       {\r
-                               $this->path=$path;\r
-                       }\r
-                       $this->server=$server;\r
-                       if($port != '')\r
-                       {\r
-                               $this->port=$port;\r
-                       }\r
-                       if($method != '')\r
-                       {\r
-                               $this->method=$method;\r
-                       }\r
-\r
-                       // if ZLIB is enabled, let the client by default accept compressed responses\r
-                       if(function_exists('gzinflate') || (\r
-                               function_exists('curl_init') && (($info = curl_version()) &&\r
-                               ((is_string($info) && i18n::strpos($info, 'zlib') !== null) || isset($info['libz_version'])))\r
-                       ))\r
-                       {\r
-                               $this->accepted_compression = array('gzip', 'deflate');\r
-                       }\r
-\r
-                       // keepalives: enabled by default ONLY for PHP >= 4.3.8\r
-                       // (see http://curl.haxx.se/docs/faq.html#7.3)\r
-                       if(version_compare(phpversion(), '4.3.8') >= 0)\r
-                       {\r
-                               $this->keepalive = true;\r
-                       }\r
-\r
-                       // by default the xml parser can support these 3 charset encodings\r
-                       $this->accepted_charset_encodings = array('UTF-8', 'ISO-8859-1', 'US-ASCII');\r
-               }\r
-\r
-               /**\r
-               * Enables/disables the echoing to screen of the xmlrpc responses received\r
-               * @param integer $debug values 0, 1 and 2 are supported (2 = echo sent msg too, before received response)\r
-               * @access public\r
-               */\r
-               function setDebug($in)\r
-               {\r
-                       $this->debug=$in;\r
-               }\r
-\r
-               /**\r
-               * Add some http BASIC AUTH credentials, used by the client to authenticate\r
-               * @param string $u username\r
-               * @param string $p password\r
-               * @param integer $t auth type. See curl_setopt man page for supported auth types. Defaults to CURLAUTH_BASIC (basic auth)\r
-               * @access public\r
-               */\r
-               function setCredentials($u, $p, $t=1)\r
-               {\r
-                       $this->username=$u;\r
-                       $this->password=$p;\r
-                       $this->authtype=$t;\r
-               }\r
-\r
-               /**\r
-               * Add a client-side https certificate\r
-               * @param string $cert\r
-               * @param string $certpass\r
-               * @access public\r
-               */\r
-               function setCertificate($cert, $certpass)\r
-               {\r
-                       $this->cert = $cert;\r
-                       $this->certpass = $certpass;\r
-               }\r
-\r
-               /**\r
-               * Add a CA certificate to verify server with (see man page about\r
-               * CURLOPT_CAINFO for more details\r
-               * @param string $cacert certificate file name (or dir holding certificates)\r
-               * @param bool $is_dir set to true to indicate cacert is a dir. defaults to false\r
-               * @access public\r
-               */\r
-               function setCaCertificate($cacert, $is_dir=false)\r
-               {\r
-                       if ($is_dir)\r
-                       {\r
-                               $this->cacert = $cacert;\r
-                       }\r
-                       else\r
-                       {\r
-                               $this->cacertdir = $cacert;\r
-                       }\r
-               }\r
-\r
-               /**\r
-               * Set attributes for SSL communication: private SSL key\r
-               * @param string $key The name of a file containing a private SSL key\r
-               * @param string $keypass The secret password needed to use the private SSL key\r
-               * @access public\r
-               * NB: does not work in older php/curl installs\r
-               * Thanks to Daniel Convissor\r
-               */\r
-               function setKey($key, $keypass)\r
-               {\r
-                       $this->key = $key;\r
-                       $this->keypass = $keypass;\r
-               }\r
-\r
-               /**\r
-               * Set attributes for SSL communication: verify server certificate\r
-               * @param bool $i enable/disable verification of peer certificate\r
-               * @access public\r
-               */\r
-               function setSSLVerifyPeer($i)\r
-               {\r
-                       $this->verifypeer = $i;\r
-               }\r
-\r
-               /**\r
-               * Set attributes for SSL communication: verify match of server cert w. hostname\r
-               * @param int $i\r
-               * @access public\r
-               */\r
-               function setSSLVerifyHost($i)\r
-               {\r
-                       $this->verifyhost = $i;\r
-               }\r
-\r
-               /**\r
-               * Set proxy info\r
-               * @param string $proxyhost\r
-               * @param string $proxyport Defaults to 8080 for HTTP and 443 for HTTPS\r
-               * @param string $proxyusername Leave blank if proxy has public access\r
-               * @param string $proxypassword Leave blank if proxy has public access\r
-               * @param int $proxyauthtype set to constant CURLAUTH_NTLM to use NTLM auth with proxy\r
-               * @access public\r
-               */\r
-               function setProxy($proxyhost, $proxyport, $proxyusername = '', $proxypassword = '', $proxyauthtype = 1)\r
-               {\r
-                       $this->proxy = $proxyhost;\r
-                       $this->proxyport = $proxyport;\r
-                       $this->proxy_user = $proxyusername;\r
-                       $this->proxy_pass = $proxypassword;\r
-                       $this->proxy_authtype = $proxyauthtype;\r
-               }\r
-\r
-               /**\r
-               * Enables/disables reception of compressed xmlrpc responses.\r
-               * Note that enabling reception of compressed responses merely adds some standard\r
-               * http headers to xmlrpc requests. It is up to the xmlrpc server to return\r
-               * compressed responses when receiving such requests.\r
-               * @param string $compmethod either 'gzip', 'deflate', 'any' or ''\r
-               * @access public\r
-               */\r
-               function setAcceptedCompression($compmethod)\r
-               {\r
-                       if ($compmethod == 'any')\r
-                               $this->accepted_compression = array('gzip', 'deflate');\r
-                       else\r
-                               $this->accepted_compression = array($compmethod);\r
-               }\r
-\r
-               /**\r
-               * Enables/disables http compression of xmlrpc request.\r
-               * Take care when sending compressed requests: servers might not support them\r
-               * (and automatic fallback to uncompressed requests is not yet implemented)\r
-               * @param string $compmethod either 'gzip', 'deflate' or ''\r
-               * @access public\r
-               */\r
-               function setRequestCompression($compmethod)\r
-               {\r
-                       $this->request_compression = $compmethod;\r
-               }\r
-\r
-               /**\r
-               * Adds a cookie to list of cookies that will be sent to server.\r
-               * NB: setting any param but name and value will turn the cookie into a 'version 1' cookie:\r
-               * do not do it unless you know what you are doing\r
-               * @param string $name\r
-               * @param string $value\r
-               * @param string $path\r
-               * @param string $domain\r
-               * @param int $port\r
-               * @access public\r
-               *\r
-               * @todo check correctness of urlencoding cookie value (copied from php way of doing it...)\r
-               */\r
-               function setCookie($name, $value='', $path='', $domain='', $port=null)\r
-               {\r
-                       $this->cookies[$name]['value'] = urlencode($value);\r
-                       if ($path || $domain || $port)\r
-                       {\r
-                               $this->cookies[$name]['path'] = $path;\r
-                               $this->cookies[$name]['domain'] = $domain;\r
-                               $this->cookies[$name]['port'] = $port;\r
-                               $this->cookies[$name]['version'] = 1;\r
-                       }\r
-                       else\r
-                       {\r
-                               $this->cookies[$name]['version'] = 0;\r
-                       }\r
-               }\r
-\r
-               /**\r
-               * Send an xmlrpc request\r
-               * @param mixed $msg The message object, or an array of messages for using multicall, or the complete xml representation of a request\r
-               * @param integer $timeout Connection timeout, in seconds, If unspecified, a platform specific timeout will apply\r
-               * @param string $method if left unspecified, the http protocol chosen during creation of the object will be used\r
-               * @return xmlrpcresp\r
-               * @access public\r
-               */\r
-               function& send($msg, $timeout=0, $method='')\r
-               {\r
-                       // if user deos not specify http protocol, use native method of this client\r
-                       // (i.e. method set during call to constructor)\r
-                       if($method == '')\r
-                       {\r
-                               $method = $this->method;\r
-                       }\r
-\r
-                       if(is_array($msg))\r
-                       {\r
-                               // $msg is an array of xmlrpcmsg's\r
-                               $r = $this->multicall($msg, $timeout, $method);\r
-                               return $r;\r
-                       }\r
-                       elseif(is_string($msg))\r
-                       {\r
-                               $n = new xmlrpcmsg('');\r
-                               $n->payload = $msg;\r
-                               $msg = $n;\r
-                       }\r
-\r
-                       // where msg is an xmlrpcmsg\r
-                       $msg->debug=$this->debug;\r
-\r
-                       if($method == 'https')\r
-                       {\r
-                               $r =& $this->sendPayloadHTTPS(\r
-                                       $msg,\r
-                                       $this->server,\r
-                                       $this->port,\r
-                                       $timeout,\r
-                                       $this->username,\r
-                                       $this->password,\r
-                                       $this->authtype,\r
-                                       $this->cert,\r
-                                       $this->certpass,\r
-                                       $this->cacert,\r
-                                       $this->cacertdir,\r
-                                       $this->proxy,\r
-                                       $this->proxyport,\r
-                                       $this->proxy_user,\r
-                                       $this->proxy_pass,\r
-                                       $this->proxy_authtype,\r
-                                       $this->keepalive,\r
-                                       $this->key,\r
-                                       $this->keypass\r
-                               );\r
-                       }\r
-                       elseif($method == 'http11')\r
-                       {\r
-                               $r =& $this->sendPayloadCURL(\r
-                                       $msg,\r
-                                       $this->server,\r
-                                       $this->port,\r
-                                       $timeout,\r
-                                       $this->username,\r
-                                       $this->password,\r
-                                       $this->authtype,\r
-                                       null,\r
-                                       null,\r
-                                       null,\r
-                                       null,\r
-                                       $this->proxy,\r
-                                       $this->proxyport,\r
-                                       $this->proxy_user,\r
-                                       $this->proxy_pass,\r
-                                       $this->proxy_authtype,\r
-                                       'http',\r
-                                       $this->keepalive\r
-                               );\r
-                       }\r
-                       else\r
-                       {\r
-                               $r =& $this->sendPayloadHTTP10(\r
-                                       $msg,\r
-                                       $this->server,\r
-                                       $this->port,\r
-                                       $timeout,\r
-                                       $this->username,\r
-                                       $this->password,\r
-                                       $this->authtype,\r
-                                       $this->proxy,\r
-                                       $this->proxyport,\r
-                                       $this->proxy_user,\r
-                                       $this->proxy_pass,\r
-                                       $this->proxy_authtype\r
-                               );\r
-                       }\r
-\r
-                       return $r;\r
-               }\r
-\r
-               /**\r
-               * @access private\r
-               */\r
-               function &sendPayloadHTTP10($msg, $server, $port, $timeout=0,\r
-                       $username='', $password='', $authtype=1, $proxyhost='',\r
-                       $proxyport=0, $proxyusername='', $proxypassword='', $proxyauthtype=1)\r
-               {\r
-                       if($port==0)\r
-                       {\r
-                               $port=80;\r
-                       }\r
-\r
-                       // Only create the payload if it was not created previously\r
-                       if(empty($msg->payload))\r
-                       {\r
-                               $msg->createPayload($this->request_charset_encoding);\r
-                       }\r
-\r
-                       $payload = $msg->payload;\r
-                       // Deflate request body and set appropriate request headers\r
-                       if(function_exists('gzdeflate') && ($this->request_compression == 'gzip' || $this->request_compression == 'deflate'))\r
-                       {\r
-                               if($this->request_compression == 'gzip')\r
-                               {\r
-                                       $a = @gzencode($payload);\r
-                                       if($a)\r
-                                       {\r
-                                               $payload = $a;\r
-                                               $encoding_hdr = "Content-Encoding: gzip\r\n";\r
-                                       }\r
-                               }\r
-                               else\r
-                               {\r
-                                       $a = @gzcompress($payload);\r
-                                       if($a)\r
-                                       {\r
-                                               $payload = $a;\r
-                                               $encoding_hdr = "Content-Encoding: deflate\r\n";\r
-                                       }\r
-                               }\r
-                       }\r
-                       else\r
-                       {\r
-                               $encoding_hdr = '';\r
-                       }\r
-\r
-                       // thanks to Grant Rauscher <grant7@firstworld.net> for this\r
-                       $credentials='';\r
-                       if($username!='')\r
-                       {\r
-                               $credentials='Authorization: Basic ' . base64_encode($username . ':' . $password) . "\r\n";\r
-                               if ($authtype != 1)\r
-                               {\r
-                                       error_log('XML-RPC: xmlrpc_client::send: warning. Only Basic auth is supported with HTTP 1.0');\r
-                               }\r
-                       }\r
-\r
-                       $accepted_encoding = '';\r
-                       if(is_array($this->accepted_compression) && count($this->accepted_compression))\r
-                       {\r
-                               $accepted_encoding = 'Accept-Encoding: ' . implode(', ', $this->accepted_compression) . "\r\n";\r
-                       }\r
-\r
-                       $proxy_credentials = '';\r
-                       if($proxyhost)\r
-                       {\r
-                               if($proxyport == 0)\r
-                               {\r
-                                       $proxyport = 8080;\r
-                               }\r
-                               $connectserver = $proxyhost;\r
-                               $connectport = $proxyport;\r
-                               $uri = 'http://'.$server.':'.$port.$this->path;\r
-                               if($proxyusername != '')\r
-                               {\r
-                                       if ($proxyauthtype != 1)\r
-                                       {\r
-                                               error_log('XML-RPC: xmlrpc_client::send: warning. Only Basic auth to proxy is supported with HTTP 1.0');\r
-                                       }\r
-                                       $proxy_credentials = 'Proxy-Authorization: Basic ' . base64_encode($proxyusername.':'.$proxypassword) . "\r\n";\r
-                               }\r
-                       }\r
-                       else\r
-                       {\r
-                               $connectserver = $server;\r
-                               $connectport = $port;\r
-                               $uri = $this->path;\r
-                       }\r
-\r
-                       // Cookie generation, as per rfc2965 (version 1 cookies) or\r
-                       // netscape's rules (version 0 cookies)\r
-                       $cookieheader='';\r
-                       foreach ($this->cookies as $name => $cookie)\r
-                       {\r
-                               if ($cookie['version'])\r
-                               {\r
-                                       $cookieheader .= 'Cookie: $Version="' . $cookie['version'] . '"; ';\r
-                                       $cookieheader .= $name . '="' . $cookie['value'] . '";';\r
-                                       if ($cookie['path'])\r
-                                               $cookieheader .= ' $Path="' . $cookie['path'] . '";';\r
-                                       if ($cookie['domain'])\r
-                                               $cookieheader .= ' $Domain="' . $cookie['domain'] . '";';\r
-                                       if ($cookie['port'])\r
-                                               $cookieheader .= ' $Port="' . $cookie['domain'] . '";';\r
-                                       $cookieheader = i18n::substr($cookieheader, 0, -1) . "\r\n";\r
-                               }\r
-                               else\r
-                               {\r
-                                       $cookieheader .= 'Cookie: ' . $name . '=' . $cookie['value'] . "\r\n";\r
-                               }\r
-                       }\r
-\r
-                       $op= 'POST ' . $uri. " HTTP/1.0\r\n" .\r
-                               'User-Agent: ' . $GLOBALS['xmlrpcName'] . ' ' . $GLOBALS['xmlrpcVersion'] . "\r\n" .\r
-                               'Host: '. $server . ':' . $port . "\r\n" .\r
-                               $credentials .\r
-                               $proxy_credentials .\r
-                               $accepted_encoding .\r
-                               $encoding_hdr .\r
-                               'Accept-Charset: ' . implode(',', $this->accepted_charset_encodings) . "\r\n" .\r
-                               $cookieheader .\r
-                               'Content-Type: ' . $msg->content_type . "\r\nContent-Length: " .\r
-                               i18n::strlen($payload) . "\r\n\r\n" .\r
-                               $payload;\r
-\r
-                       if($this->debug > 1)\r
-                       {\r
-                               print "<PRE>\n---SENDING---\n" . Entity::hen($op) . "\n---END---\n</PRE>";\r
-                               // let the client see this now in case http times out...\r
-                               flush();\r
-                       }\r
-\r
-                       if($timeout>0)\r
-                       {\r
-                               $fp=@fsockopen($connectserver, $connectport, $this->errno, $this->errstr, $timeout);\r
-                       }\r
-                       else\r
-                       {\r
-                               $fp=@fsockopen($connectserver, $connectport, $this->errno, $this->errstr);\r
-                       }\r
-                       if($fp)\r
-                       {\r
-                               if($timeout>0 && function_exists('stream_set_timeout'))\r
-                               {\r
-                                       stream_set_timeout($fp, $timeout);\r
-                               }\r
-                       }\r
-                       else\r
-                       {\r
-                               $this->errstr='Connect error: '.$this->errstr;\r
-                               $r = new xmlrpcresp(0, $GLOBALS['xmlrpcerr']['http_error'], $this->errstr . ' (' . $this->errno . ')');\r
-                               return $r;\r
-                       }\r
-\r
-                       if(!fputs($fp, $op, i18n::strlen($op)))\r
-                       {\r
-                               $this->errstr='Write error';\r
-                               $r = new xmlrpcresp(0, $GLOBALS['xmlrpcerr']['http_error'], $this->errstr);\r
-                               return $r;\r
-                       }\r
-                       else\r
-                       {\r
-                               // reset errno and errstr on succesful socket connection\r
-                               $this->errstr = '';\r
-                       }\r
-                       // G. Giunta 2005/10/24: close socket before parsing.\r
-                       // should yeld slightly better execution times, and make easier recursive calls (e.g. to follow http redirects)\r
-                       $ipd='';\r
-                       while($data=fread($fp, 32768))\r
-                       {\r
-                               // shall we check for $data === FALSE?\r
-                               // as per the manual, it signals an error\r
-                               $ipd.=$data;\r
-                       }\r
-                       fclose($fp);\r
-                       $r =& $msg->parseResponse($ipd, false, $this->return_type);\r
-                       return $r;\r
-\r
-               }\r
-\r
-               /**\r
-               * @access private\r
-               */\r
-               function &sendPayloadHTTPS($msg, $server, $port, $timeout=0, $username='',\r
-                       $password='', $authtype=1, $cert='',$certpass='', $cacert='', $cacertdir='',\r
-                       $proxyhost='', $proxyport=0, $proxyusername='', $proxypassword='', $proxyauthtype=1,\r
-                       $keepalive=false, $key='', $keypass='')\r
-               {\r
-                       $r =& $this->sendPayloadCURL($msg, $server, $port, $timeout, $username,\r
-                               $password, $authtype, $cert, $certpass, $cacert, $cacertdir, $proxyhost, $proxyport,\r
-                               $proxyusername, $proxypassword, $proxyauthtype, 'https', $keepalive, $key, $keypass);\r
-                       return $r;\r
-               }\r
-\r
-               /**\r
-               * Contributed by Justin Miller <justin@voxel.net>\r
-               * Requires curl to be built into PHP\r
-               * NB: CURL versions before 7.11.10 cannot use proxy to talk to https servers!\r
-               * @access private\r
-               */\r
-               function &sendPayloadCURL($msg, $server, $port, $timeout=0, $username='',\r
-                       $password='', $authtype=1, $cert='', $certpass='', $cacert='', $cacertdir='',\r
-                       $proxyhost='', $proxyport=0, $proxyusername='', $proxypassword='', $proxyauthtype=1, $method='https',\r
-                       $keepalive=false, $key='', $keypass='')\r
-               {\r
-                       if(!function_exists('curl_init'))\r
-                       {\r
-                               $this->errstr='CURL unavailable on this install';\r
-                               $r = new xmlrpcresp(0, $GLOBALS['xmlrpcerr']['no_curl'], $GLOBALS['xmlrpcstr']['no_curl']);\r
-                               return $r;\r
-                       }\r
-                       if($method == 'https')\r
-                       {\r
-                               if(($info = curl_version()) &&\r
-                                       ((is_string($info) && i18n::strpos($info, 'OpenSSL') === null) || (is_array($info) && !isset($info['ssl_version']))))\r
-                               {\r
-                                       $this->errstr='SSL unavailable on this install';\r
-                                       $r = new xmlrpcresp(0, $GLOBALS['xmlrpcerr']['no_ssl'], $GLOBALS['xmlrpcstr']['no_ssl']);\r
-                                       return $r;\r
-                               }\r
-                       }\r
-\r
-                       if($port == 0)\r
-                       {\r
-                               if($method == 'http')\r
-                               {\r
-                                       $port = 80;\r
-                               }\r
-                               else\r
-                               {\r
-                                       $port = 443;\r
-                               }\r
-                       }\r
-\r
-                       // Only create the payload if it was not created previously\r
-                       if(empty($msg->payload))\r
-                       {\r
-                               $msg->createPayload($this->request_charset_encoding);\r
-                       }\r
-\r
-                       // Deflate request body and set appropriate request headers\r
-                       $payload = $msg->payload;\r
-                       if(function_exists('gzdeflate') && ($this->request_compression == 'gzip' || $this->request_compression == 'deflate'))\r
-                       {\r
-                               if($this->request_compression == 'gzip')\r
-                               {\r
-                                       $a = @gzencode($payload);\r
-                                       if($a)\r
-                                       {\r
-                                               $payload = $a;\r
-                                               $encoding_hdr = 'Content-Encoding: gzip';\r
-                                       }\r
-                               }\r
-                               else\r
-                               {\r
-                                       $a = @gzcompress($payload);\r
-                                       if($a)\r
-                                       {\r
-                                               $payload = $a;\r
-                                               $encoding_hdr = 'Content-Encoding: deflate';\r
-                                       }\r
-                               }\r
-                       }\r
-                       else\r
-                       {\r
-                               $encoding_hdr = '';\r
-                       }\r
-\r
-                       if($this->debug > 1)\r
-                       {\r
-                               print "<PRE>\n---SENDING---\n" . Entity::hen($payload) . "\n---END---\n</PRE>";\r
-                               // let the client see this now in case http times out...\r
-                               flush();\r
-                       }\r
-\r
-                       if(!$keepalive || !$this->xmlrpc_curl_handle)\r
-                       {\r
-                               $curl = curl_init($method . '://' . $server . ':' . $port . $this->path);\r
-                               if($keepalive)\r
-                               {\r
-                                       $this->xmlrpc_curl_handle = $curl;\r
-                               }\r
-                       }\r
-                       else\r
-                       {\r
-                               $curl = $this->xmlrpc_curl_handle;\r
-                       }\r
-\r
-                       // results into variable\r
-                       curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);\r
-\r
-                       if($this->debug)\r
-                       {\r
-                               curl_setopt($curl, CURLOPT_VERBOSE, 1);\r
-                       }\r
-                       curl_setopt($curl, CURLOPT_USERAGENT, $GLOBALS['xmlrpcName'].' '.$GLOBALS['xmlrpcVersion']);\r
-                       // required for XMLRPC: post the data\r
-                       curl_setopt($curl, CURLOPT_POST, 1);\r
-                       // the data\r
-                       curl_setopt($curl, CURLOPT_POSTFIELDS, $payload);\r
-\r
-                       // return the header too\r
-                       curl_setopt($curl, CURLOPT_HEADER, 1);\r
-\r
-                       // will only work with PHP >= 5.0\r
-                       // NB: if we set an empty string, CURL will add http header indicating\r
-                       // ALL methods it is supporting. This is possibly a better option than\r
-                       // letting the user tell what curl can / cannot do...\r
-                       if(is_array($this->accepted_compression) && count($this->accepted_compression))\r
-                       {\r
-                               //curl_setopt($curl, CURLOPT_ENCODING, implode(',', $this->accepted_compression));\r
-                               // empty string means 'any supported by CURL' (shall we catch errors in case CURLOPT_SSLKEY undefined ?)\r
-                               if (count($this->accepted_compression) == 1)\r
-                               {\r
-                                       curl_setopt($curl, CURLOPT_ENCODING, $this->accepted_compression[0]);\r
-                               }\r
-                               else\r
-                                       curl_setopt($curl, CURLOPT_ENCODING, '');\r
-                       }\r
-                       // extra headers\r
-                       $headers = array('Content-Type: ' . $msg->content_type , 'Accept-Charset: ' . implode(',', $this->accepted_charset_encodings));\r
-                       // if no keepalive is wanted, let the server know it in advance\r
-                       if(!$keepalive)\r
-                       {\r
-                               $headers[] = 'Connection: close';\r
-                       }\r
-                       // request compression header\r
-                       if($encoding_hdr)\r
-                       {\r
-                               $headers[] = $encoding_hdr;\r
-                       }\r
-\r
-                       curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);\r
-                       // timeout is borked\r
-                       if($timeout)\r
-                       {\r
-                               curl_setopt($curl, CURLOPT_TIMEOUT, $timeout == 1 ? 1 : $timeout - 1);\r
-                       }\r
-\r
-                       if($username && $password)\r
-                       {\r
-                               curl_setopt($curl, CURLOPT_USERPWD, $username.':'.$password);\r
-                               if (defined('CURLOPT_HTTPAUTH'))\r
-                               {\r
-                                       curl_setopt($curl, CURLOPT_HTTPAUTH, $authtype);\r
-                               }\r
-                               else if ($authtype != 1)\r
-                               {\r
-                                       error_log('XML-RPC: xmlrpc_client::send: warning. Only Basic auth is supported by the current PHP/curl install');\r
-                               }\r
-                       }\r
-\r
-                       if($method == 'https')\r
-                       {\r
-                               // set cert file\r
-                               if($cert)\r
-                               {\r
-                                       curl_setopt($curl, CURLOPT_SSLCERT, $cert);\r
-                               }\r
-                               // set cert password\r
-                               if($certpass)\r
-                               {\r
-                                       curl_setopt($curl, CURLOPT_SSLCERTPASSWD, $certpass);\r
-                               }\r
-                               // whether to verify remote host's cert\r
-                               curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, $this->verifypeer);\r
-                               // set ca certificates file/dir\r
-                               if($cacert)\r
-                               {\r
-                                       curl_setopt($curl, CURLOPT_CAINFO, $cacert);\r
-                               }\r
-                               if($cacertdir)\r
-                               {\r
-                                       curl_setopt($curl, CURLOPT_CAPATH, $cacertdir);\r
-                               }\r
-                               // set key file (shall we catch errors in case CURLOPT_SSLKEY undefined ?)\r
-                               if($key)\r
-                               {\r
-                                       curl_setopt($curl, CURLOPT_SSLKEY, $key);\r
-                               }\r
-                               // set key password (shall we catch errors in case CURLOPT_SSLKEY undefined ?)\r
-                               if($keypass)\r
-                               {\r
-                                       curl_setopt($curl, CURLOPT_SSLKEYPASSWD, $keypass);\r
-                               }\r
-                               // whether to verify cert's common name (CN); 0 for no, 1 to verify that it exists, and 2 to verify that it matches the hostname used\r
-                               curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, $this->verifyhost);\r
-                       }\r
-\r
-                       // proxy info\r
-                       if($proxyhost)\r
-                       {\r
-                               if($proxyport == 0)\r
-                               {\r
-                                       $proxyport = 8080; // NB: even for HTTPS, local connection is on port 8080\r
-                               }\r
-                               curl_setopt($curl, CURLOPT_PROXY,$proxyhost.':'.$proxyport);\r
-                               //curl_setopt($curl, CURLOPT_PROXYPORT,$proxyport);\r
-                               if($proxyusername)\r
-                               {\r
-                                       curl_setopt($curl, CURLOPT_PROXYUSERPWD, $proxyusername.':'.$proxypassword);\r
-                                       if (defined('CURLOPT_PROXYAUTH'))\r
-                                       {\r
-                                               curl_setopt($curl, CURLOPT_PROXYAUTH, $proxyauthtype);\r
-                                       }\r
-                                       else if ($proxyauthtype != 1)\r
-                                       {\r
-                                               error_log('XML-RPC: xmlrpc_client::send: warning. Only Basic auth to proxy is supported by the current PHP/curl install');\r
-                                       }\r
-                               }\r
-                       }\r
-\r
-                       // NB: should we build cookie http headers by hand rather than let CURL do it?\r
-                       // the following code does not honour 'expires', 'path' and 'domain' cookie attributes\r
-                       // set to clint obj the the user...\r
-                       if (count($this->cookies))\r
-                       {\r
-                               $cookieheader = '';\r
-                               foreach ($this->cookies as $name => $cookie)\r
-                               {\r
-                                       $cookieheader .= $name . '=' . $cookie['value'] . ', ';\r
-                               }\r
-                               curl_setopt($curl, CURLOPT_COOKIE, i18n::substr($cookieheader, 0, -2));\r
-                       }\r
-\r
-                       $result = curl_exec($curl);\r
-\r
-                       if(!$result)\r
-                       {\r
-                               $this->errstr='no response';\r
-                               $resp = new xmlrpcresp(0, $GLOBALS['xmlrpcerr']['curl_fail'], $GLOBALS['xmlrpcstr']['curl_fail']. ': '. curl_error($curl));\r
-                               if(!$keepalive)\r
-                               {\r
-                                       curl_close($curl);\r
-                               }\r
-                       }\r
-                       else\r
-                       {\r
-                               if(!$keepalive)\r
-                               {\r
-                                       curl_close($curl);\r
-                               }\r
-                               $resp =& $msg->parseResponse($result, true, $this->return_type);\r
-                       }\r
-                       return $resp;\r
-               }\r
-\r
-               /**\r
-               * Send an array of request messages and return an array of responses.\r
-               * Unless $this->no_multicall has been set to true, it will try first\r
-               * to use one single xmlrpc call to server method system.multicall, and\r
-               * revert to sending many successive calls in case of failure.\r
-               * This failure is also stored in $this->no_multicall for subsequent calls.\r
-               * Unfortunately, there is no server error code universally used to denote\r
-               * the fact that multicall is unsupported, so there is no way to reliably\r
-               * distinguish between that and a temporary failure.\r
-               * If you are sure that server supports multicall and do not want to\r
-               * fallback to using many single calls, set the fourth parameter to FALSE.\r
-               *\r
-               * NB: trying to shoehorn extra functionality into existing syntax has resulted\r
-               * in pretty much convoluted code...\r
-               *\r
-               * @param array $msgs an array of xmlrpcmsg objects\r
-               * @param integer $timeout connection timeout (in seconds)\r
-               * @param string $method the http protocol variant to be used\r
-               * @param boolean fallback When true, upon receiveing an error during multicall, multiple single calls will be attempted\r
-               * @return array\r
-               * @access public\r
-               */\r
-               function multicall($msgs, $timeout=0, $method='', $fallback=true)\r
-               {\r
-                       if ($method == '')\r
-                       {\r
-                               $method = $this->method;\r
-                       }\r
-                       if(!$this->no_multicall)\r
-                       {\r
-                               $results = $this->_try_multicall($msgs, $timeout, $method);\r
-                               if(is_array($results))\r
-                               {\r
-                                       // System.multicall succeeded\r
-                                       return $results;\r
-                               }\r
-                               else\r
-                               {\r
-                                       // either system.multicall is unsupported by server,\r
-                                       // or call failed for some other reason.\r
-                                       if ($fallback)\r
-                                       {\r
-                                               // Don't try it next time...\r
-                                               $this->no_multicall = true;\r
-                                       }\r
-                                       else\r
-                                       {\r
-                                               if (is_a($results, 'xmlrpcresp'))\r
-                                               {\r
-                                                       $result = $results;\r
-                                               }\r
-                                               else\r
-                                               {\r
-                                                       $result = new xmlrpcresp(0, $GLOBALS['xmlrpcerr']['multicall_error'], $GLOBALS['xmlrpcstr']['multicall_error']);\r
-                                               }\r
-                                       }\r
-                               }\r
-                       }\r
-                       else\r
-                       {\r
-                               // override fallback, in case careless user tries to do two\r
-                               // opposite things at the same time\r
-                               $fallback = true;\r
-                       }\r
-\r
-                       $results = array();\r
-                       if ($fallback)\r
-                       {\r
-                               // system.multicall is (probably) unsupported by server:\r
-                               // emulate multicall via multiple requests\r
-                               foreach($msgs as $msg)\r
-                               {\r
-                                       $results[] =& $this->send($msg, $timeout, $method);\r
-                               }\r
-                       }\r
-                       else\r
-                       {\r
-                               // user does NOT want to fallback on many single calls:\r
-                               // since we should always return an array of responses,\r
-                               // return an array with the same error repeated n times\r
-                               foreach($msgs as $msg)\r
-                               {\r
-                                       $results[] = $result;\r
-                               }\r
-                       }\r
-                       return $results;\r
-               }\r
-\r
-               /**\r
-               * Attempt to boxcar $msgs via system.multicall.\r
-               * Returns either an array of xmlrpcreponses, an xmlrpc error response\r
-               * or false (when received response does not respect valid multicall syntax)\r
-               * @access private\r
-               */\r
-               function _try_multicall($msgs, $timeout, $method)\r
-               {\r
-                       // Construct multicall message\r
-                       $calls = array();\r
-                       foreach($msgs as $msg)\r
-                       {\r
-                               $call['methodName'] = new xmlrpcval($msg->method(),'string');\r
-                               $numParams = $msg->getNumParams();\r
-                               $params = array();\r
-                               for($i = 0; $i < $numParams; $i++)\r
-                               {\r
-                                       $params[$i] = $msg->getParam($i);\r
-                               }\r
-                               $call['params'] = new xmlrpcval($params, 'array');\r
-                               $calls[] = new xmlrpcval($call, 'struct');\r
-                       }\r
-                       $multicall = new xmlrpcmsg('system.multicall');\r
-                       $multicall->addParam(new xmlrpcval($calls, 'array'));\r
-\r
-                       // Attempt RPC call\r
-                       $result =& $this->send($multicall, $timeout, $method);\r
-\r
-                       if($result->faultCode() != 0)\r
-                       {\r
-                               // call to system.multicall failed\r
-                               return $result;\r
-                       }\r
-\r
-                       // Unpack responses.\r
-                       $rets = $result->value();\r
-\r
-                       if ($this->return_type == 'xml')\r
-                       {\r
-                                       return $rets;\r
-                       }\r
-                       else if ($this->return_type == 'phpvals')\r
-                       {\r
-                               ///@todo test this code branch...\r
-                               $rets = $result->value();\r
-                               if(!is_array($rets))\r
-                               {\r
-                                       return false;           // bad return type from system.multicall\r
-                               }\r
-                               $numRets = count($rets);\r
-                               if($numRets != count($msgs))\r
-                               {\r
-                                       return false;           // wrong number of return values.\r
-                               }\r
-\r
-                               $response = array();\r
-                               for($i = 0; $i < $numRets; $i++)\r
-                               {\r
-                                       $val = $rets[$i];\r
-                                       if (!is_array($val)) {\r
-                                               return false;\r
-                                       }\r
-                                       switch(count($val))\r
-                                       {\r
-                                               case 1:\r
-                                                       if(!isset($val[0]))\r
-                                                       {\r
-                                                               return false;           // Bad value\r
-                                                       }\r
-                                                       // Normal return value\r
-                                                       $response[$i] = new xmlrpcresp($val[0], 0, '', 'phpvals');\r
-                                                       break;\r
-                                               case 2:\r
-                                                       ///     @todo remove usage of @: it is apparently quite slow\r
-                                                       $code = @$val['faultCode'];\r
-                                                       if(!is_int($code))\r
-                                                       {\r
-                                                               return false;\r
-                                                       }\r
-                                                       $str = @$val['faultString'];\r
-                                                       if(!is_string($str))\r
-                                                       {\r
-                                                               return false;\r
-                                                       }\r
-                                                       $response[$i] = new xmlrpcresp(0, $code, $str);\r
-                                                       break;\r
-                                               default:\r
-                                                       return false;\r
-                                       }\r
-                               }\r
-                               return $response;\r
-                       }\r
-                       else // return type == 'xmlrpcvals'\r
-                       {\r
-                               $rets = $result->value();\r
-                               if($rets->kindOf() != 'array')\r
-                               {\r
-                                       return false;           // bad return type from system.multicall\r
-                               }\r
-                               $numRets = $rets->arraysize();\r
-                               if($numRets != count($msgs))\r
-                               {\r
-                                       return false;           // wrong number of return values.\r
-                               }\r
-\r
-                               $response = array();\r
-                               for($i = 0; $i < $numRets; $i++)\r
-                               {\r
-                                       $val = $rets->arraymem($i);\r
-                                       switch($val->kindOf())\r
-                                       {\r
-                                               case 'array':\r
-                                                       if($val->arraysize() != 1)\r
-                                                       {\r
-                                                               return false;           // Bad value\r
-                                                       }\r
-                                                       // Normal return value\r
-                                                       $response[$i] = new xmlrpcresp($val->arraymem(0));\r
-                                                       break;\r
-                                               case 'struct':\r
-                                                       $code = $val->structmem('faultCode');\r
-                                                       if($code->kindOf() != 'scalar' || $code->scalartyp() != 'int')\r
-                                                       {\r
-                                                               return false;\r
-                                                       }\r
-                                                       $str = $val->structmem('faultString');\r
-                                                       if($str->kindOf() != 'scalar' || $str->scalartyp() != 'string')\r
-                                                       {\r
-                                                               return false;\r
-                                                       }\r
-                                                       $response[$i] = new xmlrpcresp(0, $code->scalarval(), $str->scalarval());\r
-                                                       break;\r
-                                               default:\r
-                                                       return false;\r
-                                       }\r
-                               }\r
-                               return $response;\r
-                       }\r
-               }\r
-       } // end class xmlrpc_client\r
-\r
-       class xmlrpcresp\r
-       {\r
-               var $val = 0;\r
-               var $valtyp;\r
-               var $errno = 0;\r
-               var $errstr = '';\r
-               var $payload;\r
-               var $hdrs = array();\r
-               var $_cookies = array();\r
-               var $content_type = 'text/xml';\r
-               var $raw_data = '';\r
-\r
-               /**\r
-               * @param mixed $val either an xmlrpcval obj, a php value or the xml serialization of an xmlrpcval (a string)\r
-               * @param integer $fcode set it to anything but 0 to create an error response\r
-               * @param string $fstr the error string, in case of an error response\r
-               * @param string $valtyp either 'xmlrpcvals', 'phpvals' or 'xml'\r
-               *\r
-               * @todo add check that $val / $fcode / $fstr is of correct type???\r
-               * NB: as of now we do not do it, since it might be either an xmlrpcval or a plain\r
-               * php val, or a complete xml chunk, depending on usage of xmlrpc_client::send() inside which creator is called...\r
-               */\r
-               function xmlrpcresp($val, $fcode = 0, $fstr = '', $valtyp='')\r
-               {\r
-                       if($fcode != 0)\r
-                       {\r
-                               // error response\r
-                               $this->errno = $fcode;\r
-                               $this->errstr = $fstr;\r
-                               //$this->errstr = Entity::hsc($fstr); // XXX: encoding probably shouldn't be done here; fix later.\r
-                       }\r
-                       else\r
-                       {\r
-                               // successful response\r
-                               $this->val = $val;\r
-                               if ($valtyp == '')\r
-                               {\r
-                                       // user did not declare type of response value: try to guess it\r
-                                       if (is_object($this->val) && is_a($this->val, 'xmlrpcval'))\r
-                                       {\r
-                                               $this->valtyp = 'xmlrpcvals';\r
-                                       }\r
-                                       else if (is_string($this->val))\r
-                                       {\r
-                                               $this->valtyp = 'xml';\r
-\r
-                                       }\r
-                                       else\r
-                                       {\r
-                                               $this->valtyp = 'phpvals';\r
-                                       }\r
-                               }\r
-                               else\r
-                               {\r
-                                       // user declares type of resp value: believe him\r
-                                       $this->valtyp = $valtyp;\r
-                               }\r
-                       }\r
-               }\r
-\r
-               /**\r
-               * Returns the error code of the response.\r
-               * @return integer the error code of this response (0 for not-error responses)\r
-               * @access public\r
-               */\r
-               function faultCode()\r
-               {\r
-                       return $this->errno;\r
-               }\r
-\r
-               /**\r
-               * Returns the error code of the response.\r
-               * @return string the error string of this response ('' for not-error responses)\r
-               * @access public\r
-               */\r
-               function faultString()\r
-               {\r
-                       return $this->errstr;\r
-               }\r
-\r
-               /**\r
-               * Returns the value received by the server.\r
-               * @return mixed the xmlrpcval object returned by the server. Might be an xml string or php value if the response has been created by specially configured xmlrpc_client objects\r
-               * @access public\r
-               */\r
-               function value()\r
-               {\r
-                       return $this->val;\r
-               }\r
-\r
-               /**\r
-               * Returns an array with the cookies received from the server.\r
-               * Array has the form: $cookiename => array ('value' => $val, $attr1 => $val1, $attr2 = $val2, ...)\r
-               * with attributes being e.g. 'expires', 'path', domain'.\r
-               * NB: cookies sent as 'expired' by the server (i.e. with an expiry date in the past)\r
-               * are still present in the array. It is up to the user-defined code to decide\r
-               * how to use the received cookies, and wheter they have to be sent back with the next\r
-               * request to the server (using xmlrpc_client::setCookie) or not\r
-               * @return array array of cookies received from the server\r
-               * @access public\r
-               */\r
-               function cookies()\r
-               {\r
-                       return $this->_cookies;\r
-               }\r
-\r
-               /**\r
-               * Returns xml representation of the response. XML prologue not included\r
-               * @param string $charset_encoding the charset to be used for serialization. if null, US-ASCII is assumed\r
-               * @return string the xml representation of the response\r
-               * @access public\r
-               */\r
-               function serialize($charset_encoding='')\r
-               {\r
-                       if ($charset_encoding != '')\r
-                               $this->content_type = 'text/xml; charset=' . $charset_encoding;\r
-                       else\r
-                               $this->content_type = 'text/xml';\r
-                       $result = "<methodResponse>\n";\r
-                       if($this->errno)\r
-                       {\r
-                               // G. Giunta 2005/2/13: let non-ASCII response messages be tolerated by clients\r
-                               // by xml-encoding non ascii chars\r
-                               $result .= "<fault>\n" .\r
-"<value>\n<struct><member><name>faultCode</name>\n<value><int>" . $this->errno .\r
-"</int></value>\n</member>\n<member>\n<name>faultString</name>\n<value><string>" .\r
-xmlrpc_encode_entitites($this->errstr, $GLOBALS['xmlrpc_internalencoding'], $charset_encoding) . "</string></value>\n</member>\n" .\r
-"</struct>\n</value>\n</fault>";\r
-                       }\r
-                       else\r
-                       {\r
-                               if(!is_object($this->val) || !is_a($this->val, 'xmlrpcval'))\r
-                               {\r
-                                       if (is_string($this->val) && $this->valtyp == 'xml')\r
-                                       {\r
-                                               $result .= "<params>\n<param>\n" .\r
-                                                       $this->val .\r
-                                                       "</param>\n</params>";\r
-                                       }\r
-                                       else\r
-                                       {\r
-                                               /// @todo try to build something serializable?\r
-                                               die('cannot serialize xmlrpcresp objects whose content is native php values');\r
-                                       }\r
-                               }\r
-                               else\r
-                               {\r
-                                       $result .= "<params>\n<param>\n" .\r
-                                               $this->val->serialize($charset_encoding) .\r
-                                               "</param>\n</params>";\r
-                               }\r
-                       }\r
-                       $result .= "\n</methodResponse>";\r
-                       $this->payload = $result;\r
-                       return $result;\r
-               }\r
-       }\r
-\r
-       class xmlrpcmsg\r
-       {\r
-               var $payload;\r
-               var $methodname;\r
-               var $params=array();\r
-               var $debug=0;\r
-               var $content_type = 'text/xml';\r
-\r
-               /**\r
-               * @param string $meth the name of the method to invoke\r
-               * @param array $pars array of parameters to be paased to the method (xmlrpcval objects)\r
-               */\r
-               function xmlrpcmsg($meth, $pars=0)\r
-               {\r
-                       $this->methodname=$meth;\r
-                       if(is_array($pars) && count($pars)>0)\r
-                       {\r
-                               for($i=0; $i<count($pars); $i++)\r
-                               {\r
-                                       $this->addParam($pars[$i]);\r
-                               }\r
-                       }\r
-               }\r
-\r
-               /**\r
-               * @access private\r
-               */\r
-               function xml_header($charset_encoding='')\r
-               {\r
-                       if ($charset_encoding != '')\r
-                       {\r
-                               return "<?xml version=\"1.0\" encoding=\"$charset_encoding\" ?" . ">\n<methodCall>\n";\r
-                       }\r
-                       else\r
-                       {\r
-                               return "<?xml version=\"1.0\"?" . ">\n<methodCall>\n";\r
-                       }\r
-               }\r
-\r
-               /**\r
-               * @access private\r
-               */\r
-               function xml_footer()\r
-               {\r
-                       return '</methodCall>';\r
-               }\r
-\r
-               /**\r
-               * @access private\r
-               */\r
-               function kindOf()\r
-               {\r
-                       return 'msg';\r
-               }\r
-\r
-               /**\r
-               * @access private\r
-               */\r
-               function createPayload($charset_encoding='')\r
-               {\r
-                       if ($charset_encoding != '')\r
-                               $this->content_type = 'text/xml; charset=' . $charset_encoding;\r
-                       else\r
-                               $this->content_type = 'text/xml';\r
-                       $this->payload=$this->xml_header($charset_encoding);\r
-                       $this->payload.='<methodName>' . $this->methodname . "</methodName>\n";\r
-                       $this->payload.="<params>\n";\r
-                       for($i=0; $i<count($this->params); $i++)\r
-                       {\r
-                               $p=$this->params[$i];\r
-                               $this->payload.="<param>\n" . $p->serialize($charset_encoding) .\r
-                               "</param>\n";\r
-                       }\r
-                       $this->payload.="</params>\n";\r
-                       $this->payload.=$this->xml_footer();\r
-               }\r
-\r
-               /**\r
-               * Gets/sets the xmlrpc method to be invoked\r
-               * @param string $meth the method to be set (leave empty not to set it)\r
-               * @return string the method that will be invoked\r
-               * @access public\r
-               */\r
-               function method($meth='')\r
-               {\r
-                       if($meth!='')\r
-                       {\r
-                               $this->methodname=$meth;\r
-                       }\r
-                       return $this->methodname;\r
-               }\r
-\r
-               /**\r
-               * Returns xml representation of the message. XML prologue included\r
-               * @return string the xml representation of the message, xml prologue included\r
-               * @access public\r
-               */\r
-               function serialize($charset_encoding='')\r
-               {\r
-                       $this->createPayload($charset_encoding);\r
-                       return $this->payload;\r
-               }\r
-\r
-               /**\r
-               * Add a parameter to the list of parameters to be used upon method invocation\r
-               * @param xmlrpcval $par\r
-               * @return boolean false on failure\r
-               * @access public\r
-               */\r
-               function addParam($par)\r
-               {\r
-                       // add check: do not add to self params which are not xmlrpcvals\r
-                       if(is_object($par) && is_a($par, 'xmlrpcval'))\r
-                       {\r
-                               $this->params[]=$par;\r
-                               return true;\r
-                       }\r
-                       else\r
-                       {\r
-                               return false;\r
-                       }\r
-               }\r
-\r
-               /**\r
-               * Returns the nth parameter in the message. The index zero-based.\r
-               * @param integer $i the index of the parameter to fetch (zero based)\r
-               * @return xmlrpcval the i-th parameter\r
-               * @access public\r
-               */\r
-               function getParam($i) { return $this->params[$i]; }\r
-\r
-               /**\r
-               * Returns the number of parameters in the messge.\r
-               * @return integer the number of parameters currently set\r
-               * @access public\r
-               */\r
-               function getNumParams() { return count($this->params); }\r
-\r
-               /**\r
-               * Given an open file handle, read all data available and parse it as axmlrpc response.\r
-               * NB: the file handle is not closed by this function.\r
-               * @access public\r
-               * @return xmlrpcresp\r
-               * @todo add 2nd & 3rd param to be passed to ParseResponse() ???\r
-               */\r
-               function &parseResponseFile($fp)\r
-               {\r
-                       $ipd='';\r
-                       while($data=fread($fp, 32768))\r
-                       {\r
-                               $ipd.=$data;\r
-                       }\r
-                       //fclose($fp);\r
-                       $r =& $this->parseResponse($ipd);\r
-                       return $r;\r
-               }\r
-\r
-               /**\r
-               * Parses HTTP headers and separates them from data.\r
-               * @access private\r
-               */\r
-               function &parseResponseHeaders(&$data, $headers_processed=false)\r
-               {\r
-                               // Support "web-proxy-tunelling" connections for https through proxies\r
-                               if(preg_match('/^HTTP\/1\.[0-1] 200 Connection established/', $data))\r
-                               {\r
-                                       // Look for CR/LF or simple LF as line separator,\r
-                                       // (even though it is not valid http)\r
-                                       $pos = i18n::strpos($data,"\r\n\r\n");\r
-                                       if($pos || is_int($pos))\r
-                                       {\r
-                                               $bd = $pos+4;\r
-                                       }\r
-                                       else\r
-                                       {\r
-                                               $pos = i18n::strpos($data,"\n\n");\r
-                                               if($pos || is_int($pos))\r
-                                               {\r
-                                                       $bd = $pos+2;\r
-                                               }\r
-                                               else\r
-                                               {\r
-                                                       // No separation between response headers and body: fault?\r
-                                                       $bd = 0;\r
-                                               }\r
-                                       }\r
-                                       if ($bd)\r
-                                       {\r
-                                               // this filters out all http headers from proxy.\r
-                                               // maybe we could take them into account, too?\r
-                                               $data = i18n::substr($data, $bd);\r
-                                       }\r
-                                       else\r
-                                       {\r
-                                               error_log('XML-RPC: xmlrpcmsg::parseResponse: HTTPS via proxy error, tunnel connection possibly failed');\r
-                                               $r = new xmlrpcresp(0, $GLOBALS['xmlrpcerr']['http_error'], $GLOBALS['xmlrpcstr']['http_error']. ' (HTTPS via proxy error, tunnel connection possibly failed)');\r
-                                               return $r;\r
-                                       }\r
-                               }\r
-\r
-                               // Strip HTTP 1.1 100 Continue header if present\r
-                               while(preg_match('/^HTTP\/1\.1 1[0-9]{2} /', $data))\r
-                               {\r
-                                       $pos = i18n::strpos($data, 'HTTP', 12);\r
-                                       // server sent a Continue header without any (valid) content following...\r
-                                       // give the client a chance to know it\r
-                                       if(!$pos && !is_int($pos)) // works fine in php 3, 4 and 5\r
-                                       {\r
-                                               break;\r
-                                       }\r
-                                       $data = i18n::substr($data, $pos);\r
-                               }\r
-                               if(!preg_match('/^HTTP\/[0-9.]+ 200 /', $data))\r
-                               {\r
-                                       $errstr= i18n::substr($data, 0, i18n::strpos($data, "\n")-1);\r
-                                       error_log('XML-RPC: xmlrpcmsg::parseResponse: HTTP error, got response: ' .$errstr);\r
-                                       $r = new xmlrpcresp(0, $GLOBALS['xmlrpcerr']['http_error'], $GLOBALS['xmlrpcstr']['http_error']. ' (' . $errstr . ')');\r
-                                       return $r;\r
-                               }\r
-\r
-                               $GLOBALS['_xh']['headers'] = array();\r
-                               $GLOBALS['_xh']['cookies'] = array();\r
-\r
-                               // be tolerant to usage of \n instead of \r\n to separate headers and data\r
-                               // (even though it is not valid http)\r
-                               $pos = i18n::strpos($data,"\r\n\r\n");\r
-                               if($pos || is_int($pos))\r
-                               {\r
-                                       $bd = $pos+4;\r
-                               }\r
-                               else\r
-                               {\r
-                                       $pos = i18n::strpos($data,"\n\n");\r
-                                       if($pos || is_int($pos))\r
-                                       {\r
-                                               $bd = $pos+2;\r
-                                       }\r
-                                       else\r
-                                       {\r
-                                               // No separation between response headers and body: fault?\r
-                                               // we could take some action here instead of going on...\r
-                                               $bd = 0;\r
-                                       }\r
-                               }\r
-                               // be tolerant to line endings, and extra empty lines\r
-                               //$ar = split("\r?\n", trim(substr($data, 0, $pos))); //split() is deprecated\r
-                               $ar = preg_split("/\r?\n/", trim(i18n::substr($data, 0, $pos)));\r
-                               while(list(,$line) = @each($ar))\r
-                               {\r
-                                       // take care of multi-line headers and cookies\r
-                                       $arr = preg_split('#:#',$line,2);\r
-                                       if(count($arr) > 1)\r
-                                       {\r
-                                               $header_name = strtolower(trim($arr[0]));\r
-                                               /// @todo some other headers (the ones that allow a CSV list of values)\r
-                                               /// do allow many values to be passed using multiple header lines.\r
-                                               /// We should add content to $GLOBALS['_xh']['headers'][$header_name]\r
-                                               /// instead of replacing it for those...\r
-                                               if ($header_name == 'set-cookie' || $header_name == 'set-cookie2')\r
-                                               {\r
-                                                       if ($header_name == 'set-cookie2')\r
-                                                       {\r
-                                                               // version 2 cookies:\r
-                                                               // there could be many cookies on one line, comma separated\r
-                                                               $cookies = preg_split('#,#', $arr[1]);\r
-                                                       }\r
-                                                       else\r
-                                                       {\r
-                                                               $cookies = array($arr[1]);\r
-                                                       }\r
-                                                       foreach ($cookies as $cookie)\r
-                                                       {\r
-                                                               // glue together all received cookies, using a comma to separate them\r
-                                                               // (same as php does with getallheaders())\r
-                                                               if (isset($GLOBALS['_xh']['headers'][$header_name]))\r
-                                                                       $GLOBALS['_xh']['headers'][$header_name] .= ', ' . trim($cookie);\r
-                                                               else\r
-                                                                       $GLOBALS['_xh']['headers'][$header_name] = trim($cookie);\r
-                                                               // parse cookie attributes, in case user wants to correctly honour them\r
-                                                               // feature creep: only allow rfc-compliant cookie attributes?\r
-                                                               $cookie = preg_split('#;#', $cookie);\r
-                                                               foreach ($cookie as $pos => $val)\r
-                                                               {\r
-                                                                       $val = preg_split('#=#', $val, 2);\r
-                                                                       $tag = trim($val[0]);\r
-                                                                       $val = trim(@$val[1]);\r
-                                                                       /// @todo with version 1 cookies, we should strip leading and trailing " chars\r
-                                                                       if ($pos == 0)\r
-                                                                       {\r
-                                                                               $cookiename = $tag;\r
-                                                                               $GLOBALS['_xh']['cookies'][$tag] = array();\r
-                                                                               $GLOBALS['_xh']['cookies'][$cookiename]['value'] = urldecode($val);\r
-                                                                       }\r
-                                                                       else\r
-                                                                       {\r
-                                                                               $GLOBALS['_xh']['cookies'][$cookiename][$tag] = $val;\r
-                                                                       }\r
-                                                               }\r
-                                                       }\r
-                                               }\r
-                                               else\r
-                                               {\r
-                                                       $GLOBALS['_xh']['headers'][$header_name] = trim($arr[1]);\r
-                                               }\r
-                                       }\r
-                                       elseif(isset($header_name))\r
-                                       {\r
-                                               ///     @todo version1 cookies might span multiple lines, thus breaking the parsing above\r
-                                               $GLOBALS['_xh']['headers'][$header_name] .= ' ' . trim($line);\r
-                                       }\r
-                               }\r
-\r
-                               $data = i18n::substr($data, $bd);\r
-\r
-                               if($this->debug && count($GLOBALS['_xh']['headers']))\r
-                               {\r
-                                       print '<PRE>';\r
-                                       foreach($GLOBALS['_xh']['headers'] as $header => $value)\r
-                                       {\r
-                                               print Entity::hen("HEADER: $header: $value\n");\r
-                                       }\r
-                                       foreach($GLOBALS['_xh']['cookies'] as $header => $value)\r
-                                       {\r
-                                               print Entity::hen("COOKIE: $header={$value['value']}\n");\r
-                                       }\r
-                                       print "</PRE>\n";\r
-                               }\r
-\r
-                               // if CURL was used for the call, http headers have been processed,\r
-                               // and dechunking + reinflating have been carried out\r
-                               if(!$headers_processed)\r
-                               {\r
-                                       // Decode chunked encoding sent by http 1.1 servers\r
-                                       if(isset($GLOBALS['_xh']['headers']['transfer-encoding']) && $GLOBALS['_xh']['headers']['transfer-encoding'] == 'chunked')\r
-                                       {\r
-                                               if(!$data = decode_chunked($data))\r
-                                               {\r
-                                                       error_log('XML-RPC: xmlrpcmsg::parseResponse: errors occurred when trying to rebuild the chunked data received from server');\r
-                                                       $r = new xmlrpcresp(0, $GLOBALS['xmlrpcerr']['dechunk_fail'], $GLOBALS['xmlrpcstr']['dechunk_fail']);\r
-                                                       return $r;\r
-                                               }\r
-                                       }\r
-\r
-                                       // Decode gzip-compressed stuff\r
-                                       // code shamelessly inspired from nusoap library by Dietrich Ayala\r
-                                       if(isset($GLOBALS['_xh']['headers']['content-encoding']))\r
-                                       {\r
-                                               $GLOBALS['_xh']['headers']['content-encoding'] = str_replace('x-', '', $GLOBALS['_xh']['headers']['content-encoding']);\r
-                                               if($GLOBALS['_xh']['headers']['content-encoding'] == 'deflate' || $GLOBALS['_xh']['headers']['content-encoding'] == 'gzip')\r
-                                               {\r
-                                                       // if decoding works, use it. else assume data wasn't gzencoded\r
-                                                       if(function_exists('gzinflate'))\r
-                                                       {\r
-                                                               if($GLOBALS['_xh']['headers']['content-encoding'] == 'deflate' && $degzdata = @gzuncompress($data))\r
-                                                               {\r
-                                                                       $data = $degzdata;\r
-                                                                       if($this->debug)\r
-                                                                       print "<PRE>---INFLATED RESPONSE---[".i18n::strlen($data)." chars]---\n" . Entity::hen($data) . "\n---END---</PRE>";\r
-                                                               }\r
-                                                               elseif($GLOBALS['_xh']['headers']['content-encoding'] == 'gzip' && $degzdata = @gzinflate(i18n::substr($data, 10)))\r
-                                                               {\r
-                                                                       $data = $degzdata;\r
-                                                                       if($this->debug)\r
-                                                                       print "<PRE>---INFLATED RESPONSE---[".i18n::strlen($data)." chars]---\n" . Entity::hen($data) . "\n---END---</PRE>";\r
-                                                               }\r
-                                                               else\r
-                                                               {\r
-                                                                       error_log('XML-RPC: xmlrpcmsg::parseResponse: errors occurred when trying to decode the deflated data received from server');\r
-                                                                       $r = new xmlrpcresp(0, $GLOBALS['xmlrpcerr']['decompress_fail'], $GLOBALS['xmlrpcstr']['decompress_fail']);\r
-                                                                       return $r;\r
-                                                               }\r
-                                                       }\r
-                                                       else\r
-                                                       {\r
-                                                               error_log('XML-RPC: xmlrpcmsg::parseResponse: the server sent deflated data. Your php install must have the Zlib extension compiled in to support this.');\r
-                                                               $r = new xmlrpcresp(0, $GLOBALS['xmlrpcerr']['cannot_decompress'], $GLOBALS['xmlrpcstr']['cannot_decompress']);\r
-                                                               return $r;\r
-                                                       }\r
-                                               }\r
-                                       }\r
-                               } // end of 'if needed, de-chunk, re-inflate response'\r
-\r
-                               // real stupid hack to avoid PHP 4 complaining about returning NULL by ref\r
-                               $r = null;\r
-                               $r =& $r;\r
-                               return $r;\r
-               }\r
-\r
-               /**\r
-               * Parse the xmlrpc response contained in the string $data and return an xmlrpcresp object.\r
-               * @param string $data the xmlrpc response, eventually including http headers\r
-               * @param bool $headers_processed when true prevents parsing HTTP headers for interpretation of content-encoding and consequent decoding\r
-               * @param string $return_type decides return type, i.e. content of response->value(). Either 'xmlrpcvals', 'xml' or 'phpvals'\r
-               * @return xmlrpcresp\r
-               * @access public\r
-               */\r
-               function &parseResponse($data='', $headers_processed=false, $return_type='xmlrpcvals')\r
-               {\r
-                       if($this->debug)\r
-                       {\r
-                               print "<PRE>---GOT---\n" . Entity::hen($data) . "\n---END---\n</PRE>";\r
-                       }\r
-\r
-                       if($data == '')\r
-                       {\r
-                               error_log('XML-RPC: xmlrpcmsg::parseResponse: no response received from server.');\r
-                               $r = new xmlrpcresp(0, $GLOBALS['xmlrpcerr']['no_data'], $GLOBALS['xmlrpcstr']['no_data']);\r
-                               return $r;\r
-                       }\r
-\r
-                       $GLOBALS['_xh']=array();\r
-\r
-                       $raw_data = $data;\r
-                       // parse the HTTP headers of the response, if present, and separate them from data\r
-                       if(i18n::substr($data, 0, 4) == 'HTTP')\r
-                       {\r
-                               $r =& $this->parseResponseHeaders($data, $headers_processed);\r
-                               if ($r)\r
-                               {\r
-                                       // failed processing of HTTP response headers\r
-                                       // save into response obj the full payload received, for debugging\r
-                                       $r->raw_data = $data;\r
-                                       return $r;\r
-                               }\r
-                       }\r
-                       else\r
-                       {\r
-                               $GLOBALS['_xh']['headers'] = array();\r
-                               $GLOBALS['_xh']['cookies'] = array();\r
-                       }\r
-\r
-                       if($this->debug)\r
-                       {\r
-                               $start = i18n::strpos($data, '<!-- SERVER DEBUG INFO (BASE64 ENCODED):');\r
-                               if ($start)\r
-                               {\r
-                                       $start += i18n::strlen('<!-- SERVER DEBUG INFO (BASE64 ENCODED):');\r
-                                       $end = i18n::strpos($data, '-->', $start);\r
-                                       $comments = i18n::substr($data, $start, $end-$start);\r
-                                       print "<PRE>---SERVER DEBUG INFO (DECODED) ---\n\t".Entity::hen(str_replace("\n", "\n\t", base64_decode($comments)))."\n---END---\n</PRE>";\r
-                               }\r
-                       }\r
-\r
-                       // be tolerant of extra whitespace in response body\r
-                       $data = trim($data);\r
-\r
-                       /// @todo return an error msg if $data=='' ?\r
-\r
-                       // be tolerant of junk after methodResponse (e.g. javascript ads automatically inserted by free hosts)\r
-                       // idea from Luca Mariano <luca.mariano@email.it> originally in PEARified version of the lib\r
-                       $bd = false;\r
-                       // Poor man's version of strrpos for php 4...\r
-                       $pos = i18n::strpos($data, '</methodResponse>');\r
-                       while($pos || is_int($pos))\r
-                       {\r
-                               $bd = $pos+17;\r
-                               $pos = i18n::strpos($data, '</methodResponse>', $bd);\r
-                       }\r
-                       if($bd)\r
-                       {\r
-                               $data = i18n::substr($data, 0, $bd);\r
-                       }\r
-\r
-                       // if user wants back raw xml, give it to him\r
-                       if ($return_type == 'xml')\r
-                       {\r
-                               $r = new xmlrpcresp($data, 0, '', 'xml');\r
-                               $r->hdrs = $GLOBALS['_xh']['headers'];\r
-                               $r->_cookies = $GLOBALS['_xh']['cookies'];\r
-                               $r->raw_data = $raw_data;\r
-                               return $r;\r
-                       }\r
-\r
-                       // try to 'guestimate' the character encoding of the received response\r
-                       $resp_encoding = guess_encoding(@$GLOBALS['_xh']['headers']['content-type'], $data);\r
-\r
-                       $GLOBALS['_xh']['ac']='';\r
-                       //$GLOBALS['_xh']['qt']=''; //unused...\r
-                       $GLOBALS['_xh']['stack'] = array();\r
-                       $GLOBALS['_xh']['valuestack'] = array();\r
-                       $GLOBALS['_xh']['isf']=0; // 0 = OK, 1 for xmlrpc fault responses, 2 = invalid xmlrpc\r
-                       $GLOBALS['_xh']['isf_reason']='';\r
-                       $GLOBALS['_xh']['rt']=''; // 'methodcall or 'methodresponse'\r
-\r
-                       // if response charset encoding is not known / supported, try to use\r
-                       // the default encoding and parse the xml anyway, but log a warning...\r
-                       if (!in_array($resp_encoding, array('UTF-8', 'ISO-8859-1', 'US-ASCII')))\r
-                       // the following code might be better for mb_string enabled installs, but\r
-                       // makes the lib about 200% slower...\r
-                       //if (!is_valid_charset($resp_encoding, array('UTF-8', 'ISO-8859-1', 'US-ASCII')))\r
-                       {\r
-                               error_log('XML-RPC: xmlrpcmsg::parseResponse: invalid charset encoding of received response: '.$resp_encoding);\r
-                               $resp_encoding = $GLOBALS['xmlrpc_defencoding'];\r
-                       }\r
-                       $parser = xml_parser_create($resp_encoding);\r
-                       xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, true);\r
-                       // G. Giunta 2005/02/13: PHP internally uses ISO-8859-1, so we have to tell\r
-                       // the xml parser to give us back data in the expected charset\r
-                       xml_parser_set_option($parser, XML_OPTION_TARGET_ENCODING, $GLOBALS['xmlrpc_internalencoding']);\r
-\r
-                       if ($return_type == 'phpvals')\r
-                       {\r
-                               xml_set_element_handler($parser, 'xmlrpc_se', 'xmlrpc_ee_fast');\r
-                       }\r
-                       else\r
-                       {\r
-                               xml_set_element_handler($parser, 'xmlrpc_se', 'xmlrpc_ee');\r
-                       }\r
-\r
-                       xml_set_character_data_handler($parser, 'xmlrpc_cd');\r
-                       xml_set_default_handler($parser, 'xmlrpc_dh');\r
-\r
-                       // first error check: xml not well formed\r
-                       if(!xml_parse($parser, $data, count($data)))\r
-                       {\r
-                               // thanks to Peter Kocks <peter.kocks@baygate.com>\r
-                               if((xml_get_current_line_number($parser)) == 1)\r
-                               {\r
-                                       $errstr = 'XML error at line 1, check URL';\r
-                               }\r
-                               else\r
-                               {\r
-                                       $errstr = sprintf('XML error: %s at line %d, column %d',\r
-                                               xml_error_string(xml_get_error_code($parser)),\r
-                                               xml_get_current_line_number($parser), xml_get_current_column_number($parser));\r
-                               }\r
-                               error_log($errstr);\r
-                               $r = new xmlrpcresp(0, $GLOBALS['xmlrpcerr']['invalid_return'], $GLOBALS['xmlrpcstr']['invalid_return'].' ('.$errstr.')');\r
-                               xml_parser_free($parser);\r
-                               if($this->debug)\r
-                               {\r
-                                       print $errstr;\r
-                               }\r
-                               $r->hdrs = $GLOBALS['_xh']['headers'];\r
-                               $r->_cookies = $GLOBALS['_xh']['cookies'];\r
-                               $r->raw_data = $raw_data;\r
-                               return $r;\r
-                       }\r
-                       xml_parser_free($parser);\r
-                       // second error check: xml well formed but not xml-rpc compliant\r
-                       if ($GLOBALS['_xh']['isf'] > 1)\r
-                       {\r
-                               if ($this->debug)\r
-                               {\r
-                                       /// @todo echo something for user?\r
-                               }\r
-\r
-                               $r = new xmlrpcresp(0, $GLOBALS['xmlrpcerr']['invalid_return'],\r
-                               $GLOBALS['xmlrpcstr']['invalid_return'] . ' ' . $GLOBALS['_xh']['isf_reason']);\r
-                       }\r
-                       // third error check: parsing of the response has somehow gone boink.\r
-                       // NB: shall we omit this check, since we trust the parsing code?\r
-                       elseif ($return_type == 'xmlrpcvals' && !is_object($GLOBALS['_xh']['value']))\r
-                       {\r
-                               // something odd has happened\r
-                               // and it's time to generate a client side error\r
-                               // indicating something odd went on\r
-                               $r = new xmlrpcresp(0, $GLOBALS['xmlrpcerr']['invalid_return'],\r
-                                       $GLOBALS['xmlrpcstr']['invalid_return']);\r
-                       }\r
-                       else\r
-                       {\r
-                               if ($this->debug)\r
-                               {\r
-                                       print "<PRE>---PARSED---\n";\r
-                                       print Entity::hsc(var_export($GLOBALS['_xh']['value'], true));\r
-                                       print "\n---END---</PRE>";\r
-                               }\r
-\r
-                               // note that using =& will raise an error if $GLOBALS['_xh']['st'] does not generate an object.\r
-                               $v =& $GLOBALS['_xh']['value'];\r
-\r
-                               if($GLOBALS['_xh']['isf'])\r
-                               {\r
-                                       /// @todo we should test here if server sent an int and a string,\r
-                                       /// and/or coerce them into such...\r
-                                       if ($return_type == 'xmlrpcvals')\r
-                                       {\r
-                                               $errno_v = $v->structmem('faultCode');\r
-                                               $errstr_v = $v->structmem('faultString');\r
-                                               $errno = $errno_v->scalarval();\r
-                                               $errstr = $errstr_v->scalarval();\r
-                                       }\r
-                                       else\r
-                                       {\r
-                                               $errno = $v['faultCode'];\r
-                                               $errstr = $v['faultString'];\r
-                                       }\r
-\r
-                                       if($errno == 0)\r
-                                       {\r
-                                               // FAULT returned, errno needs to reflect that\r
-                                               $errno = -1;\r
-                                       }\r
-\r
-                                       $r = new xmlrpcresp(0, $errno, $errstr);\r
-                               }\r
-                               else\r
-                               {\r
-                                       $r = new xmlrpcresp($v, 0, '', $return_type);\r
-                               }\r
-                       }\r
-\r
-                       $r->hdrs = $GLOBALS['_xh']['headers'];\r
-                       $r->_cookies = $GLOBALS['_xh']['cookies'];\r
-                       $r->raw_data = $raw_data;\r
-                       return $r;\r
-               }\r
-       }\r
-\r
-       class xmlrpcval\r
-       {\r
-               var $me=array();\r
-               var $mytype=0;\r
-               var $_php_class=null;\r
-\r
-               /**\r
-               * @param mixed $val\r
-               * @param string $type any valid xmlrpc type name (lowercase). If null, 'string' is assumed\r
-               */\r
-               function xmlrpcval($val=-1, $type='')\r
-               {\r
-                       /// @todo: optimization creep - do not call addXX, do it all inline.\r
-                       /// downside: booleans will not be coerced anymore\r
-                       if($val!==-1 || $type!='')\r
-                       {\r
-                               // optimization creep: inlined all work done by constructor\r
-                               switch($type)\r
-                               {\r
-                                       case '':\r
-                                               $this->mytype=1;\r
-                                               $this->me['string']=$val;\r
-                                               break;\r
-                                       case 'i4':\r
-                                       case 'int':\r
-                                       case 'double':\r
-                                       case 'string':\r
-                                       case 'boolean':\r
-                                       case 'dateTime.iso8601':\r
-                                       case 'base64':\r
-                                       case 'null':\r
-                                               $this->mytype=1;\r
-                                               $this->me[$type]=$val;\r
-                                               break;\r
-                                       case 'array':\r
-                                               $this->mytype=2;\r
-                                               $this->me['array']=$val;\r
-                                               break;\r
-                                       case 'struct':\r
-                                               $this->mytype=3;\r
-                                               $this->me['struct']=$val;\r
-                                               break;\r
-                                       default:\r
-                                               error_log("XML-RPC: xmlrpcval::xmlrpcval: not a known type ($type)");\r
-                               }\r
-                               /*if($type=='')\r
-                               {\r
-                                       $type='string';\r
-                               }\r
-                               if($GLOBALS['xmlrpcTypes'][$type]==1)\r
-                               {\r
-                                       $this->addScalar($val,$type);\r
-                               }\r
-                               elseif($GLOBALS['xmlrpcTypes'][$type]==2)\r
-                               {\r
-                                       $this->addArray($val);\r
-                               }\r
-                               elseif($GLOBALS['xmlrpcTypes'][$type]==3)\r
-                               {\r
-                                       $this->addStruct($val);\r
-                               }*/\r
-                       }\r
-               }\r
-\r
-               /**\r
-               * Add a single php value to an (unitialized) xmlrpcval\r
-               * @param mixed $val\r
-               * @param string $type\r
-               * @return int 1 or 0 on failure\r
-               */\r
-               function addScalar($val, $type='string')\r
-               {\r
-                       $typeof=@$GLOBALS['xmlrpcTypes'][$type];\r
-                       if($typeof!=1)\r
-                       {\r
-                               error_log("XML-RPC: xmlrpcval::addScalar: not a scalar type ($type)");\r
-                               return 0;\r
-                       }\r
-\r
-                       // coerce booleans into correct values\r
-                       // NB: we should iether do it for datetimes, integers and doubles, too,\r
-                       // or just plain remove this check, implemnted on booleans only...\r
-                       if($type==$GLOBALS['xmlrpcBoolean'])\r
-                       {\r
-                               if(strcasecmp($val,'true')==0 || $val==1 || ($val==true && strcasecmp($val,'false')))\r
-                               {\r
-                                       $val=true;\r
-                               }\r
-                               else\r
-                               {\r
-                                       $val=false;\r
-                               }\r
-                       }\r
-\r
-                       switch($this->mytype)\r
-                       {\r
-                               case 1:\r
-                                       error_log('XML-RPC: xmlrpcval::addScalar: scalar xmlrpcval can have only one value');\r
-                                       return 0;\r
-                               case 3:\r
-                                       error_log('XML-RPC: xmlrpcval::addScalar: cannot add anonymous scalar to struct xmlrpcval');\r
-                                       return 0;\r
-                               case 2:\r
-                                       // we're adding a scalar value to an array here\r
-                                       //$ar=$this->me['array'];\r
-                                       //$ar[] = new xmlrpcval($val, $type);\r
-                                       //$this->me['array']=$ar;\r
-                                       // Faster (?) avoid all the costly array-copy-by-val done here...\r
-                                       $this->me['array'][] = new xmlrpcval($val, $type);\r
-                                       return 1;\r
-                               default:\r
-                                       // a scalar, so set the value and remember we're scalar\r
-                                       $this->me[$type]=$val;\r
-                                       $this->mytype=$typeof;\r
-                                       return 1;\r
-                       }\r
-               }\r
-\r
-               /**\r
-               * Add an array of xmlrpcval objects to an xmlrpcval\r
-               * @param array $vals\r
-               * @return int 1 or 0 on failure\r
-               * @access public\r
-               *\r
-               * @todo add some checking for $vals to be an array of xmlrpcvals?\r
-               */\r
-               function addArray($vals)\r
-               {\r
-                       if($this->mytype==0)\r
-                       {\r
-                               $this->mytype=$GLOBALS['xmlrpcTypes']['array'];\r
-                               $this->me['array']=$vals;\r
-                               return 1;\r
-                       }\r
-                       elseif($this->mytype==2)\r
-                       {\r
-                               // we're adding to an array here\r
-                               $this->me['array'] = array_merge($this->me['array'], $vals);\r
-                               return 1;\r
-                       }\r
-                       else\r
-                       {\r
-                               error_log('XML-RPC: xmlrpcval::addArray: already initialized as a [' . $this->kindOf() . ']');\r
-                               return 0;\r
-                       }\r
-               }\r
-\r
-               /**\r
-               * Add an array of named xmlrpcval objects to an xmlrpcval\r
-               * @param array $vals\r
-               * @return int 1 or 0 on failure\r
-               * @access public\r
-               *\r
-               * @todo add some checking for $vals to be an array?\r
-               */\r
-               function addStruct($vals)\r
-               {\r
-                       if($this->mytype==0)\r
-                       {\r
-                               $this->mytype=$GLOBALS['xmlrpcTypes']['struct'];\r
-                               $this->me['struct']=$vals;\r
-                               return 1;\r
-                       }\r
-                       elseif($this->mytype==3)\r
-                       {\r
-                               // we're adding to a struct here\r
-                               $this->me['struct'] = array_merge($this->me['struct'], $vals);\r
-                               return 1;\r
-                       }\r
-                       else\r
-                       {\r
-                               error_log('XML-RPC: xmlrpcval::addStruct: already initialized as a [' . $this->kindOf() . ']');\r
-                               return 0;\r
-                       }\r
-               }\r
-\r
-               // poor man's version of print_r ???\r
-               // DEPRECATED!\r
-               function dump($ar)\r
-               {\r
-                       foreach($ar as $key => $val)\r
-                       {\r
-                               echo "$key => $val<br />";\r
-                               if($key == 'array')\r
-                               {\r
-                                       while(list($key2, $val2) = each($val))\r
-                                       {\r
-                                               echo "-- $key2 => $val2<br />";\r
-                                       }\r
-                               }\r
-                       }\r
-               }\r
-\r
-               /**\r
-               * Returns a string containing "struct", "array" or "scalar" describing the base type of the value\r
-               * @return string\r
-               * @access public\r
-               */\r
-               function kindOf()\r
-               {\r
-                       switch($this->mytype)\r
-                       {\r
-                               case 3:\r
-                                       return 'struct';\r
-                                       break;\r
-                               case 2:\r
-                                       return 'array';\r
-                                       break;\r
-                               case 1:\r
-                                       return 'scalar';\r
-                                       break;\r
-                               default:\r
-                                       return 'undef';\r
-                       }\r
-               }\r
-\r
-               /**\r
-               * @access private\r
-               */\r
-               function serializedata($typ, $val, $charset_encoding='')\r
-               {\r
-                       $rs='';\r
-                       switch(@$GLOBALS['xmlrpcTypes'][$typ])\r
-                       {\r
-                               case 1:\r
-                                       switch($typ)\r
-                                       {\r
-                                               case $GLOBALS['xmlrpcBase64']:\r
-                                                       $rs.="<${typ}>" . base64_encode($val) . "</${typ}>";\r
-                                                       break;\r
-                                               case $GLOBALS['xmlrpcBoolean']:\r
-                                                       $rs.="<${typ}>" . ($val ? '1' : '0') . "</${typ}>";\r
-                                                       break;\r
-                                               case $GLOBALS['xmlrpcString']:\r
-                                                       // G. Giunta 2005/2/13: do NOT use htmlentities, since\r
-                                                       // it will produce named html entities, which are invalid xml\r
-                                                       $rs.="<${typ}>" . xmlrpc_encode_entitites($val, $GLOBALS['xmlrpc_internalencoding'], $charset_encoding). "</${typ}>";\r
-                                                       break;\r
-                                               case $GLOBALS['xmlrpcInt']:\r
-                                               case $GLOBALS['xmlrpcI4']:\r
-                                                       $rs.="<${typ}>".(int)$val."</${typ}>";\r
-                                                       break;\r
-                                               case $GLOBALS['xmlrpcDouble']:\r
-                                                       $rs.="<${typ}>".(double)$val."</${typ}>";\r
-                                                       break;\r
-                                               case $GLOBALS['xmlrpcNull']:\r
-                                                       $rs.="<nil/>";\r
-                                                       break;\r
-                                               default:\r
-                                                       // no standard type value should arrive here, but provide a possibility\r
-                                                       // for xmlrpcvals of unknown type...\r
-                                                       $rs.="<${typ}>${val}</${typ}>";\r
-                                       }\r
-                                       break;\r
-                               case 3:\r
-                                       // struct\r
-                                       if ($this->_php_class)\r
-                                       {\r
-                                               $rs.='<struct php_class="' . $this->_php_class . "\">\n";\r
-                                       }\r
-                                       else\r
-                                       {\r
-                                               $rs.="<struct>\n";\r
-                                       }\r
-                                       foreach($val as $key2 => $val2)\r
-                                       {\r
-                                               $rs.='<member><name>'.xmlrpc_encode_entitites($key2, $GLOBALS['xmlrpc_internalencoding'], $charset_encoding)."</name>\n";\r
-                                               //$rs.=$this->serializeval($val2);\r
-                                               $rs.=$val2->serialize($charset_encoding);\r
-                                               $rs.="</member>\n";\r
-                                       }\r
-                                       $rs.='</struct>';\r
-                                       break;\r
-                               case 2:\r
-                                       // array\r
-                                       $rs.="<array>\n<data>\n";\r
-                                       for($i=0; $i<count($val); $i++)\r
-                                       {\r
-                                               //$rs.=$this->serializeval($val[$i]);\r
-                                               $rs.=$val[$i]->serialize($charset_encoding);\r
-                                       }\r
-                                       $rs.="</data>\n</array>";\r
-                                       break;\r
-                               default:\r
-                                       break;\r
-                       }\r
-                       return $rs;\r
-               }\r
-\r
-               /**\r
-               * Returns xml representation of the value. XML prologue not included\r
-               * @param string $charset_encoding the charset to be used for serialization. if null, US-ASCII is assumed\r
-               * @return string\r
-               * @access public\r
-               */\r
-               function serialize($charset_encoding='')\r
-               {\r
-                       // add check? slower, but helps to avoid recursion in serializing broken xmlrpcvals...\r
-                       //if (is_object($o) && (get_class($o) == 'xmlrpcval' || is_subclass_of($o, 'xmlrpcval')))\r
-                       //{\r
-                               reset($this->me);\r
-                               list($typ, $val) = each($this->me);\r
-                               return '<value>' . $this->serializedata($typ, $val, $charset_encoding) . "</value>\n";\r
-                       //}\r
-               }\r
-\r
-               // DEPRECATED\r
-               function serializeval($o)\r
-               {\r
-                       // add check? slower, but helps to avoid recursion in serializing broken xmlrpcvals...\r
-                       //if (is_object($o) && (get_class($o) == 'xmlrpcval' || is_subclass_of($o, 'xmlrpcval')))\r
-                       //{\r
-                               $ar=$o->me;\r
-                               reset($ar);\r
-                               list($typ, $val) = each($ar);\r
-                               return '<value>' . $this->serializedata($typ, $val) . "</value>\n";\r
-                       //}\r
-               }\r
-\r
-               /**\r
-               * Checks wheter a struct member with a given name is present.\r
-               * Works only on xmlrpcvals of type struct.\r
-               * @param string $m the name of the struct member to be looked up\r
-               * @return boolean\r
-               * @access public\r
-               */\r
-               function structmemexists($m)\r
-               {\r
-                       return array_key_exists($m, $this->me['struct']);\r
-               }\r
-\r
-               /**\r
-               * Returns the value of a given struct member (an xmlrpcval object in itself).\r
-               * Will raise a php warning if struct member of given name does not exist\r
-               * @param string $m the name of the struct member to be looked up\r
-               * @return xmlrpcval\r
-               * @access public\r
-               */\r
-               function structmem($m)\r
-               {\r
-                       return $this->me['struct'][$m];\r
-               }\r
-\r
-               /**\r
-               * Reset internal pointer for xmlrpcvals of type struct.\r
-               * @access public\r
-               */\r
-               function structreset()\r
-               {\r
-                       reset($this->me['struct']);\r
-               }\r
-\r
-               /**\r
-               * Return next member element for xmlrpcvals of type struct.\r
-               * @return xmlrpcval\r
-               * @access public\r
-               */\r
-               function structeach()\r
-               {\r
-                       return each($this->me['struct']);\r
-               }\r
-\r
-               // DEPRECATED! this code looks like it is very fragile and has not been fixed\r
-               // for a long long time. Shall we remove it for 2.0?\r
-               function getval()\r
-               {\r
-                       // UNSTABLE\r
-                       reset($this->me);\r
-                       list($a,$b)=each($this->me);\r
-                       // contributed by I Sofer, 2001-03-24\r
-                       // add support for nested arrays to scalarval\r
-                       // i've created a new method here, so as to\r
-                       // preserve back compatibility\r
-\r
-                       if(is_array($b))\r
-                       {\r
-                               @reset($b);\r
-                               while(list($id,$cont) = @each($b))\r
-                               {\r
-                                       $b[$id] = $cont->scalarval();\r
-                               }\r
-                       }\r
-\r
-                       // add support for structures directly encoding php objects\r
-                       if(is_object($b))\r
-                       {\r
-                               $t = get_object_vars($b);\r
-                               @reset($t);\r
-                               while(list($id,$cont) = @each($t))\r
-                               {\r
-                                       $t[$id] = $cont->scalarval();\r
-                               }\r
-                               @reset($t);\r
-                               while(list($id,$cont) = @each($t))\r
-                               {\r
-                                       @$b->$id = $cont;\r
-                               }\r
-                       }\r
-                       // end contrib\r
-                       return $b;\r
-               }\r
-\r
-               /**\r
-               * Returns the value of a scalar xmlrpcval\r
-               * @return mixed\r
-               * @access public\r
-               */\r
-               function scalarval()\r
-               {\r
-                       reset($this->me);\r
-                       list(,$b)=each($this->me);\r
-                       return $b;\r
-               }\r
-\r
-               /**\r
-               * Returns the type of the xmlrpcval.\r
-               * For integers, 'int' is always returned in place of 'i4'\r
-               * @return string\r
-               * @access public\r
-               */\r
-               function scalartyp()\r
-               {\r
-                       reset($this->me);\r
-                       list($a,)=each($this->me);\r
-                       if($a==$GLOBALS['xmlrpcI4'])\r
-                       {\r
-                               $a=$GLOBALS['xmlrpcInt'];\r
-                       }\r
-                       return $a;\r
-               }\r
-\r
-               /**\r
-               * Returns the m-th member of an xmlrpcval of struct type\r
-               * @param integer $m the index of the value to be retrieved (zero based)\r
-               * @return xmlrpcval\r
-               * @access public\r
-               */\r
-               function arraymem($m)\r
-               {\r
-                       return $this->me['array'][$m];\r
-               }\r
-\r
-               /**\r
-               * Returns the number of members in an xmlrpcval of array type\r
-               * @return integer\r
-               * @access public\r
-               */\r
-               function arraysize()\r
-               {\r
-                       return count($this->me['array']);\r
-               }\r
-\r
-               /**\r
-               * Returns the number of members in an xmlrpcval of struct type\r
-               * @return integer\r
-               * @access public\r
-               */\r
-               function structsize()\r
-               {\r
-                       return count($this->me['struct']);\r
-               }\r
-       }\r
-\r
-\r
-       // date helpers\r
-\r
-       /**\r
-       * Given a timestamp, return the corresponding ISO8601 encoded string.\r
-       *\r
-       * Really, timezones ought to be supported\r
-       * but the XML-RPC spec says:\r
-       *\r
-       * "Don't assume a timezone. It should be specified by the server in its\r
-       * documentation what assumptions it makes about timezones."\r
-       *\r
-       * These routines always assume localtime unless\r
-       * $utc is set to 1, in which case UTC is assumed\r
-       * and an adjustment for locale is made when encoding\r
-       *\r
-       * @param int $timet (timestamp)\r
-       * @param int $utc (0 or 1)\r
-       * @return string\r
-       */\r
-       function iso8601_encode($timet, $utc=0)\r
-       {\r
-               if(!$utc)\r
-               {\r
-                       $t=i18n::formatted_datetime('iso8601UTC', $timet);\r
-               }\r
-               else\r
-               {\r
-                       $t=i18n::formatted_datetime('iso8601UTC', $timet-date('Z'));\r
-               }\r
-               return $t;\r
-       }\r
-\r
-       /**\r
-       * Given an ISO8601 date string, return a timet in the localtime, or UTC\r
-       * @param string $idate\r
-       * @param int $utc either 0 or 1\r
-       * @return int (datetime)\r
-       */\r
-       function iso8601_decode($idate, $utc=0)\r
-       {\r
-               $t=0;\r
-               if(preg_match('/([0-9]{4})([0-9]{2})([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})/', $idate, $regs))\r
-               {\r
-                       if($utc)\r
-                       {\r
-                               $t=gmmktime($regs[4], $regs[5], $regs[6], $regs[2], $regs[3], $regs[1]);\r
-                       }\r
-                       else\r
-                       {\r
-                               $t=mktime($regs[4], $regs[5], $regs[6], $regs[2], $regs[3], $regs[1]);\r
-                       }\r
-               }\r
-               return $t;\r
-       }\r
-\r
-       /**\r
-       * Takes an xmlrpc value in PHP xmlrpcval object format and translates it into native PHP types.\r
-       *\r
-       * Works with xmlrpc message objects as input, too.\r
-       *\r
-       * Given proper options parameter, can rebuild generic php object instances\r
-       * (provided those have been encoded to xmlrpc format using a corresponding\r
-       * option in php_xmlrpc_encode())\r
-       * PLEASE NOTE that rebuilding php objects involves calling their constructor function.\r
-       * This means that the remote communication end can decide which php code will\r
-       * get executed on your server, leaving the door possibly open to 'php-injection'\r
-       * style of attacks (provided you have some classes defined on your server that\r
-       * might wreak havoc if instances are built outside an appropriate context).\r
-       * Make sure you trust the remote server/client before eanbling this!\r
-       *\r
-       * @author Dan Libby (dan@libby.com)\r
-       *\r
-       * @param xmlrpcval $xmlrpc_val\r
-       * @param array $options if 'decode_php_objs' is set in the options array, xmlrpc structs can be decoded into php objects\r
-       * @return mixed\r
-       */\r
-       function php_xmlrpc_decode($xmlrpc_val, $options=array())\r
-       {\r
-               switch($xmlrpc_val->kindOf())\r
-               {\r
-                       case 'scalar':\r
-                               if (in_array('extension_api', $options))\r
-                               {\r
-                                       reset($xmlrpc_val->me);\r
-                                       list($typ,$val) = each($xmlrpc_val->me);\r
-                                       switch ($typ)\r
-                                       {\r
-                                               case 'dateTime.iso8601':\r
-                                                       $xmlrpc_val->scalar = $val;\r
-                                                       $xmlrpc_val->xmlrpc_type = 'datetime';\r
-                                                       $xmlrpc_val->timestamp = iso8601_decode($val);\r
-                                                       return $xmlrpc_val;\r
-                                               case 'base64':\r
-                                                       $xmlrpc_val->scalar = $val;\r
-                                                       $xmlrpc_val->type = $typ;\r
-                                                       return $xmlrpc_val;\r
-                                               default:\r
-                                                       return $xmlrpc_val->scalarval();\r
-                                       }\r
-                               }\r
-                               return $xmlrpc_val->scalarval();\r
-                       case 'array':\r
-                               $size = $xmlrpc_val->arraysize();\r
-                               $arr = array();\r
-                               for($i = 0; $i < $size; $i++)\r
-                               {\r
-                                       $arr[] = php_xmlrpc_decode($xmlrpc_val->arraymem($i), $options);\r
-                               }\r
-                               return $arr;\r
-                       case 'struct':\r
-                               $xmlrpc_val->structreset();\r
-                               // If user said so, try to rebuild php objects for specific struct vals.\r
-                               /// @todo should we raise a warning for class not found?\r
-                               // shall we check for proper subclass of xmlrpcval instead of\r
-                               // presence of _php_class to detect what we can do?\r
-                               if (in_array('decode_php_objs', $options) && $xmlrpc_val->_php_class != ''\r
-                                       && class_exists($xmlrpc_val->_php_class))\r
-                               {\r
-                                       $obj = @new $xmlrpc_val->_php_class;\r
-                                       while(list($key,$value)=$xmlrpc_val->structeach())\r
-                                       {\r
-                                               $obj->$key = php_xmlrpc_decode($value, $options);\r
-                                       }\r
-                                       return $obj;\r
-                               }\r
-                               else\r
-                               {\r
-                                       $arr = array();\r
-                                       while(list($key,$value)=$xmlrpc_val->structeach())\r
-                                       {\r
-                                               $arr[$key] = php_xmlrpc_decode($value, $options);\r
-                                       }\r
-                                       return $arr;\r
-                               }\r
-                       case 'msg':\r
-                               $paramcount = $xmlrpc_val->getNumParams();\r
-                               $arr = array();\r
-                               for($i = 0; $i < $paramcount; $i++)\r
-                               {\r
-                                       $arr[] = php_xmlrpc_decode($xmlrpc_val->getParam($i));\r
-                               }\r
-                               return $arr;\r
-                       }\r
-       }\r
-\r
-       // This constant left here only for historical reasons...\r
-       // it was used to decide if we have to define xmlrpc_encode on our own, but\r
-       // we do not do it anymore\r
-       if(function_exists('xmlrpc_decode'))\r
-       {\r
-               define('XMLRPC_EPI_ENABLED','1');\r
-       }\r
-       else\r
-       {\r
-               define('XMLRPC_EPI_ENABLED','0');\r
-       }\r
-\r
-       /**\r
-       * Takes native php types and encodes them into xmlrpc PHP object format.\r
-       * It will not re-encode xmlrpcval objects.\r
-       *\r
-       * Feature creep -- could support more types via optional type argument\r
-       * (string => datetime support has been added, ??? => base64 not yet)\r
-       *\r
-       * If given a proper options parameter, php object instances will be encoded\r
-       * into 'special' xmlrpc values, that can later be decoded into php objects\r
-       * by calling php_xmlrpc_decode() with a corresponding option\r
-       *\r
-       * @author Dan Libby (dan@libby.com)\r
-       *\r
-       * @param mixed $php_val the value to be converted into an xmlrpcval object\r
-       * @param array $options can include 'encode_php_objs', 'auto_dates', 'null_extension' or 'extension_api'\r
-       * @return xmlrpcval\r
-       */\r
-       function &php_xmlrpc_encode($php_val, $options=array())\r
-       {\r
-               $type = gettype($php_val);\r
-               switch($type)\r
-               {\r
-                       case 'string':\r
-                               if (in_array('auto_dates', $options) && preg_match('/^[0-9]{8}T[0-9]{2}:[0-9]{2}:[0-9]{2}$/', $php_val))\r
-                                       $xmlrpc_val = new xmlrpcval($php_val, $GLOBALS['xmlrpcDateTime']);\r
-                               else\r
-                                       $xmlrpc_val = new xmlrpcval($php_val, $GLOBALS['xmlrpcString']);\r
-                               break;\r
-                       case 'integer':\r
-                               $xmlrpc_val = new xmlrpcval($php_val, $GLOBALS['xmlrpcInt']);\r
-                               break;\r
-                       case 'double':\r
-                               $xmlrpc_val = new xmlrpcval($php_val, $GLOBALS['xmlrpcDouble']);\r
-                               break;\r
-                               // <G_Giunta_2001-02-29>\r
-                               // Add support for encoding/decoding of booleans, since they are supported in PHP\r
-                       case 'boolean':\r
-                               $xmlrpc_val = new xmlrpcval($php_val, $GLOBALS['xmlrpcBoolean']);\r
-                               break;\r
-                               // </G_Giunta_2001-02-29>\r
-                       case 'array':\r
-                               // PHP arrays can be encoded to either xmlrpc structs or arrays,\r
-                               // depending on wheter they are hashes or plain 0..n integer indexed\r
-                               // A shorter one-liner would be\r
-                               // $tmp = array_diff(array_keys($php_val), range(0, count($php_val)-1));\r
-                               // but execution time skyrockets!\r
-                               $j = 0;\r
-                               $arr = array();\r
-                               $ko = false;\r
-                               foreach($php_val as $key => $val)\r
-                               {\r
-                                       $arr[$key] =& php_xmlrpc_encode($val, $options);\r
-                                       if(!$ko && $key !== $j)\r
-                                       {\r
-                                               $ko = true;\r
-                                       }\r
-                                       $j++;\r
-                               }\r
-                               if($ko)\r
-                               {\r
-                                       $xmlrpc_val = new xmlrpcval($arr, $GLOBALS['xmlrpcStruct']);\r
-                               }\r
-                               else\r
-                               {\r
-                                       $xmlrpc_val = new xmlrpcval($arr, $GLOBALS['xmlrpcArray']);\r
-                               }\r
-                               break;\r
-                       case 'object':\r
-                               if(is_a($php_val, 'xmlrpcval'))\r
-                               {\r
-                                       $xmlrpc_val = $php_val;\r
-                               }\r
-                               else\r
-                               {\r
-                                       $arr = array();\r
-                                       while(list($k,$v) = each($php_val))\r
-                                       {\r
-                                               $arr[$k] = php_xmlrpc_encode($v, $options);\r
-                                       }\r
-                                       $xmlrpc_val = new xmlrpcval($arr, $GLOBALS['xmlrpcStruct']);\r
-                                       if (in_array('encode_php_objs', $options))\r
-                                       {\r
-                                               // let's save original class name into xmlrpcval:\r
-                                               // might be useful later on...\r
-                                               $xmlrpc_val->_php_class = get_class($php_val);\r
-                                       }\r
-                               }\r
-                               break;\r
-                       case 'NULL':\r
-                               if (in_array('extension_api', $options))\r
-                               {\r
-                                       $xmlrpc_val = new xmlrpcval('', $GLOBALS['xmlrpcString']);\r
-                               }\r
-                               if (in_array('null_extension', $options))\r
-                               {\r
-                                       $xmlrpc_val = new xmlrpcval('', $GLOBALS['xmlrpcNull']);\r
-                               }\r
-                               else\r
-                               {\r
-                                       $xmlrpc_val = new xmlrpcval();\r
-                               }\r
-                               break;\r
-                       case 'resource':\r
-                               if (in_array('extension_api', $options))\r
-                               {\r
-                                       $xmlrpc_val = new xmlrpcval((int)$php_val, $GLOBALS['xmlrpcInt']);\r
-                               }\r
-                               else\r
-                               {\r
-                                       $xmlrpc_val = new xmlrpcval();\r
-                               }\r
-                       // catch "user function", "unknown type"\r
-                       default:\r
-                               // giancarlo pinerolo <ping@alt.it>\r
-                               // it has to return\r
-                               // an empty object in case, not a boolean.\r
-                               $xmlrpc_val = new xmlrpcval();\r
-                               break;\r
-                       }\r
-                       return $xmlrpc_val;\r
-       }\r
-\r
-       /**\r
-       * Convert the xml representation of a method response, method request or single\r
-       * xmlrpc value into the appropriate object (a.k.a. deserialize)\r
-       * @param string $xml_val\r
-       * @param array $options\r
-       * @return mixed false on error, or an instance of either xmlrpcval, xmlrpcmsg or xmlrpcresp\r
-       */\r
-       function php_xmlrpc_decode_xml($xml_val, $options=array())\r
-       {\r
-               $GLOBALS['_xh'] = array();\r
-               $GLOBALS['_xh']['ac'] = '';\r
-               $GLOBALS['_xh']['stack'] = array();\r
-               $GLOBALS['_xh']['valuestack'] = array();\r
-               $GLOBALS['_xh']['params'] = array();\r
-               $GLOBALS['_xh']['pt'] = array();\r
-               $GLOBALS['_xh']['isf'] = 0;\r
-               $GLOBALS['_xh']['isf_reason'] = '';\r
-               $GLOBALS['_xh']['method'] = false;\r
-               $GLOBALS['_xh']['rt'] = '';\r
-               /// @todo 'guestimate' encoding\r
-               $parser = xml_parser_create();\r
-               xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, true);\r
-               xml_parser_set_option($parser, XML_OPTION_TARGET_ENCODING, $GLOBALS['xmlrpc_internalencoding']);\r
-               xml_set_element_handler($parser, 'xmlrpc_se_any', 'xmlrpc_ee');\r
-               xml_set_character_data_handler($parser, 'xmlrpc_cd');\r
-               xml_set_default_handler($parser, 'xmlrpc_dh');\r
-               if(!xml_parse($parser, $xml_val, 1))\r
-               {\r
-                       $errstr = sprintf('XML error: %s at line %d, column %d',\r
-                                               xml_error_string(xml_get_error_code($parser)),\r
-                                               xml_get_current_line_number($parser), xml_get_current_column_number($parser));\r
-                       error_log($errstr);\r
-                       xml_parser_free($parser);\r
-                       return false;\r
-               }\r
-               xml_parser_free($parser);\r
-               if ($GLOBALS['_xh']['isf'] > 1) // test that $GLOBALS['_xh']['value'] is an obj, too???\r
-               {\r
-                       error_log($GLOBALS['_xh']['isf_reason']);\r
-                       return false;\r
-               }\r
-               switch ($GLOBALS['_xh']['rt'])\r
-               {\r
-                       case 'methodresponse':\r
-                               $v =& $GLOBALS['_xh']['value'];\r
-                               if ($GLOBALS['_xh']['isf'] == 1)\r
-                               {\r
-                                       $vc = $v->structmem('faultCode');\r
-                                       $vs = $v->structmem('faultString');\r
-                                       $r = new xmlrpcresp(0, $vc->scalarval(), $vs->scalarval());\r
-                               }\r
-                               else\r
-                               {\r
-                                       $r = new xmlrpcresp($v);\r
-                               }\r
-                               return $r;\r
-                       case 'methodcall':\r
-                               $m = new xmlrpcmsg($GLOBALS['_xh']['method']);\r
-                               for($i=0; $i < count($GLOBALS['_xh']['params']); $i++)\r
-                               {\r
-                                       $m->addParam($GLOBALS['_xh']['params'][$i]);\r
-                               }\r
-                               return $m;\r
-                       case 'value':\r
-                               return $GLOBALS['_xh']['value'];\r
-                       default:\r
-                               return false;\r
-               }\r
-       }\r
-\r
-       /**\r
-       * decode a string that is encoded w/ "chunked" transfer encoding\r
-       * as defined in rfc2068 par. 19.4.6\r
-       * code shamelessly stolen from nusoap library by Dietrich Ayala\r
-       *\r
-       * @param string $buffer the string to be decoded\r
-       * @return string\r
-       */\r
-       function decode_chunked($buffer)\r
-       {\r
-               // length := 0\r
-               $length = 0;\r
-               $new = '';\r
-\r
-               // read chunk-size, chunk-extension (if any) and crlf\r
-               // get the position of the linebreak\r
-               $chunkend = i18n::strpos($buffer,"\r\n") + 2;\r
-               $temp = i18n::substr($buffer,0,$chunkend);\r
-               $chunk_size = hexdec( trim($temp) );\r
-               $chunkstart = $chunkend;\r
-               while($chunk_size > 0)\r
-               {\r
-                       $chunkend = i18n::strpos($buffer, "\r\n", $chunkstart + $chunk_size);\r
-\r
-                       // just in case we got a broken connection\r
-                       if($chunkend == false)\r
-                       {\r
-                               $chunk = i18n::substr($buffer,$chunkstart);\r
-                               // append chunk-data to entity-body\r
-                               $new .= $chunk;\r
-                               $length += i18n::strlen($chunk);\r
-                               break;\r
-                       }\r
-\r
-                       // read chunk-data and crlf\r
-                       $chunk = i18n::substr($buffer,$chunkstart,$chunkend-$chunkstart);\r
-                       // append chunk-data to entity-body\r
-                       $new .= $chunk;\r
-                       // length := length + chunk-size\r
-                       $length += i18n::strlen($chunk);\r
-                       // read chunk-size and crlf\r
-                       $chunkstart = $chunkend + 2;\r
-\r
-                       $chunkend = i18n::strpos($buffer,"\r\n",$chunkstart)+2;\r
-                       if($chunkend == false)\r
-                       {\r
-                               break; //just in case we got a broken connection\r
-                       }\r
-                       $temp = i18n::substr($buffer,$chunkstart,$chunkend-$chunkstart);\r
-                       $chunk_size = hexdec( trim($temp) );\r
-                       $chunkstart = $chunkend;\r
-               }\r
-               return $new;\r
-       }\r
-\r
-       /**\r
-       * xml charset encoding guessing helper function.\r
-       * Tries to determine the charset encoding of an XML chunk\r
-       * received over HTTP.\r
-       * NB: according to the spec (RFC 3023, if text/xml content-type is received over HTTP without a content-type,\r
-       * we SHOULD assume it is strictly US-ASCII. But we try to be more tolerant of unconforming (legacy?) clients/servers,\r
-       * which will be most probably using UTF-8 anyway...\r
-       *\r
-       * @param string $httpheaders the http Content-type header\r
-       * @param string $xmlchunk xml content buffer\r
-       * @param string $encoding_prefs comma separated list of character encodings to be used as default (when mb extension is enabled)\r
-       *\r
-       * @todo explore usage of mb_http_input(): does it detect http headers + post data? if so, use it instead of hand-detection!!!\r
-       */\r
-       function guess_encoding($httpheader='', $xmlchunk='', $encoding_prefs=null)\r
-       {\r
-               // discussion: see http://www.yale.edu/pclt/encoding/\r
-               // 1 - test if encoding is specified in HTTP HEADERS\r
-\r
-               //Details:\r
-               // LWS:           (\13\10)?( |\t)+\r
-               // token:         (any char but excluded stuff)+\r
-               // header:        Content-type = ...; charset=value(; ...)*\r
-               //   where value is of type token, no LWS allowed between 'charset' and value\r
-               // Note: we do not check for invalid chars in VALUE:\r
-               //   this had better be done using pure ereg as below\r
-\r
-               /// @todo this test will pass if ANY header has charset specification, not only Content-Type. Fix it?\r
-               $matches = array();\r
-               if(preg_match('/;\s*charset=([^;]+)/i', $httpheader, $matches))\r
-               {\r
-                       return strtoupper(trim($matches[1]));\r
-               }\r
-\r
-               // 2 - scan the first bytes of the data for a UTF-16 (or other) BOM pattern\r
-               //     (source: http://www.w3.org/TR/2000/REC-xml-20001006)\r
-               //     NOTE: actually, according to the spec, even if we find the BOM and determine\r
-               //     an encoding, we should check if there is an encoding specified\r
-               //     in the xml declaration, and verify if they match.\r
-               /// @todo implement check as described above?\r
-               /// @todo implement check for first bytes of string even without a BOM? (It sure looks harder than for cases WITH a BOM)\r
-               if(preg_match('/^(\x00\x00\xFE\xFF|\xFF\xFE\x00\x00|\x00\x00\xFF\xFE|\xFE\xFF\x00\x00)/', $xmlchunk))\r
-               {\r
-                       return 'UCS-4';\r
-               }\r
-               elseif(preg_match('/^(\xFE\xFF|\xFF\xFE)/', $xmlchunk))\r
-               {\r
-                       return 'UTF-16';\r
-               }\r
-               elseif(preg_match('/^(\xEF\xBB\xBF)/', $xmlchunk))\r
-               {\r
-                       return 'UTF-8';\r
-               }\r
-\r
-               // 3 - test if encoding is specified in the xml declaration\r
-               // Details:\r
-               // SPACE:         (#x20 | #x9 | #xD | #xA)+ === [ \x9\xD\xA]+\r
-               // EQ:            SPACE?=SPACE? === [ \x9\xD\xA]*=[ \x9\xD\xA]*\r
-               if (preg_match('/^<\?xml\s+version\s*=\s*'. "((?:\"[a-zA-Z0-9_.:-]+\")|(?:'[a-zA-Z0-9_.:-]+'))".\r
-                       '\s+encoding\s*=\s*' . "((?:\"[A-Za-z][A-Za-z0-9._-]*\")|(?:'[A-Za-z][A-Za-z0-9._-]*'))/",\r
-                       $xmlchunk, $matches))\r
-               {\r
-                       return strtoupper(i18n::substr($matches[2], 1, -1));\r
-               }\r
-\r
-               // 4 - if mbstring is available, let it do the guesswork\r
-               // NB: we favour finding an encoding that is compatible with what we can process\r
-               if(extension_loaded('mbstring'))\r
-               {\r
-                       if($encoding_prefs)\r
-                       {\r
-                               $enc = mb_detect_encoding($xmlchunk, $encoding_prefs);\r
-                       }\r
-                       else\r
-                       {\r
-                               $enc = mb_detect_encoding($xmlchunk);\r
-                       }\r
-                       // NB: mb_detect likes to call it ascii, xml parser likes to call it US_ASCII...\r
-                       // IANA also likes better US-ASCII, so go with it\r
-                       if($enc == 'ASCII')\r
-                       {\r
-                               $enc = 'US-'.$enc;\r
-                       }\r
-                       return $enc;\r
-               }\r
-               else\r
-               {\r
-                       // no encoding specified: as per HTTP1.1 assume it is iso-8859-1?\r
-                       // Both RFC 2616 (HTTP 1.1) and 1945(http 1.0) clearly state that for text/xxx content types\r
-                       // this should be the standard. And we should be getting text/xml as request and response.\r
-                       // BUT we have to be backward compatible with the lib, which always used UTF-8 as default...\r
-                       return $GLOBALS['xmlrpc_defencoding'];\r
-               }\r
-       }\r
-\r
-       /**\r
-       * Checks if a given charset encoding is present in a list of encodings or\r
-       * if it is a valid subset of any encoding in the list\r
-       * @param string $encoding charset to be tested\r
-       * @param mixed $validlist comma separated list of valid charsets (or array of charsets)\r
-       */\r
-       function is_valid_charset($encoding, $validlist)\r
-       {\r
-               $charset_supersets = array(\r
-                       'US-ASCII' => array ('ISO-8859-1', 'ISO-8859-2', 'ISO-8859-3', 'ISO-8859-4',\r
-                               'ISO-8859-5', 'ISO-8859-6', 'ISO-8859-7', 'ISO-8859-8',\r
-                               'ISO-8859-9', 'ISO-8859-10', 'ISO-8859-11', 'ISO-8859-12',\r
-                               'ISO-8859-13', 'ISO-8859-14', 'ISO-8859-15', 'UTF-8',\r
-                               'EUC-JP', 'EUC-', 'EUC-KR', 'EUC-CN')\r
-               );\r
-               if (is_string($validlist))\r
-                       $validlist = preg_split('#,#', $validlist);\r
-               if (@in_array(strtoupper($encoding), $validlist))\r
-                       return true;\r
-               else\r
-               {\r
-                       if (array_key_exists($encoding, $charset_supersets))\r
-                               foreach ($validlist as $allowed)\r
-                                       if (in_array($allowed, $charset_supersets[$encoding]))\r
-                                               return true;\r
-                               return false;\r
-               }\r
-       }\r
-\r
-?>\r
+<?php
+// by Edd Dumbill (C) 1999-2002
+// <edd@usefulinc.com>
+// $Original: xmlrpc.inc,v 1.158 2007/03/01 21:21:02 ggiunta Exp $
+// $Id: xmlrpc.inc.php 1737 2012-04-10 14:32:11Z sakamocchi $
+
+
+// Copyright (c) 1999,2000,2002 Edd Dumbill.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions
+// are met:
+//
+//    * Redistributions of source code must retain the above copyright
+//      notice, this list of conditions and the following disclaimer.
+//
+//    * Redistributions in binary form must reproduce the above
+//      copyright notice, this list of conditions and the following
+//      disclaimer in the documentation and/or other materials provided
+//      with the distribution.
+//
+//    * Neither the name of the "XML-RPC for PHP" nor the names of its
+//      contributors may be used to endorse or promote products derived
+//      from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+// REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+// OF THE POSSIBILITY OF SUCH DAMAGE.
+
+       if(!function_exists('xml_parser_create'))
+       {
+               // For PHP 4 onward, XML functionality is always compiled-in on windows:
+               // no more need to dl-open it. It might have been compiled out on *nix...
+               //if(strtoupper(substr(PHP_OS, 0, 3) != 'WIN'))
+               $phpver = phpversion();
+               if (!extension_loaded('xml') && version_compare($phpver,'5.3.0','<'))
+               {
+                       dl('xml.so');
+               }
+       }
+
+       // Try to be backward compat with php < 4.2 (are we not being nice ?)
+       $phpversion = phpversion();
+       if($phpversion[0] == '4' && $phpversion[2] < 2)
+       {
+               // give an opportunity to user to specify where to include other files from
+               if(!defined('PHP_XMLRPC_COMPAT_DIR'))
+               {
+                       define('PHP_XMLRPC_COMPAT_DIR',dirname(__FILE__).'/compat/');
+               }
+               if($phpversion[2] == '0')
+               {
+                       if($phpversion[4] < 6)
+                       {
+                               include(PHP_XMLRPC_COMPAT_DIR.'is_callable.php');
+                       }
+                       include(PHP_XMLRPC_COMPAT_DIR.'is_scalar.php');
+                       include(PHP_XMLRPC_COMPAT_DIR.'array_key_exists.php');
+                       include(PHP_XMLRPC_COMPAT_DIR.'version_compare.php');
+               }
+               include(PHP_XMLRPC_COMPAT_DIR.'var_export.php');
+               include(PHP_XMLRPC_COMPAT_DIR.'is_a.php');
+       }
+
+       // G. Giunta 2005/01/29: declare global these variables,
+       // so that xmlrpc.inc will work even if included from within a function
+       // Milosch: 2005/08/07 - explicitly request these via $GLOBALS where used.
+       $GLOBALS['xmlrpcI4']='i4';
+       $GLOBALS['xmlrpcInt']='int';
+       $GLOBALS['xmlrpcBoolean']='boolean';
+       $GLOBALS['xmlrpcDouble']='double';
+       $GLOBALS['xmlrpcString']='string';
+       $GLOBALS['xmlrpcDateTime']='dateTime.iso8601';
+       $GLOBALS['xmlrpcBase64']='base64';
+       $GLOBALS['xmlrpcArray']='array';
+       $GLOBALS['xmlrpcStruct']='struct';
+       $GLOBALS['xmlrpcValue']='undefined';
+
+       $GLOBALS['xmlrpcTypes']=array(
+               $GLOBALS['xmlrpcI4']       => 1,
+               $GLOBALS['xmlrpcInt']      => 1,
+               $GLOBALS['xmlrpcBoolean']  => 1,
+               $GLOBALS['xmlrpcString']   => 1,
+               $GLOBALS['xmlrpcDouble']   => 1,
+               $GLOBALS['xmlrpcDateTime'] => 1,
+               $GLOBALS['xmlrpcBase64']   => 1,
+               $GLOBALS['xmlrpcArray']    => 2,
+               $GLOBALS['xmlrpcStruct']   => 3
+       );
+
+       $GLOBALS['xmlrpc_valid_parents'] = array(
+               'VALUE' => array('MEMBER', 'DATA', 'PARAM', 'FAULT'),
+               'BOOLEAN' => array('VALUE'),
+               'I4' => array('VALUE'),
+               'INT' => array('VALUE'),
+               'STRING' => array('VALUE'),
+               'DOUBLE' => array('VALUE'),
+               'DATETIME.ISO8601' => array('VALUE'),
+               'BASE64' => array('VALUE'),
+               'MEMBER' => array('STRUCT'),
+               'NAME' => array('MEMBER'),
+               'DATA' => array('ARRAY'),
+               'ARRAY' => array('VALUE'),
+               'STRUCT' => array('VALUE'),
+               'PARAM' => array('PARAMS'),
+               'METHODNAME' => array('METHODCALL'),
+               'PARAMS' => array('METHODCALL', 'METHODRESPONSE'),
+               'FAULT' => array('METHODRESPONSE'),
+               'NIL' => array('VALUE') // only used when extension activated
+       );
+
+       // define extra types for supporting NULL (useful for json or <NIL/>)
+       $GLOBALS['xmlrpcNull']='null';
+       $GLOBALS['xmlrpcTypes']['null']=1;
+
+       // Not in use anymore since 2.0. Shall we remove it?
+       /// @deprecated
+       $GLOBALS['xmlEntities']=array(
+               'amp'  => '&',
+               'quot' => '"',
+               'lt'   => '<',
+               'gt'   => '>',
+               'apos' => "'"
+       );
+
+       // tables used for transcoding different charsets into us-ascii xml
+
+       $GLOBALS['xml_iso88591_Entities']=array();
+       $GLOBALS['xml_iso88591_Entities']['in'] = array();
+       $GLOBALS['xml_iso88591_Entities']['out'] = array();
+       for ($i = 0; $i < 32; $i++)
+       {
+               $GLOBALS['xml_iso88591_Entities']['in'][] = chr($i);
+               $GLOBALS['xml_iso88591_Entities']['out'][] = '&#'.$i.';';
+       }
+       for ($i = 160; $i < 256; $i++)
+       {
+               $GLOBALS['xml_iso88591_Entities']['in'][] = chr($i);
+               $GLOBALS['xml_iso88591_Entities']['out'][] = '&#'.$i.';';
+       }
+
+       /// @todo add to iso table the characters from cp_1252 range, i.e. 128 to 159.
+       /// These will NOT be present in true ISO-8859-1, but will save the unwary
+       /// windows user from sending junk.
+/*
+$cp1252_to_xmlent =
+  array(
+   '\x80'=>'&#x20AC;', '\x81'=>'?', '\x82'=>'&#x201A;', '\x83'=>'&#x0192;',
+   '\x84'=>'&#x201E;', '\x85'=>'&#x2026;', '\x86'=>'&#x2020;', \x87'=>'&#x2021;',
+   '\x88'=>'&#x02C6;', '\x89'=>'&#x2030;', '\x8A'=>'&#x0160;', '\x8B'=>'&#x2039;',
+   '\x8C'=>'&#x0152;', '\x8D'=>'?', '\x8E'=>'&#x017D;', '\x8F'=>'?',
+   '\x90'=>'?', '\x91'=>'&#x2018;', '\x92'=>'&#x2019;', '\x93'=>'&#x201C;',
+   '\x94'=>'&#x201D;', '\x95'=>'&#x2022;', '\x96'=>'&#x2013;', '\x97'=>'&#x2014;',
+   '\x98'=>'&#x02DC;', '\x99'=>'&#x2122;', '\x9A'=>'&#x0161;', '\x9B'=>'&#x203A;',
+   '\x9C'=>'&#x0153;', '\x9D'=>'?', '\x9E'=>'&#x017E;', '\x9F'=>'&#x0178;'
+  );
+*/
+
+       $GLOBALS['xmlrpcerr']['unknown_method']=1;
+       $GLOBALS['xmlrpcstr']['unknown_method']='Unknown method';
+       $GLOBALS['xmlrpcerr']['invalid_return']=2;
+       $GLOBALS['xmlrpcstr']['invalid_return']='Invalid return payload: enable debugging to examine incoming payload';
+       $GLOBALS['xmlrpcerr']['incorrect_params']=3;
+       $GLOBALS['xmlrpcstr']['incorrect_params']='Incorrect parameters passed to method';
+       $GLOBALS['xmlrpcerr']['introspect_unknown']=4;
+       $GLOBALS['xmlrpcstr']['introspect_unknown']="Can't introspect: method unknown";
+       $GLOBALS['xmlrpcerr']['http_error']=5;
+       $GLOBALS['xmlrpcstr']['http_error']="Didn't receive 200 OK from remote server.";
+       $GLOBALS['xmlrpcerr']['no_data']=6;
+       $GLOBALS['xmlrpcstr']['no_data']='No data received from server.';
+       $GLOBALS['xmlrpcerr']['no_ssl']=7;
+       $GLOBALS['xmlrpcstr']['no_ssl']='No SSL support compiled in.';
+       $GLOBALS['xmlrpcerr']['curl_fail']=8;
+       $GLOBALS['xmlrpcstr']['curl_fail']='CURL error';
+       $GLOBALS['xmlrpcerr']['invalid_request']=15;
+       $GLOBALS['xmlrpcstr']['invalid_request']='Invalid request payload';
+       $GLOBALS['xmlrpcerr']['no_curl']=16;
+       $GLOBALS['xmlrpcstr']['no_curl']='No CURL support compiled in.';
+       $GLOBALS['xmlrpcerr']['server_error']=17;
+       $GLOBALS['xmlrpcstr']['server_error']='Internal server error';
+       $GLOBALS['xmlrpcerr']['multicall_error']=18;
+       $GLOBALS['xmlrpcstr']['multicall_error']='Received from server invalid multicall response';
+
+       $GLOBALS['xmlrpcerr']['multicall_notstruct'] = 9;
+       $GLOBALS['xmlrpcstr']['multicall_notstruct'] = 'system.multicall expected struct';
+       $GLOBALS['xmlrpcerr']['multicall_nomethod']  = 10;
+       $GLOBALS['xmlrpcstr']['multicall_nomethod']  = 'missing methodName';
+       $GLOBALS['xmlrpcerr']['multicall_notstring'] = 11;
+       $GLOBALS['xmlrpcstr']['multicall_notstring'] = 'methodName is not a string';
+       $GLOBALS['xmlrpcerr']['multicall_recursion'] = 12;
+       $GLOBALS['xmlrpcstr']['multicall_recursion'] = 'recursive system.multicall forbidden';
+       $GLOBALS['xmlrpcerr']['multicall_noparams']  = 13;
+       $GLOBALS['xmlrpcstr']['multicall_noparams']  = 'missing params';
+       $GLOBALS['xmlrpcerr']['multicall_notarray']  = 14;
+       $GLOBALS['xmlrpcstr']['multicall_notarray']  = 'params is not an array';
+
+       $GLOBALS['xmlrpcerr']['cannot_decompress']=103;
+       $GLOBALS['xmlrpcstr']['cannot_decompress']='Received from server compressed HTTP and cannot decompress';
+       $GLOBALS['xmlrpcerr']['decompress_fail']=104;
+       $GLOBALS['xmlrpcstr']['decompress_fail']='Received from server invalid compressed HTTP';
+       $GLOBALS['xmlrpcerr']['dechunk_fail']=105;
+       $GLOBALS['xmlrpcstr']['dechunk_fail']='Received from server invalid chunked HTTP';
+       $GLOBALS['xmlrpcerr']['server_cannot_decompress']=106;
+       $GLOBALS['xmlrpcstr']['server_cannot_decompress']='Received from client compressed HTTP request and cannot decompress';
+       $GLOBALS['xmlrpcerr']['server_decompress_fail']=107;
+       $GLOBALS['xmlrpcstr']['server_decompress_fail']='Received from client invalid compressed HTTP request';
+
+       // The charset encoding used by the server for received messages and
+       // by the client for received responses when received charset cannot be determined
+       // or is not supported
+       $GLOBALS['xmlrpc_defencoding']='UTF-8';
+
+       // The encoding used internally by PHP.
+       // String values received as xml will be converted to this, and php strings will be converted to xml
+       // as if having been coded with this
+       $GLOBALS['xmlrpc_internalencoding']='ISO-8859-1';
+
+       $GLOBALS['xmlrpcName']='XML-RPC for PHP';
+       $GLOBALS['xmlrpcVersion']='2.2';
+
+       // let user errors start at 800
+       $GLOBALS['xmlrpcerruser']=800;
+       // let XML parse errors start at 100
+       $GLOBALS['xmlrpcerrxml']=100;
+
+       // formulate backslashes for escaping regexp
+       // Not in use anymore since 2.0. Shall we remove it?
+       /// @deprecated
+       $GLOBALS['xmlrpc_backslash']=chr(92).chr(92);
+
+       // set to TRUE to enable correct decoding of <NIL/> values
+       $GLOBALS['xmlrpc_null_extension']=false;
+
+       // used to store state during parsing
+       // quick explanation of components:
+       //   ac - used to accumulate values
+       //   isf - used to indicate a parsing fault (2) or xmlrpcresp fault (1)
+       //   isf_reason - used for storing xmlrpcresp fault string
+       //   lv - used to indicate "looking for a value": implements
+       //        the logic to allow values with no types to be strings
+       //   params - used to store parameters in method calls
+       //   method - used to store method name
+       //   stack - array with genealogy of xml elements names:
+       //           used to validate nesting of xmlrpc elements
+       $GLOBALS['_xh']=null;
+
+       /**
+       * Convert a string to the correct XML representation in a target charset
+       * To help correct communication of non-ascii chars inside strings, regardless
+       * of the charset used when sending requests, parsing them, sending responses
+       * and parsing responses, an option is to convert all non-ascii chars present in the message
+       * into their equivalent 'charset entity'. Charset entities enumerated this way
+       * are independent of the charset encoding used to transmit them, and all XML
+       * parsers are bound to understand them.
+       * Note that in the std case we are not sending a charset encoding mime type
+       * along with http headers, so we are bound by RFC 3023 to emit strict us-ascii.
+       *
+       * @todo do a bit of basic benchmarking (strtr vs. str_replace)
+       * @todo make usage of iconv() or recode_string() or mb_string() where available
+       */
+       function xmlrpc_encode_entitites($data, $src_encoding='', $dest_encoding='')
+       {
+               if ($src_encoding == '')
+               {
+                       // lame, but we know no better...
+                       $src_encoding = $GLOBALS['xmlrpc_internalencoding'];
+               }
+
+               switch(strtoupper($src_encoding.'_'.$dest_encoding))
+               {
+                       case 'ISO-8859-1_':
+                       case 'ISO-8859-1_US-ASCII':
+                               $escaped_data = str_replace(array('&', '"', "'", '<', '>'), array('&amp;', '&quot;', '&apos;', '&lt;', '&gt;'), $data);
+                               $escaped_data = str_replace($GLOBALS['xml_iso88591_Entities']['in'], $GLOBALS['xml_iso88591_Entities']['out'], $escaped_data);
+                               break;
+                       case 'ISO-8859-1_UTF-8':
+                               $escaped_data = str_replace(array('&', '"', "'", '<', '>'), array('&amp;', '&quot;', '&apos;', '&lt;', '&gt;'), $data);
+                               $escaped_data = utf8_encode($escaped_data);
+                               break;
+                       case 'ISO-8859-1_ISO-8859-1':
+                       case 'US-ASCII_US-ASCII':
+                       case 'US-ASCII_UTF-8':
+                       case 'US-ASCII_':
+                       case 'US-ASCII_ISO-8859-1':
+                       case 'UTF-8_UTF-8':
+                               $escaped_data = str_replace(array('&', '"', "'", '<', '>'), array('&amp;', '&quot;', '&apos;', '&lt;', '&gt;'), $data);
+                               break;
+                       case 'UTF-8_':
+                       case 'UTF-8_US-ASCII':
+                       case 'UTF-8_ISO-8859-1':
+       // NB: this will choke on invalid UTF-8, going most likely beyond EOF
+       $escaped_data = '';
+       // be kind to users creating string xmlrpcvals out of different php types
+       $data = (string) $data;
+       $ns = i18n::strlen ($data);
+       for ($nn = 0; $nn < $ns; $nn++)
+       {
+               $ch = $data[$nn];
+               $ii = ord($ch);
+               //1 7 0bbbbbbb (127)
+               if ($ii < 128)
+               {
+                       /// @todo shall we replace this with a (supposedly) faster str_replace?
+                       switch($ii){
+                               case 34:
+                                       $escaped_data .= '&quot;';
+                                       break;
+                               case 38:
+                                       $escaped_data .= '&amp;';
+                                       break;
+                               case 39:
+                                       $escaped_data .= '&apos;';
+                                       break;
+                               case 60:
+                                       $escaped_data .= '&lt;';
+                                       break;
+                               case 62:
+                                       $escaped_data .= '&gt;';
+                                       break;
+                               default:
+                                       $escaped_data .= $ch;
+                       } // switch
+               }
+               //2 11 110bbbbb 10bbbbbb (2047)
+               else if ($ii>>5 == 6)
+               {
+                       $b1 = ($ii & 31);
+                       $ii = ord($data[$nn+1]);
+                       $b2 = ($ii & 63);
+                       $ii = ($b1 * 64) + $b2;
+                       $ent = sprintf ('&#%d;', $ii);
+                       $escaped_data .= $ent;
+                       $nn += 1;
+               }
+               //3 16 1110bbbb 10bbbbbb 10bbbbbb
+               else if ($ii>>4 == 14)
+               {
+                       $b1 = ($ii & 31);
+                       $ii = ord($data[$nn+1]);
+                       $b2 = ($ii & 63);
+                       $ii = ord($data[$nn+2]);
+                       $b3 = ($ii & 63);
+                       $ii = ((($b1 * 64) + $b2) * 64) + $b3;
+                       $ent = sprintf ('&#%d;', $ii);
+                       $escaped_data .= $ent;
+                       $nn += 2;
+               }
+               //4 21 11110bbb 10bbbbbb 10bbbbbb 10bbbbbb
+               else if ($ii>>3 == 30)
+               {
+                       $b1 = ($ii & 31);
+                       $ii = ord($data[$nn+1]);
+                       $b2 = ($ii & 63);
+                       $ii = ord($data[$nn+2]);
+                       $b3 = ($ii & 63);
+                       $ii = ord($data[$nn+3]);
+                       $b4 = ($ii & 63);
+                       $ii = ((((($b1 * 64) + $b2) * 64) + $b3) * 64) + $b4;
+                       $ent = sprintf ('&#%d;', $ii);
+                       $escaped_data .= $ent;
+                       $nn += 3;
+               }
+       }
+                               break;
+                       default:
+                               $escaped_data = '';
+                               error_log("Converting from $src_encoding to $dest_encoding: not supported...");
+               }
+               return $escaped_data;
+       }
+
+       /// xml parser handler function for opening element tags
+       function xmlrpc_se($parser, $name, $attrs, $accept_single_vals=false)
+       {
+               // if invalid xmlrpc already detected, skip all processing
+               if ($GLOBALS['_xh']['isf'] < 2)
+               {
+                       // check for correct element nesting
+                       // top level element can only be of 2 types
+                       /// @todo optimization creep: save this check into a bool variable, instead of using count() every time:
+                       ///       there is only a single top level element in xml anyway
+                       if (count($GLOBALS['_xh']['stack']) == 0)
+                       {
+                               if ($name != 'METHODRESPONSE' && $name != 'METHODCALL' && (
+                                       $name != 'VALUE' && !$accept_single_vals))
+                               {
+                                       $GLOBALS['_xh']['isf'] = 2;
+                                       $GLOBALS['_xh']['isf_reason'] = 'missing top level xmlrpc element';
+                                       return;
+                               }
+                               else
+                               {
+                                       $GLOBALS['_xh']['rt'] = strtolower($name);
+                               }
+                       }
+                       else
+                       {
+                               // not top level element: see if parent is OK
+                               $parent = end($GLOBALS['_xh']['stack']);
+                               if (!array_key_exists($name, $GLOBALS['xmlrpc_valid_parents']) || !in_array($parent, $GLOBALS['xmlrpc_valid_parents'][$name]))
+                               {
+                                       $GLOBALS['_xh']['isf'] = 2;
+                                       $GLOBALS['_xh']['isf_reason'] = "xmlrpc element $name cannot be child of $parent";
+                                       return;
+                               }
+                       }
+
+                       switch($name)
+                       {
+                               // optimize for speed switch cases: most common cases first
+                               case 'VALUE':
+                                       /// @todo we could check for 2 VALUE elements inside a MEMBER or PARAM element
+                                       $GLOBALS['_xh']['vt']='value'; // indicator: no value found yet
+                                       $GLOBALS['_xh']['ac']='';
+                                       $GLOBALS['_xh']['lv']=1;
+                                       $GLOBALS['_xh']['php_class']=null;
+                                       break;
+                               case 'I4':
+                               case 'INT':
+                               case 'STRING':
+                               case 'BOOLEAN':
+                               case 'DOUBLE':
+                               case 'DATETIME.ISO8601':
+                               case 'BASE64':
+                                       if ($GLOBALS['_xh']['vt']!='value')
+                                       {
+                                               //two data elements inside a value: an error occurred!
+                                               $GLOBALS['_xh']['isf'] = 2;
+                                               $GLOBALS['_xh']['isf_reason'] = "$name element following a {$GLOBALS['_xh']['vt']} element inside a single value";
+                                               return;
+                                       }
+                                       $GLOBALS['_xh']['ac']=''; // reset the accumulator
+                                       break;
+                               case 'STRUCT':
+                               case 'ARRAY':
+                                       if ($GLOBALS['_xh']['vt']!='value')
+                                       {
+                                               //two data elements inside a value: an error occurred!
+                                               $GLOBALS['_xh']['isf'] = 2;
+                                               $GLOBALS['_xh']['isf_reason'] = "$name element following a {$GLOBALS['_xh']['vt']} element inside a single value";
+                                               return;
+                                       }
+                                       // create an empty array to hold child values, and push it onto appropriate stack
+                                       $cur_val = array();
+                                       $cur_val['values'] = array();
+                                       $cur_val['type'] = $name;
+                                       // check for out-of-band information to rebuild php objs
+                                       // and in case it is found, save it
+                                       if (@isset($attrs['PHP_CLASS']))
+                                       {
+                                               $cur_val['php_class'] = $attrs['PHP_CLASS'];
+                                       }
+                                       $GLOBALS['_xh']['valuestack'][] = $cur_val;
+                                       $GLOBALS['_xh']['vt']='data'; // be prepared for a data element next
+                                       break;
+                               case 'DATA':
+                                       if ($GLOBALS['_xh']['vt']!='data')
+                                       {
+                                               //two data elements inside a value: an error occurred!
+                                               $GLOBALS['_xh']['isf'] = 2;
+                                               $GLOBALS['_xh']['isf_reason'] = "found two data elements inside an array element";
+                                               return;
+                                       }
+                               case 'METHODCALL':
+                               case 'METHODRESPONSE':
+                               case 'PARAMS':
+                                       // valid elements that add little to processing
+                                       break;
+                               case 'METHODNAME':
+                               case 'NAME':
+                                       /// @todo we could check for 2 NAME elements inside a MEMBER element
+                                       $GLOBALS['_xh']['ac']='';
+                                       break;
+                               case 'FAULT':
+                                       $GLOBALS['_xh']['isf']=1;
+                                       break;
+                               case 'MEMBER':
+                                       $GLOBALS['_xh']['valuestack'][count($GLOBALS['_xh']['valuestack'])-1]['name']=''; // set member name to null, in case we do not find in the xml later on
+                                       //$GLOBALS['_xh']['ac']='';
+                                       // Drop trough intentionally
+                               case 'PARAM':
+                                       // clear value type, so we can check later if no value has been passed for this param/member
+                                       $GLOBALS['_xh']['vt']=null;
+                                       break;
+                               case 'NIL':
+                                       if ($GLOBALS['xmlrpc_null_extension'])
+                                       {
+                                               if ($GLOBALS['_xh']['vt']!='value')
+                                               {
+                                                       //two data elements inside a value: an error occurred!
+                                                       $GLOBALS['_xh']['isf'] = 2;
+                                                       $GLOBALS['_xh']['isf_reason'] = "$name element following a {$GLOBALS['_xh']['vt']} element inside a single value";
+                                                       return;
+                                               }
+                                               $GLOBALS['_xh']['ac']=''; // reset the accumulator
+                                               break;
+                                       }
+                                       // we do not support the <NIL/> extension, so
+                                       // drop through intentionally
+                               default:
+                                       /// INVALID ELEMENT: RAISE ISF so that it is later recognized!!!
+                                       $GLOBALS['_xh']['isf'] = 2;
+                                       $GLOBALS['_xh']['isf_reason'] = "found not-xmlrpc xml element $name";
+                                       break;
+                       }
+
+                       // Save current element name to stack, to validate nesting
+                       $GLOBALS['_xh']['stack'][] = $name;
+
+                       /// @todo optimization creep: move this inside the big switch() above
+                       if($name!='VALUE')
+                       {
+                               $GLOBALS['_xh']['lv']=0;
+                       }
+               }
+       }
+
+       /// Used in decoding xml chunks that might represent single xmlrpc values
+       function xmlrpc_se_any($parser, $name, $attrs)
+       {
+               xmlrpc_se($parser, $name, $attrs, true);
+       }
+
+       /// xml parser handler function for close element tags
+       function xmlrpc_ee($parser, $name, $rebuild_xmlrpcvals = true)
+       {
+               if ($GLOBALS['_xh']['isf'] < 2)
+               {
+                       // push this element name from stack
+                       // NB: if XML validates, correct opening/closing is guaranteed and
+                       // we do not have to check for $name == $curr_elem.
+                       // we also checked for proper nesting at start of elements...
+                       $curr_elem = array_pop($GLOBALS['_xh']['stack']);
+
+                       switch($name)
+                       {
+                               case 'VALUE':
+                                       // This if() detects if no scalar was inside <VALUE></VALUE>
+                                       if ($GLOBALS['_xh']['vt']=='value')
+                                       {
+                                               $GLOBALS['_xh']['value']=$GLOBALS['_xh']['ac'];
+                                               $GLOBALS['_xh']['vt']=$GLOBALS['xmlrpcString'];
+                                       }
+
+                                       if ($rebuild_xmlrpcvals)
+                                       {
+                                               // build the xmlrpc val out of the data received, and substitute it
+                                               $temp = new xmlrpcval($GLOBALS['_xh']['value'], $GLOBALS['_xh']['vt']);
+                                               // in case we got info about underlying php class, save it
+                                               // in the object we're rebuilding
+                                               if (isset($GLOBALS['_xh']['php_class']))
+                                                       $temp->_php_class = $GLOBALS['_xh']['php_class'];
+                                               // check if we are inside an array or struct:
+                                               // if value just built is inside an array, let's move it into array on the stack
+                                               $vscount = count($GLOBALS['_xh']['valuestack']);
+                                               if ($vscount && $GLOBALS['_xh']['valuestack'][$vscount-1]['type']=='ARRAY')
+                                               {
+                                                       $GLOBALS['_xh']['valuestack'][$vscount-1]['values'][] = $temp;
+                                               }
+                                               else
+                                               {
+                                                       $GLOBALS['_xh']['value'] = $temp;
+                                               }
+                                       }
+                                       else
+                                       {
+                                               /// @todo this needs to treat correctly php-serialized objects,
+                                               /// since std deserializing is done by php_xmlrpc_decode,
+                                               /// which we will not be calling...
+                                               if (isset($GLOBALS['_xh']['php_class']))
+                                               {
+                                               }
+
+                                               // check if we are inside an array or struct:
+                                               // if value just built is inside an array, let's move it into array on the stack
+                                               $vscount = count($GLOBALS['_xh']['valuestack']);
+                                               if ($vscount && $GLOBALS['_xh']['valuestack'][$vscount-1]['type']=='ARRAY')
+                                               {
+                                                       $GLOBALS['_xh']['valuestack'][$vscount-1]['values'][] = $GLOBALS['_xh']['value'];
+                                               }
+                                       }
+                                       break;
+                               case 'BOOLEAN':
+                               case 'I4':
+                               case 'INT':
+                               case 'STRING':
+                               case 'DOUBLE':
+                               case 'DATETIME.ISO8601':
+                               case 'BASE64':
+                                       $GLOBALS['_xh']['vt']=strtolower($name);
+                               /// @todo: optimization creep - remove the if/elseif cycle below
+                    /// since the case() in which we are already did that
+                                       if ($name=='STRING')
+                                       {
+                                               $GLOBALS['_xh']['value']=$GLOBALS['_xh']['ac'];
+                                       }
+                                       elseif ($name=='DATETIME.ISO8601')
+                                       {
+                                               if (!preg_match('/^[0-9]{8}T[0-9]{2}:[0-9]{2}:[0-9]{2}$/', $GLOBALS['_xh']['ac']))
+                                               {
+                                                       error_log('XML-RPC: invalid value received in DATETIME: '.$GLOBALS['_xh']['ac']);
+                                               }
+                                               $GLOBALS['_xh']['vt']=$GLOBALS['xmlrpcDateTime'];
+                                               $GLOBALS['_xh']['value']=$GLOBALS['_xh']['ac'];
+                                       }
+                                       elseif ($name=='BASE64')
+                                       {
+                                               /// @todo check for failure of base64 decoding / catch warnings
+                                               $GLOBALS['_xh']['value']=base64_decode($GLOBALS['_xh']['ac']);
+                                       }
+                                       elseif ($name=='BOOLEAN')
+                                       {
+                                               // special case here: we translate boolean 1 or 0 into PHP
+                                               // constants true or false.
+                                               // Strings 'true' and 'false' are accepted, even though the
+                                               // spec never mentions them (see eg. Blogger api docs)
+                                               // NB: this simple checks helps a lot sanitizing input, ie no
+                                               // security problems around here
+                                               if ($GLOBALS['_xh']['ac']=='1' || strcasecmp($GLOBALS['_xh']['ac'], 'true') == 0)
+                                               {
+                                                       $GLOBALS['_xh']['value']=true;
+                                               }
+                                               else
+                                               {
+                                                       // log if receiveing something strange, even though we set the value to false anyway
+                                                       if ($GLOBALS['_xh']['ac']!='0' && strcasecmp($_xh[$parser]['ac'], 'false') != 0)
+                                                               error_log('XML-RPC: invalid value received in BOOLEAN: '.$GLOBALS['_xh']['ac']);
+                                                       $GLOBALS['_xh']['value']=false;
+                                               }
+                                       }
+                                       elseif ($name=='DOUBLE')
+                                       {
+                                               // we have a DOUBLE
+                                               // we must check that only 0123456789-.<space> are characters here
+                                               if (!preg_match('/^[+-]?[eE0123456789 \t.]+$/', $GLOBALS['_xh']['ac']))
+                                               {
+                                                       /// @todo: find a better way of throwing an error
+                                                       // than this!
+                                                       error_log('XML-RPC: non numeric value received in DOUBLE: '.$GLOBALS['_xh']['ac']);
+                                                       $GLOBALS['_xh']['value']='ERROR_NON_NUMERIC_FOUND';
+                                               }
+                                               else
+                                               {
+                                                       // it's ok, add it on
+                                                       $GLOBALS['_xh']['value']=(double)$GLOBALS['_xh']['ac'];
+                                               }
+                                       }
+                                       else
+                                       {
+                                               // we have an I4/INT
+                                               // we must check that only 0123456789-<space> are characters here
+                                               if (!preg_match('/^[+-]?[0123456789 \t]+$/', $GLOBALS['_xh']['ac']))
+                                               {
+                                                       /// @todo find a better way of throwing an error
+                                                       // than this!
+                                                       error_log('XML-RPC: non numeric value received in INT: '.$GLOBALS['_xh']['ac']);
+                                                       $GLOBALS['_xh']['value']='ERROR_NON_NUMERIC_FOUND';
+                                               }
+                                               else
+                                               {
+                                                       // it's ok, add it on
+                                                       $GLOBALS['_xh']['value']=(int)$GLOBALS['_xh']['ac'];
+                                               }
+                                       }
+                                       //$GLOBALS['_xh']['ac']=''; // is this necessary?
+                                       $GLOBALS['_xh']['lv']=3; // indicate we've found a value
+                                       break;
+                               case 'NAME':
+                                       $GLOBALS['_xh']['valuestack'][count($GLOBALS['_xh']['valuestack'])-1]['name'] = $GLOBALS['_xh']['ac'];
+                                       break;
+                               case 'MEMBER':
+                                       //$GLOBALS['_xh']['ac']=''; // is this necessary?
+                                       // add to array in the stack the last element built,
+                                       // unless no VALUE was found
+                                       if ($GLOBALS['_xh']['vt'])
+                                       {
+                                               $vscount = count($GLOBALS['_xh']['valuestack']);
+                                               $GLOBALS['_xh']['valuestack'][$vscount-1]['values'][$GLOBALS['_xh']['valuestack'][$vscount-1]['name']] = $GLOBALS['_xh']['value'];
+                                       } else
+                                               error_log('XML-RPC: missing VALUE inside STRUCT in received xml');
+                                       break;
+                               case 'DATA':
+                                       //$GLOBALS['_xh']['ac']=''; // is this necessary?
+                                       $GLOBALS['_xh']['vt']=null; // reset this to check for 2 data elements in a row - even if they're empty
+                                       break;
+                               case 'STRUCT':
+                               case 'ARRAY':
+                                       // fetch out of stack array of values, and promote it to current value
+                                       $curr_val = array_pop($GLOBALS['_xh']['valuestack']);
+                                       $GLOBALS['_xh']['value'] = $curr_val['values'];
+                                       $GLOBALS['_xh']['vt']=strtolower($name);
+                                       if (isset($curr_val['php_class']))
+                                       {
+                                               $GLOBALS['_xh']['php_class'] = $curr_val['php_class'];
+                                       }
+                                       break;
+                               case 'PARAM':
+                                       // add to array of params the current value,
+                                       // unless no VALUE was found
+                                       if ($GLOBALS['_xh']['vt'])
+                                       {
+                                               $GLOBALS['_xh']['params'][]=$GLOBALS['_xh']['value'];
+                                               $GLOBALS['_xh']['pt'][]=$GLOBALS['_xh']['vt'];
+                                       }
+                                       else
+                                               error_log('XML-RPC: missing VALUE inside PARAM in received xml');
+                                       break;
+                               case 'METHODNAME':
+                                       $GLOBALS['_xh']['method']=preg_replace('/^[\n\r\t ]+/', '', $GLOBALS['_xh']['ac']);
+                                       break;
+                               case 'NIL':
+                                       if ($GLOBALS['xmlrpc_null_extension'])
+                                       {
+                                               $GLOBALS['_xh']['vt']='null';
+                                               $GLOBALS['_xh']['value']=null;
+                                               $GLOBALS['_xh']['lv']=3;
+                                               break;
+                                       }
+                                       // drop through intentionally if nil extension not enabled
+                               case 'PARAMS':
+                               case 'FAULT':
+                               case 'METHODCALL':
+                               case 'METHORESPONSE':
+                                       break;
+                               default:
+                                       // End of INVALID ELEMENT!
+                                       // shall we add an assert here for unreachable code???
+                                       break;
+                       }
+               }
+       }
+
+       /// Used in decoding xmlrpc requests/responses without rebuilding xmlrpc values
+       function xmlrpc_ee_fast($parser, $name)
+       {
+               xmlrpc_ee($parser, $name, false);
+       }
+
+       /// xml parser handler function for character data
+       function xmlrpc_cd($parser, $data)
+       {
+               // skip processing if xml fault already detected
+               if ($GLOBALS['_xh']['isf'] < 2)
+               {
+                       // "lookforvalue==3" means that we've found an entire value
+                       // and should discard any further character data
+                       if($GLOBALS['_xh']['lv']!=3)
+                       {
+                               // G. Giunta 2006-08-23: useless change of 'lv' from 1 to 2
+                               //if($GLOBALS['_xh']['lv']==1)
+                               //{
+                                       // if we've found text and we're just in a <value> then
+                                       // say we've found a value
+                                       //$GLOBALS['_xh']['lv']=2;
+                               //}
+                               // we always initialize the accumulator before starting parsing, anyway...
+                               //if(!@isset($GLOBALS['_xh']['ac']))
+                               //{
+                               //      $GLOBALS['_xh']['ac'] = '';
+                               //}
+                               $GLOBALS['_xh']['ac'].=$data;
+                       }
+               }
+       }
+
+       /// xml parser handler function for 'other stuff', ie. not char data or
+       /// element start/end tag. In fact it only gets called on unknown entities...
+       function xmlrpc_dh($parser, $data)
+       {
+               // skip processing if xml fault already detected
+               if ($GLOBALS['_xh']['isf'] < 2)
+               {
+                       if(i18n::substr($data, 0, 1) == '&' && i18n::substr($data, -1, 1) == ';')
+                       {
+                               // G. Giunta 2006-08-25: useless change of 'lv' from 1 to 2
+                               //if($GLOBALS['_xh']['lv']==1)
+                               //{
+                               //      $GLOBALS['_xh']['lv']=2;
+                               //}
+                               $GLOBALS['_xh']['ac'].=$data;
+                       }
+               }
+               return true;
+       }
+
+       class xmlrpc_client
+       {
+               var $path;
+               var $server;
+               var $port=0;
+               var $method='http';
+               var $errno;
+               var $errstr;
+               var $debug=0;
+               var $username='';
+               var $password='';
+               var $authtype=1;
+               var $cert='';
+               var $certpass='';
+               var $cacert='';
+               var $cacertdir='';
+               var $key='';
+               var $keypass='';
+               var $verifypeer=true;
+               var $verifyhost=1;
+               var $no_multicall=false;
+               var $proxy='';
+               var $proxyport=0;
+               var $proxy_user='';
+               var $proxy_pass='';
+               var $proxy_authtype=1;
+               var $cookies=array();
+               /**
+               * List of http compression methods accepted by the client for responses.
+               * NB: PHP supports deflate, gzip compressions out of the box if compiled w. zlib
+               *
+               * NNB: you can set it to any non-empty array for HTTP11 and HTTPS, since
+               * in those cases it will be up to CURL to decide the compression methods
+               * it supports. You might check for the presence of 'zlib' in the output of
+               * curl_version() to determine wheter compression is supported or not
+               */
+               var $accepted_compression = array();
+               /**
+               * Name of compression scheme to be used for sending requests.
+               * Either null, gzip or deflate
+               */
+               var $request_compression = '';
+               /**
+               * CURL handle: used for keep-alive connections (PHP 4.3.8 up, see:
+               * http://curl.haxx.se/docs/faq.html#7.3)
+               */
+               var $xmlrpc_curl_handle = null;
+               /// Wheter to use persistent connections for http 1.1 and https
+               var $keepalive = false;
+               /// Charset encodings that can be decoded without problems by the client
+               var $accepted_charset_encodings = array();
+               /// Charset encoding to be used in serializing request. NULL = use ASCII
+               var $request_charset_encoding = '';
+               /**
+               * Decides the content of xmlrpcresp objects returned by calls to send()
+               * valid strings are 'xmlrpcvals', 'phpvals' or 'xml'
+               */
+               var $return_type = 'xmlrpcvals';
+
+               /**
+               * @param string $path either the complete server URL or the PATH part of the xmlrc server URL, e.g. /xmlrpc/server.php
+               * @param string $server the server name / ip address
+               * @param integer $port the port the server is listening on, defaults to 80 or 443 depending on protocol used
+               * @param string $method the http protocol variant: defaults to 'http', 'https' and 'http11' can be used if CURL is installed
+               */
+               function xmlrpc_client($path, $server='', $port='', $method='')
+               {
+                       // allow user to specify all params in $path
+                       if($server == '' and $port == '' and $method == '')
+                       {
+                               $parts = parse_url($path);
+                               $server = $parts['host'];
+                               $path = $parts['path'];
+                               if(isset($parts['query']))
+                               {
+                                       $path .= '?'.$parts['query'];
+                               }
+                               if(isset($parts['fragment']))
+                               {
+                                       $path .= '#'.$parts['fragment'];
+                               }
+                               if(isset($parts['port']))
+                               {
+                                       $port = $parts['port'];
+                               }
+                               if(isset($parts['scheme']))
+                               {
+                                       $method = $parts['scheme'];
+                               }
+                               if(isset($parts['user']))
+                               {
+                                       $this->username = $parts['user'];
+                               }
+                               if(isset($parts['pass']))
+                               {
+                                       $this->password = $parts['pass'];
+                               }
+                       }
+                       if($path == '' || $path[0] != '/')
+                       {
+                               $this->path='/'.$path;
+                       }
+                       else
+                       {
+                               $this->path=$path;
+                       }
+                       $this->server=$server;
+                       if($port != '')
+                       {
+                               $this->port=$port;
+                       }
+                       if($method != '')
+                       {
+                               $this->method=$method;
+                       }
+
+                       // if ZLIB is enabled, let the client by default accept compressed responses
+                       if(function_exists('gzinflate') || (
+                               function_exists('curl_init') && (($info = curl_version()) &&
+                               ((is_string($info) && i18n::strpos($info, 'zlib') !== null) || isset($info['libz_version'])))
+                       ))
+                       {
+                               $this->accepted_compression = array('gzip', 'deflate');
+                       }
+
+                       // keepalives: enabled by default ONLY for PHP >= 4.3.8
+                       // (see http://curl.haxx.se/docs/faq.html#7.3)
+                       if(version_compare(phpversion(), '4.3.8') >= 0)
+                       {
+                               $this->keepalive = true;
+                       }
+
+                       // by default the xml parser can support these 3 charset encodings
+                       $this->accepted_charset_encodings = array('UTF-8', 'ISO-8859-1', 'US-ASCII');
+               }
+
+               /**
+               * Enables/disables the echoing to screen of the xmlrpc responses received
+               * @param integer $debug values 0, 1 and 2 are supported (2 = echo sent msg too, before received response)
+               * @access public
+               */
+               function setDebug($in)
+               {
+                       $this->debug=$in;
+               }
+
+               /**
+               * Add some http BASIC AUTH credentials, used by the client to authenticate
+               * @param string $u username
+               * @param string $p password
+               * @param integer $t auth type. See curl_setopt man page for supported auth types. Defaults to CURLAUTH_BASIC (basic auth)
+               * @access public
+               */
+               function setCredentials($u, $p, $t=1)
+               {
+                       $this->username=$u;
+                       $this->password=$p;
+                       $this->authtype=$t;
+               }
+
+               /**
+               * Add a client-side https certificate
+               * @param string $cert
+               * @param string $certpass
+               * @access public
+               */
+               function setCertificate($cert, $certpass)
+               {
+                       $this->cert = $cert;
+                       $this->certpass = $certpass;
+               }
+
+               /**
+               * Add a CA certificate to verify server with (see man page about
+               * CURLOPT_CAINFO for more details
+               * @param string $cacert certificate file name (or dir holding certificates)
+               * @param bool $is_dir set to true to indicate cacert is a dir. defaults to false
+               * @access public
+               */
+               function setCaCertificate($cacert, $is_dir=false)
+               {
+                       if ($is_dir)
+                       {
+                               $this->cacert = $cacert;
+                       }
+                       else
+                       {
+                               $this->cacertdir = $cacert;
+                       }
+               }
+
+               /**
+               * Set attributes for SSL communication: private SSL key
+               * @param string $key The name of a file containing a private SSL key
+               * @param string $keypass The secret password needed to use the private SSL key
+               * @access public
+               * NB: does not work in older php/curl installs
+               * Thanks to Daniel Convissor
+               */
+               function setKey($key, $keypass)
+               {
+                       $this->key = $key;
+                       $this->keypass = $keypass;
+               }
+
+               /**
+               * Set attributes for SSL communication: verify server certificate
+               * @param bool $i enable/disable verification of peer certificate
+               * @access public
+               */
+               function setSSLVerifyPeer($i)
+               {
+                       $this->verifypeer = $i;
+               }
+
+               /**
+               * Set attributes for SSL communication: verify match of server cert w. hostname
+               * @param int $i
+               * @access public
+               */
+               function setSSLVerifyHost($i)
+               {
+                       $this->verifyhost = $i;
+               }
+
+               /**
+               * Set proxy info
+               * @param string $proxyhost
+               * @param string $proxyport Defaults to 8080 for HTTP and 443 for HTTPS
+               * @param string $proxyusername Leave blank if proxy has public access
+               * @param string $proxypassword Leave blank if proxy has public access
+               * @param int $proxyauthtype set to constant CURLAUTH_NTLM to use NTLM auth with proxy
+               * @access public
+               */
+               function setProxy($proxyhost, $proxyport, $proxyusername = '', $proxypassword = '', $proxyauthtype = 1)
+               {
+                       $this->proxy = $proxyhost;
+                       $this->proxyport = $proxyport;
+                       $this->proxy_user = $proxyusername;
+                       $this->proxy_pass = $proxypassword;
+                       $this->proxy_authtype = $proxyauthtype;
+               }
+
+               /**
+               * Enables/disables reception of compressed xmlrpc responses.
+               * Note that enabling reception of compressed responses merely adds some standard
+               * http headers to xmlrpc requests. It is up to the xmlrpc server to return
+               * compressed responses when receiving such requests.
+               * @param string $compmethod either 'gzip', 'deflate', 'any' or ''
+               * @access public
+               */
+               function setAcceptedCompression($compmethod)
+               {
+                       if ($compmethod == 'any')
+                               $this->accepted_compression = array('gzip', 'deflate');
+                       else
+                               $this->accepted_compression = array($compmethod);
+               }
+
+               /**
+               * Enables/disables http compression of xmlrpc request.
+               * Take care when sending compressed requests: servers might not support them
+               * (and automatic fallback to uncompressed requests is not yet implemented)
+               * @param string $compmethod either 'gzip', 'deflate' or ''
+               * @access public
+               */
+               function setRequestCompression($compmethod)
+               {
+                       $this->request_compression = $compmethod;
+               }
+
+               /**
+               * Adds a cookie to list of cookies that will be sent to server.
+               * NB: setting any param but name and value will turn the cookie into a 'version 1' cookie:
+               * do not do it unless you know what you are doing
+               * @param string $name
+               * @param string $value
+               * @param string $path
+               * @param string $domain
+               * @param int $port
+               * @access public
+               *
+               * @todo check correctness of urlencoding cookie value (copied from php way of doing it...)
+               */
+               function setCookie($name, $value='', $path='', $domain='', $port=null)
+               {
+                       $this->cookies[$name]['value'] = urlencode($value);
+                       if ($path || $domain || $port)
+                       {
+                               $this->cookies[$name]['path'] = $path;
+                               $this->cookies[$name]['domain'] = $domain;
+                               $this->cookies[$name]['port'] = $port;
+                               $this->cookies[$name]['version'] = 1;
+                       }
+                       else
+                       {
+                               $this->cookies[$name]['version'] = 0;
+                       }
+               }
+
+               /**
+               * Send an xmlrpc request
+               * @param mixed $msg The message object, or an array of messages for using multicall, or the complete xml representation of a request
+               * @param integer $timeout Connection timeout, in seconds, If unspecified, a platform specific timeout will apply
+               * @param string $method if left unspecified, the http protocol chosen during creation of the object will be used
+               * @return xmlrpcresp
+               * @access public
+               */
+               function& send($msg, $timeout=0, $method='')
+               {
+                       // if user deos not specify http protocol, use native method of this client
+                       // (i.e. method set during call to constructor)
+                       if($method == '')
+                       {
+                               $method = $this->method;
+                       }
+
+                       if(is_array($msg))
+                       {
+                               // $msg is an array of xmlrpcmsg's
+                               $r = $this->multicall($msg, $timeout, $method);
+                               return $r;
+                       }
+                       elseif(is_string($msg))
+                       {
+                               $n = new xmlrpcmsg('');
+                               $n->payload = $msg;
+                               $msg = $n;
+                       }
+
+                       // where msg is an xmlrpcmsg
+                       $msg->debug=$this->debug;
+
+                       if($method == 'https')
+                       {
+                               $r =& $this->sendPayloadHTTPS(
+                                       $msg,
+                                       $this->server,
+                                       $this->port,
+                                       $timeout,
+                                       $this->username,
+                                       $this->password,
+                                       $this->authtype,
+                                       $this->cert,
+                                       $this->certpass,
+                                       $this->cacert,
+                                       $this->cacertdir,
+                                       $this->proxy,
+                                       $this->proxyport,
+                                       $this->proxy_user,
+                                       $this->proxy_pass,
+                                       $this->proxy_authtype,
+                                       $this->keepalive,
+                                       $this->key,
+                                       $this->keypass
+                               );
+                       }
+                       elseif($method == 'http11')
+                       {
+                               $r =& $this->sendPayloadCURL(
+                                       $msg,
+                                       $this->server,
+                                       $this->port,
+                                       $timeout,
+                                       $this->username,
+                                       $this->password,
+                                       $this->authtype,
+                                       null,
+                                       null,
+                                       null,
+                                       null,
+                                       $this->proxy,
+                                       $this->proxyport,
+                                       $this->proxy_user,
+                                       $this->proxy_pass,
+                                       $this->proxy_authtype,
+                                       'http',
+                                       $this->keepalive
+                               );
+                       }
+                       else
+                       {
+                               $r =& $this->sendPayloadHTTP10(
+                                       $msg,
+                                       $this->server,
+                                       $this->port,
+                                       $timeout,
+                                       $this->username,
+                                       $this->password,
+                                       $this->authtype,
+                                       $this->proxy,
+                                       $this->proxyport,
+                                       $this->proxy_user,
+                                       $this->proxy_pass,
+                                       $this->proxy_authtype
+                               );
+                       }
+
+                       return $r;
+               }
+
+               /**
+               * @access private
+               */
+               function &sendPayloadHTTP10($msg, $server, $port, $timeout=0,
+                       $username='', $password='', $authtype=1, $proxyhost='',
+                       $proxyport=0, $proxyusername='', $proxypassword='', $proxyauthtype=1)
+               {
+                       if($port==0)
+                       {
+                               $port=80;
+                       }
+
+                       // Only create the payload if it was not created previously
+                       if(empty($msg->payload))
+                       {
+                               $msg->createPayload($this->request_charset_encoding);
+                       }
+
+                       $payload = $msg->payload;
+                       // Deflate request body and set appropriate request headers
+                       if(function_exists('gzdeflate') && ($this->request_compression == 'gzip' || $this->request_compression == 'deflate'))
+                       {
+                               if($this->request_compression == 'gzip')
+                               {
+                                       $a = @gzencode($payload);
+                                       if($a)
+                                       {
+                                               $payload = $a;
+                                               $encoding_hdr = "Content-Encoding: gzip\r\n";
+                                       }
+                               }
+                               else
+                               {
+                                       $a = @gzcompress($payload);
+                                       if($a)
+                                       {
+                                               $payload = $a;
+                                               $encoding_hdr = "Content-Encoding: deflate\r\n";
+                                       }
+                               }
+                       }
+                       else
+                       {
+                               $encoding_hdr = '';
+                       }
+
+                       // thanks to Grant Rauscher <grant7@firstworld.net> for this
+                       $credentials='';
+                       if($username!='')
+                       {
+                               $credentials='Authorization: Basic ' . base64_encode($username . ':' . $password) . "\r\n";
+                               if ($authtype != 1)
+                               {
+                                       error_log('XML-RPC: xmlrpc_client::send: warning. Only Basic auth is supported with HTTP 1.0');
+                               }
+                       }
+
+                       $accepted_encoding = '';
+                       if(is_array($this->accepted_compression) && count($this->accepted_compression))
+                       {
+                               $accepted_encoding = 'Accept-Encoding: ' . implode(', ', $this->accepted_compression) . "\r\n";
+                       }
+
+                       $proxy_credentials = '';
+                       if($proxyhost)
+                       {
+                               if($proxyport == 0)
+                               {
+                                       $proxyport = 8080;
+                               }
+                               $connectserver = $proxyhost;
+                               $connectport = $proxyport;
+                               $uri = 'http://'.$server.':'.$port.$this->path;
+                               if($proxyusername != '')
+                               {
+                                       if ($proxyauthtype != 1)
+                                       {
+                                               error_log('XML-RPC: xmlrpc_client::send: warning. Only Basic auth to proxy is supported with HTTP 1.0');
+                                       }
+                                       $proxy_credentials = 'Proxy-Authorization: Basic ' . base64_encode($proxyusername.':'.$proxypassword) . "\r\n";
+                               }
+                       }
+                       else
+                       {
+                               $connectserver = $server;
+                               $connectport = $port;
+                               $uri = $this->path;
+                       }
+
+                       // Cookie generation, as per rfc2965 (version 1 cookies) or
+                       // netscape's rules (version 0 cookies)
+                       $cookieheader='';
+                       foreach ($this->cookies as $name => $cookie)
+                       {
+                               if ($cookie['version'])
+                               {
+                                       $cookieheader .= 'Cookie: $Version="' . $cookie['version'] . '"; ';
+                                       $cookieheader .= $name . '="' . $cookie['value'] . '";';
+                                       if ($cookie['path'])
+                                               $cookieheader .= ' $Path="' . $cookie['path'] . '";';
+                                       if ($cookie['domain'])
+                                               $cookieheader .= ' $Domain="' . $cookie['domain'] . '";';
+                                       if ($cookie['port'])
+                                               $cookieheader .= ' $Port="' . $cookie['domain'] . '";';
+                                       $cookieheader = i18n::substr($cookieheader, 0, -1) . "\r\n";
+                               }
+                               else
+                               {
+                                       $cookieheader .= 'Cookie: ' . $name . '=' . $cookie['value'] . "\r\n";
+                               }
+                       }
+
+                       $op= 'POST ' . $uri. " HTTP/1.0\r\n" .
+                               'User-Agent: ' . $GLOBALS['xmlrpcName'] . ' ' . $GLOBALS['xmlrpcVersion'] . "\r\n" .
+                               'Host: '. $server . ':' . $port . "\r\n" .
+                               $credentials .
+                               $proxy_credentials .
+                               $accepted_encoding .
+                               $encoding_hdr .
+                               'Accept-Charset: ' . implode(',', $this->accepted_charset_encodings) . "\r\n" .
+                               $cookieheader .
+                               'Content-Type: ' . $msg->content_type . "\r\nContent-Length: " .
+                               i18n::strlen($payload) . "\r\n\r\n" .
+                               $payload;
+
+                       if($this->debug > 1)
+                       {
+                               print "<PRE>\n---SENDING---\n" . Entity::hen($op) . "\n---END---\n</PRE>";
+                               // let the client see this now in case http times out...
+                               flush();
+                       }
+
+                       if($timeout>0)
+                       {
+                               $fp=@fsockopen($connectserver, $connectport, $this->errno, $this->errstr, $timeout);
+                       }
+                       else
+                       {
+                               $fp=@fsockopen($connectserver, $connectport, $this->errno, $this->errstr);
+                       }
+                       if($fp)
+                       {
+                               if($timeout>0 && function_exists('stream_set_timeout'))
+                               {
+                                       stream_set_timeout($fp, $timeout);
+                               }
+                       }
+                       else
+                       {
+                               $this->errstr='Connect error: '.$this->errstr;
+                               $r = new xmlrpcresp(0, $GLOBALS['xmlrpcerr']['http_error'], $this->errstr . ' (' . $this->errno . ')');
+                               return $r;
+                       }
+
+                       if(!fputs($fp, $op, i18n::strlen($op)))
+                       {
+                               $this->errstr='Write error';
+                               $r = new xmlrpcresp(0, $GLOBALS['xmlrpcerr']['http_error'], $this->errstr);
+                               return $r;
+                       }
+                       else
+                       {
+                               // reset errno and errstr on succesful socket connection
+                               $this->errstr = '';
+                       }
+                       // G. Giunta 2005/10/24: close socket before parsing.
+                       // should yeld slightly better execution times, and make easier recursive calls (e.g. to follow http redirects)
+                       $ipd='';
+                       while($data=fread($fp, 32768))
+                       {
+                               // shall we check for $data === FALSE?
+                               // as per the manual, it signals an error
+                               $ipd.=$data;
+                       }
+                       fclose($fp);
+                       $r =& $msg->parseResponse($ipd, false, $this->return_type);
+                       return $r;
+
+               }
+
+               /**
+               * @access private
+               */
+               function &sendPayloadHTTPS($msg, $server, $port, $timeout=0, $username='',
+                       $password='', $authtype=1, $cert='',$certpass='', $cacert='', $cacertdir='',
+                       $proxyhost='', $proxyport=0, $proxyusername='', $proxypassword='', $proxyauthtype=1,
+                       $keepalive=false, $key='', $keypass='')
+               {
+                       $r =& $this->sendPayloadCURL($msg, $server, $port, $timeout, $username,
+                               $password, $authtype, $cert, $certpass, $cacert, $cacertdir, $proxyhost, $proxyport,
+                               $proxyusername, $proxypassword, $proxyauthtype, 'https', $keepalive, $key, $keypass);
+                       return $r;
+               }
+
+               /**
+               * Contributed by Justin Miller <justin@voxel.net>
+               * Requires curl to be built into PHP
+               * NB: CURL versions before 7.11.10 cannot use proxy to talk to https servers!
+               * @access private
+               */
+               function &sendPayloadCURL($msg, $server, $port, $timeout=0, $username='',
+                       $password='', $authtype=1, $cert='', $certpass='', $cacert='', $cacertdir='',
+                       $proxyhost='', $proxyport=0, $proxyusername='', $proxypassword='', $proxyauthtype=1, $method='https',
+                       $keepalive=false, $key='', $keypass='')
+               {
+                       if(!function_exists('curl_init'))
+                       {
+                               $this->errstr='CURL unavailable on this install';
+                               $r = new xmlrpcresp(0, $GLOBALS['xmlrpcerr']['no_curl'], $GLOBALS['xmlrpcstr']['no_curl']);
+                               return $r;
+                       }
+                       if($method == 'https')
+                       {
+                               if(($info = curl_version()) &&
+                                       ((is_string($info) && i18n::strpos($info, 'OpenSSL') === null) || (is_array($info) && !isset($info['ssl_version']))))
+                               {
+                                       $this->errstr='SSL unavailable on this install';
+                                       $r = new xmlrpcresp(0, $GLOBALS['xmlrpcerr']['no_ssl'], $GLOBALS['xmlrpcstr']['no_ssl']);
+                                       return $r;
+                               }
+                       }
+
+                       if($port == 0)
+                       {
+                               if($method == 'http')
+                               {
+                                       $port = 80;
+                               }
+                               else
+                               {
+                                       $port = 443;
+                               }
+                       }
+
+                       // Only create the payload if it was not created previously
+                       if(empty($msg->payload))
+                       {
+                               $msg->createPayload($this->request_charset_encoding);
+                       }
+
+                       // Deflate request body and set appropriate request headers
+                       $payload = $msg->payload;
+                       if(function_exists('gzdeflate') && ($this->request_compression == 'gzip' || $this->request_compression == 'deflate'))
+                       {
+                               if($this->request_compression == 'gzip')
+                               {
+                                       $a = @gzencode($payload);
+                                       if($a)
+                                       {
+                                               $payload = $a;
+                                               $encoding_hdr = 'Content-Encoding: gzip';
+                                       }
+                               }
+                               else
+                               {
+                                       $a = @gzcompress($payload);
+                                       if($a)
+                                       {
+                                               $payload = $a;
+                                               $encoding_hdr = 'Content-Encoding: deflate';
+                                       }
+                               }
+                       }
+                       else
+                       {
+                               $encoding_hdr = '';
+                       }
+
+                       if($this->debug > 1)
+                       {
+                               print "<PRE>\n---SENDING---\n" . Entity::hen($payload) . "\n---END---\n</PRE>";
+                               // let the client see this now in case http times out...
+                               flush();
+                       }
+
+                       if(!$keepalive || !$this->xmlrpc_curl_handle)
+                       {
+                               $curl = curl_init($method . '://' . $server . ':' . $port . $this->path);
+                               if($keepalive)
+                               {
+                                       $this->xmlrpc_curl_handle = $curl;
+                               }
+                       }
+                       else
+                       {
+                               $curl = $this->xmlrpc_curl_handle;
+                       }
+
+                       // results into variable
+                       curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
+
+                       if($this->debug)
+                       {
+                               curl_setopt($curl, CURLOPT_VERBOSE, 1);
+                       }
+                       curl_setopt($curl, CURLOPT_USERAGENT, $GLOBALS['xmlrpcName'].' '.$GLOBALS['xmlrpcVersion']);
+                       // required for XMLRPC: post the data
+                       curl_setopt($curl, CURLOPT_POST, 1);
+                       // the data
+                       curl_setopt($curl, CURLOPT_POSTFIELDS, $payload);
+
+                       // return the header too
+                       curl_setopt($curl, CURLOPT_HEADER, 1);
+
+                       // will only work with PHP >= 5.0
+                       // NB: if we set an empty string, CURL will add http header indicating
+                       // ALL methods it is supporting. This is possibly a better option than
+                       // letting the user tell what curl can / cannot do...
+                       if(is_array($this->accepted_compression) && count($this->accepted_compression))
+                       {
+                               //curl_setopt($curl, CURLOPT_ENCODING, implode(',', $this->accepted_compression));
+                               // empty string means 'any supported by CURL' (shall we catch errors in case CURLOPT_SSLKEY undefined ?)
+                               if (count($this->accepted_compression) == 1)
+                               {
+                                       curl_setopt($curl, CURLOPT_ENCODING, $this->accepted_compression[0]);
+                               }
+                               else
+                                       curl_setopt($curl, CURLOPT_ENCODING, '');
+                       }
+                       // extra headers
+                       $headers = array('Content-Type: ' . $msg->content_type , 'Accept-Charset: ' . implode(',', $this->accepted_charset_encodings));
+                       // if no keepalive is wanted, let the server know it in advance
+                       if(!$keepalive)
+                       {
+                               $headers[] = 'Connection: close';
+                       }
+                       // request compression header
+                       if($encoding_hdr)
+                       {
+                               $headers[] = $encoding_hdr;
+                       }
+
+                       curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
+                       // timeout is borked
+                       if($timeout)
+                       {
+                               curl_setopt($curl, CURLOPT_TIMEOUT, $timeout == 1 ? 1 : $timeout - 1);
+                       }
+
+                       if($username && $password)
+                       {
+                               curl_setopt($curl, CURLOPT_USERPWD, $username.':'.$password);
+                               if (defined('CURLOPT_HTTPAUTH'))
+                               {
+                                       curl_setopt($curl, CURLOPT_HTTPAUTH, $authtype);
+                               }
+                               else if ($authtype != 1)
+                               {
+                                       error_log('XML-RPC: xmlrpc_client::send: warning. Only Basic auth is supported by the current PHP/curl install');
+                               }
+                       }
+
+                       if($method == 'https')
+                       {
+                               // set cert file
+                               if($cert)
+                               {
+                                       curl_setopt($curl, CURLOPT_SSLCERT, $cert);
+                               }
+                               // set cert password
+                               if($certpass)
+                               {
+                                       curl_setopt($curl, CURLOPT_SSLCERTPASSWD, $certpass);
+                               }
+                               // whether to verify remote host's cert
+                               curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, $this->verifypeer);
+                               // set ca certificates file/dir
+                               if($cacert)
+                               {
+                                       curl_setopt($curl, CURLOPT_CAINFO, $cacert);
+                               }
+                               if($cacertdir)
+                               {
+                                       curl_setopt($curl, CURLOPT_CAPATH, $cacertdir);
+                               }
+                               // set key file (shall we catch errors in case CURLOPT_SSLKEY undefined ?)
+                               if($key)
+                               {
+                                       curl_setopt($curl, CURLOPT_SSLKEY, $key);
+                               }
+                               // set key password (shall we catch errors in case CURLOPT_SSLKEY undefined ?)
+                               if($keypass)
+                               {
+                                       curl_setopt($curl, CURLOPT_SSLKEYPASSWD, $keypass);
+                               }
+                               // whether to verify cert's common name (CN); 0 for no, 1 to verify that it exists, and 2 to verify that it matches the hostname used
+                               curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, $this->verifyhost);
+                       }
+
+                       // proxy info
+                       if($proxyhost)
+                       {
+                               if($proxyport == 0)
+                               {
+                                       $proxyport = 8080; // NB: even for HTTPS, local connection is on port 8080
+                               }
+                               curl_setopt($curl, CURLOPT_PROXY,$proxyhost.':'.$proxyport);
+                               //curl_setopt($curl, CURLOPT_PROXYPORT,$proxyport);
+                               if($proxyusername)
+                               {
+                                       curl_setopt($curl, CURLOPT_PROXYUSERPWD, $proxyusername.':'.$proxypassword);
+                                       if (defined('CURLOPT_PROXYAUTH'))
+                                       {
+                                               curl_setopt($curl, CURLOPT_PROXYAUTH, $proxyauthtype);
+                                       }
+                                       else if ($proxyauthtype != 1)
+                                       {
+                                               error_log('XML-RPC: xmlrpc_client::send: warning. Only Basic auth to proxy is supported by the current PHP/curl install');
+                                       }
+                               }
+                       }
+
+                       // NB: should we build cookie http headers by hand rather than let CURL do it?
+                       // the following code does not honour 'expires', 'path' and 'domain' cookie attributes
+                       // set to clint obj the the user...
+                       if (count($this->cookies))
+                       {
+                               $cookieheader = '';
+                               foreach ($this->cookies as $name => $cookie)
+                               {
+                                       $cookieheader .= $name . '=' . $cookie['value'] . ', ';
+                               }
+                               curl_setopt($curl, CURLOPT_COOKIE, i18n::substr($cookieheader, 0, -2));
+                       }
+
+                       $result = curl_exec($curl);
+
+                       if(!$result)
+                       {
+                               $this->errstr='no response';
+                               $resp = new xmlrpcresp(0, $GLOBALS['xmlrpcerr']['curl_fail'], $GLOBALS['xmlrpcstr']['curl_fail']. ': '. curl_error($curl));
+                               if(!$keepalive)
+                               {
+                                       curl_close($curl);
+                               }
+                       }
+                       else
+                       {
+                               if(!$keepalive)
+                               {
+                                       curl_close($curl);
+                               }
+                               $resp =& $msg->parseResponse($result, true, $this->return_type);
+                       }
+                       return $resp;
+               }
+
+               /**
+               * Send an array of request messages and return an array of responses.
+               * Unless $this->no_multicall has been set to true, it will try first
+               * to use one single xmlrpc call to server method system.multicall, and
+               * revert to sending many successive calls in case of failure.
+               * This failure is also stored in $this->no_multicall for subsequent calls.
+               * Unfortunately, there is no server error code universally used to denote
+               * the fact that multicall is unsupported, so there is no way to reliably
+               * distinguish between that and a temporary failure.
+               * If you are sure that server supports multicall and do not want to
+               * fallback to using many single calls, set the fourth parameter to FALSE.
+               *
+               * NB: trying to shoehorn extra functionality into existing syntax has resulted
+               * in pretty much convoluted code...
+               *
+               * @param array $msgs an array of xmlrpcmsg objects
+               * @param integer $timeout connection timeout (in seconds)
+               * @param string $method the http protocol variant to be used
+               * @param boolean fallback When true, upon receiveing an error during multicall, multiple single calls will be attempted
+               * @return array
+               * @access public
+               */
+               function multicall($msgs, $timeout=0, $method='', $fallback=true)
+               {
+                       if ($method == '')
+                       {
+                               $method = $this->method;
+                       }
+                       if(!$this->no_multicall)
+                       {
+                               $results = $this->_try_multicall($msgs, $timeout, $method);
+                               if(is_array($results))
+                               {
+                                       // System.multicall succeeded
+                                       return $results;
+                               }
+                               else
+                               {
+                                       // either system.multicall is unsupported by server,
+                                       // or call failed for some other reason.
+                                       if ($fallback)
+                                       {
+                                               // Don't try it next time...
+                                               $this->no_multicall = true;
+                                       }
+                                       else
+                                       {
+                                               if (is_a($results, 'xmlrpcresp'))
+                                               {
+                                                       $result = $results;
+                                               }
+                                               else
+                                               {
+                                                       $result = new xmlrpcresp(0, $GLOBALS['xmlrpcerr']['multicall_error'], $GLOBALS['xmlrpcstr']['multicall_error']);
+                                               }
+                                       }
+                               }
+                       }
+                       else
+                       {
+                               // override fallback, in case careless user tries to do two
+                               // opposite things at the same time
+                               $fallback = true;
+                       }
+
+                       $results = array();
+                       if ($fallback)
+                       {
+                               // system.multicall is (probably) unsupported by server:
+                               // emulate multicall via multiple requests
+                               foreach($msgs as $msg)
+                               {
+                                       $results[] =& $this->send($msg, $timeout, $method);
+                               }
+                       }
+                       else
+                       {
+                               // user does NOT want to fallback on many single calls:
+                               // since we should always return an array of responses,
+                               // return an array with the same error repeated n times
+                               foreach($msgs as $msg)
+                               {
+                                       $results[] = $result;
+                               }
+                       }
+                       return $results;
+               }
+
+               /**
+               * Attempt to boxcar $msgs via system.multicall.
+               * Returns either an array of xmlrpcreponses, an xmlrpc error response
+               * or false (when received response does not respect valid multicall syntax)
+               * @access private
+               */
+               function _try_multicall($msgs, $timeout, $method)
+               {
+                       // Construct multicall message
+                       $calls = array();
+                       foreach($msgs as $msg)
+                       {
+                               $call['methodName'] = new xmlrpcval($msg->method(),'string');
+                               $numParams = $msg->getNumParams();
+                               $params = array();
+                               for($i = 0; $i < $numParams; $i++)
+                               {
+                                       $params[$i] = $msg->getParam($i);
+                               }
+                               $call['params'] = new xmlrpcval($params, 'array');
+                               $calls[] = new xmlrpcval($call, 'struct');
+                       }
+                       $multicall = new xmlrpcmsg('system.multicall');
+                       $multicall->addParam(new xmlrpcval($calls, 'array'));
+
+                       // Attempt RPC call
+                       $result =& $this->send($multicall, $timeout, $method);
+
+                       if($result->faultCode() != 0)
+                       {
+                               // call to system.multicall failed
+                               return $result;
+                       }
+
+                       // Unpack responses.
+                       $rets = $result->value();
+
+                       if ($this->return_type == 'xml')
+                       {
+                                       return $rets;
+                       }
+                       else if ($this->return_type == 'phpvals')
+                       {
+                               ///@todo test this code branch...
+                               $rets = $result->value();
+                               if(!is_array($rets))
+                               {
+                                       return false;           // bad return type from system.multicall
+                               }
+                               $numRets = count($rets);
+                               if($numRets != count($msgs))
+                               {
+                                       return false;           // wrong number of return values.
+                               }
+
+                               $response = array();
+                               for($i = 0; $i < $numRets; $i++)
+                               {
+                                       $val = $rets[$i];
+                                       if (!is_array($val)) {
+                                               return false;
+                                       }
+                                       switch(count($val))
+                                       {
+                                               case 1:
+                                                       if(!isset($val[0]))
+                                                       {
+                                                               return false;           // Bad value
+                                                       }
+                                                       // Normal return value
+                                                       $response[$i] = new xmlrpcresp($val[0], 0, '', 'phpvals');
+                                                       break;
+                                               case 2:
+                                                       ///     @todo remove usage of @: it is apparently quite slow
+                                                       $code = @$val['faultCode'];
+                                                       if(!is_int($code))
+                                                       {
+                                                               return false;
+                                                       }
+                                                       $str = @$val['faultString'];
+                                                       if(!is_string($str))
+                                                       {
+                                                               return false;
+                                                       }
+                                                       $response[$i] = new xmlrpcresp(0, $code, $str);
+                                                       break;
+                                               default:
+                                                       return false;
+                                       }
+                               }
+                               return $response;
+                       }
+                       else // return type == 'xmlrpcvals'
+                       {
+                               $rets = $result->value();
+                               if($rets->kindOf() != 'array')
+                               {
+                                       return false;           // bad return type from system.multicall
+                               }
+                               $numRets = $rets->arraysize();
+                               if($numRets != count($msgs))
+                               {
+                                       return false;           // wrong number of return values.
+                               }
+
+                               $response = array();
+                               for($i = 0; $i < $numRets; $i++)
+                               {
+                                       $val = $rets->arraymem($i);
+                                       switch($val->kindOf())
+                                       {
+                                               case 'array':
+                                                       if($val->arraysize() != 1)
+                                                       {
+                                                               return false;           // Bad value
+                                                       }
+                                                       // Normal return value
+                                                       $response[$i] = new xmlrpcresp($val->arraymem(0));
+                                                       break;
+                                               case 'struct':
+                                                       $code = $val->structmem('faultCode');
+                                                       if($code->kindOf() != 'scalar' || $code->scalartyp() != 'int')
+                                                       {
+                                                               return false;
+                                                       }
+                                                       $str = $val->structmem('faultString');
+                                                       if($str->kindOf() != 'scalar' || $str->scalartyp() != 'string')
+                                                       {
+                                                               return false;
+                                                       }
+                                                       $response[$i] = new xmlrpcresp(0, $code->scalarval(), $str->scalarval());
+                                                       break;
+                                               default:
+                                                       return false;
+                                       }
+                               }
+                               return $response;
+                       }
+               }
+       } // end class xmlrpc_client
+
+       class xmlrpcresp
+       {
+               var $val = 0;
+               var $valtyp;
+               var $errno = 0;
+               var $errstr = '';
+               var $payload;
+               var $hdrs = array();
+               var $_cookies = array();
+               var $content_type = 'text/xml';
+               var $raw_data = '';
+
+               /**
+               * @param mixed $val either an xmlrpcval obj, a php value or the xml serialization of an xmlrpcval (a string)
+               * @param integer $fcode set it to anything but 0 to create an error response
+               * @param string $fstr the error string, in case of an error response
+               * @param string $valtyp either 'xmlrpcvals', 'phpvals' or 'xml'
+               *
+               * @todo add check that $val / $fcode / $fstr is of correct type???
+               * NB: as of now we do not do it, since it might be either an xmlrpcval or a plain
+               * php val, or a complete xml chunk, depending on usage of xmlrpc_client::send() inside which creator is called...
+               */
+               function xmlrpcresp($val, $fcode = 0, $fstr = '', $valtyp='')
+               {
+                       if($fcode != 0)
+                       {
+                               // error response
+                               $this->errno = $fcode;
+                               $this->errstr = $fstr;
+                               //$this->errstr = Entity::hsc($fstr); // XXX: encoding probably shouldn't be done here; fix later.
+                       }
+                       else
+                       {
+                               // successful response
+                               $this->val = $val;
+                               if ($valtyp == '')
+                               {
+                                       // user did not declare type of response value: try to guess it
+                                       if (is_object($this->val) && is_a($this->val, 'xmlrpcval'))
+                                       {
+                                               $this->valtyp = 'xmlrpcvals';
+                                       }
+                                       else if (is_string($this->val))
+                                       {
+                                               $this->valtyp = 'xml';
+
+                                       }
+                                       else
+                                       {
+                                               $this->valtyp = 'phpvals';
+                                       }
+                               }
+                               else
+                               {
+                                       // user declares type of resp value: believe him
+                                       $this->valtyp = $valtyp;
+                               }
+                       }
+               }
+
+               /**
+               * Returns the error code of the response.
+               * @return integer the error code of this response (0 for not-error responses)
+               * @access public
+               */
+               function faultCode()
+               {
+                       return $this->errno;
+               }
+
+               /**
+               * Returns the error code of the response.
+               * @return string the error string of this response ('' for not-error responses)
+               * @access public
+               */
+               function faultString()
+               {
+                       return $this->errstr;
+               }
+
+               /**
+               * Returns the value received by the server.
+               * @return mixed the xmlrpcval object returned by the server. Might be an xml string or php value if the response has been created by specially configured xmlrpc_client objects
+               * @access public
+               */
+               function value()
+               {
+                       return $this->val;
+               }
+
+               /**
+               * Returns an array with the cookies received from the server.
+               * Array has the form: $cookiename => array ('value' => $val, $attr1 => $val1, $attr2 = $val2, ...)
+               * with attributes being e.g. 'expires', 'path', domain'.
+               * NB: cookies sent as 'expired' by the server (i.e. with an expiry date in the past)
+               * are still present in the array. It is up to the user-defined code to decide
+               * how to use the received cookies, and wheter they have to be sent back with the next
+               * request to the server (using xmlrpc_client::setCookie) or not
+               * @return array array of cookies received from the server
+               * @access public
+               */
+               function cookies()
+               {
+                       return $this->_cookies;
+               }
+
+               /**
+               * Returns xml representation of the response. XML prologue not included
+               * @param string $charset_encoding the charset to be used for serialization. if null, US-ASCII is assumed
+               * @return string the xml representation of the response
+               * @access public
+               */
+               function serialize($charset_encoding='')
+               {
+                       if ($charset_encoding != '')
+                               $this->content_type = 'text/xml; charset=' . $charset_encoding;
+                       else
+                               $this->content_type = 'text/xml';
+                       $result = "<methodResponse>\n";
+                       if($this->errno)
+                       {
+                               // G. Giunta 2005/2/13: let non-ASCII response messages be tolerated by clients
+                               // by xml-encoding non ascii chars
+                               $result .= "<fault>\n" .
+"<value>\n<struct><member><name>faultCode</name>\n<value><int>" . $this->errno .
+"</int></value>\n</member>\n<member>\n<name>faultString</name>\n<value><string>" .
+xmlrpc_encode_entitites($this->errstr, $GLOBALS['xmlrpc_internalencoding'], $charset_encoding) . "</string></value>\n</member>\n" .
+"</struct>\n</value>\n</fault>";
+                       }
+                       else
+                       {
+                               if(!is_object($this->val) || !is_a($this->val, 'xmlrpcval'))
+                               {
+                                       if (is_string($this->val) && $this->valtyp == 'xml')
+                                       {
+                                               $result .= "<params>\n<param>\n" .
+                                                       $this->val .
+                                                       "</param>\n</params>";
+                                       }
+                                       else
+                                       {
+                                               /// @todo try to build something serializable?
+                                               die('cannot serialize xmlrpcresp objects whose content is native php values');
+                                       }
+                               }
+                               else
+                               {
+                                       $result .= "<params>\n<param>\n" .
+                                               $this->val->serialize($charset_encoding) .
+                                               "</param>\n</params>";
+                               }
+                       }
+                       $result .= "\n</methodResponse>";
+                       $this->payload = $result;
+                       return $result;
+               }
+       }
+
+       class xmlrpcmsg
+       {
+               var $payload;
+               var $methodname;
+               var $params=array();
+               var $debug=0;
+               var $content_type = 'text/xml';
+
+               /**
+               * @param string $meth the name of the method to invoke
+               * @param array $pars array of parameters to be paased to the method (xmlrpcval objects)
+               */
+               function xmlrpcmsg($meth, $pars=0)
+               {
+                       $this->methodname=$meth;
+                       if(is_array($pars) && count($pars)>0)
+                       {
+                               for($i=0; $i<count($pars); $i++)
+                               {
+                                       $this->addParam($pars[$i]);
+                               }
+                       }
+               }
+
+               /**
+               * @access private
+               */
+               function xml_header($charset_encoding='')
+               {
+                       if ($charset_encoding != '')
+                       {
+                               return "<?xml version=\"1.0\" encoding=\"$charset_encoding\" ?" . ">\n<methodCall>\n";
+                       }
+                       else
+                       {
+                               return "<?xml version=\"1.0\"?" . ">\n<methodCall>\n";
+                       }
+               }
+
+               /**
+               * @access private
+               */
+               function xml_footer()
+               {
+                       return '</methodCall>';
+               }
+
+               /**
+               * @access private
+               */
+               function kindOf()
+               {
+                       return 'msg';
+               }
+
+               /**
+               * @access private
+               */
+               function createPayload($charset_encoding='')
+               {
+                       if ($charset_encoding != '')
+                               $this->content_type = 'text/xml; charset=' . $charset_encoding;
+                       else
+                               $this->content_type = 'text/xml';
+                       $this->payload=$this->xml_header($charset_encoding);
+                       $this->payload.='<methodName>' . $this->methodname . "</methodName>\n";
+                       $this->payload.="<params>\n";
+                       for($i=0; $i<count($this->params); $i++)
+                       {
+                               $p=$this->params[$i];
+                               $this->payload.="<param>\n" . $p->serialize($charset_encoding) .
+                               "</param>\n";
+                       }
+                       $this->payload.="</params>\n";
+                       $this->payload.=$this->xml_footer();
+               }
+
+               /**
+               * Gets/sets the xmlrpc method to be invoked
+               * @param string $meth the method to be set (leave empty not to set it)
+               * @return string the method that will be invoked
+               * @access public
+               */
+               function method($meth='')
+               {
+                       if($meth!='')
+                       {
+                               $this->methodname=$meth;
+                       }
+                       return $this->methodname;
+               }
+
+               /**
+               * Returns xml representation of the message. XML prologue included
+               * @return string the xml representation of the message, xml prologue included
+               * @access public
+               */
+               function serialize($charset_encoding='')
+               {
+                       $this->createPayload($charset_encoding);
+                       return $this->payload;
+               }
+
+               /**
+               * Add a parameter to the list of parameters to be used upon method invocation
+               * @param xmlrpcval $par
+               * @return boolean false on failure
+               * @access public
+               */
+               function addParam($par)
+               {
+                       // add check: do not add to self params which are not xmlrpcvals
+                       if(is_object($par) && is_a($par, 'xmlrpcval'))
+                       {
+                               $this->params[]=$par;
+                               return true;
+                       }
+                       else
+                       {
+                               return false;
+                       }
+               }
+
+               /**
+               * Returns the nth parameter in the message. The index zero-based.
+               * @param integer $i the index of the parameter to fetch (zero based)
+               * @return xmlrpcval the i-th parameter
+               * @access public
+               */
+               function getParam($i) { return $this->params[$i]; }
+
+               /**
+               * Returns the number of parameters in the messge.
+               * @return integer the number of parameters currently set
+               * @access public
+               */
+               function getNumParams() { return count($this->params); }
+
+               /**
+               * Given an open file handle, read all data available and parse it as axmlrpc response.
+               * NB: the file handle is not closed by this function.
+               * @access public
+               * @return xmlrpcresp
+               * @todo add 2nd & 3rd param to be passed to ParseResponse() ???
+               */
+               function &parseResponseFile($fp)
+               {
+                       $ipd='';
+                       while($data=fread($fp, 32768))
+                       {
+                               $ipd.=$data;
+                       }
+                       //fclose($fp);
+                       $r =& $this->parseResponse($ipd);
+                       return $r;
+               }
+
+               /**
+               * Parses HTTP headers and separates them from data.
+               * @access private
+               */
+               function &parseResponseHeaders(&$data, $headers_processed=false)
+               {
+                               // Support "web-proxy-tunelling" connections for https through proxies
+                               if(preg_match('/^HTTP\/1\.[0-1] 200 Connection established/', $data))
+                               {
+                                       // Look for CR/LF or simple LF as line separator,
+                                       // (even though it is not valid http)
+                                       $pos = i18n::strpos($data,"\r\n\r\n");
+                                       if($pos || is_int($pos))
+                                       {
+                                               $bd = $pos+4;
+                                       }
+                                       else
+                                       {
+                                               $pos = i18n::strpos($data,"\n\n");
+                                               if($pos || is_int($pos))
+                                               {
+                                                       $bd = $pos+2;
+                                               }
+                                               else
+                                               {
+                                                       // No separation between response headers and body: fault?
+                                                       $bd = 0;
+                                               }
+                                       }
+                                       if ($bd)
+                                       {
+                                               // this filters out all http headers from proxy.
+                                               // maybe we could take them into account, too?
+                                               $data = i18n::substr($data, $bd);
+                                       }
+                                       else
+                                       {
+                                               error_log('XML-RPC: xmlrpcmsg::parseResponse: HTTPS via proxy error, tunnel connection possibly failed');
+                                               $r = new xmlrpcresp(0, $GLOBALS['xmlrpcerr']['http_error'], $GLOBALS['xmlrpcstr']['http_error']. ' (HTTPS via proxy error, tunnel connection possibly failed)');
+                                               return $r;
+                                       }
+                               }
+
+                               // Strip HTTP 1.1 100 Continue header if present
+                               while(preg_match('/^HTTP\/1\.1 1[0-9]{2} /', $data))
+                               {
+                                       $pos = i18n::strpos($data, 'HTTP', 12);
+                                       // server sent a Continue header without any (valid) content following...
+                                       // give the client a chance to know it
+                                       if(!$pos && !is_int($pos)) // works fine in php 3, 4 and 5
+                                       {
+                                               break;
+                                       }
+                                       $data = i18n::substr($data, $pos);
+                               }
+                               if(!preg_match('/^HTTP\/[0-9.]+ 200 /', $data))
+                               {
+                                       $errstr= i18n::substr($data, 0, i18n::strpos($data, "\n")-1);
+                                       error_log('XML-RPC: xmlrpcmsg::parseResponse: HTTP error, got response: ' .$errstr);
+                                       $r = new xmlrpcresp(0, $GLOBALS['xmlrpcerr']['http_error'], $GLOBALS['xmlrpcstr']['http_error']. ' (' . $errstr . ')');
+                                       return $r;
+                               }
+
+                               $GLOBALS['_xh']['headers'] = array();
+                               $GLOBALS['_xh']['cookies'] = array();
+
+                               // be tolerant to usage of \n instead of \r\n to separate headers and data
+                               // (even though it is not valid http)
+                               $pos = i18n::strpos($data,"\r\n\r\n");
+                               if($pos || is_int($pos))
+                               {
+                                       $bd = $pos+4;
+                               }
+                               else
+                               {
+                                       $pos = i18n::strpos($data,"\n\n");
+                                       if($pos || is_int($pos))
+                                       {
+                                               $bd = $pos+2;
+                                       }
+                                       else
+                                       {
+                                               // No separation between response headers and body: fault?
+                                               // we could take some action here instead of going on...
+                                               $bd = 0;
+                                       }
+                               }
+                               // be tolerant to line endings, and extra empty lines
+                               //$ar = split("\r?\n", trim(substr($data, 0, $pos))); //split() is deprecated
+                               $ar = preg_split("/\r?\n/", trim(i18n::substr($data, 0, $pos)));
+                               while(list(,$line) = @each($ar))
+                               {
+                                       // take care of multi-line headers and cookies
+                                       $arr = preg_split('#:#',$line,2);
+                                       if(count($arr) > 1)
+                                       {
+                                               $header_name = strtolower(trim($arr[0]));
+                                               /// @todo some other headers (the ones that allow a CSV list of values)
+                                               /// do allow many values to be passed using multiple header lines.
+                                               /// We should add content to $GLOBALS['_xh']['headers'][$header_name]
+                                               /// instead of replacing it for those...
+                                               if ($header_name == 'set-cookie' || $header_name == 'set-cookie2')
+                                               {
+                                                       if ($header_name == 'set-cookie2')
+                                                       {
+                                                               // version 2 cookies:
+                                                               // there could be many cookies on one line, comma separated
+                                                               $cookies = preg_split('#,#', $arr[1]);
+                                                       }
+                                                       else
+                                                       {
+                                                               $cookies = array($arr[1]);
+                                                       }
+                                                       foreach ($cookies as $cookie)
+                                                       {
+                                                               // glue together all received cookies, using a comma to separate them
+                                                               // (same as php does with getallheaders())
+                                                               if (isset($GLOBALS['_xh']['headers'][$header_name]))
+                                                                       $GLOBALS['_xh']['headers'][$header_name] .= ', ' . trim($cookie);
+                                                               else
+                                                                       $GLOBALS['_xh']['headers'][$header_name] = trim($cookie);
+                                                               // parse cookie attributes, in case user wants to correctly honour them
+                                                               // feature creep: only allow rfc-compliant cookie attributes?
+                                                               $cookie = preg_split('#;#', $cookie);
+                                                               foreach ($cookie as $pos => $val)
+                                                               {
+                                                                       $val = preg_split('#=#', $val, 2);
+                                                                       $tag = trim($val[0]);
+                                                                       $val = trim(@$val[1]);
+                                                                       /// @todo with version 1 cookies, we should strip leading and trailing " chars
+                                                                       if ($pos == 0)
+                                                                       {
+                                                                               $cookiename = $tag;
+                                                                               $GLOBALS['_xh']['cookies'][$tag] = array();
+                                                                               $GLOBALS['_xh']['cookies'][$cookiename]['value'] = urldecode($val);
+                                                                       }
+                                                                       else
+                                                                       {
+                                                                               $GLOBALS['_xh']['cookies'][$cookiename][$tag] = $val;
+                                                                       }
+                                                               }
+                                                       }
+                                               }
+                                               else
+                                               {
+                                                       $GLOBALS['_xh']['headers'][$header_name] = trim($arr[1]);
+                                               }
+                                       }
+                                       elseif(isset($header_name))
+                                       {
+                                               ///     @todo version1 cookies might span multiple lines, thus breaking the parsing above
+                                               $GLOBALS['_xh']['headers'][$header_name] .= ' ' . trim($line);
+                                       }
+                               }
+
+                               $data = i18n::substr($data, $bd);
+
+                               if($this->debug && count($GLOBALS['_xh']['headers']))
+                               {
+                                       print '<PRE>';
+                                       foreach($GLOBALS['_xh']['headers'] as $header => $value)
+                                       {
+                                               print Entity::hen("HEADER: $header: $value\n");
+                                       }
+                                       foreach($GLOBALS['_xh']['cookies'] as $header => $value)
+                                       {
+                                               print Entity::hen("COOKIE: $header={$value['value']}\n");
+                                       }
+                                       print "</PRE>\n";
+                               }
+
+                               // if CURL was used for the call, http headers have been processed,
+                               // and dechunking + reinflating have been carried out
+                               if(!$headers_processed)
+                               {
+                                       // Decode chunked encoding sent by http 1.1 servers
+                                       if(isset($GLOBALS['_xh']['headers']['transfer-encoding']) && $GLOBALS['_xh']['headers']['transfer-encoding'] == 'chunked')
+                                       {
+                                               if(!$data = decode_chunked($data))
+                                               {
+                                                       error_log('XML-RPC: xmlrpcmsg::parseResponse: errors occurred when trying to rebuild the chunked data received from server');
+                                                       $r = new xmlrpcresp(0, $GLOBALS['xmlrpcerr']['dechunk_fail'], $GLOBALS['xmlrpcstr']['dechunk_fail']);
+                                                       return $r;
+                                               }
+                                       }
+
+                                       // Decode gzip-compressed stuff
+                                       // code shamelessly inspired from nusoap library by Dietrich Ayala
+                                       if(isset($GLOBALS['_xh']['headers']['content-encoding']))
+                                       {
+                                               $GLOBALS['_xh']['headers']['content-encoding'] = str_replace('x-', '', $GLOBALS['_xh']['headers']['content-encoding']);
+                                               if($GLOBALS['_xh']['headers']['content-encoding'] == 'deflate' || $GLOBALS['_xh']['headers']['content-encoding'] == 'gzip')
+                                               {
+                                                       // if decoding works, use it. else assume data wasn't gzencoded
+                                                       if(function_exists('gzinflate'))
+                                                       {
+                                                               if($GLOBALS['_xh']['headers']['content-encoding'] == 'deflate' && $degzdata = @gzuncompress($data))
+                                                               {
+                                                                       $data = $degzdata;
+                                                                       if($this->debug)
+                                                                       print "<PRE>---INFLATED RESPONSE---[".i18n::strlen($data)." chars]---\n" . Entity::hen($data) . "\n---END---</PRE>";
+                                                               }
+                                                               elseif($GLOBALS['_xh']['headers']['content-encoding'] == 'gzip' && $degzdata = @gzinflate(i18n::substr($data, 10)))
+                                                               {
+                                                                       $data = $degzdata;
+                                                                       if($this->debug)
+                                                                       print "<PRE>---INFLATED RESPONSE---[".i18n::strlen($data)." chars]---\n" . Entity::hen($data) . "\n---END---</PRE>";
+                                                               }
+                                                               else
+                                                               {
+                                                                       error_log('XML-RPC: xmlrpcmsg::parseResponse: errors occurred when trying to decode the deflated data received from server');
+                                                                       $r = new xmlrpcresp(0, $GLOBALS['xmlrpcerr']['decompress_fail'], $GLOBALS['xmlrpcstr']['decompress_fail']);
+                                                                       return $r;
+                                                               }
+                                                       }
+                                                       else
+                                                       {
+                                                               error_log('XML-RPC: xmlrpcmsg::parseResponse: the server sent deflated data. Your php install must have the Zlib extension compiled in to support this.');
+                                                               $r = new xmlrpcresp(0, $GLOBALS['xmlrpcerr']['cannot_decompress'], $GLOBALS['xmlrpcstr']['cannot_decompress']);
+                                                               return $r;
+                                                       }
+                                               }
+                                       }
+                               } // end of 'if needed, de-chunk, re-inflate response'
+
+                               // real stupid hack to avoid PHP 4 complaining about returning NULL by ref
+                               $r = null;
+                               $r =& $r;
+                               return $r;
+               }
+
+               /**
+               * Parse the xmlrpc response contained in the string $data and return an xmlrpcresp object.
+               * @param string $data the xmlrpc response, eventually including http headers
+               * @param bool $headers_processed when true prevents parsing HTTP headers for interpretation of content-encoding and consequent decoding
+               * @param string $return_type decides return type, i.e. content of response->value(). Either 'xmlrpcvals', 'xml' or 'phpvals'
+               * @return xmlrpcresp
+               * @access public
+               */
+               function &parseResponse($data='', $headers_processed=false, $return_type='xmlrpcvals')
+               {
+                       if($this->debug)
+                       {
+                               print "<PRE>---GOT---\n" . Entity::hen($data) . "\n---END---\n</PRE>";
+                       }
+
+                       if($data == '')
+                       {
+                               error_log('XML-RPC: xmlrpcmsg::parseResponse: no response received from server.');
+                               $r = new xmlrpcresp(0, $GLOBALS['xmlrpcerr']['no_data'], $GLOBALS['xmlrpcstr']['no_data']);
+                               return $r;
+                       }
+
+                       $GLOBALS['_xh']=array();
+
+                       $raw_data = $data;
+                       // parse the HTTP headers of the response, if present, and separate them from data
+                       if(i18n::substr($data, 0, 4) == 'HTTP')
+                       {
+                               $r =& $this->parseResponseHeaders($data, $headers_processed);
+                               if ($r)
+                               {
+                                       // failed processing of HTTP response headers
+                                       // save into response obj the full payload received, for debugging
+                                       $r->raw_data = $data;
+                                       return $r;
+                               }
+                       }
+                       else
+                       {
+                               $GLOBALS['_xh']['headers'] = array();
+                               $GLOBALS['_xh']['cookies'] = array();
+                       }
+
+                       if($this->debug)
+                       {
+                               $start = i18n::strpos($data, '<!-- SERVER DEBUG INFO (BASE64 ENCODED):');
+                               if ($start)
+                               {
+                                       $start += i18n::strlen('<!-- SERVER DEBUG INFO (BASE64 ENCODED):');
+                                       $end = i18n::strpos($data, '-->', $start);
+                                       $comments = i18n::substr($data, $start, $end-$start);
+                                       print "<PRE>---SERVER DEBUG INFO (DECODED) ---\n\t".Entity::hen(str_replace("\n", "\n\t", base64_decode($comments)))."\n---END---\n</PRE>";
+                               }
+                       }
+
+                       // be tolerant of extra whitespace in response body
+                       $data = trim($data);
+
+                       /// @todo return an error msg if $data=='' ?
+
+                       // be tolerant of junk after methodResponse (e.g. javascript ads automatically inserted by free hosts)
+                       // idea from Luca Mariano <luca.mariano@email.it> originally in PEARified version of the lib
+                       $bd = false;
+                       // Poor man's version of strrpos for php 4...
+                       $pos = i18n::strpos($data, '</methodResponse>');
+                       while($pos || is_int($pos))
+                       {
+                               $bd = $pos+17;
+                               $pos = i18n::strpos($data, '</methodResponse>', $bd);
+                       }
+                       if($bd)
+                       {
+                               $data = i18n::substr($data, 0, $bd);
+                       }
+
+                       // if user wants back raw xml, give it to him
+                       if ($return_type == 'xml')
+                       {
+                               $r = new xmlrpcresp($data, 0, '', 'xml');
+                               $r->hdrs = $GLOBALS['_xh']['headers'];
+                               $r->_cookies = $GLOBALS['_xh']['cookies'];
+                               $r->raw_data = $raw_data;
+                               return $r;
+                       }
+
+                       // try to 'guestimate' the character encoding of the received response
+                       $resp_encoding = guess_encoding(@$GLOBALS['_xh']['headers']['content-type'], $data);
+
+                       $GLOBALS['_xh']['ac']='';
+                       //$GLOBALS['_xh']['qt']=''; //unused...
+                       $GLOBALS['_xh']['stack'] = array();
+                       $GLOBALS['_xh']['valuestack'] = array();
+                       $GLOBALS['_xh']['isf']=0; // 0 = OK, 1 for xmlrpc fault responses, 2 = invalid xmlrpc
+                       $GLOBALS['_xh']['isf_reason']='';
+                       $GLOBALS['_xh']['rt']=''; // 'methodcall or 'methodresponse'
+
+                       // if response charset encoding is not known / supported, try to use
+                       // the default encoding and parse the xml anyway, but log a warning...
+                       if (!in_array($resp_encoding, array('UTF-8', 'ISO-8859-1', 'US-ASCII')))
+                       // the following code might be better for mb_string enabled installs, but
+                       // makes the lib about 200% slower...
+                       //if (!is_valid_charset($resp_encoding, array('UTF-8', 'ISO-8859-1', 'US-ASCII')))
+                       {
+                               error_log('XML-RPC: xmlrpcmsg::parseResponse: invalid charset encoding of received response: '.$resp_encoding);
+                               $resp_encoding = $GLOBALS['xmlrpc_defencoding'];
+                       }
+                       $parser = xml_parser_create($resp_encoding);
+                       xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, true);
+                       // G. Giunta 2005/02/13: PHP internally uses ISO-8859-1, so we have to tell
+                       // the xml parser to give us back data in the expected charset
+                       xml_parser_set_option($parser, XML_OPTION_TARGET_ENCODING, $GLOBALS['xmlrpc_internalencoding']);
+
+                       if ($return_type == 'phpvals')
+                       {
+                               xml_set_element_handler($parser, 'xmlrpc_se', 'xmlrpc_ee_fast');
+                       }
+                       else
+                       {
+                               xml_set_element_handler($parser, 'xmlrpc_se', 'xmlrpc_ee');
+                       }
+
+                       xml_set_character_data_handler($parser, 'xmlrpc_cd');
+                       xml_set_default_handler($parser, 'xmlrpc_dh');
+
+                       // first error check: xml not well formed
+                       if(!xml_parse($parser, $data, count($data)))
+                       {
+                               // thanks to Peter Kocks <peter.kocks@baygate.com>
+                               if((xml_get_current_line_number($parser)) == 1)
+                               {
+                                       $errstr = 'XML error at line 1, check URL';
+                               }
+                               else
+                               {
+                                       $errstr = sprintf('XML error: %s at line %d, column %d',
+                                               xml_error_string(xml_get_error_code($parser)),
+                                               xml_get_current_line_number($parser), xml_get_current_column_number($parser));
+                               }
+                               error_log($errstr);
+                               $r = new xmlrpcresp(0, $GLOBALS['xmlrpcerr']['invalid_return'], $GLOBALS['xmlrpcstr']['invalid_return'].' ('.$errstr.')');
+                               xml_parser_free($parser);
+                               if($this->debug)
+                               {
+                                       print $errstr;
+                               }
+                               $r->hdrs = $GLOBALS['_xh']['headers'];
+                               $r->_cookies = $GLOBALS['_xh']['cookies'];
+                               $r->raw_data = $raw_data;
+                               return $r;
+                       }
+                       xml_parser_free($parser);
+                       // second error check: xml well formed but not xml-rpc compliant
+                       if ($GLOBALS['_xh']['isf'] > 1)
+                       {
+                               if ($this->debug)
+                               {
+                                       /// @todo echo something for user?
+                               }
+
+                               $r = new xmlrpcresp(0, $GLOBALS['xmlrpcerr']['invalid_return'],
+                               $GLOBALS['xmlrpcstr']['invalid_return'] . ' ' . $GLOBALS['_xh']['isf_reason']);
+                       }
+                       // third error check: parsing of the response has somehow gone boink.
+                       // NB: shall we omit this check, since we trust the parsing code?
+                       elseif ($return_type == 'xmlrpcvals' && !is_object($GLOBALS['_xh']['value']))
+                       {
+                               // something odd has happened
+                               // and it's time to generate a client side error
+                               // indicating something odd went on
+                               $r = new xmlrpcresp(0, $GLOBALS['xmlrpcerr']['invalid_return'],
+                                       $GLOBALS['xmlrpcstr']['invalid_return']);
+                       }
+                       else
+                       {
+                               if ($this->debug)
+                               {
+                                       print "<PRE>---PARSED---\n";
+                                       print Entity::hsc(var_export($GLOBALS['_xh']['value'], true));
+                                       print "\n---END---</PRE>";
+                               }
+
+                               // note that using =& will raise an error if $GLOBALS['_xh']['st'] does not generate an object.
+                               $v =& $GLOBALS['_xh']['value'];
+
+                               if($GLOBALS['_xh']['isf'])
+                               {
+                                       /// @todo we should test here if server sent an int and a string,
+                                       /// and/or coerce them into such...
+                                       if ($return_type == 'xmlrpcvals')
+                                       {
+                                               $errno_v = $v->structmem('faultCode');
+                                               $errstr_v = $v->structmem('faultString');
+                                               $errno = $errno_v->scalarval();
+                                               $errstr = $errstr_v->scalarval();
+                                       }
+                                       else
+                                       {
+                                               $errno = $v['faultCode'];
+                                               $errstr = $v['faultString'];
+                                       }
+
+                                       if($errno == 0)
+                                       {
+                                               // FAULT returned, errno needs to reflect that
+                                               $errno = -1;
+                                       }
+
+                                       $r = new xmlrpcresp(0, $errno, $errstr);
+                               }
+                               else
+                               {
+                                       $r = new xmlrpcresp($v, 0, '', $return_type);
+                               }
+                       }
+
+                       $r->hdrs = $GLOBALS['_xh']['headers'];
+                       $r->_cookies = $GLOBALS['_xh']['cookies'];
+                       $r->raw_data = $raw_data;
+                       return $r;
+               }
+       }
+
+       class xmlrpcval
+       {
+               var $me=array();
+               var $mytype=0;
+               var $_php_class=null;
+
+               /**
+               * @param mixed $val
+               * @param string $type any valid xmlrpc type name (lowercase). If null, 'string' is assumed
+               */
+               function xmlrpcval($val=-1, $type='')
+               {
+                       /// @todo: optimization creep - do not call addXX, do it all inline.
+                       /// downside: booleans will not be coerced anymore
+                       if($val!==-1 || $type!='')
+                       {
+                               // optimization creep: inlined all work done by constructor
+                               switch($type)
+                               {
+                                       case '':
+                                               $this->mytype=1;
+                                               $this->me['string']=$val;
+                                               break;
+                                       case 'i4':
+                                       case 'int':
+                                       case 'double':
+                                       case 'string':
+                                       case 'boolean':
+                                       case 'dateTime.iso8601':
+                                       case 'base64':
+                                       case 'null':
+                                               $this->mytype=1;
+                                               $this->me[$type]=$val;
+                                               break;
+                                       case 'array':
+                                               $this->mytype=2;
+                                               $this->me['array']=$val;
+                                               break;
+                                       case 'struct':
+                                               $this->mytype=3;
+                                               $this->me['struct']=$val;
+                                               break;
+                                       default:
+                                               error_log("XML-RPC: xmlrpcval::xmlrpcval: not a known type ($type)");
+                               }
+                               /*if($type=='')
+                               {
+                                       $type='string';
+                               }
+                               if($GLOBALS['xmlrpcTypes'][$type]==1)
+                               {
+                                       $this->addScalar($val,$type);
+                               }
+                               elseif($GLOBALS['xmlrpcTypes'][$type]==2)
+                               {
+                                       $this->addArray($val);
+                               }
+                               elseif($GLOBALS['xmlrpcTypes'][$type]==3)
+                               {
+                                       $this->addStruct($val);
+                               }*/
+                       }
+               }
+
+               /**
+               * Add a single php value to an (unitialized) xmlrpcval
+               * @param mixed $val
+               * @param string $type
+               * @return int 1 or 0 on failure
+               */
+               function addScalar($val, $type='string')
+               {
+                       $typeof=@$GLOBALS['xmlrpcTypes'][$type];
+                       if($typeof!=1)
+                       {
+                               error_log("XML-RPC: xmlrpcval::addScalar: not a scalar type ($type)");
+                               return 0;
+                       }
+
+                       // coerce booleans into correct values
+                       // NB: we should iether do it for datetimes, integers and doubles, too,
+                       // or just plain remove this check, implemnted on booleans only...
+                       if($type==$GLOBALS['xmlrpcBoolean'])
+                       {
+                               if(strcasecmp($val,'true')==0 || $val==1 || ($val==true && strcasecmp($val,'false')))
+                               {
+                                       $val=true;
+                               }
+                               else
+                               {
+                                       $val=false;
+                               }
+                       }
+
+                       switch($this->mytype)
+                       {
+                               case 1:
+                                       error_log('XML-RPC: xmlrpcval::addScalar: scalar xmlrpcval can have only one value');
+                                       return 0;
+                               case 3:
+                                       error_log('XML-RPC: xmlrpcval::addScalar: cannot add anonymous scalar to struct xmlrpcval');
+                                       return 0;
+                               case 2:
+                                       // we're adding a scalar value to an array here
+                                       //$ar=$this->me['array'];
+                                       //$ar[] = new xmlrpcval($val, $type);
+                                       //$this->me['array']=$ar;
+                                       // Faster (?) avoid all the costly array-copy-by-val done here...
+                                       $this->me['array'][] = new xmlrpcval($val, $type);
+                                       return 1;
+                               default:
+                                       // a scalar, so set the value and remember we're scalar
+                                       $this->me[$type]=$val;
+                                       $this->mytype=$typeof;
+                                       return 1;
+                       }
+               }
+
+               /**
+               * Add an array of xmlrpcval objects to an xmlrpcval
+               * @param array $vals
+               * @return int 1 or 0 on failure
+               * @access public
+               *
+               * @todo add some checking for $vals to be an array of xmlrpcvals?
+               */
+               function addArray($vals)
+               {
+                       if($this->mytype==0)
+                       {
+                               $this->mytype=$GLOBALS['xmlrpcTypes']['array'];
+                               $this->me['array']=$vals;
+                               return 1;
+                       }
+                       elseif($this->mytype==2)
+                       {
+                               // we're adding to an array here
+                               $this->me['array'] = array_merge($this->me['array'], $vals);
+                               return 1;
+                       }
+                       else
+                       {
+                               error_log('XML-RPC: xmlrpcval::addArray: already initialized as a [' . $this->kindOf() . ']');
+                               return 0;
+                       }
+               }
+
+               /**
+               * Add an array of named xmlrpcval objects to an xmlrpcval
+               * @param array $vals
+               * @return int 1 or 0 on failure
+               * @access public
+               *
+               * @todo add some checking for $vals to be an array?
+               */
+               function addStruct($vals)
+               {
+                       if($this->mytype==0)
+                       {
+                               $this->mytype=$GLOBALS['xmlrpcTypes']['struct'];
+                               $this->me['struct']=$vals;
+                               return 1;
+                       }
+                       elseif($this->mytype==3)
+                       {
+                               // we're adding to a struct here
+                               $this->me['struct'] = array_merge($this->me['struct'], $vals);
+                               return 1;
+                       }
+                       else
+                       {
+                               error_log('XML-RPC: xmlrpcval::addStruct: already initialized as a [' . $this->kindOf() . ']');
+                               return 0;
+                       }
+               }
+
+               // poor man's version of print_r ???
+               // DEPRECATED!
+               function dump($ar)
+               {
+                       foreach($ar as $key => $val)
+                       {
+                               echo "$key => $val<br />";
+                               if($key == 'array')
+                               {
+                                       while(list($key2, $val2) = each($val))
+                                       {
+                                               echo "-- $key2 => $val2<br />";
+                                       }
+                               }
+                       }
+               }
+
+               /**
+               * Returns a string containing "struct", "array" or "scalar" describing the base type of the value
+               * @return string
+               * @access public
+               */
+               function kindOf()
+               {
+                       switch($this->mytype)
+                       {
+                               case 3:
+                                       return 'struct';
+                                       break;
+                               case 2:
+                                       return 'array';
+                                       break;
+                               case 1:
+                                       return 'scalar';
+                                       break;
+                               default:
+                                       return 'undef';
+                       }
+               }
+
+               /**
+               * @access private
+               */
+               function serializedata($typ, $val, $charset_encoding='')
+               {
+                       $rs='';
+                       switch(@$GLOBALS['xmlrpcTypes'][$typ])
+                       {
+                               case 1:
+                                       switch($typ)
+                                       {
+                                               case $GLOBALS['xmlrpcBase64']:
+                                                       $rs.="<${typ}>" . base64_encode($val) . "</${typ}>";
+                                                       break;
+                                               case $GLOBALS['xmlrpcBoolean']:
+                                                       $rs.="<${typ}>" . ($val ? '1' : '0') . "</${typ}>";
+                                                       break;
+                                               case $GLOBALS['xmlrpcString']:
+                                                       // G. Giunta 2005/2/13: do NOT use htmlentities, since
+                                                       // it will produce named html entities, which are invalid xml
+                                                       $rs.="<${typ}>" . xmlrpc_encode_entitites($val, $GLOBALS['xmlrpc_internalencoding'], $charset_encoding). "</${typ}>";
+                                                       break;
+                                               case $GLOBALS['xmlrpcInt']:
+                                               case $GLOBALS['xmlrpcI4']:
+                                                       $rs.="<${typ}>".(int)$val."</${typ}>";
+                                                       break;
+                                               case $GLOBALS['xmlrpcDouble']:
+                                                       $rs.="<${typ}>".(double)$val."</${typ}>";
+                                                       break;
+                                               case $GLOBALS['xmlrpcNull']:
+                                                       $rs.="<nil/>";
+                                                       break;
+                                               default:
+                                                       // no standard type value should arrive here, but provide a possibility
+                                                       // for xmlrpcvals of unknown type...
+                                                       $rs.="<${typ}>${val}</${typ}>";
+                                       }
+                                       break;
+                               case 3:
+                                       // struct
+                                       if ($this->_php_class)
+                                       {
+                                               $rs.='<struct php_class="' . $this->_php_class . "\">\n";
+                                       }
+                                       else
+                                       {
+                                               $rs.="<struct>\n";
+                                       }
+                                       foreach($val as $key2 => $val2)
+                                       {
+                                               $rs.='<member><name>'.xmlrpc_encode_entitites($key2, $GLOBALS['xmlrpc_internalencoding'], $charset_encoding)."</name>\n";
+                                               //$rs.=$this->serializeval($val2);
+                                               $rs.=$val2->serialize($charset_encoding);
+                                               $rs.="</member>\n";
+                                       }
+                                       $rs.='</struct>';
+                                       break;
+                               case 2:
+                                       // array
+                                       $rs.="<array>\n<data>\n";
+                                       for($i=0; $i<count($val); $i++)
+                                       {
+                                               //$rs.=$this->serializeval($val[$i]);
+                                               $rs.=$val[$i]->serialize($charset_encoding);
+                                       }
+                                       $rs.="</data>\n</array>";
+                                       break;
+                               default:
+                                       break;
+                       }
+                       return $rs;
+               }
+
+               /**
+               * Returns xml representation of the value. XML prologue not included
+               * @param string $charset_encoding the charset to be used for serialization. if null, US-ASCII is assumed
+               * @return string
+               * @access public
+               */
+               function serialize($charset_encoding='')
+               {
+                       // add check? slower, but helps to avoid recursion in serializing broken xmlrpcvals...
+                       //if (is_object($o) && (get_class($o) == 'xmlrpcval' || is_subclass_of($o, 'xmlrpcval')))
+                       //{
+                               reset($this->me);
+                               list($typ, $val) = each($this->me);
+                               return '<value>' . $this->serializedata($typ, $val, $charset_encoding) . "</value>\n";
+                       //}
+               }
+
+               // DEPRECATED
+               function serializeval($o)
+               {
+                       // add check? slower, but helps to avoid recursion in serializing broken xmlrpcvals...
+                       //if (is_object($o) && (get_class($o) == 'xmlrpcval' || is_subclass_of($o, 'xmlrpcval')))
+                       //{
+                               $ar=$o->me;
+                               reset($ar);
+                               list($typ, $val) = each($ar);
+                               return '<value>' . $this->serializedata($typ, $val) . "</value>\n";
+                       //}
+               }
+
+               /**
+               * Checks wheter a struct member with a given name is present.
+               * Works only on xmlrpcvals of type struct.
+               * @param string $m the name of the struct member to be looked up
+               * @return boolean
+               * @access public
+               */
+               function structmemexists($m)
+               {
+                       return array_key_exists($m, $this->me['struct']);
+               }
+
+               /**
+               * Returns the value of a given struct member (an xmlrpcval object in itself).
+               * Will raise a php warning if struct member of given name does not exist
+               * @param string $m the name of the struct member to be looked up
+               * @return xmlrpcval
+               * @access public
+               */
+               function structmem($m)
+               {
+                       return $this->me['struct'][$m];
+               }
+
+               /**
+               * Reset internal pointer for xmlrpcvals of type struct.
+               * @access public
+               */
+               function structreset()
+               {
+                       reset($this->me['struct']);
+               }
+
+               /**
+               * Return next member element for xmlrpcvals of type struct.
+               * @return xmlrpcval
+               * @access public
+               */
+               function structeach()
+               {
+                       return each($this->me['struct']);
+               }
+
+               // DEPRECATED! this code looks like it is very fragile and has not been fixed
+               // for a long long time. Shall we remove it for 2.0?
+               function getval()
+               {
+                       // UNSTABLE
+                       reset($this->me);
+                       list($a,$b)=each($this->me);
+                       // contributed by I Sofer, 2001-03-24
+                       // add support for nested arrays to scalarval
+                       // i've created a new method here, so as to
+                       // preserve back compatibility
+
+                       if(is_array($b))
+                       {
+                               @reset($b);
+                               while(list($id,$cont) = @each($b))
+                               {
+                                       $b[$id] = $cont->scalarval();
+                               }
+                       }
+
+                       // add support for structures directly encoding php objects
+                       if(is_object($b))
+                       {
+                               $t = get_object_vars($b);
+                               @reset($t);
+                               while(list($id,$cont) = @each($t))
+                               {
+                                       $t[$id] = $cont->scalarval();
+                               }
+                               @reset($t);
+                               while(list($id,$cont) = @each($t))
+                               {
+                                       @$b->$id = $cont;
+                               }
+                       }
+                       // end contrib
+                       return $b;
+               }
+
+               /**
+               * Returns the value of a scalar xmlrpcval
+               * @return mixed
+               * @access public
+               */
+               function scalarval()
+               {
+                       reset($this->me);
+                       list(,$b)=each($this->me);
+                       return $b;
+               }
+
+               /**
+               * Returns the type of the xmlrpcval.
+               * For integers, 'int' is always returned in place of 'i4'
+               * @return string
+               * @access public
+               */
+               function scalartyp()
+               {
+                       reset($this->me);
+                       list($a,)=each($this->me);
+                       if($a==$GLOBALS['xmlrpcI4'])
+                       {
+                               $a=$GLOBALS['xmlrpcInt'];
+                       }
+                       return $a;
+               }
+
+               /**
+               * Returns the m-th member of an xmlrpcval of struct type
+               * @param integer $m the index of the value to be retrieved (zero based)
+               * @return xmlrpcval
+               * @access public
+               */
+               function arraymem($m)
+               {
+                       return $this->me['array'][$m];
+               }
+
+               /**
+               * Returns the number of members in an xmlrpcval of array type
+               * @return integer
+               * @access public
+               */
+               function arraysize()
+               {
+                       return count($this->me['array']);
+               }
+
+               /**
+               * Returns the number of members in an xmlrpcval of struct type
+               * @return integer
+               * @access public
+               */
+               function structsize()
+               {
+                       return count($this->me['struct']);
+               }
+       }
+
+
+       // date helpers
+
+       /**
+       * Given a timestamp, return the corresponding ISO8601 encoded string.
+       *
+       * Really, timezones ought to be supported
+       * but the XML-RPC spec says:
+       *
+       * "Don't assume a timezone. It should be specified by the server in its
+       * documentation what assumptions it makes about timezones."
+       *
+       * These routines always assume localtime unless
+       * $utc is set to 1, in which case UTC is assumed
+       * and an adjustment for locale is made when encoding
+       *
+       * @param int $timet (timestamp)
+       * @param int $utc (0 or 1)
+       * @return string
+       */
+       function iso8601_encode($timet, $utc=0)
+       {
+               if(!$utc)
+               {
+                       $t=i18n::formatted_datetime('iso8601UTC', $timet);
+               }
+               else
+               {
+                       $t=i18n::formatted_datetime('iso8601UTC', $timet-date('Z'));
+               }
+               return $t;
+       }
+
+       /**
+       * Given an ISO8601 date string, return a timet in the localtime, or UTC
+       * @param string $idate
+       * @param int $utc either 0 or 1
+       * @return int (datetime)
+       */
+       function iso8601_decode($idate, $utc=0)
+       {
+               $t=0;
+               if(preg_match('/([0-9]{4})([0-9]{2})([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})/', $idate, $regs))
+               {
+                       if($utc)
+                       {
+                               $t=gmmktime($regs[4], $regs[5], $regs[6], $regs[2], $regs[3], $regs[1]);
+                       }
+                       else
+                       {
+                               $t=mktime($regs[4], $regs[5], $regs[6], $regs[2], $regs[3], $regs[1]);
+                       }
+               }
+               return $t;
+       }
+
+       /**
+       * Takes an xmlrpc value in PHP xmlrpcval object format and translates it into native PHP types.
+       *
+       * Works with xmlrpc message objects as input, too.
+       *
+       * Given proper options parameter, can rebuild generic php object instances
+       * (provided those have been encoded to xmlrpc format using a corresponding
+       * option in php_xmlrpc_encode())
+       * PLEASE NOTE that rebuilding php objects involves calling their constructor function.
+       * This means that the remote communication end can decide which php code will
+       * get executed on your server, leaving the door possibly open to 'php-injection'
+       * style of attacks (provided you have some classes defined on your server that
+       * might wreak havoc if instances are built outside an appropriate context).
+       * Make sure you trust the remote server/client before eanbling this!
+       *
+       * @author Dan Libby (dan@libby.com)
+       *
+       * @param xmlrpcval $xmlrpc_val
+       * @param array $options if 'decode_php_objs' is set in the options array, xmlrpc structs can be decoded into php objects
+       * @return mixed
+       */
+       function php_xmlrpc_decode($xmlrpc_val, $options=array())
+       {
+               switch($xmlrpc_val->kindOf())
+               {
+                       case 'scalar':
+                               if (in_array('extension_api', $options))
+                               {
+                                       reset($xmlrpc_val->me);
+                                       list($typ,$val) = each($xmlrpc_val->me);
+                                       switch ($typ)
+                                       {
+                                               case 'dateTime.iso8601':
+                                                       $xmlrpc_val->scalar = $val;
+                                                       $xmlrpc_val->xmlrpc_type = 'datetime';
+                                                       $xmlrpc_val->timestamp = iso8601_decode($val);
+                                                       return $xmlrpc_val;
+                                               case 'base64':
+                                                       $xmlrpc_val->scalar = $val;
+                                                       $xmlrpc_val->type = $typ;
+                                                       return $xmlrpc_val;
+                                               default:
+                                                       return $xmlrpc_val->scalarval();
+                                       }
+                               }
+                               return $xmlrpc_val->scalarval();
+                       case 'array':
+                               $size = $xmlrpc_val->arraysize();
+                               $arr = array();
+                               for($i = 0; $i < $size; $i++)
+                               {
+                                       $arr[] = php_xmlrpc_decode($xmlrpc_val->arraymem($i), $options);
+                               }
+                               return $arr;
+                       case 'struct':
+                               $xmlrpc_val->structreset();
+                               // If user said so, try to rebuild php objects for specific struct vals.
+                               /// @todo should we raise a warning for class not found?
+                               // shall we check for proper subclass of xmlrpcval instead of
+                               // presence of _php_class to detect what we can do?
+                               if (in_array('decode_php_objs', $options) && $xmlrpc_val->_php_class != ''
+                                       && class_exists($xmlrpc_val->_php_class))
+                               {
+                                       $obj = @new $xmlrpc_val->_php_class;
+                                       while(list($key,$value)=$xmlrpc_val->structeach())
+                                       {
+                                               $obj->$key = php_xmlrpc_decode($value, $options);
+                                       }
+                                       return $obj;
+                               }
+                               else
+                               {
+                                       $arr = array();
+                                       while(list($key,$value)=$xmlrpc_val->structeach())
+                                       {
+                                               $arr[$key] = php_xmlrpc_decode($value, $options);
+                                       }
+                                       return $arr;
+                               }
+                       case 'msg':
+                               $paramcount = $xmlrpc_val->getNumParams();
+                               $arr = array();
+                               for($i = 0; $i < $paramcount; $i++)
+                               {
+                                       $arr[] = php_xmlrpc_decode($xmlrpc_val->getParam($i));
+                               }
+                               return $arr;
+                       }
+       }
+
+       // This constant left here only for historical reasons...
+       // it was used to decide if we have to define xmlrpc_encode on our own, but
+       // we do not do it anymore
+       if(function_exists('xmlrpc_decode'))
+       {
+               define('XMLRPC_EPI_ENABLED','1');
+       }
+       else
+       {
+               define('XMLRPC_EPI_ENABLED','0');
+       }
+
+       /**
+       * Takes native php types and encodes them into xmlrpc PHP object format.
+       * It will not re-encode xmlrpcval objects.
+       *
+       * Feature creep -- could support more types via optional type argument
+       * (string => datetime support has been added, ??? => base64 not yet)
+       *
+       * If given a proper options parameter, php object instances will be encoded
+       * into 'special' xmlrpc values, that can later be decoded into php objects
+       * by calling php_xmlrpc_decode() with a corresponding option
+       *
+       * @author Dan Libby (dan@libby.com)
+       *
+       * @param mixed $php_val the value to be converted into an xmlrpcval object
+       * @param array $options can include 'encode_php_objs', 'auto_dates', 'null_extension' or 'extension_api'
+       * @return xmlrpcval
+       */
+       function &php_xmlrpc_encode($php_val, $options=array())
+       {
+               $type = gettype($php_val);
+               switch($type)
+               {
+                       case 'string':
+                               if (in_array('auto_dates', $options) && preg_match('/^[0-9]{8}T[0-9]{2}:[0-9]{2}:[0-9]{2}$/', $php_val))
+                                       $xmlrpc_val = new xmlrpcval($php_val, $GLOBALS['xmlrpcDateTime']);
+                               else
+                                       $xmlrpc_val = new xmlrpcval($php_val, $GLOBALS['xmlrpcString']);
+                               break;
+                       case 'integer':
+                               $xmlrpc_val = new xmlrpcval($php_val, $GLOBALS['xmlrpcInt']);
+                               break;
+                       case 'double':
+                               $xmlrpc_val = new xmlrpcval($php_val, $GLOBALS['xmlrpcDouble']);
+                               break;
+                               // <G_Giunta_2001-02-29>
+                               // Add support for encoding/decoding of booleans, since they are supported in PHP
+                       case 'boolean':
+                               $xmlrpc_val = new xmlrpcval($php_val, $GLOBALS['xmlrpcBoolean']);
+                               break;
+                               // </G_Giunta_2001-02-29>
+                       case 'array':
+                               // PHP arrays can be encoded to either xmlrpc structs or arrays,
+                               // depending on wheter they are hashes or plain 0..n integer indexed
+                               // A shorter one-liner would be
+                               // $tmp = array_diff(array_keys($php_val), range(0, count($php_val)-1));
+                               // but execution time skyrockets!
+                               $j = 0;
+                               $arr = array();
+                               $ko = false;
+                               foreach($php_val as $key => $val)
+                               {
+                                       $arr[$key] =& php_xmlrpc_encode($val, $options);
+                                       if(!$ko && $key !== $j)
+                                       {
+                                               $ko = true;
+                                       }
+                                       $j++;
+                               }
+                               if($ko)
+                               {
+                                       $xmlrpc_val = new xmlrpcval($arr, $GLOBALS['xmlrpcStruct']);
+                               }
+                               else
+                               {
+                                       $xmlrpc_val = new xmlrpcval($arr, $GLOBALS['xmlrpcArray']);
+                               }
+                               break;
+                       case 'object':
+                               if(is_a($php_val, 'xmlrpcval'))
+                               {
+                                       $xmlrpc_val = $php_val;
+                               }
+                               else
+                               {
+                                       $arr = array();
+                                       while(list($k,$v) = each($php_val))
+                                       {
+                                               $arr[$k] = php_xmlrpc_encode($v, $options);
+                                       }
+                                       $xmlrpc_val = new xmlrpcval($arr, $GLOBALS['xmlrpcStruct']);
+                                       if (in_array('encode_php_objs', $options))
+                                       {
+                                               // let's save original class name into xmlrpcval:
+                                               // might be useful later on...
+                                               $xmlrpc_val->_php_class = get_class($php_val);
+                                       }
+                               }
+                               break;
+                       case 'NULL':
+                               if (in_array('extension_api', $options))
+                               {
+                                       $xmlrpc_val = new xmlrpcval('', $GLOBALS['xmlrpcString']);
+                               }
+                               if (in_array('null_extension', $options))
+                               {
+                                       $xmlrpc_val = new xmlrpcval('', $GLOBALS['xmlrpcNull']);
+                               }
+                               else
+                               {
+                                       $xmlrpc_val = new xmlrpcval();
+                               }
+                               break;
+                       case 'resource':
+                               if (in_array('extension_api', $options))
+                               {
+                                       $xmlrpc_val = new xmlrpcval((int)$php_val, $GLOBALS['xmlrpcInt']);
+                               }
+                               else
+                               {
+                                       $xmlrpc_val = new xmlrpcval();
+                               }
+                       // catch "user function", "unknown type"
+                       default:
+                               // giancarlo pinerolo <ping@alt.it>
+                               // it has to return
+                               // an empty object in case, not a boolean.
+                               $xmlrpc_val = new xmlrpcval();
+                               break;
+                       }
+                       return $xmlrpc_val;
+       }
+
+       /**
+       * Convert the xml representation of a method response, method request or single
+       * xmlrpc value into the appropriate object (a.k.a. deserialize)
+       * @param string $xml_val
+       * @param array $options
+       * @return mixed false on error, or an instance of either xmlrpcval, xmlrpcmsg or xmlrpcresp
+       */
+       function php_xmlrpc_decode_xml($xml_val, $options=array())
+       {
+               $GLOBALS['_xh'] = array();
+               $GLOBALS['_xh']['ac'] = '';
+               $GLOBALS['_xh']['stack'] = array();
+               $GLOBALS['_xh']['valuestack'] = array();
+               $GLOBALS['_xh']['params'] = array();
+               $GLOBALS['_xh']['pt'] = array();
+               $GLOBALS['_xh']['isf'] = 0;
+               $GLOBALS['_xh']['isf_reason'] = '';
+               $GLOBALS['_xh']['method'] = false;
+               $GLOBALS['_xh']['rt'] = '';
+               /// @todo 'guestimate' encoding
+               $parser = xml_parser_create();
+               xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, true);
+               xml_parser_set_option($parser, XML_OPTION_TARGET_ENCODING, $GLOBALS['xmlrpc_internalencoding']);
+               xml_set_element_handler($parser, 'xmlrpc_se_any', 'xmlrpc_ee');
+               xml_set_character_data_handler($parser, 'xmlrpc_cd');
+               xml_set_default_handler($parser, 'xmlrpc_dh');
+               if(!xml_parse($parser, $xml_val, 1))
+               {
+                       $errstr = sprintf('XML error: %s at line %d, column %d',
+                                               xml_error_string(xml_get_error_code($parser)),
+                                               xml_get_current_line_number($parser), xml_get_current_column_number($parser));
+                       error_log($errstr);
+                       xml_parser_free($parser);
+                       return false;
+               }
+               xml_parser_free($parser);
+               if ($GLOBALS['_xh']['isf'] > 1) // test that $GLOBALS['_xh']['value'] is an obj, too???
+               {
+                       error_log($GLOBALS['_xh']['isf_reason']);
+                       return false;
+               }
+               switch ($GLOBALS['_xh']['rt'])
+               {
+                       case 'methodresponse':
+                               $v =& $GLOBALS['_xh']['value'];
+                               if ($GLOBALS['_xh']['isf'] == 1)
+                               {
+                                       $vc = $v->structmem('faultCode');
+                                       $vs = $v->structmem('faultString');
+                                       $r = new xmlrpcresp(0, $vc->scalarval(), $vs->scalarval());
+                               }
+                               else
+                               {
+                                       $r = new xmlrpcresp($v);
+                               }
+                               return $r;
+                       case 'methodcall':
+                               $m = new xmlrpcmsg($GLOBALS['_xh']['method']);
+                               for($i=0; $i < count($GLOBALS['_xh']['params']); $i++)
+                               {
+                                       $m->addParam($GLOBALS['_xh']['params'][$i]);
+                               }
+                               return $m;
+                       case 'value':
+                               return $GLOBALS['_xh']['value'];
+                       default:
+                               return false;
+               }
+       }
+
+       /**
+       * decode a string that is encoded w/ "chunked" transfer encoding
+       * as defined in rfc2068 par. 19.4.6
+       * code shamelessly stolen from nusoap library by Dietrich Ayala
+       *
+       * @param string $buffer the string to be decoded
+       * @return string
+       */
+       function decode_chunked($buffer)
+       {
+               // length := 0
+               $length = 0;
+               $new = '';
+
+               // read chunk-size, chunk-extension (if any) and crlf
+               // get the position of the linebreak
+               $chunkend = i18n::strpos($buffer,"\r\n") + 2;
+               $temp = i18n::substr($buffer,0,$chunkend);
+               $chunk_size = hexdec( trim($temp) );
+               $chunkstart = $chunkend;
+               while($chunk_size > 0)
+               {
+                       $chunkend = i18n::strpos($buffer, "\r\n", $chunkstart + $chunk_size);
+
+                       // just in case we got a broken connection
+                       if($chunkend == false)
+                       {
+                               $chunk = i18n::substr($buffer,$chunkstart);
+                               // append chunk-data to entity-body
+                               $new .= $chunk;
+                               $length += i18n::strlen($chunk);
+                               break;
+                       }
+
+                       // read chunk-data and crlf
+                       $chunk = i18n::substr($buffer,$chunkstart,$chunkend-$chunkstart);
+                       // append chunk-data to entity-body
+                       $new .= $chunk;
+                       // length := length + chunk-size
+                       $length += i18n::strlen($chunk);
+                       // read chunk-size and crlf
+                       $chunkstart = $chunkend + 2;
+
+                       $chunkend = i18n::strpos($buffer,"\r\n",$chunkstart)+2;
+                       if($chunkend == false)
+                       {
+                               break; //just in case we got a broken connection
+                       }
+                       $temp = i18n::substr($buffer,$chunkstart,$chunkend-$chunkstart);
+                       $chunk_size = hexdec( trim($temp) );
+                       $chunkstart = $chunkend;
+               }
+               return $new;
+       }
+
+       /**
+       * xml charset encoding guessing helper function.
+       * Tries to determine the charset encoding of an XML chunk
+       * received over HTTP.
+       * NB: according to the spec (RFC 3023, if text/xml content-type is received over HTTP without a content-type,
+       * we SHOULD assume it is strictly US-ASCII. But we try to be more tolerant of unconforming (legacy?) clients/servers,
+       * which will be most probably using UTF-8 anyway...
+       *
+       * @param string $httpheaders the http Content-type header
+       * @param string $xmlchunk xml content buffer
+       * @param string $encoding_prefs comma separated list of character encodings to be used as default (when mb extension is enabled)
+       *
+       * @todo explore usage of mb_http_input(): does it detect http headers + post data? if so, use it instead of hand-detection!!!
+       */
+       function guess_encoding($httpheader='', $xmlchunk='', $encoding_prefs=null)
+       {
+               // discussion: see http://www.yale.edu/pclt/encoding/
+               // 1 - test if encoding is specified in HTTP HEADERS
+
+               //Details:
+               // LWS:           (\13\10)?( |\t)+
+               // token:         (any char but excluded stuff)+
+               // header:        Content-type = ...; charset=value(; ...)*
+               //   where value is of type token, no LWS allowed between 'charset' and value
+               // Note: we do not check for invalid chars in VALUE:
+               //   this had better be done using pure ereg as below
+
+               /// @todo this test will pass if ANY header has charset specification, not only Content-Type. Fix it?
+               $matches = array();
+               if(preg_match('/;\s*charset=([^;]+)/i', $httpheader, $matches))
+               {
+                       return strtoupper(trim($matches[1]));
+               }
+
+               // 2 - scan the first bytes of the data for a UTF-16 (or other) BOM pattern
+               //     (source: http://www.w3.org/TR/2000/REC-xml-20001006)
+               //     NOTE: actually, according to the spec, even if we find the BOM and determine
+               //     an encoding, we should check if there is an encoding specified
+               //     in the xml declaration, and verify if they match.
+               /// @todo implement check as described above?
+               /// @todo implement check for first bytes of string even without a BOM? (It sure looks harder than for cases WITH a BOM)
+               if(preg_match('/^(\x00\x00\xFE\xFF|\xFF\xFE\x00\x00|\x00\x00\xFF\xFE|\xFE\xFF\x00\x00)/', $xmlchunk))
+               {
+                       return 'UCS-4';
+               }
+               elseif(preg_match('/^(\xFE\xFF|\xFF\xFE)/', $xmlchunk))
+               {
+                       return 'UTF-16';
+               }
+               elseif(preg_match('/^(\xEF\xBB\xBF)/', $xmlchunk))
+               {
+                       return 'UTF-8';
+               }
+
+               // 3 - test if encoding is specified in the xml declaration
+               // Details:
+               // SPACE:         (#x20 | #x9 | #xD | #xA)+ === [ \x9\xD\xA]+
+               // EQ:            SPACE?=SPACE? === [ \x9\xD\xA]*=[ \x9\xD\xA]*
+               if (preg_match('/^<\?xml\s+version\s*=\s*'. "((?:\"[a-zA-Z0-9_.:-]+\")|(?:'[a-zA-Z0-9_.:-]+'))".
+                       '\s+encoding\s*=\s*' . "((?:\"[A-Za-z][A-Za-z0-9._-]*\")|(?:'[A-Za-z][A-Za-z0-9._-]*'))/",
+                       $xmlchunk, $matches))
+               {
+                       return strtoupper(i18n::substr($matches[2], 1, -1));
+               }
+
+               // 4 - if mbstring is available, let it do the guesswork
+               // NB: we favour finding an encoding that is compatible with what we can process
+               if(extension_loaded('mbstring'))
+               {
+                       if($encoding_prefs)
+                       {
+                               $enc = mb_detect_encoding($xmlchunk, $encoding_prefs);
+                       }
+                       else
+                       {
+                               $enc = mb_detect_encoding($xmlchunk);
+                       }
+                       // NB: mb_detect likes to call it ascii, xml parser likes to call it US_ASCII...
+                       // IANA also likes better US-ASCII, so go with it
+                       if($enc == 'ASCII')
+                       {
+                               $enc = 'US-'.$enc;
+                       }
+                       return $enc;
+               }
+               else
+               {
+                       // no encoding specified: as per HTTP1.1 assume it is iso-8859-1?
+                       // Both RFC 2616 (HTTP 1.1) and 1945(http 1.0) clearly state that for text/xxx content types
+                       // this should be the standard. And we should be getting text/xml as request and response.
+                       // BUT we have to be backward compatible with the lib, which always used UTF-8 as default...
+                       return $GLOBALS['xmlrpc_defencoding'];
+               }
+       }
+
+       /**
+       * Checks if a given charset encoding is present in a list of encodings or
+       * if it is a valid subset of any encoding in the list
+       * @param string $encoding charset to be tested
+       * @param mixed $validlist comma separated list of valid charsets (or array of charsets)
+       */
+       function is_valid_charset($encoding, $validlist)
+       {
+               $charset_supersets = array(
+                       'US-ASCII' => array ('ISO-8859-1', 'ISO-8859-2', 'ISO-8859-3', 'ISO-8859-4',
+                               'ISO-8859-5', 'ISO-8859-6', 'ISO-8859-7', 'ISO-8859-8',
+                               'ISO-8859-9', 'ISO-8859-10', 'ISO-8859-11', 'ISO-8859-12',
+                               'ISO-8859-13', 'ISO-8859-14', 'ISO-8859-15', 'UTF-8',
+                               'EUC-JP', 'EUC-', 'EUC-KR', 'EUC-CN')
+               );
+               if (is_string($validlist))
+                       $validlist = preg_split('#,#', $validlist);
+               if (@in_array(strtoupper($encoding), $validlist))
+                       return true;
+               else
+               {
+                       if (array_key_exists($encoding, $charset_supersets))
+                               foreach ($validlist as $allowed)
+                                       if (in_array($allowed, $charset_supersets[$encoding]))
+                                               return true;
+                               return false;
+               }
+       }
+
+?>
index 104b569..ebb58a5 100644 (file)
-<?php\r
-// by Edd Dumbill (C) 1999-2002\r
-// <edd@usefulinc.com>\r
-// $Original: xmlrpcs.inc,v 1.66 2006/09/17 21:25:06 ggiunta Exp $\r
-// $Id: xmlrpcs.inc.php 1539 2011-06-23 10:40:01Z sakamocchi $\r
-\r
-// Copyright (c) 1999,2000,2002 Edd Dumbill.\r
-// All rights reserved.\r
-//\r
-// Redistribution and use in source and binary forms, with or without\r
-// modification, are permitted provided that the following conditions\r
-// are met:\r
-//\r
-//    * Redistributions of source code must retain the above copyright\r
-//      notice, this list of conditions and the following disclaimer.\r
-//\r
-//    * Redistributions in binary form must reproduce the above\r
-//      copyright notice, this list of conditions and the following\r
-//      disclaimer in the documentation and/or other materials provided\r
-//      with the distribution.\r
-//\r
-//    * Neither the name of the "XML-RPC for PHP" nor the names of its\r
-//      contributors may be used to endorse or promote products derived\r
-//      from this software without specific prior written permission.\r
-//\r
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\r
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\r
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\r
-// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\r
-// REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\r
-// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\r
-// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\r
-// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
-// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
-// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED\r
-// OF THE POSSIBILITY OF SUCH DAMAGE.\r
-\r
-       // XML RPC Server class\r
-       // requires: xmlrpc.inc\r
-\r
-       $GLOBALS['xmlrpcs_capabilities'] = array(\r
-               // xmlrpc spec: always supported\r
-               'xmlrpc' => new xmlrpcval(array(\r
-                       'specUrl' => new xmlrpcval('http://www.xmlrpc.com/spec', 'string'),\r
-                       'specVersion' => new xmlrpcval(1, 'int')\r
-               ), 'struct'),\r
-               // if we support system.xxx functions, we always support multicall, too...\r
-               // Note that, as of 2006/09/17, the following URL does not respond anymore\r
-               'system.multicall' => new xmlrpcval(array(\r
-                       'specUrl' => new xmlrpcval('http://www.xmlrpc.com/discuss/msgReader$1208', 'string'),\r
-                       'specVersion' => new xmlrpcval(1, 'int')\r
-               ), 'struct'),\r
-               // introspection: version 2! we support 'mixed', too\r
-               'introspection' => new xmlrpcval(array(\r
-                       'specUrl' => new xmlrpcval('http://phpxmlrpc.sourceforge.net/doc-2/ch10.html', 'string'),\r
-                       'specVersion' => new xmlrpcval(2, 'int')\r
-               ), 'struct')\r
-       );\r
-\r
-       /* Functions that implement system.XXX methods of xmlrpc servers */\r
-       $_xmlrpcs_getCapabilities_sig=array(array($GLOBALS['xmlrpcStruct']));\r
-       $_xmlrpcs_getCapabilities_doc='This method lists all the capabilites that the XML-RPC server has: the (more or less standard) extensions to the xmlrpc spec that it adheres to';\r
-       $_xmlrpcs_getCapabilities_sdoc=array(array('list of capabilities, described as structs with a version number and url for the spec'));\r
-       function _xmlrpcs_getCapabilities($server, $m=null)\r
-       {\r
-               $outAr = $GLOBALS['xmlrpcs_capabilities'];\r
-               // NIL extension\r
-               if ($GLOBALS['xmlrpc_null_extension']) {\r
-                       $outAr['nil'] = new xmlrpcval(array(\r
-                               'specUrl' => new xmlrpcval('http://www.ontosys.com/xml-rpc/extensions.php', 'string'),\r
-                               'specVersion' => new xmlrpcval(1, 'int')\r
-                       ), 'struct');\r
-               }\r
-               return new xmlrpcresp(new xmlrpcval($outAr, 'struct'));\r
-       }\r
-\r
-       // listMethods: signature was either a string, or nothing.\r
-       // The useless string variant has been removed\r
-       $_xmlrpcs_listMethods_sig=array(array($GLOBALS['xmlrpcArray']));\r
-       $_xmlrpcs_listMethods_doc='This method lists all the methods that the XML-RPC server knows how to dispatch';\r
-       $_xmlrpcs_listMethods_sdoc=array(array('list of method names'));\r
-       function _xmlrpcs_listMethods($server, $m=null) // if called in plain php values mode, second param is missing\r
-       {\r
-\r
-               $outAr=array();\r
-               foreach($server->dmap as $key => $val)\r
-               {\r
-                       $outAr[] = new xmlrpcval($key, 'string');\r
-               }\r
-               if($server->allow_system_funcs)\r
-               {\r
-                       foreach($GLOBALS['_xmlrpcs_dmap'] as $key => $val)\r
-                       {\r
-                               $outAr[] = new xmlrpcval($key, 'string');\r
-                       }\r
-               }\r
-               return new xmlrpcresp(new xmlrpcval($outAr, 'array'));\r
-       }\r
-\r
-       $_xmlrpcs_methodSignature_sig=array(array($GLOBALS['xmlrpcArray'], $GLOBALS['xmlrpcString']));\r
-       $_xmlrpcs_methodSignature_doc='Returns an array of known signatures (an array of arrays) for the method name passed. If no signatures are known, returns a none-array (test for type != array to detect missing signature)';\r
-       $_xmlrpcs_methodSignature_sdoc=array(array('list of known signatures, each sig being an array of xmlrpc type names', 'name of method to be described'));\r
-       function _xmlrpcs_methodSignature($server, $m)\r
-       {\r
-               // let accept as parameter both an xmlrpcval or string\r
-               if (is_object($m))\r
-               {\r
-                       $methName=$m->getParam(0);\r
-                       $methName=$methName->scalarval();\r
-               }\r
-               else\r
-               {\r
-                       $methName=$m;\r
-               }\r
-               if(i18n::strpos($methName, "system.") === 0)\r
-               {\r
-                       $dmap=$GLOBALS['_xmlrpcs_dmap']; $sysCall=1;\r
-               }\r
-               else\r
-               {\r
-                       $dmap=$server->dmap; $sysCall=0;\r
-               }\r
-               if(isset($dmap[$methName]))\r
-               {\r
-                       if(isset($dmap[$methName]['signature']))\r
-                       {\r
-                               $sigs=array();\r
-                               foreach($dmap[$methName]['signature'] as $inSig)\r
-                               {\r
-                                       $cursig=array();\r
-                                       foreach($inSig as $sig)\r
-                                       {\r
-                                               $cursig[]= new xmlrpcval($sig, 'string');\r
-                                       }\r
-                                       $sigs[] = new xmlrpcval($cursig, 'array');\r
-                               }\r
-                               $r= new xmlrpcresp(new xmlrpcval($sigs, 'array'));\r
-                       }\r
-                       else\r
-                       {\r
-                               // NB: according to the official docs, we should be returning a\r
-                               // "none-array" here, which means not-an-array\r
-                               $r = new xmlrpcresp(new xmlrpcval('undef', 'string'));\r
-                       }\r
-               }\r
-               else\r
-               {\r
-                       $r = new xmlrpcresp(0,$GLOBALS['xmlrpcerr']['introspect_unknown'], $GLOBALS['xmlrpcstr']['introspect_unknown']);\r
-               }\r
-               return $r;\r
-       }\r
-\r
-       $_xmlrpcs_methodHelp_sig=array(array($GLOBALS['xmlrpcString'], $GLOBALS['xmlrpcString']));\r
-       $_xmlrpcs_methodHelp_doc='Returns help text if defined for the method passed, otherwise returns an empty string';\r
-       $_xmlrpcs_methodHelp_sdoc=array(array('method description', 'name of the method to be described'));\r
-       function _xmlrpcs_methodHelp($server, $m)\r
-       {\r
-               // let accept as parameter both an xmlrpcval or string\r
-               if (is_object($m))\r
-               {\r
-                       $methName=$m->getParam(0);\r
-                       $methName=$methName->scalarval();\r
-               }\r
-               else\r
-               {\r
-                       $methName=$m;\r
-               }\r
-               if(i18n::strpos($methName, "system.") === 0)\r
-               {\r
-                       $dmap=$GLOBALS['_xmlrpcs_dmap']; $sysCall=1;\r
-               }\r
-               else\r
-               {\r
-                       $dmap=$server->dmap; $sysCall=0;\r
-               }\r
-               if(isset($dmap[$methName]))\r
-               {\r
-                       if(isset($dmap[$methName]['docstring']))\r
-                       {\r
-                               $r = new xmlrpcresp(new xmlrpcval($dmap[$methName]['docstring']), 'string');\r
-                       }\r
-                       else\r
-                       {\r
-                               $r = new xmlrpcresp(new xmlrpcval('', 'string'));\r
-                       }\r
-               }\r
-               else\r
-               {\r
-                       $r = new xmlrpcresp(0, $GLOBALS['xmlrpcerr']['introspect_unknown'], $GLOBALS['xmlrpcstr']['introspect_unknown']);\r
-               }\r
-               return $r;\r
-       }\r
-\r
-       $_xmlrpcs_multicall_sig = array(array($GLOBALS['xmlrpcArray'], $GLOBALS['xmlrpcArray']));\r
-       $_xmlrpcs_multicall_doc = 'Boxcar multiple RPC calls in one request. See http://www.xmlrpc.com/discuss/msgReader$1208 for details';\r
-       $_xmlrpcs_multicall_sdoc = array(array('list of response structs, where each struct has the usual members', 'list of calls, with each call being represented as a struct, with members "methodname" and "params"'));\r
-       function _xmlrpcs_multicall_error($err)\r
-       {\r
-               if(is_string($err))\r
-               {\r
-                       $str = $GLOBALS['xmlrpcstr']["multicall_${err}"];\r
-                       $code = $GLOBALS['xmlrpcerr']["multicall_${err}"];\r
-               }\r
-               else\r
-               {\r
-                       $code = $err->faultCode();\r
-                       $str = $err->faultString();\r
-               }\r
-               $struct = array();\r
-               $struct['faultCode'] = new xmlrpcval($code, 'int');\r
-               $struct['faultString'] = new xmlrpcval($str, 'string');\r
-               return new xmlrpcval($struct, 'struct');\r
-       }\r
-\r
-       function _xmlrpcs_multicall_do_call($server, $call)\r
-       {\r
-               if($call->kindOf() != 'struct')\r
-               {\r
-                       return _xmlrpcs_multicall_error('notstruct');\r
-               }\r
-               $methName = @$call->structmem('methodName');\r
-               if(!$methName)\r
-               {\r
-                       return _xmlrpcs_multicall_error('nomethod');\r
-               }\r
-               if($methName->kindOf() != 'scalar' || $methName->scalartyp() != 'string')\r
-               {\r
-                       return _xmlrpcs_multicall_error('notstring');\r
-               }\r
-               if($methName->scalarval() == 'system.multicall')\r
-               {\r
-                       return _xmlrpcs_multicall_error('recursion');\r
-               }\r
-\r
-               $params = @$call->structmem('params');\r
-               if(!$params)\r
-               {\r
-                       return _xmlrpcs_multicall_error('noparams');\r
-               }\r
-               if($params->kindOf() != 'array')\r
-               {\r
-                       return _xmlrpcs_multicall_error('notarray');\r
-               }\r
-               $numParams = $params->arraysize();\r
-\r
-               $msg = new xmlrpcmsg($methName->scalarval());\r
-               for($i = 0; $i < $numParams; $i++)\r
-               {\r
-                       if(!$msg->addParam($params->arraymem($i)))\r
-                       {\r
-                               $i++;\r
-                               return _xmlrpcs_multicall_error(new xmlrpcresp(0,\r
-                                       $GLOBALS['xmlrpcerr']['incorrect_params'],\r
-                                       $GLOBALS['xmlrpcstr']['incorrect_params'] . ": probable xml error in param " . $i));\r
-                       }\r
-               }\r
-\r
-               $result = $server->execute($msg);\r
-\r
-               if($result->faultCode() != 0)\r
-               {\r
-                       return _xmlrpcs_multicall_error($result);               // Method returned fault.\r
-               }\r
-\r
-               return new xmlrpcval(array($result->value()), 'array');\r
-       }\r
-\r
-       function _xmlrpcs_multicall_do_call_phpvals($server, $call)\r
-       {\r
-               if(!is_array($call))\r
-               {\r
-                       return _xmlrpcs_multicall_error('notstruct');\r
-               }\r
-               if(!array_key_exists('methodName', $call))\r
-               {\r
-                       return _xmlrpcs_multicall_error('nomethod');\r
-               }\r
-               if (!is_string($call['methodName']))\r
-               {\r
-                       return _xmlrpcs_multicall_error('notstring');\r
-               }\r
-               if($call['methodName'] == 'system.multicall')\r
-               {\r
-                       return _xmlrpcs_multicall_error('recursion');\r
-               }\r
-               if(!array_key_exists('params', $call))\r
-               {\r
-                       return _xmlrpcs_multicall_error('noparams');\r
-               }\r
-               if(!is_array($call['params']))\r
-               {\r
-                       return _xmlrpcs_multicall_error('notarray');\r
-               }\r
-\r
-               // this is a real dirty and simplistic hack, since we might have received a\r
-               // base64 or datetime values, but they will be listed as strings here...\r
-               $numParams = count($call['params']);\r
-               $pt = array();\r
-               foreach($call['params'] as $val)\r
-                       $pt[] = php_2_xmlrpc_type(gettype($val));\r
-\r
-               $result = $server->execute($call['methodName'], $call['params'], $pt);\r
-\r
-               if($result->faultCode() != 0)\r
-               {\r
-                       return _xmlrpcs_multicall_error($result);               // Method returned fault.\r
-               }\r
-\r
-               return new xmlrpcval(array($result->value()), 'array');\r
-       }\r
-\r
-       function _xmlrpcs_multicall($server, $m)\r
-       {\r
-               $result = array();\r
-               // let accept a plain list of php parameters, beside a single xmlrpc msg object\r
-               if (is_object($m))\r
-               {\r
-                       $calls = $m->getParam(0);\r
-                       $numCalls = $calls->arraysize();\r
-                       for($i = 0; $i < $numCalls; $i++)\r
-                       {\r
-                               $call = $calls->arraymem($i);\r
-                               $result[$i] = _xmlrpcs_multicall_do_call($server, $call);\r
-                       }\r
-               }\r
-               else\r
-               {\r
-                       $numCalls=count($m);\r
-                       for($i = 0; $i < $numCalls; $i++)\r
-                       {\r
-                               $result[$i] = _xmlrpcs_multicall_do_call_phpvals($server, $m[$i]);\r
-                       }\r
-               }\r
-\r
-               return new xmlrpcresp(new xmlrpcval($result, 'array'));\r
-       }\r
-\r
-       $GLOBALS['_xmlrpcs_dmap']=array(\r
-               'system.listMethods' => array(\r
-                       'function' => '_xmlrpcs_listMethods',\r
-                       'signature' => $_xmlrpcs_listMethods_sig,\r
-                       'docstring' => $_xmlrpcs_listMethods_doc,\r
-                       'signature_docs' => $_xmlrpcs_listMethods_sdoc),\r
-               'system.methodHelp' => array(\r
-                       'function' => '_xmlrpcs_methodHelp',\r
-                       'signature' => $_xmlrpcs_methodHelp_sig,\r
-                       'docstring' => $_xmlrpcs_methodHelp_doc,\r
-                       'signature_docs' => $_xmlrpcs_methodHelp_sdoc),\r
-               'system.methodSignature' => array(\r
-                       'function' => '_xmlrpcs_methodSignature',\r
-                       'signature' => $_xmlrpcs_methodSignature_sig,\r
-                       'docstring' => $_xmlrpcs_methodSignature_doc,\r
-                       'signature_docs' => $_xmlrpcs_methodSignature_sdoc),\r
-               'system.multicall' => array(\r
-                       'function' => '_xmlrpcs_multicall',\r
-                       'signature' => $_xmlrpcs_multicall_sig,\r
-                       'docstring' => $_xmlrpcs_multicall_doc,\r
-                       'signature_docs' => $_xmlrpcs_multicall_sdoc),\r
-               'system.getCapabilities' => array(\r
-                       'function' => '_xmlrpcs_getCapabilities',\r
-                       'signature' => $_xmlrpcs_getCapabilities_sig,\r
-                       'docstring' => $_xmlrpcs_getCapabilities_doc,\r
-                       'signature_docs' => $_xmlrpcs_getCapabilities_sdoc)\r
-       );\r
-\r
-       $GLOBALS['_xmlrpcs_occurred_errors'] = '';\r
-       $GLOBALS['_xmlrpcs_prev_ehandler'] = '';\r
-       /**\r
-       * Error handler used to track errors that occur during server-side execution of PHP code.\r
-       * This allows to report back to the client whether an internal error has occurred or not\r
-       * using an xmlrpc response object, instead of letting the client deal with the html junk\r
-       * that a PHP execution error on the server generally entails.\r
-       *\r
-       * NB: in fact a user defined error handler can only handle WARNING, NOTICE and USER_* errors.\r
-       *\r
-       */\r
-       function _xmlrpcs_errorHandler($errcode, $errstring, $filename=null, $lineno=null, $context=null)\r
-       {\r
-               // obey the @ protocol\r
-               if (error_reporting() == 0)\r
-                       return;\r
-\r
-               //if($errcode != E_NOTICE && $errcode != E_WARNING && $errcode != E_USER_NOTICE && $errcode != E_USER_WARNING)\r
-               if($errcode != 2048) // do not use E_STRICT by name, since on PHP 4 it will not be defined\r
-               {\r
-                       $GLOBALS['_xmlrpcs_occurred_errors'] = $GLOBALS['_xmlrpcs_occurred_errors'] . $errstring . "\n";\r
-               }\r
-               // Try to avoid as much as possible disruption to the previous error handling\r
-               // mechanism in place\r
-               if($GLOBALS['_xmlrpcs_prev_ehandler'] == '')\r
-               {\r
-                       // The previous error handler was the default: all we should do is log error\r
-                       // to the default error log (if level high enough)\r
-                       if(ini_get('log_errors') && (intval(ini_get('error_reporting')) & $errcode))\r
-                       {\r
-                               error_log($errstring);\r
-                       }\r
-               }\r
-               else\r
-               {\r
-                       // Pass control on to previous error handler, trying to avoid loops...\r
-                       if($GLOBALS['_xmlrpcs_prev_ehandler'] != '_xmlrpcs_errorHandler')\r
-                       {\r
-                               // NB: this code will NOT work on php < 4.0.2: only 2 params were used for error handlers\r
-                               if(is_array($GLOBALS['_xmlrpcs_prev_ehandler']))\r
-                               {\r
-                                       $GLOBALS['_xmlrpcs_prev_ehandler'][0]->$GLOBALS['_xmlrpcs_prev_ehandler'][1]($errcode, $errstring, $filename, $lineno, $context);\r
-                               }\r
-                               else\r
-                               {\r
-                                       $GLOBALS['_xmlrpcs_prev_ehandler']($errcode, $errstring, $filename, $lineno, $context);\r
-                               }\r
-                       }\r
-               }\r
-       }\r
-\r
-       $GLOBALS['_xmlrpc_debuginfo']='';\r
-\r
-       /**\r
-       * Add a string to the debug info that can be later seralized by the server\r
-       * as part of the response message.\r
-       * Note that for best compatbility, the debug string should be encoded using\r
-       * the $GLOBALS['xmlrpc_internalencoding'] character set.\r
-       * @param string $m\r
-       * @access public\r
-       */\r
-       function xmlrpc_debugmsg($m)\r
-       {\r
-               $GLOBALS['_xmlrpc_debuginfo'] .= $m . "\n";\r
-       }\r
-\r
-       class xmlrpc_server\r
-       {\r
-               /// array defining php functions exposed as xmlrpc methods by this server\r
-               var $dmap=array();\r
-               /**\r
-               * Defines how functions in dmap will be invokde: either using an xmlrpc msg object\r
-               * or plain php values.\r
-               * valid strings are 'xmlrpcvals', 'phpvals' or 'epivals'\r
-               */\r
-               var $functions_parameters_type='xmlrpcvals';\r
-               /// controls wether the server is going to echo debugging messages back to the client as comments in response body. valid values: 0,1,2,3\r
-               var $debug = 1;\r
-               /**\r
-               * When set to true, it will enable HTTP compression of the response, in case\r
-               * the client has declared its support for compression in the request.\r
-               */\r
-               var $compress_response = false;\r
-               /**\r
-               * List of http compression methods accepted by the server for requests.\r
-               * NB: PHP supports deflate, gzip compressions out of the box if compiled w. zlib\r
-               */\r
-               var $accepted_compression = array();\r
-               /// shall we serve calls to system.* methods?\r
-               var $allow_system_funcs = true;\r
-               /// list of charset encodings natively accepted for requests\r
-               var $accepted_charset_encodings = array();\r
-               /**\r
-               * charset encoding to be used for response.\r
-               * NB: if we can, we will convert the generated response from internal_encoding to the intended one.\r
-               * can be: a supported xml encoding (only UTF-8 and ISO-8859-1 at present, unless mbstring is enabled),\r
-               * null (leave unspecified in response, convert output stream to US_ASCII),\r
-               * 'default' (use xmlrpc library default as specified in xmlrpc.inc, convert output stream if needed),\r
-               * or 'auto' (use client-specified charset encoding or same as request if request headers do not specify it (unless request is US-ASCII: then use library default anyway).\r
-               * NB: pretty dangerous if you accept every charset and do not have mbstring enabled)\r
-               */\r
-               var $response_charset_encoding = '';\r
-               /// storage for internal debug info\r
-               var $debug_info = '';\r
-               /// extra data passed at runtime to method handling functions. Used only by EPI layer\r
-               var $user_data = null;\r
-\r
-               /**\r
-               * @param array $dispmap the dispatch map withd efinition of exposed services\r
-               * @param boolean $servicenow set to false to prevent the server from runnung upon construction\r
-               */\r
-               function xmlrpc_server($dispMap=null, $serviceNow=true)\r
-               {\r
-                       // if ZLIB is enabled, let the server by default accept compressed requests,\r
-                       // and compress responses sent to clients that support them\r
-                       if(function_exists('gzinflate'))\r
-                       {\r
-                               $this->accepted_compression = array('gzip', 'deflate');\r
-                               $this->compress_response = true;\r
-                       }\r
-\r
-                       // by default the xml parser can support these 3 charset encodings\r
-                       $this->accepted_charset_encodings = array('UTF-8', 'ISO-8859-1', 'US-ASCII');\r
-\r
-                       // dispMap is a dispatch array of methods\r
-                       // mapped to function names and signatures\r
-                       // if a method\r
-                       // doesn't appear in the map then an unknown\r
-                       // method error is generated\r
-                       /* milosch - changed to make passing dispMap optional.\r
-                        * instead, you can use the class add_to_map() function\r
-                        * to add functions manually (borrowed from SOAPX4)\r
-                        */\r
-                       if($dispMap)\r
-                       {\r
-                               $this->dmap = $dispMap;\r
-                               if($serviceNow)\r
-                               {\r
-                                       $this->service();\r
-                               }\r
-                       }\r
-               }\r
-\r
-               /**\r
-               * Set debug level of server.\r
-               * @param integer $in debug lvl: determines info added to xmlrpc responses (as xml comments)\r
-               * 0 = no debug info,\r
-               * 1 = msgs set from user with debugmsg(),\r
-               * 2 = add complete xmlrpc request (headers and body),\r
-               * 3 = add also all processing warnings happened during method processing\r
-               * (NB: this involves setting a custom error handler, and might interfere\r
-               * with the standard processing of the php function exposed as method. In\r
-               * particular, triggering an USER_ERROR level error will not halt script\r
-               * execution anymore, but just end up logged in the xmlrpc response)\r
-               * Note that info added at elevel 2 and 3 will be base64 encoded\r
-               * @access public\r
-               */\r
-               function setDebug($in)\r
-               {\r
-                       $this->debug=$in;\r
-               }\r
-\r
-               /**\r
-               * Return a string with the serialized representation of all debug info\r
-               * @param string $charset_encoding the target charset encoding for the serialization\r
-               * @return string an XML comment (or two)\r
-               */\r
-               function serializeDebug($charset_encoding='')\r
-               {\r
-                       // Tough encoding problem: which internal charset should we assume for debug info?\r
-                       // It might contain a copy of raw data received from client, ie with unknown encoding,\r
-                       // intermixed with php generated data and user generated data...\r
-                       // so we split it: system debug is base 64 encoded,\r
-                       // user debug info should be encoded by the end user using the INTERNAL_ENCODING\r
-                       $out = '';\r
-                       if ($this->debug_info != '')\r
-                       {\r
-                               $out .= "<!-- SERVER DEBUG INFO (BASE64 ENCODED):\n".base64_encode($this->debug_info)."\n-->\n";\r
-                       }\r
-                       if($GLOBALS['_xmlrpc_debuginfo']!='')\r
-                       {\r
-\r
-                               $out .= "<!-- DEBUG INFO:\n" . xmlrpc_encode_entitites(str_replace('--', '_-', $GLOBALS['_xmlrpc_debuginfo']), $GLOBALS['xmlrpc_internalencoding'], $charset_encoding) . "\n-->\n";\r
-                               // NB: a better solution MIGHT be to use CDATA, but we need to insert it\r
-                               // into return payload AFTER the beginning tag\r
-                               //$out .= "<![CDATA[ DEBUG INFO:\n\n" . str_replace(']]>', ']_]_>', $GLOBALS['_xmlrpc_debuginfo']) . "\n]]>\n";\r
-                       }\r
-                       return $out;\r
-               }\r
-\r
-               /**\r
-               * Execute the xmlrpc request, printing the response\r
-               * @param string $data the request body. If null, the http POST request will be examined\r
-               * @return xmlrpcresp the response object (usually not used by caller...)\r
-               * @access public\r
-               */\r
-               function service($data=null, $return_payload=false)\r
-               {\r
-                       if ($data === null)\r
-                       {\r
-                               $data = isset($GLOBALS['HTTP_RAW_POST_DATA']) ? $GLOBALS['HTTP_RAW_POST_DATA'] : '';\r
-                       }\r
-                       $raw_data = $data;\r
-\r
-                       // reset internal debug info\r
-                       $this->debug_info = '';\r
-\r
-                       // Echo back what we received, before parsing it\r
-                       if($this->debug > 1)\r
-                       {\r
-                               $this->debugmsg("+++GOT+++\n" . $data . "\n+++END+++");\r
-                       }\r
-\r
-                       $r = $this->parseRequestHeaders($data, $req_charset, $resp_charset, $resp_encoding);\r
-                       if (!$r)\r
-                       {\r
-                               $r=$this->parseRequest($data, $req_charset);\r
-                       }\r
-\r
-                       // save full body of request into response, for more debugging usages\r
-                       $r->raw_data = $raw_data;\r
-\r
-                       if($this->debug > 2 && $GLOBALS['_xmlrpcs_occurred_errors'])\r
-                       {\r
-                               $this->debugmsg("+++PROCESSING ERRORS AND WARNINGS+++\n" .\r
-                                       $GLOBALS['_xmlrpcs_occurred_errors'] . "+++END+++");\r
-                       }\r
-\r
-                       $payload=$this->xml_header($resp_charset);\r
-                       if($this->debug > 0)\r
-                       {\r
-                               $payload = $payload . $this->serializeDebug($resp_charset);\r
-                       }\r
-\r
-                       // G. Giunta 2006-01-27: do not create response serialization if it has\r
-                       // already happened. Helps building json magic\r
-                       if (empty($r->payload))\r
-                       {\r
-                               $r->serialize($resp_charset);\r
-                       }\r
-                       $payload = $payload . $r->payload;\r
-\r
-                       if ($return_payload)\r
-                       {\r
-                               return $payload;\r
-                       }\r
-\r
-                       // if we get a warning/error that has output some text before here, then we cannot\r
-                       // add a new header. We cannot say we are sending xml, either...\r
-                       if(!headers_sent())\r
-                       {\r
-                               header('Content-Type: '.$r->content_type);\r
-                               // we do not know if client actually told us an accepted charset, but if he did\r
-                               // we have to tell him what we did\r
-                               header("Vary: Accept-Charset");\r
-\r
-                               // http compression of output: only\r
-                               // if we can do it, and we want to do it, and client asked us to,\r
-                               // and php ini settings do not force it already\r
-                               $php_no_self_compress = ini_get('zlib.output_compression') == '' && (ini_get('output_handler') != 'ob_gzhandler');\r
-                               if($this->compress_response && function_exists('gzencode') && $resp_encoding != ''\r
-                                       && $php_no_self_compress)\r
-                               {\r
-                                       if(i18n::strpos($resp_encoding, 'gzip') !== false)\r
-                                       {\r
-                                               $payload = gzencode($payload);\r
-                                               header("Content-Encoding: gzip");\r
-                                               header("Vary: Accept-Encoding");\r
-                                       }\r
-                                       elseif (i18n::strpos($resp_encoding, 'deflate') !== false)\r
-                                       {\r
-                                               $payload = gzcompress($payload);\r
-                                               header("Content-Encoding: deflate");\r
-                                               header("Vary: Accept-Encoding");\r
-                                       }\r
-                               }\r
-\r
-                               // do not ouput content-length header if php is compressing output for us:\r
-                               // it will mess up measurements\r
-                               if($php_no_self_compress)\r
-                               {\r
-                                       header('Content-Length: ' . (int)i18n::strlen($payload));\r
-                               }\r
-                       }\r
-                       else\r
-                       {\r
-                               error_log('XML-RPC: xmlrpc_server::service: http headers already sent before response is fully generated. Check for php warning or error messages');\r
-                       }\r
-\r
-                       print $payload;\r
-\r
-                       // return request, in case subclasses want it\r
-                       return $r;\r
-               }\r
-\r
-               /**\r
-               * Add a method to the dispatch map\r
-               * @param string $methodname the name with which the method will be made available\r
-               * @param string $function the php function that will get invoked\r
-               * @param array $sig the array of valid method signatures\r
-               * @param string $doc method documentation\r
-               * @access public\r
-               */\r
-               function add_to_map($methodname,$function,$sig=null,$doc='')\r
-               {\r
-                       $this->dmap[$methodname] = array(\r
-                               'function'      => $function,\r
-                               'docstring' => $doc\r
-                       );\r
-                       if ($sig)\r
-                       {\r
-                               $this->dmap[$methodname]['signature'] = $sig;\r
-                       }\r
-               }\r
-\r
-               /**\r
-               * Verify type and number of parameters received against a list of known signatures\r
-               * @param array $in array of either xmlrpcval objects or xmlrpc type definitions\r
-               * @param array $sig array of known signatures to match against\r
-               * @access private\r
-               */\r
-               function verifySignature($in, $sig)\r
-               {\r
-                       // check each possible signature in turn\r
-                       if (is_object($in))\r
-                       {\r
-                               $numParams = $in->getNumParams();\r
-                       }\r
-                       else\r
-                       {\r
-                               $numParams = count($in);\r
-                       }\r
-                       foreach($sig as $cursig)\r
-                       {\r
-                               if(count($cursig)==$numParams+1)\r
-                               {\r
-                                       $itsOK=1;\r
-                                       for($n=0; $n<$numParams; $n++)\r
-                                       {\r
-                                               if (is_object($in))\r
-                                               {\r
-                                                       $p=$in->getParam($n);\r
-                                                       if($p->kindOf() == 'scalar')\r
-                                                       {\r
-                                                               $pt=$p->scalartyp();\r
-                                                       }\r
-                                                       else\r
-                                                       {\r
-                                                               $pt=$p->kindOf();\r
-                                                       }\r
-                                               }\r
-                                               else\r
-                                               {\r
-                                                       $pt= $in[$n] == 'i4' ? 'int' : $in[$n]; // dispatch maps never use i4...\r
-                                               }\r
-\r
-                                               // param index is $n+1, as first member of sig is return type\r
-                                               if($pt != $cursig[$n+1] && $cursig[$n+1] != $GLOBALS['xmlrpcValue'])\r
-                                               {\r
-                                                       $itsOK=0;\r
-                                                       $pno=$n+1;\r
-                                                       $wanted=$cursig[$n+1];\r
-                                                       $got=$pt;\r
-                                                       break;\r
-                                               }\r
-                                       }\r
-                                       if($itsOK)\r
-                                       {\r
-                                               return array(1,'');\r
-                                       }\r
-                               }\r
-                       }\r
-                       if(isset($wanted))\r
-                       {\r
-                               return array(0, "Wanted ${wanted}, got ${got} at param ${pno}");\r
-                       }\r
-                       else\r
-                       {\r
-                               return array(0, "No method signature matches number of parameters");\r
-                       }\r
-               }\r
-\r
-               /**\r
-               * Parse http headers received along with xmlrpc request. If needed, inflate request\r
-               * @return null on success or an xmlrpcresp\r
-               * @access private\r
-               */\r
-               function parseRequestHeaders(&$data, &$req_encoding, &$resp_encoding, &$resp_compression)\r
-               {\r
-                       // Play nice to PHP 4.0.x: superglobals were not yet invented...\r
-                       if(!isset($_SERVER))\r
-                       {\r
-                               $_SERVER = $GLOBALS['HTTP_SERVER_VARS'];\r
-                       }\r
-\r
-                       if($this->debug > 1)\r
-                       {\r
-                               if(function_exists('getallheaders'))\r
-                               {\r
-                                       $this->debugmsg(''); // empty line\r
-                                       foreach(getallheaders() as $name => $val)\r
-                                       {\r
-                                               $this->debugmsg("HEADER: $name: $val");\r
-                                       }\r
-                               }\r
-\r
-                       }\r
-\r
-                       if(isset($_SERVER['HTTP_CONTENT_ENCODING']))\r
-                       {\r
-                               $content_encoding = str_replace('x-', '', $_SERVER['HTTP_CONTENT_ENCODING']);\r
-                       }\r
-                       else\r
-                       {\r
-                               $content_encoding = '';\r
-                       }\r
-\r
-                       // check if request body has been compressed and decompress it\r
-                       if($content_encoding != '' && i18n::strlen($data))\r
-                       {\r
-                               if($content_encoding == 'deflate' || $content_encoding == 'gzip')\r
-                               {\r
-                                       // if decoding works, use it. else assume data wasn't gzencoded\r
-                                       if(function_exists('gzinflate') && in_array($content_encoding, $this->accepted_compression))\r
-                                       {\r
-                                               if($content_encoding == 'deflate' && $degzdata = @gzuncompress($data))\r
-                                               {\r
-                                                       $data = $degzdata;\r
-                                                       if($this->debug > 1)\r
-                                                       {\r
-                                                               $this->debugmsg("\n+++INFLATED REQUEST+++[".i18n::strlen($data)." chars]+++\n" . $data . "\n+++END+++");\r
-                                                       }\r
-                                               }\r
-                                               elseif($content_encoding == 'gzip' && $degzdata = @gzinflate(i18n::substr($data, 10)))\r
-                                               {\r
-                                                       $data = $degzdata;\r
-                                                       if($this->debug > 1)\r
-                                                               $this->debugmsg("+++INFLATED REQUEST+++[".i18n::strlen($data)." chars]+++\n" . $data . "\n+++END+++");\r
-                                               }\r
-                                               else\r
-                                               {\r
-                                                       $r = new xmlrpcresp(0, $GLOBALS['xmlrpcerr']['server_decompress_fail'], $GLOBALS['xmlrpcstr']['server_decompress_fail']);\r
-                                                       return $r;\r
-                                               }\r
-                                       }\r
-                                       else\r
-                                       {\r
-                                               //error_log('The server sent deflated data. Your php install must have the Zlib extension compiled in to support this.');\r
-                                               $r = new xmlrpcresp(0, $GLOBALS['xmlrpcerr']['server_cannot_decompress'], $GLOBALS['xmlrpcstr']['server_cannot_decompress']);\r
-                                               return $r;\r
-                                       }\r
-                               }\r
-                       }\r
-\r
-                       // check if client specified accepted charsets, and if we know how to fulfill\r
-                       // the request\r
-                       if ($this->response_charset_encoding == 'auto')\r
-                       {\r
-                               $resp_encoding = '';\r
-                               if (isset($_SERVER['HTTP_ACCEPT_CHARSET']))\r
-                               {\r
-                                       // here we should check if we can match the client-requested encoding\r
-                                       // with the encodings we know we can generate.\r
-                                       /// @todo we should parse q=0.x preferences instead of getting first charset specified...\r
-                                       $client_accepted_charsets = preg_split('#,#', strtoupper($_SERVER['HTTP_ACCEPT_CHARSET']));\r
-                                       // Give preference to internal encoding\r
-                                       $known_charsets = array($this->internal_encoding, 'UTF-8', 'ISO-8859-1', 'US-ASCII');\r
-                                       foreach ($known_charsets as $charset)\r
-                                       {\r
-                                               foreach ($client_accepted_charsets as $accepted)\r
-                                                       if (i18n::strpos($accepted, $charset) === 0)\r
-                                                       {\r
-                                                               $resp_encoding = $charset;\r
-                                                               break;\r
-                                                       }\r
-                                               if ($resp_encoding)\r
-                                                       break;\r
-                                       }\r
-                               }\r
-                       }\r
-                       else\r
-                       {\r
-                               $resp_encoding = $this->response_charset_encoding;\r
-                       }\r
-\r
-                       if (isset($_SERVER['HTTP_ACCEPT_ENCODING']))\r
-                       {\r
-                               $resp_compression = $_SERVER['HTTP_ACCEPT_ENCODING'];\r
-                       }\r
-                       else\r
-                       {\r
-                               $resp_compression = '';\r
-                       }\r
-\r
-                       // 'guestimate' request encoding\r
-                       /// @todo check if mbstring is enabled and automagic input conversion is on: it might mingle with this check???\r
-                       $req_encoding = guess_encoding(isset($_SERVER['CONTENT_TYPE']) ? $_SERVER['CONTENT_TYPE'] : '',\r
-                               $data);\r
-\r
-                       return null;\r
-               }\r
-\r
-               /**\r
-               * Parse an xml chunk containing an xmlrpc request and execute the corresponding\r
-               * php function registered with the server\r
-               * @param string $data the xml request\r
-               * @param string $req_encoding (optional) the charset encoding of the xml request\r
-               * @return xmlrpcresp\r
-               * @access private\r
-               */\r
-               function parseRequest($data, $req_encoding='')\r
-               {\r
-                       // 2005/05/07 commented and moved into caller function code\r
-                       //if($data=='')\r
-                       //{\r
-                       //      $data=$GLOBALS['HTTP_RAW_POST_DATA'];\r
-                       //}\r
-\r
-                       // G. Giunta 2005/02/13: we do NOT expect to receive html entities\r
-                       // so we do not try to convert them into xml character entities\r
-                       //$data = xmlrpc_html_entity_xlate($data);\r
-\r
-                       $GLOBALS['_xh']=array();\r
-                       $GLOBALS['_xh']['ac']='';\r
-                       $GLOBALS['_xh']['stack']=array();\r
-                       $GLOBALS['_xh']['valuestack'] = array();\r
-                       $GLOBALS['_xh']['params']=array();\r
-                       $GLOBALS['_xh']['pt']=array();\r
-                       $GLOBALS['_xh']['isf']=0;\r
-                       $GLOBALS['_xh']['isf_reason']='';\r
-                       $GLOBALS['_xh']['method']=false; // so we can check later if we got a methodname or not\r
-                       $GLOBALS['_xh']['rt']='';\r
-\r
-                       // decompose incoming XML into request structure\r
-                       if ($req_encoding != '')\r
-                       {\r
-                               if (!in_array($req_encoding, array('UTF-8', 'ISO-8859-1', 'US-ASCII')))\r
-                               // the following code might be better for mb_string enabled installs, but\r
-                               // makes the lib about 200% slower...\r
-                               //if (!is_valid_charset($req_encoding, array('UTF-8', 'ISO-8859-1', 'US-ASCII')))\r
-                               {\r
-                                       error_log('XML-RPC: xmlrpc_server::parseRequest: invalid charset encoding of received request: '.$req_encoding);\r
-                                       $req_encoding = $GLOBALS['xmlrpc_defencoding'];\r
-                               }\r
-                               /// @BUG this will fail on PHP 5 if charset is not specified in the xml prologue,\r
-                               // the encoding is not UTF8 and there are non-ascii chars in the text...\r
-                               $parser = xml_parser_create($req_encoding);\r
-                       }\r
-                       else\r
-                       {\r
-                               $parser = xml_parser_create();\r
-                       }\r
-\r
-                       xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, true);\r
-                       // G. Giunta 2005/02/13: PHP internally uses ISO-8859-1, so we have to tell\r
-                       // the xml parser to give us back data in the expected charset\r
-                       xml_parser_set_option($parser, XML_OPTION_TARGET_ENCODING, $GLOBALS['xmlrpc_internalencoding']);\r
-\r
-                       if ($this->functions_parameters_type != 'xmlrpcvals')\r
-                               xml_set_element_handler($parser, 'xmlrpc_se', 'xmlrpc_ee_fast');\r
-                       else\r
-                               xml_set_element_handler($parser, 'xmlrpc_se', 'xmlrpc_ee');\r
-                       xml_set_character_data_handler($parser, 'xmlrpc_cd');\r
-                       xml_set_default_handler($parser, 'xmlrpc_dh');\r
-                       if(!xml_parse($parser, $data, 1))\r
-                       {\r
-                               // return XML error as a faultCode\r
-                               $r = new xmlrpcresp(0,\r
-                               $GLOBALS['xmlrpcerrxml']+xml_get_error_code($parser),\r
-                               sprintf('XML error: %s at line %d, column %d',\r
-                                       xml_error_string(xml_get_error_code($parser)),\r
-                                       xml_get_current_line_number($parser), xml_get_current_column_number($parser)));\r
-                               xml_parser_free($parser);\r
-                       }\r
-                       elseif ($GLOBALS['_xh']['isf'])\r
-                       {\r
-                               xml_parser_free($parser);\r
-                               $r = new xmlrpcresp(0,\r
-                                       $GLOBALS['xmlrpcerr']['invalid_request'],\r
-                                       $GLOBALS['xmlrpcstr']['invalid_request'] . ' ' . $GLOBALS['_xh']['isf_reason']);\r
-                       }\r
-                       else\r
-                       {\r
-                               xml_parser_free($parser);\r
-                               if ($this->functions_parameters_type != 'xmlrpcvals')\r
-                               {\r
-                                       if($this->debug > 1)\r
-                                       {\r
-                                               $this->debugmsg("\n+++PARSED+++\n".var_export($GLOBALS['_xh']['params'], true)."\n+++END+++");\r
-                                       }\r
-                                       $r = $this->execute($GLOBALS['_xh']['method'], $GLOBALS['_xh']['params'], $GLOBALS['_xh']['pt']);\r
-                               }\r
-                               else\r
-                               {\r
-                                       // build an xmlrpcmsg object with data parsed from xml\r
-                                       $m= new xmlrpcmsg($GLOBALS['_xh']['method']);\r
-                                       // now add parameters in\r
-                                       for($i=0; $i<count($GLOBALS['_xh']['params']); $i++)\r
-                                       {\r
-                                               $m->addParam($GLOBALS['_xh']['params'][$i]);\r
-                                       }\r
-\r
-                                       if($this->debug > 1)\r
-                                       {\r
-                                               $this->debugmsg("\n+++PARSED+++\n".var_export($m, true)."\n+++END+++");\r
-                                       }\r
-\r
-                                       $r = $this->execute($m);\r
-                               }\r
-                       }\r
-                       return $r;\r
-               }\r
-\r
-               /**\r
-               * Execute a method invoked by the client, checking parameters used\r
-               * @param mixed $m either an xmlrpcmsg obj or a method name\r
-               * @param array $params array with method parameters as php types (if m is method name only)\r
-               * @param array $paramtypes array with xmlrpc types of method parameters (if m is method name only)\r
-               * @return xmlrpcresp\r
-               * @access private\r
-               */\r
-               function execute($m, $params=null, $paramtypes=null)\r
-               {\r
-                       if (is_object($m))\r
-                       {\r
-                               $methName = $m->method();\r
-                       }\r
-                       else\r
-                       {\r
-                               $methName = $m;\r
-                       }\r
-                       $sysCall = $this->allow_system_funcs && (i18n::strpos($methName, "system.") === 0);\r
-                       $dmap = $sysCall ? $GLOBALS['_xmlrpcs_dmap'] : $this->dmap;\r
-\r
-                       if(!isset($dmap[$methName]['function']))\r
-                       {\r
-                               // No such method\r
-                               return new xmlrpcresp(0,\r
-                                       $GLOBALS['xmlrpcerr']['unknown_method'],\r
-                                       $GLOBALS['xmlrpcstr']['unknown_method']);\r
-                       }\r
-\r
-                       // Check signature\r
-                       if(isset($dmap[$methName]['signature']))\r
-                       {\r
-                               $sig = $dmap[$methName]['signature'];\r
-                               if (is_object($m))\r
-                               {\r
-                                       list($ok, $errstr) = $this->verifySignature($m, $sig);\r
-                               }\r
-                               else\r
-                               {\r
-                                       list($ok, $errstr) = $this->verifySignature($paramtypes, $sig);\r
-                               }\r
-                               if(!$ok)\r
-                               {\r
-                                       // Didn't match.\r
-                                       return new xmlrpcresp(\r
-                                               0,\r
-                                               $GLOBALS['xmlrpcerr']['incorrect_params'],\r
-                                               $GLOBALS['xmlrpcstr']['incorrect_params'] . ": ${errstr}"\r
-                                       );\r
-                               }\r
-                       }\r
-\r
-                       $func = $dmap[$methName]['function'];\r
-                       // let the 'class::function' syntax be accepted in dispatch maps\r
-                       if(is_string($func) && i18n::strpos($func, '::'))\r
-                       {\r
-                               $func = preg_split('#::#', $func);\r
-                       }\r
-                       // verify that function to be invoked is in fact callable\r
-                       if(!is_callable($func))\r
-                       {\r
-                               error_log("XML-RPC: xmlrpc_server::execute: function $func registered as method handler is not callable");\r
-                               return new xmlrpcresp(\r
-                                       0,\r
-                                       $GLOBALS['xmlrpcerr']['server_error'],\r
-                                       $GLOBALS['xmlrpcstr']['server_error'] . ": no function matches method"\r
-                               );\r
-                       }\r
-\r
-                       // If debug level is 3, we should catch all errors generated during\r
-                       // processing of user function, and log them as part of response\r
-                       if($this->debug > 2)\r
-                       {\r
-                               $GLOBALS['_xmlrpcs_prev_ehandler'] = set_error_handler('_xmlrpcs_errorHandler');\r
-                       }\r
-                       if (is_object($m))\r
-                       {\r
-                               if($sysCall)\r
-                               {\r
-                                       $r = call_user_func($func, $this, $m);\r
-                               }\r
-                               else\r
-                               {\r
-                                       $r = call_user_func($func, $m);\r
-                               }\r
-                               if (!is_a($r, 'xmlrpcresp'))\r
-                               {\r
-                                       error_log("XML-RPC: xmlrpc_server::execute: function $func registered as method handler does not return an xmlrpcresp object");\r
-                                       if (is_a($r, 'xmlrpcval'))\r
-                                       {\r
-                                               $r = new xmlrpcresp($r);\r
-                                       }\r
-                                       else\r
-                                       {\r
-                                               $r = new xmlrpcresp(\r
-                                                       0,\r
-                                                       $GLOBALS['xmlrpcerr']['server_error'],\r
-                                                       $GLOBALS['xmlrpcstr']['server_error'] . ": function does not return xmlrpcresp object"\r
-                                               );\r
-                                       }\r
-                               }\r
-                       }\r
-                       else\r
-                       {\r
-                               // call a 'plain php' function\r
-                               if($sysCall)\r
-                               {\r
-                                       array_unshift($params, $this);\r
-                                       $r = call_user_func_array($func, $params);\r
-                               }\r
-                               else\r
-                               {\r
-                                       // 3rd API convention for method-handling functions: EPI-style\r
-                                       if ($this->functions_parameters_type == 'epivals')\r
-                                       {\r
-                                               $r = call_user_func_array($func, array($methName, $params, $this->user_data));\r
-                                               // mimic EPI behaviour: if we get an array that looks like an error, make it\r
-                                               // an eror response\r
-                                               if (is_array($r) && array_key_exists('faultCode', $r) && array_key_exists('faultString', $r))\r
-                                               {\r
-                                                       $r = new xmlrpcresp(0, (integer)$r['faultCode'], (string)$r['faultString']);\r
-                                               }\r
-                                               else\r
-                                               {\r
-                                                       // functions using EPI api should NOT return resp objects,\r
-                                                       // so make sure we encode the return type correctly\r
-                                                       $r = new xmlrpcresp(php_xmlrpc_encode($r, array('extension_api')));\r
-                                               }\r
-                                       }\r
-                                       else\r
-                                       {\r
-                                               $r = call_user_func_array($func, $params);\r
-                                       }\r
-                               }\r
-                               // the return type can be either an xmlrpcresp object or a plain php value...\r
-                               if (!is_a($r, 'xmlrpcresp'))\r
-                               {\r
-                                       // what should we assume here about automatic encoding of datetimes\r
-                                       // and php classes instances???\r
-                                       $r = new xmlrpcresp(php_xmlrpc_encode($r, array('auto_dates')));\r
-                               }\r
-                       }\r
-                       if($this->debug > 2)\r
-                       {\r
-                               // note: restore the error handler we found before calling the\r
-                               // user func, even if it has been changed inside the func itself\r
-                               if($GLOBALS['_xmlrpcs_prev_ehandler'])\r
-                               {\r
-                                       set_error_handler($GLOBALS['_xmlrpcs_prev_ehandler']);\r
-                               }\r
-                               else\r
-                               {\r
-                                       restore_error_handler();\r
-                               }\r
-                       }\r
-                       return $r;\r
-               }\r
-\r
-               /**\r
-               * add a string to the 'internal debug message' (separate from 'user debug message')\r
-               * @param string $strings\r
-               * @access private\r
-               */\r
-               function debugmsg($string)\r
-               {\r
-                       $this->debug_info .= $string."\n";\r
-               }\r
-\r
-               /**\r
-               * @access private\r
-               */\r
-               function xml_header($charset_encoding='')\r
-               {\r
-                       if ($charset_encoding != '')\r
-                       {\r
-                               return "<?xml version=\"1.0\" encoding=\"$charset_encoding\"?" . ">\n";\r
-                       }\r
-                       else\r
-                       {\r
-                               return "<?xml version=\"1.0\"?" . ">\n";\r
-                       }\r
-               }\r
-\r
-               /**\r
-               * A debugging routine: just echoes back the input packet as a string value\r
-               * DEPRECATED!\r
-               */\r
-               function echoInput()\r
-               {\r
-                       $r = new xmlrpcresp(new xmlrpcval( "'Aha said I: '" . $GLOBALS['HTTP_RAW_POST_DATA'], 'string'));\r
-                       print $r->serialize();\r
-               }\r
-       }\r
-?>\r
+<?php
+// by Edd Dumbill (C) 1999-2002
+// <edd@usefulinc.com>
+// $Original: xmlrpcs.inc,v 1.66 2006/09/17 21:25:06 ggiunta Exp $
+// $Id: xmlrpcs.inc.php 1737 2012-04-10 14:32:11Z sakamocchi $
+
+// Copyright (c) 1999,2000,2002 Edd Dumbill.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions
+// are met:
+//
+//    * Redistributions of source code must retain the above copyright
+//      notice, this list of conditions and the following disclaimer.
+//
+//    * Redistributions in binary form must reproduce the above
+//      copyright notice, this list of conditions and the following
+//      disclaimer in the documentation and/or other materials provided
+//      with the distribution.
+//
+//    * Neither the name of the "XML-RPC for PHP" nor the names of its
+//      contributors may be used to endorse or promote products derived
+//      from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+// REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+// OF THE POSSIBILITY OF SUCH DAMAGE.
+
+       // XML RPC Server class
+       // requires: xmlrpc.inc
+
+       $GLOBALS['xmlrpcs_capabilities'] = array(
+               // xmlrpc spec: always supported
+               'xmlrpc' => new xmlrpcval(array(
+                       'specUrl' => new xmlrpcval('http://www.xmlrpc.com/spec', 'string'),
+                       'specVersion' => new xmlrpcval(1, 'int')
+               ), 'struct'),
+               // if we support system.xxx functions, we always support multicall, too...
+               // Note that, as of 2006/09/17, the following URL does not respond anymore
+               'system.multicall' => new xmlrpcval(array(
+                       'specUrl' => new xmlrpcval('http://www.xmlrpc.com/discuss/msgReader$1208', 'string'),
+                       'specVersion' => new xmlrpcval(1, 'int')
+               ), 'struct'),
+               // introspection: version 2! we support 'mixed', too
+               'introspection' => new xmlrpcval(array(
+                       'specUrl' => new xmlrpcval('http://phpxmlrpc.sourceforge.net/doc-2/ch10.html', 'string'),
+                       'specVersion' => new xmlrpcval(2, 'int')
+               ), 'struct')
+       );
+
+       /* Functions that implement system.XXX methods of xmlrpc servers */
+       $_xmlrpcs_getCapabilities_sig=array(array($GLOBALS['xmlrpcStruct']));
+       $_xmlrpcs_getCapabilities_doc='This method lists all the capabilites that the XML-RPC server has: the (more or less standard) extensions to the xmlrpc spec that it adheres to';
+       $_xmlrpcs_getCapabilities_sdoc=array(array('list of capabilities, described as structs with a version number and url for the spec'));
+       function _xmlrpcs_getCapabilities($server, $m=null)
+       {
+               $outAr = $GLOBALS['xmlrpcs_capabilities'];
+               // NIL extension
+               if ($GLOBALS['xmlrpc_null_extension']) {
+                       $outAr['nil'] = new xmlrpcval(array(
+                               'specUrl' => new xmlrpcval('http://www.ontosys.com/xml-rpc/extensions.php', 'string'),
+                               'specVersion' => new xmlrpcval(1, 'int')
+                       ), 'struct');
+               }
+               return new xmlrpcresp(new xmlrpcval($outAr, 'struct'));
+       }
+
+       // listMethods: signature was either a string, or nothing.
+       // The useless string variant has been removed
+       $_xmlrpcs_listMethods_sig=array(array($GLOBALS['xmlrpcArray']));
+       $_xmlrpcs_listMethods_doc='This method lists all the methods that the XML-RPC server knows how to dispatch';
+       $_xmlrpcs_listMethods_sdoc=array(array('list of method names'));
+       function _xmlrpcs_listMethods($server, $m=null) // if called in plain php values mode, second param is missing
+       {
+
+               $outAr=array();
+               foreach($server->dmap as $key => $val)
+               {
+                       $outAr[] = new xmlrpcval($key, 'string');
+               }
+               if($server->allow_system_funcs)
+               {
+                       foreach($GLOBALS['_xmlrpcs_dmap'] as $key => $val)
+                       {
+                               $outAr[] = new xmlrpcval($key, 'string');
+                       }
+               }
+               return new xmlrpcresp(new xmlrpcval($outAr, 'array'));
+       }
+
+       $_xmlrpcs_methodSignature_sig=array(array($GLOBALS['xmlrpcArray'], $GLOBALS['xmlrpcString']));
+       $_xmlrpcs_methodSignature_doc='Returns an array of known signatures (an array of arrays) for the method name passed. If no signatures are known, returns a none-array (test for type != array to detect missing signature)';
+       $_xmlrpcs_methodSignature_sdoc=array(array('list of known signatures, each sig being an array of xmlrpc type names', 'name of method to be described'));
+       function _xmlrpcs_methodSignature($server, $m)
+       {
+               // let accept as parameter both an xmlrpcval or string
+               if (is_object($m))
+               {
+                       $methName=$m->getParam(0);
+                       $methName=$methName->scalarval();
+               }
+               else
+               {
+                       $methName=$m;
+               }
+               if(i18n::strpos($methName, "system.") === 0)
+               {
+                       $dmap=$GLOBALS['_xmlrpcs_dmap']; $sysCall=1;
+               }
+               else
+               {
+                       $dmap=$server->dmap; $sysCall=0;
+               }
+               if(isset($dmap[$methName]))
+               {
+                       if(isset($dmap[$methName]['signature']))
+                       {
+                               $sigs=array();
+                               foreach($dmap[$methName]['signature'] as $inSig)
+                               {
+                                       $cursig=array();
+                                       foreach($inSig as $sig)
+                                       {
+                                               $cursig[]= new xmlrpcval($sig, 'string');
+                                       }
+                                       $sigs[] = new xmlrpcval($cursig, 'array');
+                               }
+                               $r= new xmlrpcresp(new xmlrpcval($sigs, 'array'));
+                       }
+                       else
+                       {
+                               // NB: according to the official docs, we should be returning a
+                               // "none-array" here, which means not-an-array
+                               $r = new xmlrpcresp(new xmlrpcval('undef', 'string'));
+                       }
+               }
+               else
+               {
+                       $r = new xmlrpcresp(0,$GLOBALS['xmlrpcerr']['introspect_unknown'], $GLOBALS['xmlrpcstr']['introspect_unknown']);
+               }
+               return $r;
+       }
+
+       $_xmlrpcs_methodHelp_sig=array(array($GLOBALS['xmlrpcString'], $GLOBALS['xmlrpcString']));
+       $_xmlrpcs_methodHelp_doc='Returns help text if defined for the method passed, otherwise returns an empty string';
+       $_xmlrpcs_methodHelp_sdoc=array(array('method description', 'name of the method to be described'));
+       function _xmlrpcs_methodHelp($server, $m)
+       {
+               // let accept as parameter both an xmlrpcval or string
+               if (is_object($m))
+               {
+                       $methName=$m->getParam(0);
+                       $methName=$methName->scalarval();
+               }
+               else
+               {
+                       $methName=$m;
+               }
+               if(i18n::strpos($methName, "system.") === 0)
+               {
+                       $dmap=$GLOBALS['_xmlrpcs_dmap']; $sysCall=1;
+               }
+               else
+               {
+                       $dmap=$server->dmap; $sysCall=0;
+               }
+               if(isset($dmap[$methName]))
+               {
+                       if(isset($dmap[$methName]['docstring']))
+                       {
+                               $r = new xmlrpcresp(new xmlrpcval($dmap[$methName]['docstring']), 'string');
+                       }
+                       else
+                       {
+                               $r = new xmlrpcresp(new xmlrpcval('', 'string'));
+                       }
+               }
+               else
+               {
+                       $r = new xmlrpcresp(0, $GLOBALS['xmlrpcerr']['introspect_unknown'], $GLOBALS['xmlrpcstr']['introspect_unknown']);
+               }
+               return $r;
+       }
+
+       $_xmlrpcs_multicall_sig = array(array($GLOBALS['xmlrpcArray'], $GLOBALS['xmlrpcArray']));
+       $_xmlrpcs_multicall_doc = 'Boxcar multiple RPC calls in one request. See http://www.xmlrpc.com/discuss/msgReader$1208 for details';
+       $_xmlrpcs_multicall_sdoc = array(array('list of response structs, where each struct has the usual members', 'list of calls, with each call being represented as a struct, with members "methodname" and "params"'));
+       function _xmlrpcs_multicall_error($err)
+       {
+               if(is_string($err))
+               {
+                       $str = $GLOBALS['xmlrpcstr']["multicall_${err}"];
+                       $code = $GLOBALS['xmlrpcerr']["multicall_${err}"];
+               }
+               else
+               {
+                       $code = $err->faultCode();
+                       $str = $err->faultString();
+               }
+               $struct = array();
+               $struct['faultCode'] = new xmlrpcval($code, 'int');
+               $struct['faultString'] = new xmlrpcval($str, 'string');
+               return new xmlrpcval($struct, 'struct');
+       }
+
+       function _xmlrpcs_multicall_do_call($server, $call)
+       {
+               if($call->kindOf() != 'struct')
+               {
+                       return _xmlrpcs_multicall_error('notstruct');
+               }
+               $methName = @$call->structmem('methodName');
+               if(!$methName)
+               {
+                       return _xmlrpcs_multicall_error('nomethod');
+               }
+               if($methName->kindOf() != 'scalar' || $methName->scalartyp() != 'string')
+               {
+                       return _xmlrpcs_multicall_error('notstring');
+               }
+               if($methName->scalarval() == 'system.multicall')
+               {
+                       return _xmlrpcs_multicall_error('recursion');
+               }
+
+               $params = @$call->structmem('params');
+               if(!$params)
+               {
+                       return _xmlrpcs_multicall_error('noparams');
+               }
+               if($params->kindOf() != 'array')
+               {
+                       return _xmlrpcs_multicall_error('notarray');
+               }
+               $numParams = $params->arraysize();
+
+               $msg = new xmlrpcmsg($methName->scalarval());
+               for($i = 0; $i < $numParams; $i++)
+               {
+                       if(!$msg->addParam($params->arraymem($i)))
+                       {
+                               $i++;
+                               return _xmlrpcs_multicall_error(new xmlrpcresp(0,
+                                       $GLOBALS['xmlrpcerr']['incorrect_params'],
+                                       $GLOBALS['xmlrpcstr']['incorrect_params'] . ": probable xml error in param " . $i));
+                       }
+               }
+
+               $result = $server->execute($msg);
+
+               if($result->faultCode() != 0)
+               {
+                       return _xmlrpcs_multicall_error($result);               // Method returned fault.
+               }
+
+               return new xmlrpcval(array($result->value()), 'array');
+       }
+
+       function _xmlrpcs_multicall_do_call_phpvals($server, $call)
+       {
+               if(!is_array($call))
+               {
+                       return _xmlrpcs_multicall_error('notstruct');
+               }
+               if(!array_key_exists('methodName', $call))
+               {
+                       return _xmlrpcs_multicall_error('nomethod');
+               }
+               if (!is_string($call['methodName']))
+               {
+                       return _xmlrpcs_multicall_error('notstring');
+               }
+               if($call['methodName'] == 'system.multicall')
+               {
+                       return _xmlrpcs_multicall_error('recursion');
+               }
+               if(!array_key_exists('params', $call))
+               {
+                       return _xmlrpcs_multicall_error('noparams');
+               }
+               if(!is_array($call['params']))
+               {
+                       return _xmlrpcs_multicall_error('notarray');
+               }
+
+               // this is a real dirty and simplistic hack, since we might have received a
+               // base64 or datetime values, but they will be listed as strings here...
+               $numParams = count($call['params']);
+               $pt = array();
+               foreach($call['params'] as $val)
+                       $pt[] = php_2_xmlrpc_type(gettype($val));
+
+               $result = $server->execute($call['methodName'], $call['params'], $pt);
+
+               if($result->faultCode() != 0)
+               {
+                       return _xmlrpcs_multicall_error($result);               // Method returned fault.
+               }
+
+               return new xmlrpcval(array($result->value()), 'array');
+       }
+
+       function _xmlrpcs_multicall($server, $m)
+       {
+               $result = array();
+               // let accept a plain list of php parameters, beside a single xmlrpc msg object
+               if (is_object($m))
+               {
+                       $calls = $m->getParam(0);
+                       $numCalls = $calls->arraysize();
+                       for($i = 0; $i < $numCalls; $i++)
+                       {
+                               $call = $calls->arraymem($i);
+                               $result[$i] = _xmlrpcs_multicall_do_call($server, $call);
+                       }
+               }
+               else
+               {
+                       $numCalls=count($m);
+                       for($i = 0; $i < $numCalls; $i++)
+                       {
+                               $result[$i] = _xmlrpcs_multicall_do_call_phpvals($server, $m[$i]);
+                       }
+               }
+
+               return new xmlrpcresp(new xmlrpcval($result, 'array'));
+       }
+
+       $GLOBALS['_xmlrpcs_dmap']=array(
+               'system.listMethods' => array(
+                       'function' => '_xmlrpcs_listMethods',
+                       'signature' => $_xmlrpcs_listMethods_sig,
+                       'docstring' => $_xmlrpcs_listMethods_doc,
+                       'signature_docs' => $_xmlrpcs_listMethods_sdoc),
+               'system.methodHelp' => array(
+                       'function' => '_xmlrpcs_methodHelp',
+                       'signature' => $_xmlrpcs_methodHelp_sig,
+                       'docstring' => $_xmlrpcs_methodHelp_doc,
+                       'signature_docs' => $_xmlrpcs_methodHelp_sdoc),
+               'system.methodSignature' => array(
+                       'function' => '_xmlrpcs_methodSignature',
+                       'signature' => $_xmlrpcs_methodSignature_sig,
+                       'docstring' => $_xmlrpcs_methodSignature_doc,
+                       'signature_docs' => $_xmlrpcs_methodSignature_sdoc),
+               'system.multicall' => array(
+                       'function' => '_xmlrpcs_multicall',
+                       'signature' => $_xmlrpcs_multicall_sig,
+                       'docstring' => $_xmlrpcs_multicall_doc,
+                       'signature_docs' => $_xmlrpcs_multicall_sdoc),
+               'system.getCapabilities' => array(
+                       'function' => '_xmlrpcs_getCapabilities',
+                       'signature' => $_xmlrpcs_getCapabilities_sig,
+                       'docstring' => $_xmlrpcs_getCapabilities_doc,
+                       'signature_docs' => $_xmlrpcs_getCapabilities_sdoc)
+       );
+
+       $GLOBALS['_xmlrpcs_occurred_errors'] = '';
+       $GLOBALS['_xmlrpcs_prev_ehandler'] = '';
+       /**
+       * Error handler used to track errors that occur during server-side execution of PHP code.
+       * This allows to report back to the client whether an internal error has occurred or not
+       * using an xmlrpc response object, instead of letting the client deal with the html junk
+       * that a PHP execution error on the server generally entails.
+       *
+       * NB: in fact a user defined error handler can only handle WARNING, NOTICE and USER_* errors.
+       *
+       */
+       function _xmlrpcs_errorHandler($errcode, $errstring, $filename=null, $lineno=null, $context=null)
+       {
+               // obey the @ protocol
+               if (error_reporting() == 0)
+                       return;
+
+               //if($errcode != E_NOTICE && $errcode != E_WARNING && $errcode != E_USER_NOTICE && $errcode != E_USER_WARNING)
+               if($errcode != 2048) // do not use E_STRICT by name, since on PHP 4 it will not be defined
+               {
+                       $GLOBALS['_xmlrpcs_occurred_errors'] = $GLOBALS['_xmlrpcs_occurred_errors'] . $errstring . "\n";
+               }
+               // Try to avoid as much as possible disruption to the previous error handling
+               // mechanism in place
+               if($GLOBALS['_xmlrpcs_prev_ehandler'] == '')
+               {
+                       // The previous error handler was the default: all we should do is log error
+                       // to the default error log (if level high enough)
+                       if(ini_get('log_errors') && (intval(ini_get('error_reporting')) & $errcode))
+                       {
+                               error_log($errstring);
+                       }
+               }
+               else
+               {
+                       // Pass control on to previous error handler, trying to avoid loops...
+                       if($GLOBALS['_xmlrpcs_prev_ehandler'] != '_xmlrpcs_errorHandler')
+                       {
+                               // NB: this code will NOT work on php < 4.0.2: only 2 params were used for error handlers
+                               if(is_array($GLOBALS['_xmlrpcs_prev_ehandler']))
+                               {
+                                       $GLOBALS['_xmlrpcs_prev_ehandler'][0]->$GLOBALS['_xmlrpcs_prev_ehandler'][1]($errcode, $errstring, $filename, $lineno, $context);
+                               }
+                               else
+                               {
+                                       $GLOBALS['_xmlrpcs_prev_ehandler']($errcode, $errstring, $filename, $lineno, $context);
+                               }
+                       }
+               }
+       }
+
+       $GLOBALS['_xmlrpc_debuginfo']='';
+
+       /**
+       * Add a string to the debug info that can be later seralized by the server
+       * as part of the response message.
+       * Note that for best compatbility, the debug string should be encoded using
+       * the $GLOBALS['xmlrpc_internalencoding'] character set.
+       * @param string $m
+       * @access public
+       */
+       function xmlrpc_debugmsg($m)
+       {
+               $GLOBALS['_xmlrpc_debuginfo'] .= $m . "\n";
+       }
+
+       class xmlrpc_server
+       {
+               /// array defining php functions exposed as xmlrpc methods by this server
+               var $dmap=array();
+               /**
+               * Defines how functions in dmap will be invokde: either using an xmlrpc msg object
+               * or plain php values.
+               * valid strings are 'xmlrpcvals', 'phpvals' or 'epivals'
+               */
+               var $functions_parameters_type='xmlrpcvals';
+               /// controls wether the server is going to echo debugging messages back to the client as comments in response body. valid values: 0,1,2,3
+               var $debug = 1;
+               /**
+               * When set to true, it will enable HTTP compression of the response, in case
+               * the client has declared its support for compression in the request.
+               */
+               var $compress_response = false;
+               /**
+               * List of http compression methods accepted by the server for requests.
+               * NB: PHP supports deflate, gzip compressions out of the box if compiled w. zlib
+               */
+               var $accepted_compression = array();
+               /// shall we serve calls to system.* methods?
+               var $allow_system_funcs = true;
+               /// list of charset encodings natively accepted for requests
+               var $accepted_charset_encodings = array();
+               /**
+               * charset encoding to be used for response.
+               * NB: if we can, we will convert the generated response from internal_encoding to the intended one.
+               * can be: a supported xml encoding (only UTF-8 and ISO-8859-1 at present, unless mbstring is enabled),
+               * null (leave unspecified in response, convert output stream to US_ASCII),
+               * 'default' (use xmlrpc library default as specified in xmlrpc.inc, convert output stream if needed),
+               * or 'auto' (use client-specified charset encoding or same as request if request headers do not specify it (unless request is US-ASCII: then use library default anyway).
+               * NB: pretty dangerous if you accept every charset and do not have mbstring enabled)
+               */
+               var $response_charset_encoding = '';
+               /// storage for internal debug info
+               var $debug_info = '';
+               /// extra data passed at runtime to method handling functions. Used only by EPI layer
+               var $user_data = null;
+
+               /**
+               * @param array $dispmap the dispatch map withd efinition of exposed services
+               * @param boolean $servicenow set to false to prevent the server from runnung upon construction
+               */
+               function xmlrpc_server($dispMap=null, $serviceNow=true)
+               {
+                       // if ZLIB is enabled, let the server by default accept compressed requests,
+                       // and compress responses sent to clients that support them
+                       if(function_exists('gzinflate'))
+                       {
+                               $this->accepted_compression = array('gzip', 'deflate');
+                               $this->compress_response = true;
+                       }
+
+                       // by default the xml parser can support these 3 charset encodings
+                       $this->accepted_charset_encodings = array('UTF-8', 'ISO-8859-1', 'US-ASCII');
+
+                       // dispMap is a dispatch array of methods
+                       // mapped to function names and signatures
+                       // if a method
+                       // doesn't appear in the map then an unknown
+                       // method error is generated
+                       /* milosch - changed to make passing dispMap optional.
+                        * instead, you can use the class add_to_map() function
+                        * to add functions manually (borrowed from SOAPX4)
+                        */
+                       if($dispMap)
+                       {
+                               $this->dmap = $dispMap;
+                               if($serviceNow)
+                               {
+                                       $this->service();
+                               }
+                       }
+               }
+
+               /**
+               * Set debug level of server.
+               * @param integer $in debug lvl: determines info added to xmlrpc responses (as xml comments)
+               * 0 = no debug info,
+               * 1 = msgs set from user with debugmsg(),
+               * 2 = add complete xmlrpc request (headers and body),
+               * 3 = add also all processing warnings happened during method processing
+               * (NB: this involves setting a custom error handler, and might interfere
+               * with the standard processing of the php function exposed as method. In
+               * particular, triggering an USER_ERROR level error will not halt script
+               * execution anymore, but just end up logged in the xmlrpc response)
+               * Note that info added at elevel 2 and 3 will be base64 encoded
+               * @access public
+               */
+               function setDebug($in)
+               {
+                       $this->debug=$in;
+               }
+
+               /**
+               * Return a string with the serialized representation of all debug info
+               * @param string $charset_encoding the target charset encoding for the serialization
+               * @return string an XML comment (or two)
+               */
+               function serializeDebug($charset_encoding='')
+               {
+                       // Tough encoding problem: which internal charset should we assume for debug info?
+                       // It might contain a copy of raw data received from client, ie with unknown encoding,
+                       // intermixed with php generated data and user generated data...
+                       // so we split it: system debug is base 64 encoded,
+                       // user debug info should be encoded by the end user using the INTERNAL_ENCODING
+                       $out = '';
+                       if ($this->debug_info != '')
+                       {
+                               $out .= "<!-- SERVER DEBUG INFO (BASE64 ENCODED):\n".base64_encode($this->debug_info)."\n-->\n";
+                       }
+                       if($GLOBALS['_xmlrpc_debuginfo']!='')
+                       {
+
+                               $out .= "<!-- DEBUG INFO:\n" . xmlrpc_encode_entitites(str_replace('--', '_-', $GLOBALS['_xmlrpc_debuginfo']), $GLOBALS['xmlrpc_internalencoding'], $charset_encoding) . "\n-->\n";
+                               // NB: a better solution MIGHT be to use CDATA, but we need to insert it
+                               // into return payload AFTER the beginning tag
+                               //$out .= "<![CDATA[ DEBUG INFO:\n\n" . str_replace(']]>', ']_]_>', $GLOBALS['_xmlrpc_debuginfo']) . "\n]]>\n";
+                       }
+                       return $out;
+               }
+
+               /**
+               * Execute the xmlrpc request, printing the response
+               * @param string $data the request body. If null, the http POST request will be examined
+               * @return xmlrpcresp the response object (usually not used by caller...)
+               * @access public
+               */
+               function service($data=null, $return_payload=false)
+               {
+                       if ($data === null)
+                       {
+                               $data = isset($GLOBALS['HTTP_RAW_POST_DATA']) ? $GLOBALS['HTTP_RAW_POST_DATA'] : '';
+                       }
+                       $raw_data = $data;
+
+                       // reset internal debug info
+                       $this->debug_info = '';
+
+                       // Echo back what we received, before parsing it
+                       if($this->debug > 1)
+                       {
+                               $this->debugmsg("+++GOT+++\n" . $data . "\n+++END+++");
+                       }
+
+                       $r = $this->parseRequestHeaders($data, $req_charset, $resp_charset, $resp_encoding);
+                       if (!$r)
+                       {
+                               $r=$this->parseRequest($data, $req_charset);
+                       }
+
+                       // save full body of request into response, for more debugging usages
+                       $r->raw_data = $raw_data;
+
+                       if($this->debug > 2 && $GLOBALS['_xmlrpcs_occurred_errors'])
+                       {
+                               $this->debugmsg("+++PROCESSING ERRORS AND WARNINGS+++\n" .
+                                       $GLOBALS['_xmlrpcs_occurred_errors'] . "+++END+++");
+                       }
+
+                       $payload=$this->xml_header($resp_charset);
+                       if($this->debug > 0)
+                       {
+                               $payload = $payload . $this->serializeDebug($resp_charset);
+                       }
+
+                       // G. Giunta 2006-01-27: do not create response serialization if it has
+                       // already happened. Helps building json magic
+                       if (empty($r->payload))
+                       {
+                               $r->serialize($resp_charset);
+                       }
+                       $payload = $payload . $r->payload;
+
+                       if ($return_payload)
+                       {
+                               return $payload;
+                       }
+
+                       // if we get a warning/error that has output some text before here, then we cannot
+                       // add a new header. We cannot say we are sending xml, either...
+                       if(!headers_sent())
+                       {
+                               header('Content-Type: '.$r->content_type);
+                               // we do not know if client actually told us an accepted charset, but if he did
+                               // we have to tell him what we did
+                               header("Vary: Accept-Charset");
+
+                               // http compression of output: only
+                               // if we can do it, and we want to do it, and client asked us to,
+                               // and php ini settings do not force it already
+                               $php_no_self_compress = ini_get('zlib.output_compression') == '' && (ini_get('output_handler') != 'ob_gzhandler');
+                               if($this->compress_response && function_exists('gzencode') && $resp_encoding != ''
+                                       && $php_no_self_compress)
+                               {
+                                       if(i18n::strpos($resp_encoding, 'gzip') !== false)
+                                       {
+                                               $payload = gzencode($payload);
+                                               header("Content-Encoding: gzip");
+                                               header("Vary: Accept-Encoding");
+                                       }
+                                       elseif (i18n::strpos($resp_encoding, 'deflate') !== false)
+                                       {
+                                               $payload = gzcompress($payload);
+                                               header("Content-Encoding: deflate");
+                                               header("Vary: Accept-Encoding");
+                                       }
+                               }
+
+                               // do not ouput content-length header if php is compressing output for us:
+                               // it will mess up measurements
+                               if($php_no_self_compress)
+                               {
+                                       header('Content-Length: ' . (int)i18n::strlen($payload));
+                               }
+                       }
+                       else
+                       {
+                               error_log('XML-RPC: xmlrpc_server::service: http headers already sent before response is fully generated. Check for php warning or error messages');
+                       }
+
+                       print $payload;
+
+                       // return request, in case subclasses want it
+                       return $r;
+               }
+
+               /**
+               * Add a method to the dispatch map
+               * @param string $methodname the name with which the method will be made available
+               * @param string $function the php function that will get invoked
+               * @param array $sig the array of valid method signatures
+               * @param string $doc method documentation
+               * @access public
+               */
+               function add_to_map($methodname,$function,$sig=null,$doc='')
+               {
+                       $this->dmap[$methodname] = array(
+                               'function'      => $function,
+                               'docstring' => $doc
+                       );
+                       if ($sig)
+                       {
+                               $this->dmap[$methodname]['signature'] = $sig;
+                       }
+               }
+
+               /**
+               * Verify type and number of parameters received against a list of known signatures
+               * @param array $in array of either xmlrpcval objects or xmlrpc type definitions
+               * @param array $sig array of known signatures to match against
+               * @access private
+               */
+               function verifySignature($in, $sig)
+               {
+                       // check each possible signature in turn
+                       if (is_object($in))
+                       {
+                               $numParams = $in->getNumParams();
+                       }
+                       else
+                       {
+                               $numParams = count($in);
+                       }
+                       foreach($sig as $cursig)
+                       {
+                               if(count($cursig)==$numParams+1)
+                               {
+                                       $itsOK=1;
+                                       for($n=0; $n<$numParams; $n++)
+                                       {
+                                               if (is_object($in))
+                                               {
+                                                       $p=$in->getParam($n);
+                                                       if($p->kindOf() == 'scalar')
+                                                       {
+                                                               $pt=$p->scalartyp();
+                                                       }
+                                                       else
+                                                       {
+                                                               $pt=$p->kindOf();
+                                                       }
+                                               }
+                                               else
+                                               {
+                                                       $pt= $in[$n] == 'i4' ? 'int' : $in[$n]; // dispatch maps never use i4...
+                                               }
+
+                                               // param index is $n+1, as first member of sig is return type
+                                               if($pt != $cursig[$n+1] && $cursig[$n+1] != $GLOBALS['xmlrpcValue'])
+                                               {
+                                                       $itsOK=0;
+                                                       $pno=$n+1;
+                                                       $wanted=$cursig[$n+1];
+                                                       $got=$pt;
+                                                       break;
+                                               }
+                                       }
+                                       if($itsOK)
+                                       {
+                                               return array(1,'');
+                                       }
+                               }
+                       }
+                       if(isset($wanted))
+                       {
+                               return array(0, "Wanted ${wanted}, got ${got} at param ${pno}");
+                       }
+                       else
+                       {
+                               return array(0, "No method signature matches number of parameters");
+                       }
+               }
+
+               /**
+               * Parse http headers received along with xmlrpc request. If needed, inflate request
+               * @return null on success or an xmlrpcresp
+               * @access private
+               */
+               function parseRequestHeaders(&$data, &$req_encoding, &$resp_encoding, &$resp_compression)
+               {
+                       // Play nice to PHP 4.0.x: superglobals were not yet invented...
+                       if(!isset($_SERVER))
+                       {
+                               $_SERVER = $GLOBALS['HTTP_SERVER_VARS'];
+                       }
+
+                       if($this->debug > 1)
+                       {
+                               if(function_exists('getallheaders'))
+                               {
+                                       $this->debugmsg(''); // empty line
+                                       foreach(getallheaders() as $name => $val)
+                                       {
+                                               $this->debugmsg("HEADER: $name: $val");
+                                       }
+                               }
+
+                       }
+
+                       if(isset($_SERVER['HTTP_CONTENT_ENCODING']))
+                       {
+                               $content_encoding = str_replace('x-', '', $_SERVER['HTTP_CONTENT_ENCODING']);
+                       }
+                       else
+                       {
+                               $content_encoding = '';
+                       }
+
+                       // check if request body has been compressed and decompress it
+                       if($content_encoding != '' && i18n::strlen($data))
+                       {
+                               if($content_encoding == 'deflate' || $content_encoding == 'gzip')
+                               {
+                                       // if decoding works, use it. else assume data wasn't gzencoded
+                                       if(function_exists('gzinflate') && in_array($content_encoding, $this->accepted_compression))
+                                       {
+                                               if($content_encoding == 'deflate' && $degzdata = @gzuncompress($data))
+                                               {
+                                                       $data = $degzdata;
+                                                       if($this->debug > 1)
+                                                       {
+                                                               $this->debugmsg("\n+++INFLATED REQUEST+++[".i18n::strlen($data)." chars]+++\n" . $data . "\n+++END+++");
+                                                       }
+                                               }
+                                               elseif($content_encoding == 'gzip' && $degzdata = @gzinflate(i18n::substr($data, 10)))
+                                               {
+                                                       $data = $degzdata;
+                                                       if($this->debug > 1)
+                                                               $this->debugmsg("+++INFLATED REQUEST+++[".i18n::strlen($data)." chars]+++\n" . $data . "\n+++END+++");
+                                               }
+                                               else
+                                               {
+                                                       $r = new xmlrpcresp(0, $GLOBALS['xmlrpcerr']['server_decompress_fail'], $GLOBALS['xmlrpcstr']['server_decompress_fail']);
+                                                       return $r;
+                                               }
+                                       }
+                                       else
+                                       {
+                                               //error_log('The server sent deflated data. Your php install must have the Zlib extension compiled in to support this.');
+                                               $r = new xmlrpcresp(0, $GLOBALS['xmlrpcerr']['server_cannot_decompress'], $GLOBALS['xmlrpcstr']['server_cannot_decompress']);
+                                               return $r;
+                                       }
+                               }
+                       }
+
+                       // check if client specified accepted charsets, and if we know how to fulfill
+                       // the request
+                       if ($this->response_charset_encoding == 'auto')
+                       {
+                               $resp_encoding = '';
+                               if (isset($_SERVER['HTTP_ACCEPT_CHARSET']))
+                               {
+                                       // here we should check if we can match the client-requested encoding
+                                       // with the encodings we know we can generate.
+                                       /// @todo we should parse q=0.x preferences instead of getting first charset specified...
+                                       $client_accepted_charsets = preg_split('#,#', strtoupper($_SERVER['HTTP_ACCEPT_CHARSET']));
+                                       // Give preference to internal encoding
+                                       $known_charsets = array($this->internal_encoding, 'UTF-8', 'ISO-8859-1', 'US-ASCII');
+                                       foreach ($known_charsets as $charset)
+                                       {
+                                               foreach ($client_accepted_charsets as $accepted)
+                                                       if (i18n::strpos($accepted, $charset) === 0)
+                                                       {
+                                                               $resp_encoding = $charset;
+                                                               break;
+                                                       }
+                                               if ($resp_encoding)
+                                                       break;
+                                       }
+                               }
+                       }
+                       else
+                       {
+                               $resp_encoding = $this->response_charset_encoding;
+                       }
+
+                       if (isset($_SERVER['HTTP_ACCEPT_ENCODING']))
+                       {
+                               $resp_compression = $_SERVER['HTTP_ACCEPT_ENCODING'];
+                       }
+                       else
+                       {
+                               $resp_compression = '';
+                       }
+
+                       // 'guestimate' request encoding
+                       /// @todo check if mbstring is enabled and automagic input conversion is on: it might mingle with this check???
+                       $req_encoding = guess_encoding(isset($_SERVER['CONTENT_TYPE']) ? $_SERVER['CONTENT_TYPE'] : '',
+                               $data);
+
+                       return null;
+               }
+
+               /**
+               * Parse an xml chunk containing an xmlrpc request and execute the corresponding
+               * php function registered with the server
+               * @param string $data the xml request
+               * @param string $req_encoding (optional) the charset encoding of the xml request
+               * @return xmlrpcresp
+               * @access private
+               */
+               function parseRequest($data, $req_encoding='')
+               {
+                       // 2005/05/07 commented and moved into caller function code
+                       //if($data=='')
+                       //{
+                       //      $data=$GLOBALS['HTTP_RAW_POST_DATA'];
+                       //}
+
+                       // G. Giunta 2005/02/13: we do NOT expect to receive html entities
+                       // so we do not try to convert them into xml character entities
+                       //$data = xmlrpc_html_entity_xlate($data);
+
+                       $GLOBALS['_xh']=array();
+                       $GLOBALS['_xh']['ac']='';
+                       $GLOBALS['_xh']['stack']=array();
+                       $GLOBALS['_xh']['valuestack'] = array();
+                       $GLOBALS['_xh']['params']=array();
+                       $GLOBALS['_xh']['pt']=array();
+                       $GLOBALS['_xh']['isf']=0;
+                       $GLOBALS['_xh']['isf_reason']='';
+                       $GLOBALS['_xh']['method']=false; // so we can check later if we got a methodname or not
+                       $GLOBALS['_xh']['rt']='';
+
+                       // decompose incoming XML into request structure
+                       if ($req_encoding != '')
+                       {
+                               if (!in_array($req_encoding, array('UTF-8', 'ISO-8859-1', 'US-ASCII')))
+                               // the following code might be better for mb_string enabled installs, but
+                               // makes the lib about 200% slower...
+                               //if (!is_valid_charset($req_encoding, array('UTF-8', 'ISO-8859-1', 'US-ASCII')))
+                               {
+                                       error_log('XML-RPC: xmlrpc_server::parseRequest: invalid charset encoding of received request: '.$req_encoding);
+                                       $req_encoding = $GLOBALS['xmlrpc_defencoding'];
+                               }
+                               /// @BUG this will fail on PHP 5 if charset is not specified in the xml prologue,
+                               // the encoding is not UTF8 and there are non-ascii chars in the text...
+                               $parser = xml_parser_create($req_encoding);
+                       }
+                       else
+                       {
+                               $parser = xml_parser_create();
+                       }
+
+                       xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, true);
+                       // G. Giunta 2005/02/13: PHP internally uses ISO-8859-1, so we have to tell
+                       // the xml parser to give us back data in the expected charset
+                       xml_parser_set_option($parser, XML_OPTION_TARGET_ENCODING, $GLOBALS['xmlrpc_internalencoding']);
+
+                       if ($this->functions_parameters_type != 'xmlrpcvals')
+                               xml_set_element_handler($parser, 'xmlrpc_se', 'xmlrpc_ee_fast');
+                       else
+                               xml_set_element_handler($parser, 'xmlrpc_se', 'xmlrpc_ee');
+                       xml_set_character_data_handler($parser, 'xmlrpc_cd');
+                       xml_set_default_handler($parser, 'xmlrpc_dh');
+                       if(!xml_parse($parser, $data, 1))
+                       {
+                               // return XML error as a faultCode
+                               $r = new xmlrpcresp(0,
+                               $GLOBALS['xmlrpcerrxml']+xml_get_error_code($parser),
+                               sprintf('XML error: %s at line %d, column %d',
+                                       xml_error_string(xml_get_error_code($parser)),
+                                       xml_get_current_line_number($parser), xml_get_current_column_number($parser)));
+                               xml_parser_free($parser);
+                       }
+                       elseif ($GLOBALS['_xh']['isf'])
+                       {
+                               xml_parser_free($parser);
+                               $r = new xmlrpcresp(0,
+                                       $GLOBALS['xmlrpcerr']['invalid_request'],
+                                       $GLOBALS['xmlrpcstr']['invalid_request'] . ' ' . $GLOBALS['_xh']['isf_reason']);
+                       }
+                       else
+                       {
+                               xml_parser_free($parser);
+                               if ($this->functions_parameters_type != 'xmlrpcvals')
+                               {
+                                       if($this->debug > 1)
+                                       {
+                                               $this->debugmsg("\n+++PARSED+++\n".var_export($GLOBALS['_xh']['params'], true)."\n+++END+++");
+                                       }
+                                       $r = $this->execute($GLOBALS['_xh']['method'], $GLOBALS['_xh']['params'], $GLOBALS['_xh']['pt']);
+                               }
+                               else
+                               {
+                                       // build an xmlrpcmsg object with data parsed from xml
+                                       $m= new xmlrpcmsg($GLOBALS['_xh']['method']);
+                                       // now add parameters in
+                                       for($i=0; $i<count($GLOBALS['_xh']['params']); $i++)
+                                       {
+                                               $m->addParam($GLOBALS['_xh']['params'][$i]);
+                                       }
+
+                                       if($this->debug > 1)
+                                       {
+                                               $this->debugmsg("\n+++PARSED+++\n".var_export($m, true)."\n+++END+++");
+                                       }
+
+                                       $r = $this->execute($m);
+                               }
+                       }
+                       return $r;
+               }
+
+               /**
+               * Execute a method invoked by the client, checking parameters used
+               * @param mixed $m either an xmlrpcmsg obj or a method name
+               * @param array $params array with method parameters as php types (if m is method name only)
+               * @param array $paramtypes array with xmlrpc types of method parameters (if m is method name only)
+               * @return xmlrpcresp
+               * @access private
+               */
+               function execute($m, $params=null, $paramtypes=null)
+               {
+                       if (is_object($m))
+                       {
+                               $methName = $m->method();
+                       }
+                       else
+                       {
+                               $methName = $m;
+                       }
+                       $sysCall = $this->allow_system_funcs && (i18n::strpos($methName, "system.") === 0);
+                       $dmap = $sysCall ? $GLOBALS['_xmlrpcs_dmap'] : $this->dmap;
+
+                       if(!isset($dmap[$methName]['function']))
+                       {
+                               // No such method
+                               return new xmlrpcresp(0,
+                                       $GLOBALS['xmlrpcerr']['unknown_method'],
+                                       $GLOBALS['xmlrpcstr']['unknown_method']);
+                       }
+
+                       // Check signature
+                       if(isset($dmap[$methName]['signature']))
+                       {
+                               $sig = $dmap[$methName]['signature'];
+                               if (is_object($m))
+                               {
+                                       list($ok, $errstr) = $this->verifySignature($m, $sig);
+                               }
+                               else
+                               {
+                                       list($ok, $errstr) = $this->verifySignature($paramtypes, $sig);
+                               }
+                               if(!$ok)
+                               {
+                                       // Didn't match.
+                                       return new xmlrpcresp(
+                                               0,
+                                               $GLOBALS['xmlrpcerr']['incorrect_params'],
+                                               $GLOBALS['xmlrpcstr']['incorrect_params'] . ": ${errstr}"
+                                       );
+                               }
+                       }
+
+                       $func = $dmap[$methName]['function'];
+                       // let the 'class::function' syntax be accepted in dispatch maps
+                       if(is_string($func) && i18n::strpos($func, '::'))
+                       {
+                               $func = preg_split('#::#', $func);
+                       }
+                       // verify that function to be invoked is in fact callable
+                       if(!is_callable($func))
+                       {
+                               error_log("XML-RPC: xmlrpc_server::execute: function $func registered as method handler is not callable");
+                               return new xmlrpcresp(
+                                       0,
+                                       $GLOBALS['xmlrpcerr']['server_error'],
+                                       $GLOBALS['xmlrpcstr']['server_error'] . ": no function matches method"
+                               );
+                       }
+
+                       // If debug level is 3, we should catch all errors generated during
+                       // processing of user function, and log them as part of response
+                       if($this->debug > 2)
+                       {
+                               $GLOBALS['_xmlrpcs_prev_ehandler'] = set_error_handler('_xmlrpcs_errorHandler');
+                       }
+                       if (is_object($m))
+                       {
+                               if($sysCall)
+                               {
+                                       $r = call_user_func($func, $this, $m);
+                               }
+                               else
+                               {
+                                       $r = call_user_func($func, $m);
+                               }
+                               if (!is_a($r, 'xmlrpcresp'))
+                               {
+                                       error_log("XML-RPC: xmlrpc_server::execute: function $func registered as method handler does not return an xmlrpcresp object");
+                                       if (is_a($r, 'xmlrpcval'))
+                                       {
+                                               $r = new xmlrpcresp($r);
+                                       }
+                                       else
+                                       {
+                                               $r = new xmlrpcresp(
+                                                       0,
+                                                       $GLOBALS['xmlrpcerr']['server_error'],
+                                                       $GLOBALS['xmlrpcstr']['server_error'] . ": function does not return xmlrpcresp object"
+                                               );
+                                       }
+                               }
+                       }
+                       else
+                       {
+                               // call a 'plain php' function
+                               if($sysCall)
+                               {
+                                       array_unshift($params, $this);
+                                       $r = call_user_func_array($func, $params);
+                               }
+                               else
+                               {
+                                       // 3rd API convention for method-handling functions: EPI-style
+                                       if ($this->functions_parameters_type == 'epivals')
+                                       {
+                                               $params = array($methName, $params, $this->user_data);
+                                               $r = call_user_func_array($func, $params);
+                                               // mimic EPI behaviour: if we get an array that looks like an error, make it
+                                               // an eror response
+                                               if (is_array($r) && array_key_exists('faultCode', $r) && array_key_exists('faultString', $r))
+                                               {
+                                                       $r = new xmlrpcresp(0, (integer)$r['faultCode'], (string)$r['faultString']);
+                                               }
+                                               else
+                                               {
+                                                       // functions using EPI api should NOT return resp objects,
+                                                       // so make sure we encode the return type correctly
+                                                       $r = new xmlrpcresp(php_xmlrpc_encode($r, array('extension_api')));
+                                               }
+                                       }
+                                       else
+                                       {
+                                               $r = call_user_func_array($func, $params);
+                                       }
+                               }
+                               // the return type can be either an xmlrpcresp object or a plain php value...
+                               if (!is_a($r, 'xmlrpcresp'))
+                               {
+                                       // what should we assume here about automatic encoding of datetimes
+                                       // and php classes instances???
+                                       $r = new xmlrpcresp(php_xmlrpc_encode($r, array('auto_dates')));
+                               }
+                       }
+                       if($this->debug > 2)
+                       {
+                               // note: restore the error handler we found before calling the
+                               // user func, even if it has been changed inside the func itself
+                               if($GLOBALS['_xmlrpcs_prev_ehandler'])
+                               {
+                                       set_error_handler($GLOBALS['_xmlrpcs_prev_ehandler']);
+                               }
+                               else
+                               {
+                                       restore_error_handler();
+                               }
+                       }
+                       return $r;
+               }
+
+               /**
+               * add a string to the 'internal debug message' (separate from 'user debug message')
+               * @param string $strings
+               * @access private
+               */
+               function debugmsg($string)
+               {
+                       $this->debug_info .= $string."\n";
+               }
+
+               /**
+               * @access private
+               */
+               function xml_header($charset_encoding='')
+               {
+                       if ($charset_encoding != '')
+                       {
+                               return "<?xml version=\"1.0\" encoding=\"$charset_encoding\"?" . ">\n";
+                       }
+                       else
+                       {
+                               return "<?xml version=\"1.0\"?" . ">\n";
+                       }
+               }
+
+               /**
+               * A debugging routine: just echoes back the input packet as a string value
+               * DEPRECATED!
+               */
+               function echoInput()
+               {
+                       $r = new xmlrpcresp(new xmlrpcval( "'Aha said I: '" . $GLOBALS['HTTP_RAW_POST_DATA'], 'string'));
+                       print $r->serialize();
+               }
+       }
+?>
diff --git a/nucleus/locales/adminskinTypes.php b/nucleus/locales/adminskinTypes.php
new file mode 100644 (file)
index 0000000..09395be
--- /dev/null
@@ -0,0 +1,180 @@
+<?php
+// ADMIN-skin skin types
+define('_ADM_SKPRT_ACTIONLOG',                              '[' . _ACTIONLOG_TITLE . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_ACTIVATE',                               '[' . _QMENU_ACTIVATE . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_ACTIVATESETPWD',                         '[' . _MEMBERS_SETPWD . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_ADDNEWLOG',                              '[' . _BLOGCREATED_TITLE . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_ADMINERRORPAGE',                         _OVERVIEW_MANAGE . ':[' . _ERROR . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_ADMINSKINOVERVIEW',                      _SKINABLEADMIN_QMENU_LAYOUT . ':[' . _QMENU_LAYOUT_SKINS . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_ADMINSKINEDIT',                          _SKINABLEADMIN_QMENU_LAYOUT . ':[' . _SKIN_EDITONE_TITLE . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_BACKUPOVERVIEW',                         '[' . _QMENU_MANAGE_BACKUPS . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_BACKUPRESTORE',                          '[' . _RESTORE_COMPLETE . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_BANLIST',                                '[' . _BAN_TITLE . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_BANLISTDELETE',                          '[' . _BAN_REMOVE_TITLE . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_BANLISTDELETECONFIRM',                   '[' . _BAN_REMOVED_TITLE . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_BANLISTNEW',                             '[' . _BAN_NEW_TITLE . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_BATCHCATEGORY',                          '[' . _BATCH_CATEGORIES . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_BATCHCOMMENT',                           '[' . _BATCH_COMMENTS . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_BATCHDELETE',                            '[' . _BATCH_DELETE_CONFIRM . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_BATCHITEM',                              '[' . _BATCH_ITEMS . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_BATCHMEMBER',                            '[' . _BATCH_MEMBERS . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_BATCHMOVE',                              '[' . _SKINABLEADMIN_BATCH_MOVE . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_BATCHMOVECAT',                           '[' . _MOVECAT_TITLE . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_BATCHTEAM',                              '[' . _BATCH_TEAM . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_BLOGCOMMENTLIST',                        '[' . _COMMENTS_BLOG . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_BLOGSETTINGS',                           '[' . _EBLOG_TITLE . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_BOOKMARKLET',                            '[' . _BOOKMARKLET_TITLE . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_BROWSEOWNCOMMENTS',                      '[' . _COMMENTS_YOUR . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_BROWSEOWNITEMS',                         '[' . _ITEMLIST_YOUR . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_CATEGORYDELETE',                         '[' . _CONFIRMTXT_CATEGORY . '(' . _SKINABLEADMIN_BATCH . ')' .']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_CATEGORYEDIT',                           '[' . _EBLOG_CAT_UPDATE . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_COMMENTDELETE',                          '[' . _CONFIRMTXT_COMMENT . '(' . _SKINABLEADMIN_BATCH . ')' . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_COMMENTEDIT',                            '[' . _EDITC_TITLE . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_CREATENEWLOG',                           '[' . _EBLOG_CREATE_TITLE . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_DELETEBLOG',                             '[' . _WARNINGTXT_BLOGDEL . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_EDITMEMBERSETTINGS',                     '[' . _MEMBERS_EDIT . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_INSERTPLUGINO',                          '[' . _ADD_PLUGIN_EXTRAS . ']');
+define('_ADM_SKPRT_ITEMCOMMENTLIST',                        '[' . _COMMENTS . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_ITEMDELETE',                             '[' . _CONFIRMTXT_ITEM . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_ITEMLIST',                               '[' . _ITEMLIST_BLOG . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_ITEMMOVE',                               '[' . _MOVE_TITLE . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_MANAGE',                                 '[' . _OVERVIEW_MANAGE . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_MANAGETEAM',                             '[' . _TEAM_TITLE . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_MEMBERDELETE',                           '[' . _CONFIRMTXT_MEMBER . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_OVERVIEW',                               '[' . _QMENU_HOME . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_PAGEFOOT',                               '[' . _SKINABLEADMIN_PAGEFOOT . ']');
+define('_ADM_SKPRT_PAGEHEAD',                               '[' . _SKINABLEADMIN_PAGEHEAD . ']');
+define('_ADM_SKPRT_PLUGINDELETE',                           '[' . _CONFIRMTXT_PLUGIN . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_PLUGINHELP',                             '[' . _PLUGS_HELP_TITLE . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_PLUGINLIST',                             '[' . _PLUGS_TITLE_MANAGE . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_PLUGINOPTIONS',                          '[' . sprintf(_PLUGIN_OPTIONS_TITLE, _QMENU_PLUGINS) . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_SETTINGSEDIT',                           '[' . _SETTINGS_TITLE . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_SHOWLOGIN',                              '[' . _LOGIN . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_SKINDELETE',                             '[' . _CONFIRMTXT_SKIN . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_SKINEDIT',                               '[' . _SKIN_EDITONE_TITLE . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_SKINEDITTYPE',                           '[' . _SKIN_EDITPART_TITLE . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_SKINIEDOIMPORT',                         '[' . _SKINIE_DONE . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_SKINIEIMPORT',                           '[' . _SKINIE_CONFIRM_TITLE . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_SKINIEOVERVIEW',                         '[' . _SKINIE_TITLE_IMPORT . '/' . _SKINIE_TITLE_EXPORT . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_SKINOVERVIEW',                           '[' . _SKIN_EDIT_TITLE . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_SKINREMOVETYPE',                         '[' . _CONFIRMTXT_SKIN_PARTS_SPECIAL . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_SYSTEMOVERVIEW',                         '[' . _ADMIN_SYSTEMOVERVIEW_HEADING . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_TEAMDELETE',                             '[' . _CONFIRMTXT_TEAM1 . _CONFIRMTXT_TEAM2 . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_TEMPLATEDELETE',                         '[' . _CONFIRMTXT_TEMPLATE . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_TEMPLATEEDIT',                           '[' . _TEMPLATE_EDIT_TITLE . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_TEMPLATEOVERVIEW',                       '[' . _SKINABLEADMIN_TEMPLATEOVERVIEW . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_USERMANAGEMENT',                         '[' . _MEMBERS_TITLE . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_CREATEITEM',                             '[' . _ADD_ADDTO . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_ITEMEDIT',                               '[' . _EDIT_ITEM . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_ADMINSKINDELETE',                        _SKINABLEADMIN_QMENU_LAYOUT . ':[' . _CONFIRMTXT_SKIN . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_ADMINSKINIEDOIMPORT',                    _SKINABLEADMIN_QMENU_LAYOUT . ':[' . _SKINIE_DONE . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_ADMINSKINIEOVERVIEW',                    _SKINABLEADMIN_QMENU_LAYOUT . ':[' . _SKINIE_TITLE_IMPORT . '/' . _SKINIE_TITLE_EXPORT . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_ADMINSKINEDITTYPE',                      _SKINABLEADMIN_QMENU_LAYOUT . ':[' . _SKIN_EDITPART_TITLE . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_ADMINSKINIEIMPORT',                      _SKINABLEADMIN_QMENU_LAYOUT . ':[' . _SKINIE_CONFIRM_TITLE . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_ADMINTEMPLATEOVERVIEW',                  _SKINABLEADMIN_QMENU_LAYOUT . ':[' . _SKINABLEADMIN_TEMPLATEOVERVIEW . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_ADMINSKINREMOVETYPE',                    _SKINABLEADMIN_QMENU_LAYOUT . ':[' . _CONFIRMTXT_SKIN_PARTS_SPECIAL . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_ADMINTEMPLATEEDIT',                      _SKINABLEADMIN_QMENU_LAYOUT . ':[' . _TEMPLATE_EDIT_TITLE . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_ADMINTEMPLATEDELETE',                    _SKINABLEADMIN_QMENU_LAYOUT . ':[' . _CONFIRMTXT_TEMPLATE . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_CREATEACCOUNTINPUT',                     '[' . _CREATE_ACCOUNT_TITLE . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_CREATEACCOUNTSUCCESS',                   '[' . _CREATE_ACCOUNT0 . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_CREATEACCOUNTDISALLOWED',                '[' . _CREATE_ACCOUNT1 . ']' . _SKINABLEADMIN_PAGE_STR);
+define('_ADM_SKPRT_FORGOTPASSWORD',                         '[' . _FORGOTPASSWORD_TITLE . ']' . _SKINABLEADMIN_PAGE_STR);
+
+// ADMIN-template template types
+
+define('_ADM_TPLPT_NORMALSKINLIST_HEAD',                 _SKINABLEADMIN_ADMINSKINVAR_STR . ' [defaultadminskintypes]' . _SKINABLEADMIN_HEAD_STR);
+define('_ADM_TPLPT_NORMALSKINLIST_BODY',                 _SKINABLEADMIN_ADMINSKINVAR_STR . ' [defaultadminskintypes]' . _SKINABLEADMIN_BODY_STR);
+define('_ADM_TPLPT_NORMALSKINLIST_FOOT',                 _SKINABLEADMIN_ADMINSKINVAR_STR . ' [defaultadminskintypes]' . _SKINABLEADMIN_FOOT_STR);
+define('_ADM_TPLPT_ADMIN_CUSTOMHELPLINK_ICON',              _SKINABLEADMIN_ADMINSKINVAR_STR . ' [customhelplink] ' . _SKINABLEADMIN_HELPICONURL_STR);
+define('_ADM_TPLPT_ADMIN_CUSTOMHELPLINK_ANCHOR',            _SKINABLEADMIN_ADMINSKINVAR_STR . ' [customhelplink] ' . _SKINABLEADMIN_HELPFILEURL_STR);
+define('_ADM_TPLPT_ADMIN_BLOGLINK',                         _SKINABLEADMIN_ADMINSKINVAR_STR . ' [adminbloglink]');
+define('_ADM_TPLPT_ADMIN_BATCHLIST',                        _SKINABLEADMIN_ADMINSKINVAR_STR . ' [adminbatchlist]');
+define('_ADM_TPLPT_ACTIVATE_FORGOT_TITLE',                  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [activationtitle(forgot)]' . _SKINABLEADMIN_TITLE_STR);
+define('_ADM_TPLPT_ACTIVATE_FORGOT_TEXT',                   _SKINABLEADMIN_ADMINSKINVAR_STR . ' [activationtitle(forgot)]' . _SKINABLEADMIN_TEXT_STR);
+define('_ADM_TPLPT_ACTIVATE_REGISTER_TITLE',                _SKINABLEADMIN_ADMINSKINVAR_STR . ' [activationtitle(register)]' . _SKINABLEADMIN_TITLE_STR);
+define('_ADM_TPLPT_ACTIVATE_REGISTER_TEXT',                 _SKINABLEADMIN_ADMINSKINVAR_STR . ' [activationtitle(register)]' . _SKINABLEADMIN_TEXT_STR);
+define('_ADM_TPLPT_ACTIVATE_CHANGE_TITLE',                  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [activationtitle(addresschange)]' . _SKINABLEADMIN_TITLE_STR);
+define('_ADM_TPLPT_ACTIVATE_CHANGE_TEXT',                   _SKINABLEADMIN_ADMINSKINVAR_STR . ' [activationtitle(addresschange)]' . _SKINABLEADMIN_TEXT_STR);
+define('_ADM_TPLPT_TEMPLATE_EDIT_EXPLUGNAME',               _SKINABLEADMIN_ADMINSKINVAR_STR . ' [edittemplateinfo/editadmintemplateinfo(extratemplate)]');
+define('_ADM_TPLPT_TEMPLATE_EDIT_ROW_HEAD',                 _SKINABLEADMIN_ADMINSKINVAR_STR . ' [edittemplateinfo/editadmintemplateinfo(extratemplate_default)]' . _SKINABLEADMIN_HEAD_STR);
+define('_ADM_TPLPT_TEMPLATE_EDIT_ROW_TAIL',                 _SKINABLEADMIN_ADMINSKINVAR_STR . ' [edittemplateinfo/editadmintemplateinfo(extratemplate_default)]' . _SKINABLEADMIN_FOOT_STR);
+define('_ADM_TPLPT_SPECIALSKINLIST_HEAD',                   _SKINABLEADMIN_ADMINSKINVAR_STR . ' [specialskinlist]' . _SKINABLEADMIN_HEAD_STR);
+define('_ADM_TPLPT_SPECIALSKINLIST_BODY',                   _SKINABLEADMIN_ADMINSKINVAR_STR . ' [specialskinlist]' . _SKINABLEADMIN_BODY_STR);
+define('_ADM_TPLPT_SPECIALSKINLIST_FOOT',                   _SKINABLEADMIN_ADMINSKINVAR_STR . ' [specialskinlist]' . _SKINABLEADMIN_FOOT_STR);
+define('_ADM_TPLPT_SYSTEMINFO_GDSETTINGS',                  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [systemsettings(gdinfo)]');
+define('_ADM_TPLPT_BANLIST_DELETED_LIST',                   _SKINABLEADMIN_ADMINSKINVAR_STR . ' [banlistdeletedlist]');
+define('_ADM_TPLPT_INSERT_PLUGOPTION_TITLE',                _SKINABLEADMIN_ADMINSKINVAR_STR . ' [pluginoptions]' . _SKINABLEADMIN_TITLE_STR);
+define('_ADM_TPLPT_INSERT_PLUGOPTION_BODY',                 _SKINABLEADMIN_ADMINSKINVAR_STR . ' [pluginoptions]' . _SKINABLEADMIN_BODY_STR);
+define('_ADM_TPLPT_INPUTYESNO_TEMPLATE_ADMIN',              _SKINABLEADMIN_ADMINSKINVAR_STR . ' [inputyesno] ' . _SKINABLEADMIN_ADMINSETTING_STR);
+define('_ADM_TPLPT_INPUTYESNO_TEMPLATE_NORMAL',             _SKINABLEADMIN_ADMINSKINVAR_STR . ' [inputyesno] ' . _SKINABLEADMIN_NORMALSETTING_STR);
+define('_ADM_TPLPT_ADMIN_SPECIALSKINLIST_HEAD',             _SKINABLEADMIN_ADMINSKINVAR_STR . ' [adminspecialskinlist]' . _SKINABLEADMIN_HEAD_STR);
+define('_ADM_TPLPT_ADMIN_SPECIALSKINLIST_BODY',             _SKINABLEADMIN_ADMINSKINVAR_STR . ' [adminspecialskinlist]' . _SKINABLEADMIN_BODY_STR);
+define('_ADM_TPLPT_ADMIN_SPECIALSKINLIST_FOOT',             _SKINABLEADMIN_ADMINSKINVAR_STR . ' [adminspecialskinlist]' . _SKINABLEADMIN_FOOT_STR);
+define('_ADM_TPLPT_SKINIE_EXPORT_LIST',                     _SKINABLEADMIN_ADMINSKINVAR_STR . ' [skinielist/adminskinielist]');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_SELECT_HEAD',          _SKINABLEADMIN_ADMINSKINVAR_STR . ' [qmanuaddselect/newmemberselect/defskinselect/defcatselect/defblogselect]' . _SKINABLEADMIN_HEAD_STR);
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_SELECT_BODY',          _SKINABLEADMIN_ADMINSKINVAR_STR . ' [qmanuaddselect/newmemberselect/defskinselect/defcatselect/defblogselect]' . _SKINABLEADMIN_BODY_STR);
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_SELECT_FOOT',          _SKINABLEADMIN_ADMINSKINVAR_STR . ' [qmanuaddselect/newmemberselect/defskinselect/defcatselect/defblogselect]' . _SKINABLEADMIN_FOOT_STR);
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_HEAD',           _SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE . _SKINABLEADMIN_HEAD_STR);
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BODY',           _SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE . _SKINABLEADMIN_BODY_STR);
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_FOOT',           _SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE . _SKINABLEADMIN_FOOT_STR);
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_MEMBLIST_HEAD',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [editmemberlist]' . _SKINABLEADMIN_HEAD_STR);
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_MEMBLIST_BODY',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [editmemberlist]' . _SKINABLEADMIN_BODY_STR);
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_MEMBLIST_FOOT',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [editmemberlist]' . _SKINABLEADMIN_FOOT_STR);
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_TEAMLIST_HEAD',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [blogteamlist]' . _SKINABLEADMIN_HEAD_STR);
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_TEAMLIST_BODY',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [blogteamlist]' . _SKINABLEADMIN_BODY_STR);
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_TEAMLIST_FOOT',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [blogteamlist]' . _SKINABLEADMIN_FOOT_STR);
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HEAD',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [pluginlistlist]' . _SKINABLEADMIN_HEAD_STR);
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [pluginlistlist]' . _SKINABLEADMIN_BODY_STR);
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_FOOT',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [pluginlistlist]' . _SKINABLEADMIN_FOOT_STR);
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_POPTLIST_HEAD',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [editplugoptionslist]' . _SKINABLEADMIN_HEAD_STR);
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_POPTLIST_BODY',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [editplugoptionslist]' . _SKINABLEADMIN_BODY_STR . _SKINABLEADMIN_HEAD_STR);
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLGOPT_OYESNO',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [editplugoptionslist]' . sprintf(_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE, '[yesno]'));
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLGOPT_OPWORD',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [editplugoptionslist]' . sprintf(_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE, '[password]'));
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLGOPT_OSELEP',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [editplugoptionslist]' . sprintf(_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE, '[&lt;select&gt;]'));
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLGOPT_OSELEO',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [editplugoptionslist]' . sprintf(_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE, '[&lt;option /&gt;]'));
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLGOPT_OSELEC',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [editplugoptionslist]' . sprintf(_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE, '[&lt;/select&gt;]'));
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLGOPT_OTAREA',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [editplugoptionslist]' . sprintf(_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE, '[textarea]'));
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLGOPT_OITEXT',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [editplugoptionslist]' . sprintf(_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE, '[text]'));
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLGOPT_MNUMER',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [editplugoptionslist]' . sprintf(_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE, '[datatype=numerical]'));
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLGOPT_MRONRY',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [editplugoptionslist]' . sprintf(_SKINABLEADMIN_PLUGIN_PLGOPT_OPTMETA, '[access=readonly]'));
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTN_FOOT',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [editplugoptionslist]' . _SKINABLEADMIN_BODY_STR . _SKINABLEADMIN_FOOT_STR);
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_POPTLIST_FOOT',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [editplugoptionslist]' . _SKINABLEADMIN_FOOT_STR);
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_ITEMLIST_HEAD',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [itemnavlist]' . _SKINABLEADMIN_HEAD_STR);
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_ITEMLIST_BODY',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [itemnavlist]' . _SKINABLEADMIN_BODY_STR);
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_ITEMLIST_FOOT',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [itemnavlist]' . _SKINABLEADMIN_FOOT_STR);
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_CMNTLIST_HEAD',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [commentnavlist]' . _SKINABLEADMIN_HEAD_STR);
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_CMNTLIST_BODY',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [commentnavlist]' . _SKINABLEADMIN_BODY_STR);
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_CMNTLIST_ABAN',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [commentnavlist]' . _SKINABLEADMIN_BODY_STR . '(BAN)');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_CMNTLIST_FOOT',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [commentnavlist]' . _SKINABLEADMIN_FOOT_STR);
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLOGLIST_HEAD',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist]' . _SKINABLEADMIN_HEAD_STR);
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLOGLIST_BODY',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist]' . _SKINABLEADMIN_BODY_STR);
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLOGLIST_FOOT',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist]' . _SKINABLEADMIN_FOOT_STR);
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLOGSNAM_HEAD',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [skineditallowedlist/adminskineditallowedlist(blog)]' . _SKINABLEADMIN_HEAD_STR);
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLOGSNAM_BODY',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [skineditallowedlist/adminskineditallowedlist(blog)]' . _SKINABLEADMIN_BODY_STR);
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLOGSNAM_FOOT',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [skineditallowedlist/adminskineditallowedlist(blog)]' . _SKINABLEADMIN_FOOT_STR);
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_SHORTNAM_HEAD',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [skineditallowedlist/adminskineditallowedlist(template)]' . _SKINABLEADMIN_HEAD_STR);
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_SHORTNAM_BODY',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [skineditallowedlist/adminskineditallowedlist(template)]' . _SKINABLEADMIN_BODY_STR);
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_SHORTNAM_FOOT',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [skineditallowedlist/adminskineditallowedlist(template)]' . _SKINABLEADMIN_FOOT_STR);
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_CATELIST_HEAD',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [blogcatlist]' . _SKINABLEADMIN_HEAD_STR);
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_CATELIST_BODY',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [blogcatlist]' . _SKINABLEADMIN_BODY_STR);
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_CATELIST_FOOT',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [blogcatlist]' . _SKINABLEADMIN_FOOT_STR);
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_TPLTLIST_HEAD',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [templateoverview/admintemplateoverview]' . _SKINABLEADMIN_HEAD_STR);
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_TPLTLIST_BODY',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [templateoverview/admintemplateoverview]' . _SKINABLEADMIN_BODY_STR);
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_TPLTLIST_FOOT',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [templateoverview/admintemplateoverview]' . _SKINABLEADMIN_FOOT_STR);
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_SKINLIST_HEAD',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [skinoverview/adminskinoverview]' . _SKINABLEADMIN_HEAD_STR);
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_SKINLIST_BODY',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [skinoverview/adminskinoverview]' . _SKINABLEADMIN_BODY_STR);
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_SKINLIST_FOOT',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [skinoverview/adminskinoverview]' . _SKINABLEADMIN_FOOT_STR);
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_DRFTLIST_HEAD',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist(draft)]' . _SKINABLEADMIN_HEAD_STR);
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_DRFTLIST_BODY',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist(draft)]' . _SKINABLEADMIN_BODY_STR);
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_DRFTLIST_FOOT',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist(draft)]' . _SKINABLEADMIN_FOOT_STR);
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_ACTNLIST_HEAD',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [actionloglist]' . _SKINABLEADMIN_HEAD_STR);
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_ACTNLIST_BODY',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [actionloglist]' . _SKINABLEADMIN_BODY_STR);
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_ACTNLIST_FOOT',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [actionloglist]' . _SKINABLEADMIN_FOOT_STR);
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_IBANLIST_HEAD',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [adminbanlist]' . _SKINABLEADMIN_HEAD_STR);
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_IBANLIST_BODY',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [adminbanlist]' . _SKINABLEADMIN_BODY_STR);
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_IBANLIST_FOOT',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [adminbanlist]' . _SKINABLEADMIN_FOOT_STR);
+define('_ADM_TPLPT_PLUGIN_QUICKMENU_TITLE',                 _SKINABLEADMIN_ADMINSKINVAR_STR . ' [quickmenu]' . _SKINABLEADMIN_TITLE_STR);
+define('_ADM_TPLPT_PLUGIN_QUICKMENU_HEAD',                  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [quickmenu]' . _SKINABLEADMIN_HEAD_STR);
+define('_ADM_TPLPT_PLUGIN_QUICKMENU_BODY',                  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [quickmenu]' . _SKINABLEADMIN_BODY_STR);
+define('_ADM_TPLPT_PLUGIN_QUICKMENU_FOOT',                  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [quickmenu]' . _SKINABLEADMIN_FOOT_STR);
+
index 285c733..d76fb27 100644 (file)
  *
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2012 The Nucleus Group
+<<<<<<< HEAD
  * @version $Id: bg_Cyrl_BG.ISO-8859-5.php 1868 2012-05-22 05:10:53Z sakamocchi $
  */
 
  /********************************************
+=======
+ * @version $Id: bg_Cyrl_BG.ISO-8859-5.php 1887 2012-06-17 08:30:08Z sakamocchi $
+ */
+
+/********************************************
+>>>>>>> skinnable-master
  *        Start New for 4.0                 *
  ********************************************/
-define('_SKINIE_INVALID_NAMES_DETECTED', 'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
-define('_LISTS_AUTHOR', 'Author');
-define('_OVERVIEW_OTHER_DRAFTS', 'Other Drafts');
+/* argument value for setlocale() in Microsoft's windows operating system */
+define('_LOCALE_IN_WINDOWS',   'C');
+
+/* labels for date and time measurement unit */
+define('_LABEL_YEAR_UNIT',             'year');
+define('_LABEL_MONTH_UNIT',            'month');
+define('_LABEL_DAY_UNIT',              'day');
+define('_LABEL_HOUR_UNIT',             'hour');
+define('_LABEL_MINUTE_UNIT',   'minute');
+
+// SkinableAdminArea vars
+define('_SKINABLEADMIN_DEL_UNINSTALL_DATA',                    'Delete ADMIN skin data table on uninstall?');
+define('_SKINABLEADMIN_DEFAULT_SKIN',                          'Choose a skin of the management area of the default.');
+define('_SKINABLEADMIN_MEMBER_DEFAULT_SKIN',           'Choose a skin of the management area of you use.');
+define('_SKINABLEADMIN_QMENU_LAYOUT',                          'Admin layout');
+define('_SKINABLEADMIN_PAGE_STR',                                      'page');
+define('_SKINABLEADMIN_BATCH_MOVE',                                    'Item move other category/Category move other blog');
+define('_SKINABLEADMIN_BATCH',                                         'batch');
+define('_SKINABLEADMIN_PAGEHEAD',                                      'Admin page head');
+define('_SKINABLEADMIN_PAGEFOOT',                                      'Admin page foot');
+define('_SKINABLEADMIN_TEMPLATEOVERVIEW',                      'Template overview');
+define('_SKINABLEADMIN_ADMINAREAHEADLINK',                     '[Your site]link');
+define('_SKINABLEADMIN_TPLSETTING_INGENERAL',          'In general');
+define('_SKINABLEADMIN_HEAD_STR',                                      ' head');
+define('_SKINABLEADMIN_BODY_STR',                                      ' body');
+define('_SKINABLEADMIN_FOOT_STR',                                      ' foot');
+define('_SKINABLEADMIN_TEXT_STR',                                      ' text');
+define('_SKINABLEADMIN_TITLE_STR',                                     ' title');
+define('_SKINABLEADMIN_ADMINSETTING_STR',                      ' set editmember is \'admin\'');
+define('_SKINABLEADMIN_NORMALSETTING_STR',                     ' normal');
+define('_SKINABLEADMIN_HELPICONURL_STR',                       ' icon URL');
+define('_SKINABLEADMIN_HELPFILEURL_STR',                       ' help file URL');
+define('_SKINABLEADMIN_ADMINSKINVAR_STR',                      ' skinvars');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_SELECT',      'selectbox used in ADMIN area');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE',       'Table for list indication');
+define('_SKINABLEADMIN_PLUGIN_QUICKMENU',                      'Link to admin page of the plugin shown to the quick-menu');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE',         'Template for option-type %s');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTMETA',         'Template for option-meta-data %s');
+define('_SKINABLEADMIN_MEMBERS_ADMINSKIN',                     "ADMIN-Area's skin");
+
+define('_LOCALE_BG_CYRL_BG',   'Bulgarian in Bulgaria');
+define('_LOCALE_CA_LATN_ES',   'Catalan in Spain');
+define('_LOCALE_CS_LATN_CZ',   'Czech in Czech Republic');
+define('_LOCALE_DE_LATN_DE',   'German in Germany');
+define('_LOCALE_EL_GREK_GR',   'Greek in Greece (Greek script)');
+define('_LOCALE_EN_LATN_US',   'English in United States');
+define('_LOCALE_ES_LATN_ES',   'Spanish in Spain');
+define('_LOCALE_FA_ARAB_IR',   'Persian in Islamic Republic of Iran');
+define('_LOCALE_FI_LATN_FI',   'Finnish in Finland');
+define('_LOCALE_FR_LATN_FR',   'French in France');
+define('_LOCALE_GL_LATN_ES',   'Galician in Spain');
+define('_LOCALE_HR_LATN_HR',   'Croatian in Croatia');
+define('_LOCALE_HU_LATN_HU',   'Hungarian in Hungary');
+define('_LOCALE_ID_LATN_ID',   'Indonesian in Indonesia (Latin script)');
+define('_LOCALE_IT_LATN_IT',   'Italian in Italy');
+define('_LOCALE_JA_JPAN_JP',   'Japanese in Japan');
+define('_LOCALE_KO_KORE_KR',   'Korean in Korea');
+define('_LOCALE_KU_ARAB_TR',   'Kurdish in Turkey (Arabic script)');
+define('_LOCALE_LV_LATN_LV',   'Latvian in Latvia');
+define('_LOCALE_NL_LATN_NL',   'Dutch in Netherlands');
+define('_LOCALE_PL_LATN_PL',   'Polish in Poland');
+define('_LOCALE_PT_LATN_BR',   'Portuguese in Brazil');
+define('_LOCALE_RO_LATN_RO',   'Romainan in Romania');
+define('_LOCALE_RU_CYRL_RU',   'Russian in Russia');
+define('_LOCALE_SK_LATN_SK',   'Slovak in Slovakia');
+define('_LOCALE_SR_CYRL_RS',   'Serbian in Serbia');
+define('_LOCALE_UR_ARAB_PK',   'Urdu in Pakistan');
+define('_LOCALE_VI_LATN_VN',   'Vietnamese in Vietnam (Latin script)');
+define('_LOCALE_ZH_HANS_CN',   'Chinese in China (simplified script)');
+define('_LOCALE_ZH_HANT_TW',   'Chinese in Taiwan (Traditional script)');
+
+define('_FORGOTPASSWORD_TITLE',                                'Forgot your password?');
+define('_FORGOTPASSWORD_MSG',                          'Enter your username and email address below, and you\'ll be sent an e-mail with a link where you can choose a new password.');
+define('_FORGOTPASSWORD_SUBMIT',                       'Send Activation Link" class="transparent');
+define('_FORGOTPASSWORD_CONTACT',                      'If you don\'t remember your exact username, contact the site administrator.');
+define('_SKINIE_INVALID_NAMES_DETECTED',       'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
+define('_LISTS_AUTHOR',                                                'Author');
+define('_OVERVIEW_OTHER_DRAFTS',                       'Other Drafts');
+define('_ERROR_BADADMINSKINNAME',                      'the name of skin for admin area must start with \'admin/\'.');
+define('_ERROR_BADADMINTEMPLATENAME',          'the name of template for admin area must start with \'admin/\'.');
+define('_SETTINGS_ADMINSKIN',                          'default skin for admin area');
+define('_SETTINGS_BKMKLTSKIN',                         'default skin for bookmarklet');
+define('_MEMBERS_BKMKLTSKIN',                          "bookmarklet skin");
+define('_ADMIN_SYSTEMOVERVIEW_VERSION_LATEST',         'The version which is being used is latest.');
+
 /********************************************
  *        Start New for 3.6x                *
  ********************************************/
@@ -86,10 +174,10 @@ define('_ERROR_INSREQPLUGIN',              'Plugin installation failed, requires %s');
 define('_ERROR_DELREQPLUGIN',          'Plugin deletion failed, required by %s');
 
 //define('_ADD_ADDLATER',                                                              'Add Later');
-define('_ADD_ADDLATER',                                                                'Add the dates specified');
+define('_ADD_ADDLATER',                                'Äîáàâè ïî-êúñíî');
 
-define('_LOGIN_NAME',                          'Name:');
-define('_LOGIN_PASSWORD',                      'Password:');
+define('_LOGIN_NAME',                          'Èìå');
+define('_LOGIN_PASSWORD',                      'Ïàðîëà');
 
 // changed from _BOOKMARLET_BMARKLFOLLOW
 define('_BOOKMARKLET_BMARKFOLLOW',                                     ' (Works with nearly all browsers)');
@@ -187,13 +275,7 @@ define('_PLUGIN_OPTIONS_TITLE',                                                    'Options for %s');
 // Plugin file loda error
 define('_PLUGINFILE_COULDNT_BELOADED',                         'Error: plugin file <strong>%s.php</strong> could not be loaded, or it has been set inactive because it does not support some features (check the <a href="?action=actionlog">actionlog</a> for more info)');
 
-//ITEM add/edit template (for japanese only)
 define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
-define('_ITEM_ADDEDITTEMPLATE_YEAR',                           'Year');
-define('_ITEM_ADDEDITTEMPLATE_MONTH',                          'Month');
-define('_ITEM_ADDEDITTEMPLATE_DAY',                                    'Day');
-define('_ITEM_ADDEDITTEMPLATE_HOUR',                           'Hour');
-define('_ITEM_ADDEDITTEMPLATE_MINUTE',                         'Minute');
 
 // Errors
 define('_ERRORS_INSTALLSQL',                                           'install.sql should be deleted');
@@ -323,7 +405,7 @@ define('_ERROR_PLUGIN_LOAD',                'Plugin could not be loaded, or does not support c
 // START changed/added after 3.22 START
 define('_SEARCHFORM_QUERY',                    'Keywords to search');
 define('_ERROR_EMAIL_REQUIRED',                'Email address is required');
-define('_COMMENTFORM_MAIL',                    'Website:');
+define('_COMMENTFORM_MAIL',                    'E-mail/HTTP');
 define('_COMMENTFORM_EMAIL',           'E-mail:');
 define('_EBLOG_REQUIREDEMAIL',         'Require E-mail address with comments?');
 define('_ERROR_COMMENTS_SPAM',      'Your comment was rejected because it did not pass the spam test');
@@ -757,7 +839,6 @@ define('_COMMENTFORM_YOUARE',               '
 define('_COMMENTFORM_SUBMIT',          'Äîáàâè êîìåíòàð');
 define('_COMMENTFORM_COMMENT',         'Âàøèÿ êîìåíòàð');
 define('_COMMENTFORM_NAME',                    'Èìå');
-define('_COMMENTFORM_MAIL',                    'E-mail/HTTP');
 define('_COMMENTFORM_REMEMBER',                'Çàïîìíè ìå');
 
 // loginform
@@ -784,7 +865,6 @@ define('_ADD_DISABLE_COMMENTS',             '
 define('_ADD_DRAFTNFUTURE',                    'Draft &amp; Future Items');
 define('_ADD_ADDITEM',                         'Äîáàâè Item');
 define('_ADD_ADDNOW',                          'Äîáàâè ñåãà');
-define('_ADD_ADDLATER',                                'Äîáàâè ïî-êúñíî');
 define('_ADD_PLACE_ON',                                'Ïîñòàâè íà');
 define('_ADD_ADDDRAFT',                                'Äîáàâè êúì drafts');
 define('_ADD_NOPASTDATES',                     '(äàòè è âðåìå â ìèíàëîòî ÍÅ ñà âàëèäíè, â òàêúâ ñëó÷àé ùå ñå èçïîëçâà ñåãàøíîòî âðåìå)');
@@ -1128,8 +1208,6 @@ define('_BAN_ADD_BTN',                            '
 
 // LOGIN screen
 define('_LOGIN_MESSAGE',                       'Ñúîáùåíèå');
-define('_LOGIN_NAME',                          'Èìå');
-define('_LOGIN_PASSWORD',                      'Ïàðîëà');
 define('_LOGIN_SHARED',                                _LOGINFORM_SHARED);
 define('_LOGIN_FORGOT',                                'Çàáðàâåíà ïàðîëà?');
 
@@ -1261,3 +1339,19 @@ define('_EDITC_NONMEMBER',                       'non member');
 // move item
 define('_MOVE_TITLE',                          'Ïðåìåñòè êúì êîé blog?');
 define('_MOVE_BTN',                                    'Ïðåìåñòè Item');
+
+// ADMIN-template template types
+include_once('adminskinTypes.php');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_NAVILIST',          'navibar for item/comment list');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is blog ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is super ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin URL');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'API entry');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'eventlist updates');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency to');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency by');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'couldn\'t load file');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin actions');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin admin link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin help link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin option setting link');
index e8a93fa..4562794 100644 (file)
  *
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2012 The Nucleus Group
+<<<<<<< HEAD
  * @version $Id: bg_Cyrl_BG.UTF-8.php 1868 2012-05-22 05:10:53Z sakamocchi $
+=======
+ * @version $Id: bg_Cyrl_BG.UTF-8.php 1887 2012-06-17 08:30:08Z sakamocchi $
+>>>>>>> skinnable-master
  */
 
- /********************************************
+/********************************************
  *        Start New for 4.0                 *
  ********************************************/
-define('_SKINIE_INVALID_NAMES_DETECTED', 'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
-define('_LISTS_AUTHOR', 'Author');
-define('_OVERVIEW_OTHER_DRAFTS', 'Other Drafts');
+/* argument value for setlocale() in Microsoft's windows operating system */
+define('_LOCALE_IN_WINDOWS',   'C');
+
+/* labels for date and time measurement unit */
+define('_LABEL_YEAR_UNIT',             'year');
+define('_LABEL_MONTH_UNIT',            'month');
+define('_LABEL_DAY_UNIT',              'day');
+define('_LABEL_HOUR_UNIT',             'hour');
+define('_LABEL_MINUTE_UNIT',   'minute');
+
+// SkinableAdminArea vars
+define('_SKINABLEADMIN_DEL_UNINSTALL_DATA',                    'Delete ADMIN skin data table on uninstall?');
+define('_SKINABLEADMIN_DEFAULT_SKIN',                          'Choose a skin of the management area of the default.');
+define('_SKINABLEADMIN_MEMBER_DEFAULT_SKIN',           'Choose a skin of the management area of you use.');
+define('_SKINABLEADMIN_QMENU_LAYOUT',                          'Admin layout');
+define('_SKINABLEADMIN_PAGE_STR',                                      'page');
+define('_SKINABLEADMIN_BATCH_MOVE',                                    'Item move other category/Category move other blog');
+define('_SKINABLEADMIN_BATCH',                                         'batch');
+define('_SKINABLEADMIN_PAGEHEAD',                                      'Admin page head');
+define('_SKINABLEADMIN_PAGEFOOT',                                      'Admin page foot');
+define('_SKINABLEADMIN_TEMPLATEOVERVIEW',                      'Template overview');
+define('_SKINABLEADMIN_ADMINAREAHEADLINK',                     '[Your site]link');
+define('_SKINABLEADMIN_TPLSETTING_INGENERAL',          'In general');
+define('_SKINABLEADMIN_HEAD_STR',                                      ' head');
+define('_SKINABLEADMIN_BODY_STR',                                      ' body');
+define('_SKINABLEADMIN_FOOT_STR',                                      ' foot');
+define('_SKINABLEADMIN_TEXT_STR',                                      ' text');
+define('_SKINABLEADMIN_TITLE_STR',                                     ' title');
+define('_SKINABLEADMIN_ADMINSETTING_STR',                      ' set editmember is \'admin\'');
+define('_SKINABLEADMIN_NORMALSETTING_STR',                     ' normal');
+define('_SKINABLEADMIN_HELPICONURL_STR',                       ' icon URL');
+define('_SKINABLEADMIN_HELPFILEURL_STR',                       ' help file URL');
+define('_SKINABLEADMIN_ADMINSKINVAR_STR',                      ' skinvars');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_SELECT',      'selectbox used in ADMIN area');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE',       'Table for list indication');
+define('_SKINABLEADMIN_PLUGIN_QUICKMENU',                      'Link to admin page of the plugin shown to the quick-menu');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE',         'Template for option-type %s');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTMETA',         'Template for option-meta-data %s');
+define('_SKINABLEADMIN_MEMBERS_ADMINSKIN',                     "ADMIN-Area's skin");
+
+define('_LOCALE_BG_CYRL_BG',   'Bulgarian in Bulgaria');
+define('_LOCALE_CA_LATN_ES',   'Catalan in Spain');
+define('_LOCALE_CS_LATN_CZ',   'Czech in Czech Republic');
+define('_LOCALE_DE_LATN_DE',   'German in Germany');
+define('_LOCALE_EL_GREK_GR',   'Greek in Greece (Greek script)');
+define('_LOCALE_EN_LATN_US',   'English in United States');
+define('_LOCALE_ES_LATN_ES',   'Spanish in Spain');
+define('_LOCALE_FA_ARAB_IR',   'Persian in Islamic Republic of Iran');
+define('_LOCALE_FI_LATN_FI',   'Finnish in Finland');
+define('_LOCALE_FR_LATN_FR',   'French in France');
+define('_LOCALE_GL_LATN_ES',   'Galician in Spain');
+define('_LOCALE_HR_LATN_HR',   'Croatian in Croatia');
+define('_LOCALE_HU_LATN_HU',   'Hungarian in Hungary');
+define('_LOCALE_ID_LATN_ID',   'Indonesian in Indonesia (Latin script)');
+define('_LOCALE_IT_LATN_IT',   'Italian in Italy');
+define('_LOCALE_JA_JPAN_JP',   'Japanese in Japan');
+define('_LOCALE_KO_KORE_KR',   'Korean in Korea');
+define('_LOCALE_KU_ARAB_TR',   'Kurdish in Turkey (Arabic script)');
+define('_LOCALE_LV_LATN_LV',   'Latvian in Latvia');
+define('_LOCALE_NL_LATN_NL',   'Dutch in Netherlands');
+define('_LOCALE_PL_LATN_PL',   'Polish in Poland');
+define('_LOCALE_PT_LATN_BR',   'Portuguese in Brazil');
+define('_LOCALE_RO_LATN_RO',   'Romainan in Romania');
+define('_LOCALE_RU_CYRL_RU',   'Russian in Russia');
+define('_LOCALE_SK_LATN_SK',   'Slovak in Slovakia');
+define('_LOCALE_SR_CYRL_RS',   'Serbian in Serbia');
+define('_LOCALE_UR_ARAB_PK',   'Urdu in Pakistan');
+define('_LOCALE_VI_LATN_VN',   'Vietnamese in Vietnam (Latin script)');
+define('_LOCALE_ZH_HANS_CN',   'Chinese in China (simplified script)');
+define('_LOCALE_ZH_HANT_TW',   'Chinese in Taiwan (Traditional script)');
+
+define('_FORGOTPASSWORD_TITLE',                                'Forgot your password?');
+define('_FORGOTPASSWORD_MSG',                          'Enter your username and email address below, and you\'ll be sent an e-mail with a link where you can choose a new password.');
+define('_FORGOTPASSWORD_SUBMIT',                       'Send Activation Link" class="transparent');
+define('_FORGOTPASSWORD_CONTACT',                      'If you don\'t remember your exact username, contact the site administrator.');
+define('_SKINIE_INVALID_NAMES_DETECTED',       'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
+define('_LISTS_AUTHOR',                                                'Author');
+define('_OVERVIEW_OTHER_DRAFTS',                       'Other Drafts');
+define('_ERROR_BADADMINSKINNAME',                      'the name of skin for admin area must start with \'admin/\'.');
+define('_ERROR_BADADMINTEMPLATENAME',          'the name of template for admin area must start with \'admin/\'.');
+define('_SETTINGS_ADMINSKIN',                          'default skin for admin area');
+define('_SETTINGS_BKMKLTSKIN',                         'default skin for bookmarklet');
+define('_MEMBERS_BKMKLTSKIN',                          "bookmarklet skin");
+define('_ADMIN_SYSTEMOVERVIEW_VERSION_LATEST',         'The version which is being used is latest.');
+
 /********************************************
  *        Start New for 3.6x                *
  ********************************************/
@@ -86,10 +171,10 @@ define('_ERROR_INSREQPLUGIN',              'Plugin installation failed, requires %s');
 define('_ERROR_DELREQPLUGIN',          'Plugin deletion failed, required by %s');
 
 //define('_ADD_ADDLATER',                                                              'Add Later');
-define('_ADD_ADDLATER',                                                                'Add the dates specified');
+define('_ADD_ADDLATER',                                'Фюсртш яю-ъњёэю');
 
-define('_LOGIN_NAME',                          'Name:');
-define('_LOGIN_PASSWORD',                      'Password:');
+define('_LOGIN_NAME',                          'Шьх');
+define('_LOGIN_PASSWORD',                      'Яр№юыр');
 
 // changed from _BOOKMARLET_BMARKLFOLLOW
 define('_BOOKMARKLET_BMARKFOLLOW',                                     ' (Works with nearly all browsers)');
@@ -187,13 +272,7 @@ define('_PLUGIN_OPTIONS_TITLE',                                                    'Options for %s');
 // Plugin file loda error
 define('_PLUGINFILE_COULDNT_BELOADED',                         'Error: plugin file <strong>%s.php</strong> could not be loaded, or it has been set inactive because it does not support some features (check the <a href="?action=actionlog">actionlog</a> for more info)');
 
-//ITEM add/edit template (for japanese only)
 define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
-define('_ITEM_ADDEDITTEMPLATE_YEAR',                           'Year');
-define('_ITEM_ADDEDITTEMPLATE_MONTH',                          'Month');
-define('_ITEM_ADDEDITTEMPLATE_DAY',                                    'Day');
-define('_ITEM_ADDEDITTEMPLATE_HOUR',                           'Hour');
-define('_ITEM_ADDEDITTEMPLATE_MINUTE',                         'Minute');
 
 // Errors
 define('_ERRORS_INSTALLSQL',                                           'install.sql should be deleted');
@@ -323,7 +402,7 @@ define('_ERROR_PLUGIN_LOAD',                'Plugin could not be loaded, or does not support c
 // START changed/added after 3.22 START
 define('_SEARCHFORM_QUERY',                    'Keywords to search');
 define('_ERROR_EMAIL_REQUIRED',                'Email address is required');
-define('_COMMENTFORM_MAIL',                    'Website:');
+define('_COMMENTFORM_MAIL',                    'E-mail/HTTP');
 define('_COMMENTFORM_EMAIL',           'E-mail:');
 define('_EBLOG_REQUIREDEMAIL',         'Require E-mail address with comments?');
 define('_ERROR_COMMENTS_SPAM',      'Your comment was rejected because it did not pass the spam test');
@@ -757,7 +836,6 @@ define('_COMMENTFORM_YOUARE',               'Тшх ёђх');
 define('_COMMENTFORM_SUBMIT',          'Фюсртш ъюьхэђр№');
 define('_COMMENTFORM_COMMENT',         'Трјшџ ъюьхэђр№');
 define('_COMMENTFORM_NAME',                    'Шьх');
-define('_COMMENTFORM_MAIL',                    'E-mail/HTTP');
 define('_COMMENTFORM_REMEMBER',                'Чряюьэш ьх');
 
 // loginform
@@ -784,7 +862,6 @@ define('_ADD_DISABLE_COMMENTS',             'Чрс№рэш ъюьхэђр№ш?');
 define('_ADD_DRAFTNFUTURE',                    'Draft &amp; Future Items');
 define('_ADD_ADDITEM',                         'Фюсртш Item');
 define('_ADD_ADDNOW',                          'Фюсртш ёхур');
-define('_ADD_ADDLATER',                                'Фюсртш яю-ъњёэю');
 define('_ADD_PLACE_ON',                                'Яюёђртш эр');
 define('_ADD_ADDDRAFT',                                'Фюсртш ъњь drafts');
 define('_ADD_NOPASTDATES',                     '(фрђш ш т№хьх т ьшэрыюђю ЭХ ёр трышфэш, т ђръњт ёыѓїрщ љх ёх шчяюычтр ёхурјэюђю т№хьх)');
@@ -1128,8 +1205,6 @@ define('_BAN_ADD_BTN',                            'Фюсртш Ban');
 
 // LOGIN screen
 define('_LOGIN_MESSAGE',                       'бњюсљхэшх');
-define('_LOGIN_NAME',                          'Шьх');
-define('_LOGIN_PASSWORD',                      'Яр№юыр');
 define('_LOGIN_SHARED',                                _LOGINFORM_SHARED);
 define('_LOGIN_FORGOT',                                'Чрс№ртхэр яр№юыр?');
 
@@ -1261,3 +1336,19 @@ define('_EDITC_NONMEMBER',                       'non member');
 // move item
 define('_MOVE_TITLE',                          'Я№хьхёђш ъњь ъющ blog?');
 define('_MOVE_BTN',                                    'Я№хьхёђш Item');
+
+// ADMIN-template template types
+include_once('adminskinTypes.php');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_NAVILIST',          'navibar for item/comment list');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is blog ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is super ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin URL');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'API entry');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'eventlist updates');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency to');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency by');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'couldn\'t load file');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin actions');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin admin link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin help link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin option setting link');
index f29e628..0a4e1ac 100644 (file)
  * 
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2012 The Nucleus Group
+<<<<<<< HEAD
  * @version $Id: ca_Latn_ES.ISO-8859-1.php 1868 2012-05-22 05:10:53Z sakamocchi $
+=======
+ * @version $Id: ca_Latn_ES.ISO-8859-1.php 1887 2012-06-17 08:30:08Z sakamocchi $
+>>>>>>> skinnable-master
  */
 
 /********************************************
  *        Start New for 4.0                 *
  ********************************************/
-define('_SKINIE_INVALID_NAMES_DETECTED', 'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
-define('_LISTS_AUTHOR', 'Author');
-define('_OVERVIEW_OTHER_DRAFTS', 'Other Drafts');
+/* argument value for setlocale() in Microsoft's windows operating system */
+define('_LOCALE_IN_WINDOWS',   'C');
+
+/* labels for date and time measurement unit */
+define('_LABEL_YEAR_UNIT',             'year');
+define('_LABEL_MONTH_UNIT',            'month');
+define('_LABEL_DAY_UNIT',              'day');
+define('_LABEL_HOUR_UNIT',             'hour');
+define('_LABEL_MINUTE_UNIT',   'minute');
+
+// SkinableAdminArea vars
+define('_SKINABLEADMIN_DEL_UNINSTALL_DATA',                    'Delete ADMIN skin data table on uninstall?');
+define('_SKINABLEADMIN_DEFAULT_SKIN',                          'Choose a skin of the management area of the default.');
+define('_SKINABLEADMIN_MEMBER_DEFAULT_SKIN',           'Choose a skin of the management area of you use.');
+define('_SKINABLEADMIN_QMENU_LAYOUT',                          'Admin layout');
+define('_SKINABLEADMIN_PAGE_STR',                                      'page');
+define('_SKINABLEADMIN_BATCH_MOVE',                                    'Item move other category/Category move other blog');
+define('_SKINABLEADMIN_BATCH',                                         'batch');
+define('_SKINABLEADMIN_PAGEHEAD',                                      'Admin page head');
+define('_SKINABLEADMIN_PAGEFOOT',                                      'Admin page foot');
+define('_SKINABLEADMIN_TEMPLATEOVERVIEW',                      'Template overview');
+define('_SKINABLEADMIN_ADMINAREAHEADLINK',                     '[Your site]link');
+define('_SKINABLEADMIN_TPLSETTING_INGENERAL',          'In general');
+define('_SKINABLEADMIN_HEAD_STR',                                      ' head');
+define('_SKINABLEADMIN_BODY_STR',                                      ' body');
+define('_SKINABLEADMIN_FOOT_STR',                                      ' foot');
+define('_SKINABLEADMIN_TEXT_STR',                                      ' text');
+define('_SKINABLEADMIN_TITLE_STR',                                     ' title');
+define('_SKINABLEADMIN_ADMINSETTING_STR',                      ' set editmember is \'admin\'');
+define('_SKINABLEADMIN_NORMALSETTING_STR',                     ' normal');
+define('_SKINABLEADMIN_HELPICONURL_STR',                       ' icon URL');
+define('_SKINABLEADMIN_HELPFILEURL_STR',                       ' help file URL');
+define('_SKINABLEADMIN_ADMINSKINVAR_STR',                      ' skinvars');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_SELECT',      'selectbox used in ADMIN area');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE',       'Table for list indication');
+define('_SKINABLEADMIN_PLUGIN_QUICKMENU',                      'Link to admin page of the plugin shown to the quick-menu');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE',         'Template for option-type %s');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTMETA',         'Template for option-meta-data %s');
+define('_SKINABLEADMIN_MEMBERS_ADMINSKIN',                     "ADMIN-Area's skin");
+
+define('_LOCALE_BG_CYRL_BG',   'Bulgarian in Bulgaria');
+define('_LOCALE_CA_LATN_ES',   'Catalan in Spain');
+define('_LOCALE_CS_LATN_CZ',   'Czech in Czech Republic');
+define('_LOCALE_DE_LATN_DE',   'German in Germany');
+define('_LOCALE_EL_GREK_GR',   'Greek in Greece (Greek script)');
+define('_LOCALE_EN_LATN_US',   'English in United States');
+define('_LOCALE_ES_LATN_ES',   'Spanish in Spain');
+define('_LOCALE_FA_ARAB_IR',   'Persian in Islamic Republic of Iran');
+define('_LOCALE_FI_LATN_FI',   'Finnish in Finland');
+define('_LOCALE_FR_LATN_FR',   'French in France');
+define('_LOCALE_GL_LATN_ES',   'Galician in Spain');
+define('_LOCALE_HR_LATN_HR',   'Croatian in Croatia');
+define('_LOCALE_HU_LATN_HU',   'Hungarian in Hungary');
+define('_LOCALE_ID_LATN_ID',   'Indonesian in Indonesia (Latin script)');
+define('_LOCALE_IT_LATN_IT',   'Italian in Italy');
+define('_LOCALE_JA_JPAN_JP',   'Japanese in Japan');
+define('_LOCALE_KO_KORE_KR',   'Korean in Korea');
+define('_LOCALE_KU_ARAB_TR',   'Kurdish in Turkey (Arabic script)');
+define('_LOCALE_LV_LATN_LV',   'Latvian in Latvia');
+define('_LOCALE_NL_LATN_NL',   'Dutch in Netherlands');
+define('_LOCALE_PL_LATN_PL',   'Polish in Poland');
+define('_LOCALE_PT_LATN_BR',   'Portuguese in Brazil');
+define('_LOCALE_RO_LATN_RO',   'Romainan in Romania');
+define('_LOCALE_RU_CYRL_RU',   'Russian in Russia');
+define('_LOCALE_SK_LATN_SK',   'Slovak in Slovakia');
+define('_LOCALE_SR_CYRL_RS',   'Serbian in Serbia');
+define('_LOCALE_UR_ARAB_PK',   'Urdu in Pakistan');
+define('_LOCALE_VI_LATN_VN',   'Vietnamese in Vietnam (Latin script)');
+define('_LOCALE_ZH_HANS_CN',   'Chinese in China (simplified script)');
+define('_LOCALE_ZH_HANT_TW',   'Chinese in Taiwan (Traditional script)');
+
+define('_FORGOTPASSWORD_TITLE',                                'Forgot your password?');
+define('_FORGOTPASSWORD_MSG',                          'Enter your username and email address below, and you\'ll be sent an e-mail with a link where you can choose a new password.');
+define('_FORGOTPASSWORD_SUBMIT',                       'Send Activation Link" class="transparent');
+define('_FORGOTPASSWORD_CONTACT',                      'If you don\'t remember your exact username, contact the site administrator.');
+define('_SKINIE_INVALID_NAMES_DETECTED',       'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
+define('_LISTS_AUTHOR',                                                'Author');
+define('_OVERVIEW_OTHER_DRAFTS',                       'Other Drafts');
+define('_ERROR_BADADMINSKINNAME',                      'the name of skin for admin area must start with \'admin/\'.');
+define('_ERROR_BADADMINTEMPLATENAME',          'the name of template for admin area must start with \'admin/\'.');
+define('_SETTINGS_ADMINSKIN',                          'default skin for admin area');
+define('_SETTINGS_BKMKLTSKIN',                         'default skin for bookmarklet');
+define('_MEMBERS_BKMKLTSKIN',                          "bookmarklet skin");
+define('_ADMIN_SYSTEMOVERVIEW_VERSION_LATEST',         'The version which is being used is latest.');
+
 /********************************************
  *        Start New for 3.6x                *
  ********************************************/
@@ -81,15 +166,15 @@ define('_EDITC_EMAIL',                             'E-mail');
 
 define('_MANAGER_PLUGINFILE_NOTFOUND',                         "Plugin %s was not loaded (File not found)");
 /* changed */
-// plugin dependency 
-define('_ERROR_INSREQPLUGIN',          'Plugin installation failed, requires %s');
-define('_ERROR_DELREQPLUGIN',          'Plugin deletion failed, required by %s');
+// plugin dependency
+define('_ERROR_INSREQPLUGIN',          'La instal·lació dels plugin ha fallat, necessita ');
+define('_ERROR_DELREQPLUGIN',          'No es pot eliminar el plugin, es necessitat per ');
 
 //define('_ADD_ADDLATER',                                                              'Add Later');
-define('_ADD_ADDLATER',                                                                'Add the dates specified');
+define('_ADD_ADDLATER',                                'Afegir després');
 
-define('_LOGIN_NAME',                          'Name:');
-define('_LOGIN_PASSWORD',                      'Password:');
+define('_LOGIN_NAME',                          'Nom');
+define('_LOGIN_PASSWORD',                      'Contrasenya');
 
 // changed from _BOOKMARLET_BMARKLFOLLOW
 define('_BOOKMARKLET_BMARKFOLLOW',                                     ' (Works with nearly all browsers)');
@@ -187,13 +272,7 @@ define('_PLUGIN_OPTIONS_TITLE',                                                    'Options for %s');
 // Plugin file loda error
 define('_PLUGINFILE_COULDNT_BELOADED',                         'Error: plugin file <strong>%s.php</strong> could not be loaded, or it has been set inactive because it does not support some features (check the <a href="?action=actionlog">actionlog</a> for more info)');
 
-//ITEM add/edit template (for japanese only)
 define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
-define('_ITEM_ADDEDITTEMPLATE_YEAR',                           'Year');
-define('_ITEM_ADDEDITTEMPLATE_MONTH',                          'Month');
-define('_ITEM_ADDEDITTEMPLATE_DAY',                                    'Day');
-define('_ITEM_ADDEDITTEMPLATE_HOUR',                           'Hour');
-define('_ITEM_ADDEDITTEMPLATE_MINUTE',                         'Minute');
 
 // Errors
 define('_ERRORS_INSTALLSQL',                                           'install.sql should be deleted');
@@ -323,7 +402,7 @@ define('_ERROR_PLUGIN_LOAD',                'Plugin could not be loaded, or does not support c
 // START changed/added after 3.22 START
 define('_SEARCHFORM_QUERY',                    'Keywords to search');
 define('_ERROR_EMAIL_REQUIRED',                'Email address is required');
-define('_COMMENTFORM_MAIL',                    'Website:');
+define('_COMMENTFORM_MAIL',                    'E-correu/web');
 define('_COMMENTFORM_EMAIL',           'E-mail:');
 define('_EBLOG_REQUIREDEMAIL',         'Require E-mail address with comments?');
 define('_ERROR_COMMENTS_SPAM',      'Your comment was rejected because it did not pass the spam test');
@@ -352,10 +431,6 @@ define('_ARCHIVETYPE_MONTH',               'mes');
 // tickets (prevents malicious users to trick an admin to perform actions he doesn't want)
 define('_ERROR_BADTICKET',                     'Tiquet invàlid o caducat.');
 
-// plugin dependency
-define('_ERROR_INSREQPLUGIN',          'La instal·lació dels plugin ha fallat, necessita ');
-define('_ERROR_DELREQPLUGIN',          'No es pot eliminar el plugin, es necessitat per ');
-
 // cookie prefix
 define('_SETTINGS_COOKIEPREFIX',       'Prefix de la "galeta"');
 
@@ -474,9 +549,6 @@ define('_ADD_ALIGNLEFT_TT',                 'Alinea a l\'esquerra');
 define('_ADD_ALIGNRIGHT_TT',           'Alinea a la dreta');
 define('_ADD_ALIGNCENTER_TT',          'Alinea al centre');
 
-// searchable blog setting (yes/no)
-define('_EBLOG_SEARCH',                                'Inclou a la cerca');
-
 // generic upload failure
 define('_ERROR_UPLOADFAILED',          'Enviament fallat');
 
@@ -763,7 +835,6 @@ define('_COMMENTFORM_YOUARE',               'Tu ets');
 define('_COMMENTFORM_SUBMIT',          'Afegir comentari');
 define('_COMMENTFORM_COMMENT',         'El teu comentari');
 define('_COMMENTFORM_NAME',                    'Nom');
-define('_COMMENTFORM_MAIL',                    'E-correu/web');
 define('_COMMENTFORM_REMEMBER',                'Recorda\'t de mi');
 
 // loginform
@@ -790,7 +861,6 @@ define('_ADD_DISABLE_COMMENTS',             'Impedir comentaris?');
 define('_ADD_DRAFTNFUTURE',                    'Esborrany &amp; articles futurs');
 define('_ADD_ADDITEM',                         'Afegir un article');
 define('_ADD_ADDNOW',                          'Afegir ara');
-define('_ADD_ADDLATER',                                'Afegir després');
 define('_ADD_PLACE_ON',                                'Posar a');
 define('_ADD_ADDDRAFT',                                'Afegir a esborranys');
 define('_ADD_NOPASTDATES',                     '(Les dates passades no són valides, el temps actual s\'utilitzarà si és dona el cas)');
@@ -1134,8 +1204,6 @@ define('_BAN_ADD_BTN',                            'Afegir un bandeig');
 
 // LOGIN screen
 define('_LOGIN_MESSAGE',                       'Missatge');
-define('_LOGIN_NAME',                          'Nom');
-define('_LOGIN_PASSWORD',                      'Contrasenya');
 define('_LOGIN_SHARED',                                _LOGINFORM_SHARED);
 define('_LOGIN_FORGOT',                                'Has oblidat la teva contrasenya?');
 
@@ -1267,3 +1335,19 @@ define('_EDITC_NONMEMBER',                       'usuari no registrat');
 // move item
 define('_MOVE_TITLE',                          'Moure a quin weblog?');
 define('_MOVE_BTN',                                    'Moure l\'article');
+
+// ADMIN-template template types
+include_once('adminskinTypes.php');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_NAVILIST',          'navibar for item/comment list');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is blog ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is super ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin URL');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'API entry');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'eventlist updates');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency to');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency by');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'couldn\'t load file');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin actions');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin admin link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin help link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin option setting link');
index 176328a..57acb07 100644 (file)
  * 
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2012 The Nucleus Group
+<<<<<<< HEAD
  * @version $Id: ca_Latn_ES.UTF-8.php 1868 2012-05-22 05:10:53Z sakamocchi $
+=======
+ * @version $Id: ca_Latn_ES.UTF-8.php 1887 2012-06-17 08:30:08Z sakamocchi $
+>>>>>>> skinnable-master
  */
 
 /********************************************
  *        Start New for 4.0                 *
  ********************************************/
-define('_SKINIE_INVALID_NAMES_DETECTED', 'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
-define('_LISTS_AUTHOR', 'Author');
-define('_OVERVIEW_OTHER_DRAFTS', 'Other Drafts');
+/* argument value for setlocale() in Microsoft's windows operating system */
+define('_LOCALE_IN_WINDOWS',   'C');
+
+/* labels for date and time measurement unit */
+define('_LABEL_YEAR_UNIT',             'year');
+define('_LABEL_MONTH_UNIT',            'month');
+define('_LABEL_DAY_UNIT',              'day');
+define('_LABEL_HOUR_UNIT',             'hour');
+define('_LABEL_MINUTE_UNIT',   'minute');
+
+// SkinableAdminArea vars
+define('_SKINABLEADMIN_DEL_UNINSTALL_DATA',                    'Delete ADMIN skin data table on uninstall?');
+define('_SKINABLEADMIN_DEFAULT_SKIN',                          'Choose a skin of the management area of the default.');
+define('_SKINABLEADMIN_MEMBER_DEFAULT_SKIN',           'Choose a skin of the management area of you use.');
+define('_SKINABLEADMIN_QMENU_LAYOUT',                          'Admin layout');
+define('_SKINABLEADMIN_PAGE_STR',                                      'page');
+define('_SKINABLEADMIN_BATCH_MOVE',                                    'Item move other category/Category move other blog');
+define('_SKINABLEADMIN_BATCH',                                         'batch');
+define('_SKINABLEADMIN_PAGEHEAD',                                      'Admin page head');
+define('_SKINABLEADMIN_PAGEFOOT',                                      'Admin page foot');
+define('_SKINABLEADMIN_TEMPLATEOVERVIEW',                      'Template overview');
+define('_SKINABLEADMIN_ADMINAREAHEADLINK',                     '[Your site]link');
+define('_SKINABLEADMIN_TPLSETTING_INGENERAL',          'In general');
+define('_SKINABLEADMIN_HEAD_STR',                                      ' head');
+define('_SKINABLEADMIN_BODY_STR',                                      ' body');
+define('_SKINABLEADMIN_FOOT_STR',                                      ' foot');
+define('_SKINABLEADMIN_TEXT_STR',                                      ' text');
+define('_SKINABLEADMIN_TITLE_STR',                                     ' title');
+define('_SKINABLEADMIN_ADMINSETTING_STR',                      ' set editmember is \'admin\'');
+define('_SKINABLEADMIN_NORMALSETTING_STR',                     ' normal');
+define('_SKINABLEADMIN_HELPICONURL_STR',                       ' icon URL');
+define('_SKINABLEADMIN_HELPFILEURL_STR',                       ' help file URL');
+define('_SKINABLEADMIN_ADMINSKINVAR_STR',                      ' skinvars');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_SELECT',      'selectbox used in ADMIN area');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE',       'Table for list indication');
+define('_SKINABLEADMIN_PLUGIN_QUICKMENU',                      'Link to admin page of the plugin shown to the quick-menu');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE',         'Template for option-type %s');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTMETA',         'Template for option-meta-data %s');
+define('_SKINABLEADMIN_MEMBERS_ADMINSKIN',                     "ADMIN-Area's skin");
+
+define('_LOCALE_BG_CYRL_BG',   'Bulgarian in Bulgaria');
+define('_LOCALE_CA_LATN_ES',   'Catalan in Spain');
+define('_LOCALE_CS_LATN_CZ',   'Czech in Czech Republic');
+define('_LOCALE_DE_LATN_DE',   'German in Germany');
+define('_LOCALE_EL_GREK_GR',   'Greek in Greece (Greek script)');
+define('_LOCALE_EN_LATN_US',   'English in United States');
+define('_LOCALE_ES_LATN_ES',   'Spanish in Spain');
+define('_LOCALE_FA_ARAB_IR',   'Persian in Islamic Republic of Iran');
+define('_LOCALE_FI_LATN_FI',   'Finnish in Finland');
+define('_LOCALE_FR_LATN_FR',   'French in France');
+define('_LOCALE_GL_LATN_ES',   'Galician in Spain');
+define('_LOCALE_HR_LATN_HR',   'Croatian in Croatia');
+define('_LOCALE_HU_LATN_HU',   'Hungarian in Hungary');
+define('_LOCALE_ID_LATN_ID',   'Indonesian in Indonesia (Latin script)');
+define('_LOCALE_IT_LATN_IT',   'Italian in Italy');
+define('_LOCALE_JA_JPAN_JP',   'Japanese in Japan');
+define('_LOCALE_KO_KORE_KR',   'Korean in Korea');
+define('_LOCALE_KU_ARAB_TR',   'Kurdish in Turkey (Arabic script)');
+define('_LOCALE_LV_LATN_LV',   'Latvian in Latvia');
+define('_LOCALE_NL_LATN_NL',   'Dutch in Netherlands');
+define('_LOCALE_PL_LATN_PL',   'Polish in Poland');
+define('_LOCALE_PT_LATN_BR',   'Portuguese in Brazil');
+define('_LOCALE_RO_LATN_RO',   'Romainan in Romania');
+define('_LOCALE_RU_CYRL_RU',   'Russian in Russia');
+define('_LOCALE_SK_LATN_SK',   'Slovak in Slovakia');
+define('_LOCALE_SR_CYRL_RS',   'Serbian in Serbia');
+define('_LOCALE_UR_ARAB_PK',   'Urdu in Pakistan');
+define('_LOCALE_VI_LATN_VN',   'Vietnamese in Vietnam (Latin script)');
+define('_LOCALE_ZH_HANS_CN',   'Chinese in China (simplified script)');
+define('_LOCALE_ZH_HANT_TW',   'Chinese in Taiwan (Traditional script)');
+
+define('_FORGOTPASSWORD_TITLE',                                'Forgot your password?');
+define('_FORGOTPASSWORD_MSG',                          'Enter your username and email address below, and you\'ll be sent an e-mail with a link where you can choose a new password.');
+define('_FORGOTPASSWORD_SUBMIT',                       'Send Activation Link" class="transparent');
+define('_FORGOTPASSWORD_CONTACT',                      'If you don\'t remember your exact username, contact the site administrator.');
+define('_SKINIE_INVALID_NAMES_DETECTED',       'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
+define('_LISTS_AUTHOR',                                                'Author');
+define('_OVERVIEW_OTHER_DRAFTS',                       'Other Drafts');
+define('_ERROR_BADADMINSKINNAME',                      'the name of skin for admin area must start with \'admin/\'.');
+define('_ERROR_BADADMINTEMPLATENAME',          'the name of template for admin area must start with \'admin/\'.');
+define('_SETTINGS_ADMINSKIN',                          'default skin for admin area');
+define('_SETTINGS_BKMKLTSKIN',                         'default skin for bookmarklet');
+define('_MEMBERS_BKMKLTSKIN',                          "bookmarklet skin");
+define('_ADMIN_SYSTEMOVERVIEW_VERSION_LATEST',         'The version which is being used is latest.');
+
 /********************************************
  *        Start New for 3.6x                *
  ********************************************/
@@ -81,15 +166,15 @@ define('_EDITC_EMAIL',                             'E-mail');
 
 define('_MANAGER_PLUGINFILE_NOTFOUND',                         "Plugin %s was not loaded (File not found)");
 /* changed */
-// plugin dependency 
-define('_ERROR_INSREQPLUGIN',          'Plugin installation failed, requires %s');
-define('_ERROR_DELREQPLUGIN',          'Plugin deletion failed, required by %s');
+// plugin dependency
+define('_ERROR_INSREQPLUGIN',          'La instal·lació dels plugin ha fallat, necessita ');
+define('_ERROR_DELREQPLUGIN',          'No es pot eliminar el plugin, es necessitat per ');
 
 //define('_ADD_ADDLATER',                                                              'Add Later');
-define('_ADD_ADDLATER',                                                                'Add the dates specified');
+define('_ADD_ADDLATER',                                'Afegir després');
 
-define('_LOGIN_NAME',                          'Name:');
-define('_LOGIN_PASSWORD',                      'Password:');
+define('_LOGIN_NAME',                          'Nom');
+define('_LOGIN_PASSWORD',                      'Contrasenya');
 
 // changed from _BOOKMARLET_BMARKLFOLLOW
 define('_BOOKMARKLET_BMARKFOLLOW',                                     ' (Works with nearly all browsers)');
@@ -187,13 +272,7 @@ define('_PLUGIN_OPTIONS_TITLE',                                                    'Options for %s');
 // Plugin file loda error
 define('_PLUGINFILE_COULDNT_BELOADED',                         'Error: plugin file <strong>%s.php</strong> could not be loaded, or it has been set inactive because it does not support some features (check the <a href="?action=actionlog">actionlog</a> for more info)');
 
-//ITEM add/edit template (for japanese only)
 define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
-define('_ITEM_ADDEDITTEMPLATE_YEAR',                           'Year');
-define('_ITEM_ADDEDITTEMPLATE_MONTH',                          'Month');
-define('_ITEM_ADDEDITTEMPLATE_DAY',                                    'Day');
-define('_ITEM_ADDEDITTEMPLATE_HOUR',                           'Hour');
-define('_ITEM_ADDEDITTEMPLATE_MINUTE',                         'Minute');
 
 // Errors
 define('_ERRORS_INSTALLSQL',                                           'install.sql should be deleted');
@@ -323,7 +402,7 @@ define('_ERROR_PLUGIN_LOAD',                'Plugin could not be loaded, or does not support c
 // START changed/added after 3.22 START
 define('_SEARCHFORM_QUERY',                    'Keywords to search');
 define('_ERROR_EMAIL_REQUIRED',                'Email address is required');
-define('_COMMENTFORM_MAIL',                    'Website:');
+define('_COMMENTFORM_MAIL',                    'E-correu/web');
 define('_COMMENTFORM_EMAIL',           'E-mail:');
 define('_EBLOG_REQUIREDEMAIL',         'Require E-mail address with comments?');
 define('_ERROR_COMMENTS_SPAM',      'Your comment was rejected because it did not pass the spam test');
@@ -352,10 +431,6 @@ define('_ARCHIVETYPE_MONTH',               'mes');
 // tickets (prevents malicious users to trick an admin to perform actions he doesn't want)
 define('_ERROR_BADTICKET',                     'Tiquet invàlid o caducat.');
 
-// plugin dependency
-define('_ERROR_INSREQPLUGIN',          'La instal·lació dels plugin ha fallat, necessita ');
-define('_ERROR_DELREQPLUGIN',          'No es pot eliminar el plugin, es necessitat per ');
-
 // cookie prefix
 define('_SETTINGS_COOKIEPREFIX',       'Prefix de la "galeta"');
 
@@ -474,9 +549,6 @@ define('_ADD_ALIGNLEFT_TT',                 'Alinea a l\'esquerra');
 define('_ADD_ALIGNRIGHT_TT',           'Alinea a la dreta');
 define('_ADD_ALIGNCENTER_TT',          'Alinea al centre');
 
-// searchable blog setting (yes/no)
-define('_EBLOG_SEARCH',                                'Inclou a la cerca');
-
 // generic upload failure
 define('_ERROR_UPLOADFAILED',          'Enviament fallat');
 
@@ -763,7 +835,6 @@ define('_COMMENTFORM_YOUARE',               'Tu ets');
 define('_COMMENTFORM_SUBMIT',          'Afegir comentari');
 define('_COMMENTFORM_COMMENT',         'El teu comentari');
 define('_COMMENTFORM_NAME',                    'Nom');
-define('_COMMENTFORM_MAIL',                    'E-correu/web');
 define('_COMMENTFORM_REMEMBER',                'Recorda\'t de mi');
 
 // loginform
@@ -790,7 +861,6 @@ define('_ADD_DISABLE_COMMENTS',             'Impedir comentaris?');
 define('_ADD_DRAFTNFUTURE',                    'Esborrany &amp; articles futurs');
 define('_ADD_ADDITEM',                         'Afegir un article');
 define('_ADD_ADDNOW',                          'Afegir ara');
-define('_ADD_ADDLATER',                                'Afegir després');
 define('_ADD_PLACE_ON',                                'Posar a');
 define('_ADD_ADDDRAFT',                                'Afegir a esborranys');
 define('_ADD_NOPASTDATES',                     '(Les dates passades no són valides, el temps actual s\'utilitzarà si és dona el cas)');
@@ -1134,8 +1204,6 @@ define('_BAN_ADD_BTN',                            'Afegir un bandeig');
 
 // LOGIN screen
 define('_LOGIN_MESSAGE',                       'Missatge');
-define('_LOGIN_NAME',                          'Nom');
-define('_LOGIN_PASSWORD',                      'Contrasenya');
 define('_LOGIN_SHARED',                                _LOGINFORM_SHARED);
 define('_LOGIN_FORGOT',                                'Has oblidat la teva contrasenya?');
 
@@ -1267,3 +1335,19 @@ define('_EDITC_NONMEMBER',                       'usuari no registrat');
 // move item
 define('_MOVE_TITLE',                          'Moure a quin weblog?');
 define('_MOVE_BTN',                                    'Moure l\'article');
+
+// ADMIN-template template types
+include_once('adminskinTypes.php');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_NAVILIST',          'navibar for item/comment list');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is blog ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is super ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin URL');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'API entry');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'eventlist updates');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency to');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency by');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'couldn\'t load file');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin actions');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin admin link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin help link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin option setting link');
index 57d8d62..cc39ecf 100644 (file)
  * 
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2012 The Nucleus Group
+<<<<<<< HEAD
  * @version $Id: cs_Latn_CZ.UTF-8.php 1868 2012-05-22 05:10:53Z sakamocchi $
+=======
+ * @version $Id: cs_Latn_CZ.UTF-8.php 1887 2012-06-17 08:30:08Z sakamocchi $
+>>>>>>> skinnable-master
  */
 
 /********************************************
  *        Start New for 4.0                 *
  ********************************************/
-define('_SKINIE_INVALID_NAMES_DETECTED', 'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
-define('_LISTS_AUTHOR', 'Author');
-define('_OVERVIEW_OTHER_DRAFTS', 'Other Drafts');
+/* argument value for setlocale() in Microsoft's windows operating system */
+define('_LOCALE_IN_WINDOWS',   'csy_cze');
+
+/* labels for date and time measurement unit */
+define('_LABEL_YEAR_UNIT',             'year');
+define('_LABEL_MONTH_UNIT',            'month');
+define('_LABEL_DAY_UNIT',              'day');
+define('_LABEL_HOUR_UNIT',             'hour');
+define('_LABEL_MINUTE_UNIT',   'minute');
+
+// SkinableAdminArea vars
+define('_SKINABLEADMIN_DEL_UNINSTALL_DATA',                    'Delete ADMIN skin data table on uninstall?');
+define('_SKINABLEADMIN_DEFAULT_SKIN',                          'Choose a skin of the management area of the default.');
+define('_SKINABLEADMIN_MEMBER_DEFAULT_SKIN',           'Choose a skin of the management area of you use.');
+define('_SKINABLEADMIN_QMENU_LAYOUT',                          'Admin layout');
+define('_SKINABLEADMIN_PAGE_STR',                                      'page');
+define('_SKINABLEADMIN_BATCH_MOVE',                                    'Item move other category/Category move other blog');
+define('_SKINABLEADMIN_BATCH',                                         'batch');
+define('_SKINABLEADMIN_PAGEHEAD',                                      'Admin page head');
+define('_SKINABLEADMIN_PAGEFOOT',                                      'Admin page foot');
+define('_SKINABLEADMIN_TEMPLATEOVERVIEW',                      'Template overview');
+define('_SKINABLEADMIN_ADMINAREAHEADLINK',                     '[Your site]link');
+define('_SKINABLEADMIN_TPLSETTING_INGENERAL',          'In general');
+define('_SKINABLEADMIN_HEAD_STR',                                      ' head');
+define('_SKINABLEADMIN_BODY_STR',                                      ' body');
+define('_SKINABLEADMIN_FOOT_STR',                                      ' foot');
+define('_SKINABLEADMIN_TEXT_STR',                                      ' text');
+define('_SKINABLEADMIN_TITLE_STR',                                     ' title');
+define('_SKINABLEADMIN_ADMINSETTING_STR',                      ' set editmember is \'admin\'');
+define('_SKINABLEADMIN_NORMALSETTING_STR',                     ' normal');
+define('_SKINABLEADMIN_HELPICONURL_STR',                       ' icon URL');
+define('_SKINABLEADMIN_HELPFILEURL_STR',                       ' help file URL');
+define('_SKINABLEADMIN_ADMINSKINVAR_STR',                      ' skinvars');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_SELECT',      'selectbox used in ADMIN area');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE',       'Table for list indication');
+define('_SKINABLEADMIN_PLUGIN_QUICKMENU',                      'Link to admin page of the plugin shown to the quick-menu');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE',         'Template for option-type %s');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTMETA',         'Template for option-meta-data %s');
+define('_SKINABLEADMIN_MEMBERS_ADMINSKIN',                     "ADMIN-Area's skin");
+
+define('_LOCALE_BG_CYRL_BG',   'Bulgarian in Bulgaria');
+define('_LOCALE_CA_LATN_ES',   'Catalan in Spain');
+define('_LOCALE_CS_LATN_CZ',   'Czech in Czech Republic');
+define('_LOCALE_DE_LATN_DE',   'German in Germany');
+define('_LOCALE_EL_GREK_GR',   'Greek in Greece (Greek script)');
+define('_LOCALE_EN_LATN_US',   'English in United States');
+define('_LOCALE_ES_LATN_ES',   'Spanish in Spain');
+define('_LOCALE_FA_ARAB_IR',   'Persian in Islamic Republic of Iran');
+define('_LOCALE_FI_LATN_FI',   'Finnish in Finland');
+define('_LOCALE_FR_LATN_FR',   'French in France');
+define('_LOCALE_GL_LATN_ES',   'Galician in Spain');
+define('_LOCALE_HR_LATN_HR',   'Croatian in Croatia');
+define('_LOCALE_HU_LATN_HU',   'Hungarian in Hungary');
+define('_LOCALE_ID_LATN_ID',   'Indonesian in Indonesia (Latin script)');
+define('_LOCALE_IT_LATN_IT',   'Italian in Italy');
+define('_LOCALE_JA_JPAN_JP',   'Japanese in Japan');
+define('_LOCALE_KO_KORE_KR',   'Korean in Korea');
+define('_LOCALE_KU_ARAB_TR',   'Kurdish in Turkey (Arabic script)');
+define('_LOCALE_LV_LATN_LV',   'Latvian in Latvia');
+define('_LOCALE_NL_LATN_NL',   'Dutch in Netherlands');
+define('_LOCALE_PL_LATN_PL',   'Polish in Poland');
+define('_LOCALE_PT_LATN_BR',   'Portuguese in Brazil');
+define('_LOCALE_RO_LATN_RO',   'Romainan in Romania');
+define('_LOCALE_RU_CYRL_RU',   'Russian in Russia');
+define('_LOCALE_SK_LATN_SK',   'Slovak in Slovakia');
+define('_LOCALE_SR_CYRL_RS',   'Serbian in Serbia');
+define('_LOCALE_UR_ARAB_PK',   'Urdu in Pakistan');
+define('_LOCALE_VI_LATN_VN',   'Vietnamese in Vietnam (Latin script)');
+define('_LOCALE_ZH_HANS_CN',   'Chinese in China (simplified script)');
+define('_LOCALE_ZH_HANT_TW',   'Chinese in Taiwan (Traditional script)');
+
+define('_FORGOTPASSWORD_TITLE',                                'Forgot your password?');
+define('_FORGOTPASSWORD_MSG',                          'Enter your username and email address below, and you\'ll be sent an e-mail with a link where you can choose a new password.');
+define('_FORGOTPASSWORD_SUBMIT',                       'Send Activation Link" class="transparent');
+define('_FORGOTPASSWORD_CONTACT',                      'If you don\'t remember your exact username, contact the site administrator.');
+define('_SKINIE_INVALID_NAMES_DETECTED',       'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
+define('_LISTS_AUTHOR',                                                'Author');
+define('_OVERVIEW_OTHER_DRAFTS',                       'Other Drafts');
+define('_ERROR_BADADMINSKINNAME',                      'the name of skin for admin area must start with \'admin/\'.');
+define('_ERROR_BADADMINTEMPLATENAME',          'the name of template for admin area must start with \'admin/\'.');
+define('_SETTINGS_ADMINSKIN',                          'default skin for admin area');
+define('_SETTINGS_BKMKLTSKIN',                         'default skin for bookmarklet');
+define('_MEMBERS_BKMKLTSKIN',                          "bookmarklet skin");
+define('_ADMIN_SYSTEMOVERVIEW_VERSION_LATEST',         'The version which is being used is latest.');
+
 /********************************************
  *        Start New for 3.6x                *
  ********************************************/
@@ -86,10 +171,10 @@ define('_ERROR_INSREQPLUGIN',              'Plugin installation failed, requires %s');
 define('_ERROR_DELREQPLUGIN',          'Plugin deletion failed, required by %s');
 
 //define('_ADD_ADDLATER',                                                              'Add Later');
-define('_ADD_ADDLATER',                                                                'Add the dates specified');
+define('_ADD_ADDLATER',                                'Přidat později');
 
-define('_LOGIN_NAME',                          'Name:');
-define('_LOGIN_PASSWORD',                      'Password:');
+define('_LOGIN_NAME',                          'Jméno');
+define('_LOGIN_PASSWORD',                      'Heslo');
 
 // changed from _BOOKMARLET_BMARKLFOLLOW
 define('_BOOKMARKLET_BMARKFOLLOW',                                     ' (Works with nearly all browsers)');
@@ -187,13 +272,7 @@ define('_PLUGIN_OPTIONS_TITLE',                                                    'Options for %s');
 // Plugin file loda error
 define('_PLUGINFILE_COULDNT_BELOADED',                         'Error: plugin file <strong>%s.php</strong> could not be loaded, or it has been set inactive because it does not support some features (check the <a href="?action=actionlog">actionlog</a> for more info)');
 
-//ITEM add/edit template (for japanese only)
 define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
-define('_ITEM_ADDEDITTEMPLATE_YEAR',                           'Year');
-define('_ITEM_ADDEDITTEMPLATE_MONTH',                          'Month');
-define('_ITEM_ADDEDITTEMPLATE_DAY',                                    'Day');
-define('_ITEM_ADDEDITTEMPLATE_HOUR',                           'Hour');
-define('_ITEM_ADDEDITTEMPLATE_MINUTE',                         'Minute');
 
 // Errors
 define('_ERRORS_INSTALLSQL',                                           'install.sql should be deleted');
@@ -323,7 +402,7 @@ define('_ERROR_PLUGIN_LOAD',                'Plugin could not be loaded, or does not support c
 // START changed/added after 3.22 START
 define('_SEARCHFORM_QUERY',                    'Keywords to search');
 define('_ERROR_EMAIL_REQUIRED',                'Email address is required');
-define('_COMMENTFORM_MAIL',                    'Website:');
+define('_COMMENTFORM_MAIL',                    'E-mail/HTTP');
 define('_COMMENTFORM_EMAIL',           'E-mail:');
 define('_EBLOG_REQUIREDEMAIL',         'Require E-mail address with comments?');
 define('_ERROR_COMMENTS_SPAM',      'Your comment was rejected because it did not pass the spam test');
@@ -449,7 +528,7 @@ define('_WARNING_EXTAUTH',                  'Warning: Enable only if needed.');
 define('_MEMBERS_BYPASS',                      'Use External Authentication');
 
 // 'always include in search' blog setting (yes/no) [in v2.5beta, the 'always' part wasn't clear]
-define('_EBLOG_SEARCH',                                '<em>Always</em> include in search');
+define('_EBLOG_SEARCH',                                'Zahrnout do hledání');
 
 // END changed/added after v2.5beta
 
@@ -472,9 +551,6 @@ define('_ADD_ALIGNLEFT_TT',                 'Zarovnat doleva');
 define('_ADD_ALIGNRIGHT_TT',           'Zarovnat doprava');
 define('_ADD_ALIGNCENTER_TT',          'Zarovnat na střed');
 
-// searchable blog setting (yes/no)
-define('_EBLOG_SEARCH',                                'Zahrnout do hledání');
-
 // generic upload failure
 define('_ERROR_UPLOADFAILED',          'Nahrávání selhalo');
 
@@ -761,7 +837,6 @@ define('_COMMENTFORM_YOUARE',               'Jste');
 define('_COMMENTFORM_SUBMIT',          'Přidat komentář');
 define('_COMMENTFORM_COMMENT',         'Váš komentář');
 define('_COMMENTFORM_NAME',                    'Jméno');
-define('_COMMENTFORM_MAIL',                    'E-mail/HTTP');
 define('_COMMENTFORM_REMEMBER',                'Pamatuj si mne');
 
 // loginform
@@ -788,7 +863,6 @@ define('_ADD_DISABLE_COMMENTS',             'Zakázat komentáře?');
 define('_ADD_DRAFTNFUTURE',                    'Koncepty a články pro pozdější publikování');
 define('_ADD_ADDITEM',                         'Přidat článek');
 define('_ADD_ADDNOW',                          'Přidat nyní');
-define('_ADD_ADDLATER',                                'Přidat později');
 define('_ADD_PLACE_ON',                                'Umístit na');
 define('_ADD_ADDDRAFT',                                'Přidat mezi koncepty');
 define('_ADD_NOPASTDATES',                     '(data a časy v minulosti NEJSOU platné, v tom případě bude použit aktuální čas)');
@@ -1132,8 +1206,6 @@ define('_BAN_ADD_BTN',                            'Přidat omezení');
 
 // LOGIN screen
 define('_LOGIN_MESSAGE',                       'Zpráva');
-define('_LOGIN_NAME',                          'Jméno');
-define('_LOGIN_PASSWORD',                      'Heslo');
 define('_LOGIN_SHARED',                                _LOGINFORM_SHARED);
 define('_LOGIN_FORGOT',                                'Zapomněl jste heslo?');
 
@@ -1265,3 +1337,19 @@ define('_EDITC_NONMEMBER',                       'není člen');
 // move item
 define('_MOVE_TITLE',                          'Přesunout do jakého blogu?');
 define('_MOVE_BTN',                                    'Přesunout článek');
+
+// ADMIN-template template types
+include_once('adminskinTypes.php');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_NAVILIST',          'navibar for item/comment list');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is blog ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is super ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin URL');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'API entry');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'eventlist updates');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency to');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency by');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'couldn\'t load file');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin actions');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin admin link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin help link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin option setting link');
index 6252d61..71f0587 100644 (file)
@@ -1,5 +1,6 @@
 <?php
 /**
+<<<<<<< HEAD
  * Nucleus Translation File
  * Czech in Czech Republic
  *
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2012 The Nucleus Group
  * @version $Id: cs_Latn_CZ.WINDOWS-1250.php 1868 2012-05-22 05:10:53Z sakamocchi $
+=======
+ * Nucleus CMS Translation File
+ * Czech in Czech Republic (Latin script)
+ * 
+ * Nucleus version: v1.0-v2.0
+ * Author: Mnemonic (mnemonic@dead-code.org)
+ * 
+ * @license http://nucleuscms.org/license.txt GNU General Public License
+ * @copyright Copyright (C) 2002-2012 The Nucleus Group
+ * @version $Id: cs_Latn_CZ.WINDOWS-1250.php 1887 2012-06-17 08:30:08Z sakamocchi $
+>>>>>>> skinnable-master
  */
 
 /********************************************
  *        Start New for 4.0                 *
  ********************************************/
-define('_SKINIE_INVALID_NAMES_DETECTED', 'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
-define('_LISTS_AUTHOR', 'Author');
-define('_OVERVIEW_OTHER_DRAFTS', 'Other Drafts');
+/* argument value for setlocale() in Microsoft's windows operating system */
+define('_LOCALE_IN_WINDOWS',   'csy_cze');
+
+/* labels for date and time measurement unit */
+define('_LABEL_YEAR_UNIT',             'year');
+define('_LABEL_MONTH_UNIT',            'month');
+define('_LABEL_DAY_UNIT',              'day');
+define('_LABEL_HOUR_UNIT',             'hour');
+define('_LABEL_MINUTE_UNIT',   'minute');
+
+// SkinableAdminArea vars
+define('_SKINABLEADMIN_DEL_UNINSTALL_DATA',                    'Delete ADMIN skin data table on uninstall?');
+define('_SKINABLEADMIN_DEFAULT_SKIN',                          'Choose a skin of the management area of the default.');
+define('_SKINABLEADMIN_MEMBER_DEFAULT_SKIN',           'Choose a skin of the management area of you use.');
+define('_SKINABLEADMIN_QMENU_LAYOUT',                          'Admin layout');
+define('_SKINABLEADMIN_PAGE_STR',                                      'page');
+define('_SKINABLEADMIN_BATCH_MOVE',                                    'Item move other category/Category move other blog');
+define('_SKINABLEADMIN_BATCH',                                         'batch');
+define('_SKINABLEADMIN_PAGEHEAD',                                      'Admin page head');
+define('_SKINABLEADMIN_PAGEFOOT',                                      'Admin page foot');
+define('_SKINABLEADMIN_TEMPLATEOVERVIEW',                      'Template overview');
+define('_SKINABLEADMIN_ADMINAREAHEADLINK',                     '[Your site]link');
+define('_SKINABLEADMIN_TPLSETTING_INGENERAL',          'In general');
+define('_SKINABLEADMIN_HEAD_STR',                                      ' head');
+define('_SKINABLEADMIN_BODY_STR',                                      ' body');
+define('_SKINABLEADMIN_FOOT_STR',                                      ' foot');
+define('_SKINABLEADMIN_TEXT_STR',                                      ' text');
+define('_SKINABLEADMIN_TITLE_STR',                                     ' title');
+define('_SKINABLEADMIN_ADMINSETTING_STR',                      ' set editmember is \'admin\'');
+define('_SKINABLEADMIN_NORMALSETTING_STR',                     ' normal');
+define('_SKINABLEADMIN_HELPICONURL_STR',                       ' icon URL');
+define('_SKINABLEADMIN_HELPFILEURL_STR',                       ' help file URL');
+define('_SKINABLEADMIN_ADMINSKINVAR_STR',                      ' skinvars');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_SELECT',      'selectbox used in ADMIN area');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE',       'Table for list indication');
+define('_SKINABLEADMIN_PLUGIN_QUICKMENU',                      'Link to admin page of the plugin shown to the quick-menu');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE',         'Template for option-type %s');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTMETA',         'Template for option-meta-data %s');
+define('_SKINABLEADMIN_MEMBERS_ADMINSKIN',                     "ADMIN-Area's skin");
+
+define('_LOCALE_BG_CYRL_BG',   'Bulgarian in Bulgaria');
+define('_LOCALE_CA_LATN_ES',   'Catalan in Spain');
+define('_LOCALE_CS_LATN_CZ',   'Czech in Czech Republic');
+define('_LOCALE_DE_LATN_DE',   'German in Germany');
+define('_LOCALE_EL_GREK_GR',   'Greek in Greece (Greek script)');
+define('_LOCALE_EN_LATN_US',   'English in United States');
+define('_LOCALE_ES_LATN_ES',   'Spanish in Spain');
+define('_LOCALE_FA_ARAB_IR',   'Persian in Islamic Republic of Iran');
+define('_LOCALE_FI_LATN_FI',   'Finnish in Finland');
+define('_LOCALE_FR_LATN_FR',   'French in France');
+define('_LOCALE_GL_LATN_ES',   'Galician in Spain');
+define('_LOCALE_HR_LATN_HR',   'Croatian in Croatia');
+define('_LOCALE_HU_LATN_HU',   'Hungarian in Hungary');
+define('_LOCALE_ID_LATN_ID',   'Indonesian in Indonesia (Latin script)');
+define('_LOCALE_IT_LATN_IT',   'Italian in Italy');
+define('_LOCALE_JA_JPAN_JP',   'Japanese in Japan');
+define('_LOCALE_KO_KORE_KR',   'Korean in Korea');
+define('_LOCALE_KU_ARAB_TR',   'Kurdish in Turkey (Arabic script)');
+define('_LOCALE_LV_LATN_LV',   'Latvian in Latvia');
+define('_LOCALE_NL_LATN_NL',   'Dutch in Netherlands');
+define('_LOCALE_PL_LATN_PL',   'Polish in Poland');
+define('_LOCALE_PT_LATN_BR',   'Portuguese in Brazil');
+define('_LOCALE_RO_LATN_RO',   'Romainan in Romania');
+define('_LOCALE_RU_CYRL_RU',   'Russian in Russia');
+define('_LOCALE_SK_LATN_SK',   'Slovak in Slovakia');
+define('_LOCALE_SR_CYRL_RS',   'Serbian in Serbia');
+define('_LOCALE_UR_ARAB_PK',   'Urdu in Pakistan');
+define('_LOCALE_VI_LATN_VN',   'Vietnamese in Vietnam (Latin script)');
+define('_LOCALE_ZH_HANS_CN',   'Chinese in China (simplified script)');
+define('_LOCALE_ZH_HANT_TW',   'Chinese in Taiwan (Traditional script)');
+
+define('_FORGOTPASSWORD_TITLE',                                'Forgot your password?');
+define('_FORGOTPASSWORD_MSG',                          'Enter your username and email address below, and you\'ll be sent an e-mail with a link where you can choose a new password.');
+define('_FORGOTPASSWORD_SUBMIT',                       'Send Activation Link" class="transparent');
+define('_FORGOTPASSWORD_CONTACT',                      'If you don\'t remember your exact username, contact the site administrator.');
+define('_SKINIE_INVALID_NAMES_DETECTED',       'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
+define('_LISTS_AUTHOR',                                                'Author');
+define('_OVERVIEW_OTHER_DRAFTS',                       'Other Drafts');
+define('_ERROR_BADADMINSKINNAME',                      'the name of skin for admin area must start with \'admin/\'.');
+define('_ERROR_BADADMINTEMPLATENAME',          'the name of template for admin area must start with \'admin/\'.');
+define('_SETTINGS_ADMINSKIN',                          'default skin for admin area');
+define('_SETTINGS_BKMKLTSKIN',                         'default skin for bookmarklet');
+define('_MEMBERS_BKMKLTSKIN',                          "bookmarklet skin");
+define('_ADMIN_SYSTEMOVERVIEW_VERSION_LATEST',         'The version which is being used is latest.');
+
 /********************************************
  *        Start New for 3.6x                *
  ********************************************/
@@ -86,10 +179,10 @@ define('_ERROR_INSREQPLUGIN',              'Plugin installation failed, requires %s');
 define('_ERROR_DELREQPLUGIN',          'Plugin deletion failed, required by %s');
 
 //define('_ADD_ADDLATER',                                                              'Add Later');
-define('_ADD_ADDLATER',                                                                'Add the dates specified');
+define('_ADD_ADDLATER',                                'Pøidat pozdìji');
 
-define('_LOGIN_NAME',                          'Name:');
-define('_LOGIN_PASSWORD',                      'Password:');
+define('_LOGIN_NAME',                          'Jméno');
+define('_LOGIN_PASSWORD',                      'Heslo');
 
 // changed from _BOOKMARLET_BMARKLFOLLOW
 define('_BOOKMARKLET_BMARKFOLLOW',                                     ' (Works with nearly all browsers)');
@@ -187,13 +280,7 @@ define('_PLUGIN_OPTIONS_TITLE',                                                    'Options for %s');
 // Plugin file loda error
 define('_PLUGINFILE_COULDNT_BELOADED',                         'Error: plugin file <strong>%s.php</strong> could not be loaded, or it has been set inactive because it does not support some features (check the <a href="?action=actionlog">actionlog</a> for more info)');
 
-//ITEM add/edit template (for japanese only)
 define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
-define('_ITEM_ADDEDITTEMPLATE_YEAR',                           'Year');
-define('_ITEM_ADDEDITTEMPLATE_MONTH',                          'Month');
-define('_ITEM_ADDEDITTEMPLATE_DAY',                                    'Day');
-define('_ITEM_ADDEDITTEMPLATE_HOUR',                           'Hour');
-define('_ITEM_ADDEDITTEMPLATE_MINUTE',                         'Minute');
 
 // Errors
 define('_ERRORS_INSTALLSQL',                                           'install.sql should be deleted');
@@ -323,7 +410,7 @@ define('_ERROR_PLUGIN_LOAD',                'Plugin could not be loaded, or does not support c
 // START changed/added after 3.22 START
 define('_SEARCHFORM_QUERY',                    'Keywords to search');
 define('_ERROR_EMAIL_REQUIRED',                'Email address is required');
-define('_COMMENTFORM_MAIL',                    'Website:');
+define('_COMMENTFORM_MAIL',                    'E-mail/HTTP');
 define('_COMMENTFORM_EMAIL',           'E-mail:');
 define('_EBLOG_REQUIREDEMAIL',         'Require E-mail address with comments?');
 define('_ERROR_COMMENTS_SPAM',      'Your comment was rejected because it did not pass the spam test');
@@ -449,7 +536,7 @@ define('_WARNING_EXTAUTH',                  'Warning: Enable only if needed.');
 define('_MEMBERS_BYPASS',                      'Use External Authentication');
 
 // 'always include in search' blog setting (yes/no) [in v2.5beta, the 'always' part wasn't clear]
-define('_EBLOG_SEARCH',                                '<em>Always</em> include in search');
+define('_EBLOG_SEARCH',                                'Zahrnout do hledání');
 
 // END changed/added after v2.5beta
 
@@ -471,9 +558,12 @@ define('_MEDIA_COLLECTION_LABEL',  'Aktu
 define('_ADD_ALIGNLEFT_TT',                    'Zarovnat doleva');
 define('_ADD_ALIGNRIGHT_TT',           'Zarovnat doprava');
 define('_ADD_ALIGNCENTER_TT',          'Zarovnat na støed');
+<<<<<<< HEAD
 
 // searchable blog setting (yes/no)
 define('_EBLOG_SEARCH',                                'Zahrnout do hledání');
+=======
+>>>>>>> skinnable-master
 
 // generic upload failure
 define('_ERROR_UPLOADFAILED',          'Nahrávání selhalo');
@@ -761,7 +851,10 @@ define('_COMMENTFORM_YOUARE',              'Jste');
 define('_COMMENTFORM_SUBMIT',          'Pøidat komentáø');
 define('_COMMENTFORM_COMMENT',         'Vá\9a komentáø');
 define('_COMMENTFORM_NAME',                    'Jméno');
+<<<<<<< HEAD
 define('_COMMENTFORM_MAIL',                    'E-mail/HTTP');
+=======
+>>>>>>> skinnable-master
 define('_COMMENTFORM_REMEMBER',                'Pamatuj si mne');
 
 // loginform
@@ -788,7 +881,10 @@ define('_ADD_DISABLE_COMMENTS',            'Zak
 define('_ADD_DRAFTNFUTURE',                    'Koncepty a èlánky pro pozdìj\9aí publikování');
 define('_ADD_ADDITEM',                         'Pøidat èlánek');
 define('_ADD_ADDNOW',                          'Pøidat nyní');
+<<<<<<< HEAD
 define('_ADD_ADDLATER',                                'Pøidat pozdìji');
+=======
+>>>>>>> skinnable-master
 define('_ADD_PLACE_ON',                                'Umístit na');
 define('_ADD_ADDDRAFT',                                'Pøidat mezi koncepty');
 define('_ADD_NOPASTDATES',                     '(data a èasy v minulosti NEJSOU platné, v tom pøípadì bude pou\9eit aktuální èas)');
@@ -1132,8 +1228,11 @@ define('_BAN_ADD_BTN',                           'P
 
 // LOGIN screen
 define('_LOGIN_MESSAGE',                       'Zpráva');
+<<<<<<< HEAD
 define('_LOGIN_NAME',                          'Jméno');
 define('_LOGIN_PASSWORD',                      'Heslo');
+=======
+>>>>>>> skinnable-master
 define('_LOGIN_SHARED',                                _LOGINFORM_SHARED);
 define('_LOGIN_FORGOT',                                'Zapomnìl jste heslo?');
 
@@ -1265,3 +1364,22 @@ define('_EDITC_NONMEMBER',                       'nen
 // move item
 define('_MOVE_TITLE',                          'Pøesunout do jakého blogu?');
 define('_MOVE_BTN',                                    'Pøesunout èlánek');
+<<<<<<< HEAD
+=======
+
+// ADMIN-template template types
+include_once('adminskinTypes.php');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_NAVILIST',          'navibar for item/comment list');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is blog ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is super ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin URL');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'API entry');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'eventlist updates');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency to');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency by');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'couldn\'t load file');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin actions');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin admin link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin help link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin option setting link');
+>>>>>>> skinnable-master
index f02904a..05a8472 100644 (file)
  *
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2012 The Nucleus Group
+<<<<<<< HEAD
  * @version $Id: de_Latn_DE.ISO-8859-1.php 1868 2012-05-22 05:10:53Z sakamocchi $
+=======
+ * @version $Id: de_Latn_DE.ISO-8859-1.php 1887 2012-06-17 08:30:08Z sakamocchi $
+>>>>>>> skinnable-master
  */
 
 /********************************************
  *        Start New for 4.0                 *
  ********************************************/
-define('_SKINIE_INVALID_NAMES_DETECTED', 'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
-define('_LISTS_AUTHOR', 'Author');
-define('_OVERVIEW_OTHER_DRAFTS', 'Other Drafts');
+/* argument value for setlocale() in Microsoft's windows operating system */
+define('_LOCALE_IN_WINDOWS',   'deu_deu');
+
+/* labels for date and time measurement unit */
+define('_LABEL_YEAR_UNIT',             'year');
+define('_LABEL_MONTH_UNIT',            'month');
+define('_LABEL_DAY_UNIT',              'day');
+define('_LABEL_HOUR_UNIT',             'hour');
+define('_LABEL_MINUTE_UNIT',   'minute');
+
+// SkinableAdminArea vars
+define('_SKINABLEADMIN_DEL_UNINSTALL_DATA',                    'Delete ADMIN skin data table on uninstall?');
+define('_SKINABLEADMIN_DEFAULT_SKIN',                          'Choose a skin of the management area of the default.');
+define('_SKINABLEADMIN_MEMBER_DEFAULT_SKIN',           'Choose a skin of the management area of you use.');
+define('_SKINABLEADMIN_QMENU_LAYOUT',                          'Admin layout');
+define('_SKINABLEADMIN_PAGE_STR',                                      'page');
+define('_SKINABLEADMIN_BATCH_MOVE',                                    'Item move other category/Category move other blog');
+define('_SKINABLEADMIN_BATCH',                                         'batch');
+define('_SKINABLEADMIN_PAGEHEAD',                                      'Admin page head');
+define('_SKINABLEADMIN_PAGEFOOT',                                      'Admin page foot');
+define('_SKINABLEADMIN_TEMPLATEOVERVIEW',                      'Template overview');
+define('_SKINABLEADMIN_ADMINAREAHEADLINK',                     '[Your site]link');
+define('_SKINABLEADMIN_TPLSETTING_INGENERAL',          'In general');
+define('_SKINABLEADMIN_HEAD_STR',                                      ' head');
+define('_SKINABLEADMIN_BODY_STR',                                      ' body');
+define('_SKINABLEADMIN_FOOT_STR',                                      ' foot');
+define('_SKINABLEADMIN_TEXT_STR',                                      ' text');
+define('_SKINABLEADMIN_TITLE_STR',                                     ' title');
+define('_SKINABLEADMIN_ADMINSETTING_STR',                      ' set editmember is \'admin\'');
+define('_SKINABLEADMIN_NORMALSETTING_STR',                     ' normal');
+define('_SKINABLEADMIN_HELPICONURL_STR',                       ' icon URL');
+define('_SKINABLEADMIN_HELPFILEURL_STR',                       ' help file URL');
+define('_SKINABLEADMIN_ADMINSKINVAR_STR',                      ' skinvars');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_SELECT',      'selectbox used in ADMIN area');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE',       'Table for list indication');
+define('_SKINABLEADMIN_PLUGIN_QUICKMENU',                      'Link to admin page of the plugin shown to the quick-menu');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE',         'Template for option-type %s');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTMETA',         'Template for option-meta-data %s');
+define('_SKINABLEADMIN_MEMBERS_ADMINSKIN',                     "ADMIN-Area's skin");
+
+define('_LOCALE_BG_CYRL_BG',   'Bulgarian in Bulgaria');
+define('_LOCALE_CA_LATN_ES',   'Catalan in Spain');
+define('_LOCALE_CS_LATN_CZ',   'Czech in Czech Republic');
+define('_LOCALE_DE_LATN_DE',   'German in Germany');
+define('_LOCALE_EL_GREK_GR',   'Greek in Greece (Greek script)');
+define('_LOCALE_EN_LATN_US',   'English in United States');
+define('_LOCALE_ES_LATN_ES',   'Spanish in Spain');
+define('_LOCALE_FA_ARAB_IR',   'Persian in Islamic Republic of Iran');
+define('_LOCALE_FI_LATN_FI',   'Finnish in Finland');
+define('_LOCALE_FR_LATN_FR',   'French in France');
+define('_LOCALE_GL_LATN_ES',   'Galician in Spain');
+define('_LOCALE_HR_LATN_HR',   'Croatian in Croatia');
+define('_LOCALE_HU_LATN_HU',   'Hungarian in Hungary');
+define('_LOCALE_ID_LATN_ID',   'Indonesian in Indonesia (Latin script)');
+define('_LOCALE_IT_LATN_IT',   'Italian in Italy');
+define('_LOCALE_JA_JPAN_JP',   'Japanese in Japan');
+define('_LOCALE_KO_KORE_KR',   'Korean in Korea');
+define('_LOCALE_KU_ARAB_TR',   'Kurdish in Turkey (Arabic script)');
+define('_LOCALE_LV_LATN_LV',   'Latvian in Latvia');
+define('_LOCALE_NL_LATN_NL',   'Dutch in Netherlands');
+define('_LOCALE_PL_LATN_PL',   'Polish in Poland');
+define('_LOCALE_PT_LATN_BR',   'Portuguese in Brazil');
+define('_LOCALE_RO_LATN_RO',   'Romainan in Romania');
+define('_LOCALE_RU_CYRL_RU',   'Russian in Russia');
+define('_LOCALE_SK_LATN_SK',   'Slovak in Slovakia');
+define('_LOCALE_SR_CYRL_RS',   'Serbian in Serbia');
+define('_LOCALE_UR_ARAB_PK',   'Urdu in Pakistan');
+define('_LOCALE_VI_LATN_VN',   'Vietnamese in Vietnam (Latin script)');
+define('_LOCALE_ZH_HANS_CN',   'Chinese in China (simplified script)');
+define('_LOCALE_ZH_HANT_TW',   'Chinese in Taiwan (Traditional script)');
+
+define('_FORGOTPASSWORD_TITLE',                                'Forgot your password?');
+define('_FORGOTPASSWORD_MSG',                          'Enter your username and email address below, and you\'ll be sent an e-mail with a link where you can choose a new password.');
+define('_FORGOTPASSWORD_SUBMIT',                       'Send Activation Link" class="transparent');
+define('_FORGOTPASSWORD_CONTACT',                      'If you don\'t remember your exact username, contact the site administrator.');
+define('_SKINIE_INVALID_NAMES_DETECTED',       'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
+define('_LISTS_AUTHOR',                                                'Author');
+define('_OVERVIEW_OTHER_DRAFTS',                       'Other Drafts');
+define('_ERROR_BADADMINSKINNAME',                      'the name of skin for admin area must start with \'admin/\'.');
+define('_ERROR_BADADMINTEMPLATENAME',          'the name of template for admin area must start with \'admin/\'.');
+define('_SETTINGS_ADMINSKIN',                          'default skin for admin area');
+define('_SETTINGS_BKMKLTSKIN',                         'default skin for bookmarklet');
+define('_MEMBERS_BKMKLTSKIN',                          "bookmarklet skin");
+define('_ADMIN_SYSTEMOVERVIEW_VERSION_LATEST',         'The version which is being used is latest.');
+
 /********************************************
  *        Start New for 3.6x                *
  ********************************************/
@@ -88,7 +173,11 @@ define('_ERROR_INSREQPLUGIN',                                               'Plugin-Installation misslungen, erfordert ')
 define('_ERROR_DELREQPLUGIN',                                          'Lö;schen des Plugins misslungen, benö;tigt von ');
 
 //define('_ADD_ADDLATER',                                                      'Add Later');
+<<<<<<< HEAD
 define('_ADD_ADDLATER',                                                                'Add the dates specified');
+=======
+define('_ADD_ADDLATER',                                'Später hinzufügen');
+>>>>>>> skinnable-master
 
 define('_LOGIN_NAME',                                                          'Name:');
 define('_LOGIN_PASSWORD',                                                      'Password:');
@@ -188,6 +277,7 @@ define('_PLUGIN_OPTIONS_TITLE',                                                     'Options for %s');
 // Plugin file loda error
 define('_PLUGINFILE_COULDNT_BELOADED',                         'Error: plugin file <strong>%s.php</strong> could not be loaded, or it has been set inactive because it does not support some features (check the <a href="?action=actionlog">actionlog</a> for more info)');
 
+<<<<<<< HEAD
 //ITEM add/edit template (for japanese only)
 define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
 define('_ITEM_ADDEDITTEMPLATE_YEAR',                           'Year');
@@ -195,6 +285,9 @@ define('_ITEM_ADDEDITTEMPLATE_MONTH',                               'Month');
 define('_ITEM_ADDEDITTEMPLATE_DAY',                                    'Day');
 define('_ITEM_ADDEDITTEMPLATE_HOUR',                           'Hour');
 define('_ITEM_ADDEDITTEMPLATE_MINUTE',                         'Minute');
+=======
+define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
+>>>>>>> skinnable-master
 
 // Errors
 define('_ERRORS_INSTALLSQL',                                           'install.sql should be deleted');
@@ -304,6 +397,7 @@ define('_CREATED_NEW_CATEGORY_DESC',                                'New category');
 
 // ADMIN.php blog settings
 define('_EBLOG_CURRENT_TEAM_MEMBER',                           'Mitglieder im Team:');
+<<<<<<< HEAD
 
 /********************************************
  *        End New for 3.40                  *
@@ -330,6 +424,34 @@ define('_EBLOG_REQUIREDEMAIL',             'E-Mail Addresse f
 define('_ERROR_COMMENTS_SPAM',      'Your comment was rejected because it did not pass the spam test');
 // END changed/added after 3.22 END
 
+=======
+
+/********************************************
+ *        End New for 3.40                  *
+ ********************************************/
+
+// START changed/added after 3.3 START
+define('_AUTOSAVEDRAFT',               'Auto save draft');
+define('_AUTOSAVEDRAFT_LASTSAVED',     'Last saved: ');
+define('_AUTOSAVEDRAFT_NOTYETSAVED',   'No saves have been made yet');
+define('_AUTOSAVEDRAFT_NOW',           'Auto save now');
+define('_SKIN_PARTS_SPECIAL',          'Special skin parts');
+define('_ERROR_SKIN_PARTS_SPECIAL_FORMAT',             'You must enter a name that exists only out of lowercase letters and digits');
+define('_ERROR_SKIN_PARTS_SPECIAL_DELETE',             'Can\'t delete this skin part');
+define('_CONFIRMTXT_SKIN_PARTS_SPECIAL',               'Do you really want to delete this special skin part?');
+define('_ERROR_PLUGIN_LOAD',           'Plugin could not be loaded, or does not support certain features that are required for it to run on your Nucleus installation (you might want to check the <a href="?action=actionlog">actionlog</a> for more info)');
+// END changed/added after 3.3 END
+
+// START changed/added after 3.22 START
+define('_SEARCHFORM_QUERY',                    'Keywords to search');
+define('_ERROR_EMAIL_REQUIRED',                'Email address is required');
+define('_COMMENTFORM_MAIL',                    'eMail/HTTP');
+define('_COMMENTFORM_EMAIL',           'E-mail:');
+define('_EBLOG_REQUIREDEMAIL',         'E-Mail Addresse für Kommentare voraussetzen?');
+define('_ERROR_COMMENTS_SPAM',      'Your comment was rejected because it did not pass the spam test');
+// END changed/added after 3.22 END
+
+>>>>>>> skinnable-master
 // START changed/added after 3.15 START
 
 define('_LIST_PLUG_SUBS_NEEDUPDATE','Bitte benutzen Sie den \'Update Subscribtion list\'-Taste zum Update der Plugin-Abonnementliste.');
@@ -720,6 +842,7 @@ define('_MANAGE_GENERAL',                   'Verschiedene Einstellungen');
 define('_MANAGE_SKINS',                                'Skins und Vorlagen');
 define('_MANAGE_EXTRA',                                'Spezielle Einstellungen');
 define('_BACKTOMANAGE',                                'Zurück zur Nucleus Verwaltung');
+<<<<<<< HEAD
 
 define('_BACKTOMANAGE',                                'Back to Nucleus management');
 
@@ -730,6 +853,10 @@ define('_BACKTOMANAGE',                            'Back to Nucleus management');
 
 
 
+=======
+// END introduced after v1.1 END
+
+>>>>>>> skinnable-master
 // global stuff
 define('_LOGOUT',                                      'Abmelden');
 define('_LOGIN',                                       'Anmelden');
@@ -784,7 +911,10 @@ define('_ADD_PREVIEW',                             'Vorschau');
 define('_ADD_DISABLE_COMMENTS',                'Kommentare verbieten?');
 define('_ADD_ADDITEM',                         'Artikel hinzufügen');
 define('_ADD_ADDNOW',                          'Jetzt hinzufügen');
+<<<<<<< HEAD
 define('_ADD_ADDLATER',                                'Später hinzufügen');
+=======
+>>>>>>> skinnable-master
 define('_ADD_PLACE_ON',                                'am');
 define('_ADD_ADDDRAFT',                                'Zu Entwürfen hinzufügen');
 define('_ADD_DRAFTNFUTURE',                    'Entwürfe &amp; zukünftige Inhalte');
@@ -1259,3 +1389,19 @@ define('_EDITC_NONMEMBER',                       'kein Mitglied');
 // move item
 define('_MOVE_TITLE',                          'In welchen Hauptpunkt verschieben?');
 define('_MOVE_BTN',                                    'Artikel verschieben');
+
+// ADMIN-template template types
+include_once('adminskinTypes.php');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_NAVILIST',          'navibar for item/comment list');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is blog ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is super ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin URL');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'API entry');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'eventlist updates');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency to');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency by');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'couldn\'t load file');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin actions');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin admin link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin help link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin option setting link');
index d28c90e..7a56157 100644 (file)
  *
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2012 The Nucleus Group
+<<<<<<< HEAD
  * @version $Id: de_Latn_DE.UTF-8.php 1868 2012-05-22 05:10:53Z sakamocchi $
+=======
+ * @version $Id: de_Latn_DE.UTF-8.php 1887 2012-06-17 08:30:08Z sakamocchi $
+>>>>>>> skinnable-master
  */
 
 /********************************************
  *        Start New for 4.0                 *
  ********************************************/
-define('_SKINIE_INVALID_NAMES_DETECTED', 'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
-define('_LISTS_AUTHOR', 'Author');
-define('_OVERVIEW_OTHER_DRAFTS', 'Other Drafts');
+/* argument value for setlocale() in Microsoft's windows operating system */
+define('_LOCALE_IN_WINDOWS',   'deu_deu');
+
+/* labels for date and time measurement unit */
+define('_LABEL_YEAR_UNIT',             'year');
+define('_LABEL_MONTH_UNIT',            'month');
+define('_LABEL_DAY_UNIT',              'day');
+define('_LABEL_HOUR_UNIT',             'hour');
+define('_LABEL_MINUTE_UNIT',   'minute');
+
+// SkinableAdminArea vars
+define('_SKINABLEADMIN_DEL_UNINSTALL_DATA',                    'Delete ADMIN skin data table on uninstall?');
+define('_SKINABLEADMIN_DEFAULT_SKIN',                          'Choose a skin of the management area of the default.');
+define('_SKINABLEADMIN_MEMBER_DEFAULT_SKIN',           'Choose a skin of the management area of you use.');
+define('_SKINABLEADMIN_QMENU_LAYOUT',                          'Admin layout');
+define('_SKINABLEADMIN_PAGE_STR',                                      'page');
+define('_SKINABLEADMIN_BATCH_MOVE',                                    'Item move other category/Category move other blog');
+define('_SKINABLEADMIN_BATCH',                                         'batch');
+define('_SKINABLEADMIN_PAGEHEAD',                                      'Admin page head');
+define('_SKINABLEADMIN_PAGEFOOT',                                      'Admin page foot');
+define('_SKINABLEADMIN_TEMPLATEOVERVIEW',                      'Template overview');
+define('_SKINABLEADMIN_ADMINAREAHEADLINK',                     '[Your site]link');
+define('_SKINABLEADMIN_TPLSETTING_INGENERAL',          'In general');
+define('_SKINABLEADMIN_HEAD_STR',                                      ' head');
+define('_SKINABLEADMIN_BODY_STR',                                      ' body');
+define('_SKINABLEADMIN_FOOT_STR',                                      ' foot');
+define('_SKINABLEADMIN_TEXT_STR',                                      ' text');
+define('_SKINABLEADMIN_TITLE_STR',                                     ' title');
+define('_SKINABLEADMIN_ADMINSETTING_STR',                      ' set editmember is \'admin\'');
+define('_SKINABLEADMIN_NORMALSETTING_STR',                     ' normal');
+define('_SKINABLEADMIN_HELPICONURL_STR',                       ' icon URL');
+define('_SKINABLEADMIN_HELPFILEURL_STR',                       ' help file URL');
+define('_SKINABLEADMIN_ADMINSKINVAR_STR',                      ' skinvars');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_SELECT',      'selectbox used in ADMIN area');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE',       'Table for list indication');
+define('_SKINABLEADMIN_PLUGIN_QUICKMENU',                      'Link to admin page of the plugin shown to the quick-menu');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE',         'Template for option-type %s');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTMETA',         'Template for option-meta-data %s');
+define('_SKINABLEADMIN_MEMBERS_ADMINSKIN',                     "ADMIN-Area's skin");
+
+define('_LOCALE_BG_CYRL_BG',   'Bulgarian in Bulgaria');
+define('_LOCALE_CA_LATN_ES',   'Catalan in Spain');
+define('_LOCALE_CS_LATN_CZ',   'Czech in Czech Republic');
+define('_LOCALE_DE_LATN_DE',   'German in Germany');
+define('_LOCALE_EL_GREK_GR',   'Greek in Greece (Greek script)');
+define('_LOCALE_EN_LATN_US',   'English in United States');
+define('_LOCALE_ES_LATN_ES',   'Spanish in Spain');
+define('_LOCALE_FA_ARAB_IR',   'Persian in Islamic Republic of Iran');
+define('_LOCALE_FI_LATN_FI',   'Finnish in Finland');
+define('_LOCALE_FR_LATN_FR',   'French in France');
+define('_LOCALE_GL_LATN_ES',   'Galician in Spain');
+define('_LOCALE_HR_LATN_HR',   'Croatian in Croatia');
+define('_LOCALE_HU_LATN_HU',   'Hungarian in Hungary');
+define('_LOCALE_ID_LATN_ID',   'Indonesian in Indonesia (Latin script)');
+define('_LOCALE_IT_LATN_IT',   'Italian in Italy');
+define('_LOCALE_JA_JPAN_JP',   'Japanese in Japan');
+define('_LOCALE_KO_KORE_KR',   'Korean in Korea');
+define('_LOCALE_KU_ARAB_TR',   'Kurdish in Turkey (Arabic script)');
+define('_LOCALE_LV_LATN_LV',   'Latvian in Latvia');
+define('_LOCALE_NL_LATN_NL',   'Dutch in Netherlands');
+define('_LOCALE_PL_LATN_PL',   'Polish in Poland');
+define('_LOCALE_PT_LATN_BR',   'Portuguese in Brazil');
+define('_LOCALE_RO_LATN_RO',   'Romainan in Romania');
+define('_LOCALE_RU_CYRL_RU',   'Russian in Russia');
+define('_LOCALE_SK_LATN_SK',   'Slovak in Slovakia');
+define('_LOCALE_SR_CYRL_RS',   'Serbian in Serbia');
+define('_LOCALE_UR_ARAB_PK',   'Urdu in Pakistan');
+define('_LOCALE_VI_LATN_VN',   'Vietnamese in Vietnam (Latin script)');
+define('_LOCALE_ZH_HANS_CN',   'Chinese in China (simplified script)');
+define('_LOCALE_ZH_HANT_TW',   'Chinese in Taiwan (Traditional script)');
+
+define('_FORGOTPASSWORD_TITLE',                                'Forgot your password?');
+define('_FORGOTPASSWORD_MSG',                          'Enter your username and email address below, and you\'ll be sent an e-mail with a link where you can choose a new password.');
+define('_FORGOTPASSWORD_SUBMIT',                       'Send Activation Link" class="transparent');
+define('_FORGOTPASSWORD_CONTACT',                      'If you don\'t remember your exact username, contact the site administrator.');
+define('_SKINIE_INVALID_NAMES_DETECTED',       'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
+define('_LISTS_AUTHOR',                                                'Author');
+define('_OVERVIEW_OTHER_DRAFTS',                       'Other Drafts');
+define('_ERROR_BADADMINSKINNAME',                      'the name of skin for admin area must start with \'admin/\'.');
+define('_ERROR_BADADMINTEMPLATENAME',          'the name of template for admin area must start with \'admin/\'.');
+define('_SETTINGS_ADMINSKIN',                          'default skin for admin area');
+define('_SETTINGS_BKMKLTSKIN',                         'default skin for bookmarklet');
+define('_MEMBERS_BKMKLTSKIN',                          "bookmarklet skin");
+define('_ADMIN_SYSTEMOVERVIEW_VERSION_LATEST',         'The version which is being used is latest.');
+
 /********************************************
  *        Start New for 3.6x                *
  ********************************************/
@@ -88,7 +173,11 @@ define('_ERROR_INSREQPLUGIN',                                               'Plugin-Installation misslungen, erfordert ')
 define('_ERROR_DELREQPLUGIN',                                          'Lö;schen des Plugins misslungen, benö;tigt von ');
 
 //define('_ADD_ADDLATER',                                                      'Add Later');
+<<<<<<< HEAD
 define('_ADD_ADDLATER',                                                                'Add the dates specified');
+=======
+define('_ADD_ADDLATER',                                'Später hinzufügen');
+>>>>>>> skinnable-master
 
 define('_LOGIN_NAME',                                                          'Name:');
 define('_LOGIN_PASSWORD',                                                      'Password:');
@@ -188,6 +277,7 @@ define('_PLUGIN_OPTIONS_TITLE',                                                     'Options for %s');
 // Plugin file loda error
 define('_PLUGINFILE_COULDNT_BELOADED',                         'Error: plugin file <strong>%s.php</strong> could not be loaded, or it has been set inactive because it does not support some features (check the <a href="?action=actionlog">actionlog</a> for more info)');
 
+<<<<<<< HEAD
 //ITEM add/edit template (for japanese only)
 define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
 define('_ITEM_ADDEDITTEMPLATE_YEAR',                           'Year');
@@ -195,6 +285,9 @@ define('_ITEM_ADDEDITTEMPLATE_MONTH',                               'Month');
 define('_ITEM_ADDEDITTEMPLATE_DAY',                                    'Day');
 define('_ITEM_ADDEDITTEMPLATE_HOUR',                           'Hour');
 define('_ITEM_ADDEDITTEMPLATE_MINUTE',                         'Minute');
+=======
+define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
+>>>>>>> skinnable-master
 
 // Errors
 define('_ERRORS_INSTALLSQL',                                           'install.sql should be deleted');
@@ -720,6 +813,7 @@ define('_MANAGE_GENERAL',                   'Verschiedene Einstellungen');
 define('_MANAGE_SKINS',                                'Skins und Vorlagen');
 define('_MANAGE_EXTRA',                                'Spezielle Einstellungen');
 define('_BACKTOMANAGE',                                'Zurück zur Nucleus Verwaltung');
+<<<<<<< HEAD
 
 define('_BACKTOMANAGE',                                'Back to Nucleus management');
 
@@ -730,6 +824,10 @@ define('_BACKTOMANAGE',                            'Back to Nucleus management');
 
 
 
+=======
+// END introduced after v1.1 END
+
+>>>>>>> skinnable-master
 // global stuff
 define('_LOGOUT',                                      'Abmelden');
 define('_LOGIN',                                       'Anmelden');
@@ -784,7 +882,10 @@ define('_ADD_PREVIEW',                             'Vorschau');
 define('_ADD_DISABLE_COMMENTS',                'Kommentare verbieten?');
 define('_ADD_ADDITEM',                         'Artikel hinzufügen');
 define('_ADD_ADDNOW',                          'Jetzt hinzufügen');
+<<<<<<< HEAD
 define('_ADD_ADDLATER',                                'Später hinzufügen');
+=======
+>>>>>>> skinnable-master
 define('_ADD_PLACE_ON',                                'am');
 define('_ADD_ADDDRAFT',                                'Zu Entwürfen hinzufügen');
 define('_ADD_DRAFTNFUTURE',                    'Entwürfe &amp; zukünftige Inhalte');
@@ -1259,3 +1360,19 @@ define('_EDITC_NONMEMBER',                       'kein Mitglied');
 // move item
 define('_MOVE_TITLE',                          'In welchen Hauptpunkt verschieben?');
 define('_MOVE_BTN',                                    'Artikel verschieben');
+
+// ADMIN-template template types
+include_once('adminskinTypes.php');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_NAVILIST',          'navibar for item/comment list');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is blog ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is super ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin URL');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'API entry');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'eventlist updates');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency to');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency by');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'couldn\'t load file');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin actions');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin admin link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin help link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin option setting link');
diff --git a/nucleus/locales/el_Grek_GR.UTF-8.php b/nucleus/locales/el_Grek_GR.UTF-8.php
new file mode 100644 (file)
index 0000000..208230f
--- /dev/null
@@ -0,0 +1,1351 @@
+<?php
+/**
+ * Nucleus CMS Translation File
+ * Greek in Greece (Greek script) (Greek script) (Greek script)
+ * 
+ * Nucleus version: v1.0-v2.5
+ * Authors: Antonis Scandalis (scandalis@datapages.gr) and Vangelis Pantelias (gelitheworm@limoutsis.gr)
+ * Full Revision and update for version 3.1 by Spiros Doikas (www.translatum.gr) on the 30th July 2005.
+ *
+ * @license http://nucleuscms.org/license.txt GNU General Public License
+ * @copyright Copyright (C) 2002-2012 The Nucleus Group
+ * @version $Id: el_Latn_GR.UTF-8.php 1837 2012-05-13 04:12:13Z sakamocchi $
+ */
+
+/********************************************
+ *        Start New for 4.0                 *
+ ********************************************/
+/* argument value for setlocale() in Microsoft's windows operating system */
+define('_LOCALE_IN_WINDOWS',   'ell_grc');
+
+/* labels for date and time measurement unit */
+define('_LABEL_YEAR_UNIT',             'year');
+define('_LABEL_MONTH_UNIT',            'month');
+define('_LABEL_DAY_UNIT',              'day');
+define('_LABEL_HOUR_UNIT',             'hour');
+define('_LABEL_MINUTE_UNIT',   'minute');
+
+// SkinableAdminArea vars
+define('_SKINABLEADMIN_DEL_UNINSTALL_DATA',                    'Delete ADMIN skin data table on uninstall?');
+define('_SKINABLEADMIN_DEFAULT_SKIN',                          'Choose a skin of the management area of the default.');
+define('_SKINABLEADMIN_MEMBER_DEFAULT_SKIN',           'Choose a skin of the management area of you use.');
+define('_SKINABLEADMIN_QMENU_LAYOUT',                          'Admin layout');
+define('_SKINABLEADMIN_PAGE_STR',                                      'page');
+define('_SKINABLEADMIN_BATCH_MOVE',                                    'Item move other category/Category move other blog');
+define('_SKINABLEADMIN_BATCH',                                         'batch');
+define('_SKINABLEADMIN_PAGEHEAD',                                      'Admin page head');
+define('_SKINABLEADMIN_PAGEFOOT',                                      'Admin page foot');
+define('_SKINABLEADMIN_TEMPLATEOVERVIEW',                      'Template overview');
+define('_SKINABLEADMIN_ADMINAREAHEADLINK',                     '[Your site]link');
+define('_SKINABLEADMIN_TPLSETTING_INGENERAL',          'In general');
+define('_SKINABLEADMIN_HEAD_STR',                                      ' head');
+define('_SKINABLEADMIN_BODY_STR',                                      ' body');
+define('_SKINABLEADMIN_FOOT_STR',                                      ' foot');
+define('_SKINABLEADMIN_TEXT_STR',                                      ' text');
+define('_SKINABLEADMIN_TITLE_STR',                                     ' title');
+define('_SKINABLEADMIN_ADMINSETTING_STR',                      ' set editmember is \'admin\'');
+define('_SKINABLEADMIN_NORMALSETTING_STR',                     ' normal');
+define('_SKINABLEADMIN_HELPICONURL_STR',                       ' icon URL');
+define('_SKINABLEADMIN_HELPFILEURL_STR',                       ' help file URL');
+define('_SKINABLEADMIN_ADMINSKINVAR_STR',                      ' skinvars');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_SELECT',      'selectbox used in ADMIN area');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE',       'Table for list indication');
+define('_SKINABLEADMIN_PLUGIN_QUICKMENU',                      'Link to admin page of the plugin shown to the quick-menu');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE',         'Template for option-type %s');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTMETA',         'Template for option-meta-data %s');
+define('_SKINABLEADMIN_MEMBERS_ADMINSKIN',                     "ADMIN-Area's skin");
+
+define('_LOCALE_BG_CYRL_BG',   'Bulgarian in Bulgaria');
+define('_LOCALE_CA_LATN_ES',   'Catalan in Spain');
+define('_LOCALE_CS_LATN_CZ',   'Czech in Czech Republic');
+define('_LOCALE_DE_LATN_DE',   'German in Germany');
+define('_LOCALE_EL_GREK_GR',   'Greek in Greece (Greek script) (Greek script)');
+define('_LOCALE_EN_LATN_US',   'English in United States');
+define('_LOCALE_ES_LATN_ES',   'Spanish in Spain');
+define('_LOCALE_FA_ARAB_IR',   'Persian in Islamic Republic of Iran');
+define('_LOCALE_FI_LATN_FI',   'Finnish in Finland');
+define('_LOCALE_FR_LATN_FR',   'French in France');
+define('_LOCALE_GL_LATN_ES',   'Galician in Spain');
+define('_LOCALE_HR_LATN_HR',   'Croatian in Croatia');
+define('_LOCALE_HU_LATN_HU',   'Hungarian in Hungary');
+define('_LOCALE_ID_LATN_ID',   'Indonesian in Indonesia (Latin script)');
+define('_LOCALE_IT_LATN_IT',   'Italian in Italy');
+define('_LOCALE_JA_JPAN_JP',   'Japanese in Japan');
+define('_LOCALE_KO_KORE_KR',   'Korean in Korea');
+define('_LOCALE_KU_ARAB_TR',   'Kurdish in Turkey (Arabic script)');
+define('_LOCALE_LV_LATN_LV',   'Latvian in Latvia');
+define('_LOCALE_NL_LATN_NL',   'Dutch in Netherlands');
+define('_LOCALE_PL_LATN_PL',   'Polish in Poland');
+define('_LOCALE_PT_LATN_BR',   'Portuguese in Brazil');
+define('_LOCALE_RO_LATN_RO',   'Romainan in Romania');
+define('_LOCALE_RU_CYRL_RU',   'Russian in Russia');
+define('_LOCALE_SK_LATN_SK',   'Slovak in Slovakia');
+define('_LOCALE_SR_CYRL_RS',   'Serbian in Serbia');
+define('_LOCALE_UR_ARAB_PK',   'Urdu in Pakistan');
+define('_LOCALE_VI_LATN_VN',   'Vietnamese in Vietnam (Latin script)');
+define('_LOCALE_ZH_HANS_CN',   'Chinese in China (simplified script)');
+define('_LOCALE_ZH_HANT_TW',   'Chinese in Taiwan (Traditional script)');
+
+define('_FORGOTPASSWORD_TITLE',                                'Forgot your password?');
+define('_FORGOTPASSWORD_MSG',                          'Enter your username and email address below, and you\'ll be sent an e-mail with a link where you can choose a new password.');
+define('_FORGOTPASSWORD_SUBMIT',                       'Send Activation Link" class="transparent');
+define('_FORGOTPASSWORD_CONTACT',                      'If you don\'t remember your exact username, contact the site administrator.');
+define('_SKINIE_INVALID_NAMES_DETECTED',       'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
+define('_LISTS_AUTHOR',                                                'Author');
+define('_OVERVIEW_OTHER_DRAFTS',                       'Other Drafts');
+define('_ERROR_BADADMINSKINNAME',                      'the name of skin for admin area must start with \'admin/\'.');
+define('_ERROR_BADADMINTEMPLATENAME',          'the name of template for admin area must start with \'admin/\'.');
+define('_SETTINGS_ADMINSKIN',                          'default skin for admin area');
+define('_SETTINGS_BKMKLTSKIN',                         'default skin for bookmarklet');
+define('_MEMBERS_BKMKLTSKIN',                          "bookmarklet skin");
+define('_ADMIN_SYSTEMOVERVIEW_VERSION_LATEST',         'The version which is being used is latest.');
+
+/********************************************
+ *        Start New for 3.6x                *
+ ********************************************/
+define('_ERROR_USER_TOO_LONG', 'Please enter a name shorter than 40 characters.');
+define('_ERROR_EMAIL_TOO_LONG', 'Please enter an email shorter than 100 characters.');
+define('_ERROR_URL_TOO_LONG', 'Please enter a website shorter than 100 characters.');
+
+/********************************************
+ *        Start New for 3.62                *
+ ********************************************/
+define('_SETTINGS_ADMINCSS',           'Admin Area Style');
+
+/********************************************
+ *        Start New for 3.50                *
+ ********************************************/
+define('_PLUGS_TITLE_GETPLUGINS',              'get more plugins...');
+define('_ARCHIVETYPE_YEAR', 'year');
+define('_ADMIN_SYSTEMOVERVIEW_LATESTVERSION_TITLE',            'Newer Version Available');
+define('_ADMIN_SYSTEMOVERVIEW_LATESTVERSION_TEXT',             'Upgrade available: v');
+define('_MANAGER_PLUGINSQLAPI_NOTSUPPORT', "Plugin %s was not loaded (does not support SqlApi and you are trying to use a non-mysql db)");
+
+
+/********************************************
+ *        Start New for 3.40                *
+ ********************************************/
+
+// START changed/added after 3.33 START
+define('_MEMBERS_USEAUTOSAVE',                                         'Use the Autosave function?');
+
+define('_TEMPLATE_PLUGIN_FIELDS',                                      'Custom Plugin Fields');
+define('_TEMPLATE_BLOGLIST',                                           'Template Blog List');
+define('_TEMPLATE_BLOGHEADER',                                         'Blog List Header');
+define('_TEMPLATE_BLOGITEM',                                           'Blog List Item');
+define('_TEMPLATE_BLOGFOOTER',                                         'Blog List Footer');
+
+define('_SETTINGS_DEFAULTLISTSIZE',                                    'Default Size of Lists in Admin Area');
+define('_SETTINGS_DEBUGVARS',          'Debug Vars');
+
+define('_CREATE_ACCOUNT_TITLE',                                                'Create Member Account');
+define('_CREATE_ACCOUNT0',                                                     'Create Account');
+define('_CREATE_ACCOUNT1',                                                     'Visitors are not allowed to create a Member Account.<br /><br />');
+define('_CREATE_ACCOUNT2',                                                     'Please contact the website administrator for more information.');
+define('_CREATE_ACCOUNT_USER_DATA',                                    'Account Info.');
+define('_CREATE_ACCOUNT_LOGIN_NAME',                           'Login Name (required):');
+define('_CREATE_ACCOUNT_LOGIN_NAME_VALID',                     'only a-z and 0-9 allowed, no spaces at start/end');
+define('_CREATE_ACCOUNT_REAL_NAME',                                    'Real Name (required):');
+define('_CREATE_ACCOUNT_EMAIL',                                                'Email (required):');
+define('_CREATE_ACCOUNT_EMAIL2',                                       '(must be valid, because an activation link will be sent over there)');
+define('_CREATE_ACCOUNT_URL',                                          'URL:');
+define('_CREATE_ACCOUNT_SUBMIT',                                       'Create Account');
+
+define('_BMLET_BACKTODRAFTS',          'Move back to drafts');
+define('_BMLET_CANCEL',                                'Cancel');
+
+define('_LIST_ITEM_NOCONTENT',                                         'No Comment');
+define('_LIST_ITEM_COMMENTS',                                          '%d Comments');
+
+define('_EDITC_URL',                           'Web site');
+define('_EDITC_EMAIL',                         'E-mail');
+
+define('_MANAGER_PLUGINFILE_NOTFOUND',                         "Plugin %s was not loaded (File not found)");
+/* changed */
+// plugin dependency
+define('_ERROR_INSREQPLUGIN',          'Η εγκατάσταση προσθέτου απέτυχε, απαιτεί ');
+define('_ERROR_DELREQPLUGIN',          'Η διαγραφή προσθέτου απέτυχε, απαιτείται από');
+
+
+//define('_ADD_ADDLATER',                                                              'Add Later');
+define('_ADD_ADDLATER',                        'Προσθήκη αργότερα');
+
+define('_LOGIN_NAME',                          'Όνομα');
+define('_LOGIN_PASSWORD',                      'Κωδικός πρόσβασης');
+
+// changed from _BOOKMARLET_BMARKLFOLLOW
+define('_BOOKMARKLET_BMARKFOLLOW',                                     ' (Works with nearly all browsers)');
+// END changed/added after 3.33 END
+
+// START merge UTF-8 and EUC-JP
+
+// Create New blog
+define('_ADMIN_NOTABILIA',                                                     'Some information');
+define('_ADMIN_PLEASE_READ',                                           "Before you start, here's some <strong>important information</strong>");
+define('_ADMIN_HOW_TO_ACCESS',                                         "After you've created a new weblog, you'll need to perform some actions to make your blog accessible. There are two possibilities:");
+define('_ADMIN_SIMPLE_WAY',                                                    "<strong>Simple:</strong> Create a copy of <code>index.php</code> and modify it to display your new weblog. Further instructions on how to do this will be provided after you've submitted this first form.");
+define('_ADMIN_ADVANCED_WAY',                                          "<strong>Advanced:</strong> Insert the blog content into your current skins using skinvars like <code>&lt;%otherblog()&gt;</code>. This way, you can place multiple blogs on the same page.");
+define('_ADMIN_HOW_TO_CREATE',                                         'Create Weblog');
+
+
+define('_BOOKMARKLET_NEW_CATEGORY',                                    'Item was added, and a new category was created. ');
+define('_BOOKMARKLET_NEW_CATEGORY_EDIT',                       'Click here to edit the name and description of the category.');
+define('_BOOKMARKLET_NEW_WINDOW',                                      'Opens in new window');
+define('_BOOKMARKLET_SEND_PING',                                       'Item was added successfully. Now pinging weblogs.com. Please hold on... (can take a while)'); // NOTE: This string is no longer in used
+
+// END merge UTF-8 and EUC-JP
+
+// <add by shizuki>
+// OVERVIEW screen
+define('_OVERVIEW_SHOWALL',                                                    'Show all blogs');      // <add by shizuki />
+
+// Edit skins
+define('_SKINEDIT_ALLOWEDBLOGS',                                               'Short blog names:');                   // <add by shizuki>
+define('_SKINEDIT_ALLOWEDTEMPLATESS',                                  'Template names:');             // <add by shizuki>
+
+// delete member
+define('_WARNINGTXT_NOTDELMEDIAFILES',                         'Please note that media files will <b>NOT</b> be deleted. (At least not in this Nucleus version)');     // <add by shizuki />
+
+// send Weblogupdate.ping
+define('_UPDATEDPING_MESSAGE',                                         '<h2>Site Updated, Now pinging various weblog listing services...</h2><p>This can take a while...</p><p>If you aren\'t automatically passed through, '); // NOTE: This string is no longer in used
+define('_UPDATEDPING_GOPINGPAGE',                                      'try again'); // NOTE: This string is no longer in used
+define('_UPDATEDPING_PINGING',                                         'Pinging services, please wait...'); // NOTE: This string is no longer in used
+define('_UPDATEDPING_VIEWITEM',                                                'View list of recent items for '); // NOTE: This string is no longer in used
+define('_UPDATEDPING_VISITOWNSITE',                                    'Visit your own site'); // NOTE: This string is no longer in used
+
+// General category
+define('_EBLOGDEFAULTCATEGORY_NAME',                           'General');
+define('_EBLOGDEFAULTCATEGORY_DESC',                           'Items that do not fit in other categories');
+
+// First ITEM
+define('_EBLOG_FIRSTITEM_TITLE',                                       'First Item');
+define('_EBLOG_FIRSTITEM_BODY',                                                'This is the first item in your weblog. Feel free to delete it.');
+
+// New weblog was created
+define('_BLOGCREATED_TITLE',                                           'New weblog created');
+define('_BLOGCREATED_ADDEDTXT',                                                "Your new weblog (%s) has been created. To continue, choose the way you'll want to make it viewable:");
+define('_BLOGCREATED_SIMPLEWAY',                                       "Easiest: A copy of <code>%s.php</code>");
+define('_BLOGCREATED_ADVANCEDWAY',                                     "Advanced: Call the weblog from existing skins");
+define('_BLOGCREATED_SIMPLEDESC1',                                     "Method 1: Create an extra <code>%s.php</code> file");
+define('_BLOGCREATED_SIMPLEDESC2',                                     "Create a file called <code>%s.php</code>, and copy-paste the following code into it:");
+define('_BLOGCREATED_SIMPLEDESC3',                                     "Upload the file next to your existing <code>index.php</code> file, and you should be all set.");
+define('_BLOGCREATED_SIMPLEDESC4',                                     "To finish the weblog creation process, please fill out the final URL for your weblog (the proposed value is a <em>guess</em>, don't take it for granted):");
+define('_BLOGCREATED_ADVANCEDWAY2',                                    "Method 2: Call the weblog from existing skins");
+define('_BLOGCREATED_ADVANCEDWAY3',                                    "To finish the weblog creation process, simply please fill out the final URL for your weblog: (might be the same as another already existing weblog)");
+
+// Donate!
+define('_ADMINPAGEFOOT_OFFICIALURL',                           'http://nucleuscms.org/');
+define('_ADMINPAGEFOOT_DONATEURL',                                     'http://nucleuscms.org/donate.php');
+define('_ADMINPAGEFOOT_DONATE',                                                'Donate!');
+define('_ADMINPAGEFOOT_COPYRIGHT',                                     'The Nucleus Group');
+
+// Quick menu
+define('_QMENU_MANAGE_SYSTEM',                                         'System info');
+
+// Bookmarklet
+define('_BOOKMARKLET_TITLE',                                           'Bookmarklet<!-- and Right Click Menu -->');
+define('_BOOKMARKLET_DESC1',                                           'Bookmarklets allow adding items to your weblog with just one single click. ');
+define('_BOOKMARKLET_DESC2',                                           'After installing these bookmarklets, you\'ll be able to click the \'add to weblog\' button on your browser toolbar, ');
+define('_BOOKMARKLET_DESC3',                                           'and a Nucleus add-item window will popup, ');
+define('_BOOKMARKLET_DESC4',                                           'containing the link and title of the page you were visiting, ');
+define('_BOOKMARKLET_DESC5',                                           'plus any text you might have selected.');
+define('_BOOKMARKLET_BOOKARKLET',                                      'bookmarklet');
+define('_BOOKMARKLET_ANCHOR',                                          'Add to %s');
+define('_BOOKMARKLET_BMARKTEXT',                                       'You can drag the following link to your favorites, or your browsers toolbar: ');
+define('_BOOKMARKLET_BMARKTEST',                                       '(if you want to test the bookmarklet first, click the link)');
+
+define('_BOOKMARKLET_ERROR_SOMETHINGWRONG',                    'Something went wrong');
+define('_BOOKMARKLET_ERROR_COULDNTNEWCAT',                     'Could not create new category');
+
+// BAN
+define('_BAN_EXAMPLE_TITLE',                                           'An example');
+define('_BAN_EXAMPLE_TEXT',                                                    ': "134.58.253.193" will only block one computer, while "134.58.253" will block 256 IP addresses, including the one from the first example.');
+define('_BAN_IP_CUSTOM',                                                       'Custom: ');
+define('_BAN_BANBLOGNAME',                                                     'Only blog %s');
+
+// Plugin Options
+define('_PLUGIN_OPTIONS_TITLE',                                                        'Options for %s');
+
+// Plugin file loda error
+define('_PLUGINFILE_COULDNT_BELOADED',                         'Error: plugin file <strong>%s.php</strong> could not be loaded, or it has been set inactive because it does not support some features (check the <a href="?action=actionlog">actionlog</a> for more info)');
+
+define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
+
+// Errors
+define('_ERRORS_INSTALLSQL',                                           'install.sql should be deleted');
+define('_ERRORS_INSTALLDIR',                                           'install directory should be deleted');  // <add by shizuki />
+define('_ERRORS_INSTALLPHP',                                           'install.php should be deleted');
+define('_ERRORS_UPGRADESDIR',                                          'nucleus/upgrades directory should be deleted');
+define('_ERRORS_CONVERTDIR',                                           'nucleus/convert directory should be deleted');
+define('_ERRORS_CONFIGPHP',                                                    'config.php should be non-writable (chmod to 444)');
+define('_ERRORS_STARTUPERROR1',                                                '<p>One or more of the Nucleus installation files are still present on the webserver, or are writable.</p><p>You should remove these files or change their permissions to ensure security. Here are the files that were found by Nucleus</p> <ul><li>');
+define('_ERRORS_STARTUPERROR2',                                                '</li></ul><p>If you don\'t want to see this error message again, without solving the problem, set <code>$CONF[\'alertOnSecurityRisk\']</code> in <code>globalfunctions.php</code> to <code>0</code>, or do this at the end of <code>config.php</code>.</p>');
+define('_ERRORS_STARTUPERROR3',                                                'Security Risk');
+
+// PluginAdmin tickets by javascript
+define('_PLUGINADMIN_TICKETS_JAVASCRIPT',                      '<p><b>Error occured during automatic addition of tickets.</b></p>');
+
+// Global settings disablesite URL
+define('_SETTINGS_DISABLESITEURL',                                     'Redirect URL:');
+
+// Skin import/export
+define('_SKINIE_SEELEMENT_UNEXPECTEDTAG',                      'UNEXPECTED TAG');
+define('_SKINIE_ERROR_FAILEDOPEN_FILEURL',                     'Failed to open file/URL');
+define('_SKINIE_NAME_CLASHES_DETECTED',                                'Name clashes detected, re-run with allowOverwrite = 1 to force overwrite');
+
+// ACTIONS.php parse_commentform
+define('_ACTIONURL_NOTLONGER_PARAMATER',                       'actionurl is not longer a parameter on commentform skinvars. Moved to be a global setting instead.');
+
+// ADMIN.php addToTemplate 'Query error: '
+define('_ADMIN_SQLDIE_QUERYERROR',                                     'Query error: ');
+
+// backyp.php Backup WARNING
+define('_BACKUP_BACKUPFILE_TITLE',                                     'This is a backup file generated by Nucleus');
+define('_BACKUP_BACKUPFILE_BACKUPDATE',                                'backup-date:');
+define('_BACKUP_BACKUPFILE_NUCLEUSVERSION',                    'Nucleus CMS version:');
+define('_BACKUP_BACKUPFILE_DATABASE_NAME',                     'Nucleus CMS Database name:');
+define('_BACKUP_BACKUPFILE_TABLE_NAME',                                'TABLE:');
+define('_BACKUP_BACKUPFILE_TABLEDATAFOR',                      'Table Data for %s');
+define('_BACKUP_WARNING_NUCLEUSVERSION',                       'WARNING: Only try to restore on servers running the exact same version of Nucleus');
+define('_BACKUP_RESTOR_NOFILEUPLOADED',                                'No file uploaded');
+define('_BACKUP_RESTOR_UPLOAD_ERROR',                          'File Upload Error');
+define('_BACKUP_RESTOR_UPLOAD_NOCORRECTTYPE',          'The uploaded file is not of the correct type');
+define('_BACKUP_RESTOR_UPLOAD_NOZLIB',                         'Cannot decompress gzipped backup (zlib package not installed)');
+define('_BACKUP_RESTOR_SQL_ERROR',                                     'SQL Error: ');
+
+// BLOG.php addTeamMember
+define('_TEAM_ADD_NEWTEAMMEMBER',                                      'Added %s (ID=%d) to the team of blog "%s"');
+
+// ADMIN.php systemoverview()
+define('_ADMIN_SYSTEMOVERVIEW_HEADING',                                'System Overview');
+define('_ADMIN_SYSTEMOVERVIEW_PHPANDMYSQL',                    'PHP and MySQL');
+define('_ADMIN_SYSTEMOVERVIEW_VERSIONS',                       'Versions');
+define('_ADMIN_SYSTEMOVERVIEW_PHPVERSION',                     'PHP version');
+define('_ADMIN_SYSTEMOVERVIEW_MYSQLVERSION',           'MySQL version');
+define('_ADMIN_SYSTEMOVERVIEW_SETTINGS',                       'Settings');
+define('_ADMIN_SYSTEMOVERVIEW_GDLIBRALY',                      'GD Libraly');
+define('_ADMIN_SYSTEMOVERVIEW_MODULES',                                'Modules');
+define('_ADMIN_SYSTEMOVERVIEW_ENABLE',                         'enabled');
+define('_ADMIN_SYSTEMOVERVIEW_DISABLE',                                'disabled');
+define('_ADMIN_SYSTEMOVERVIEW_NUCLEUSSYSTEM',          'Your Nucleus CMS System');
+define('_ADMIN_SYSTEMOVERVIEW_NUCLEUSVERSION',         'Nucleus CMS version');
+define('_ADMIN_SYSTEMOVERVIEW_NUCLEUSPATCHLEVEL',      'Nucleus CMS patch level');
+define('_ADMIN_SYSTEMOVERVIEW_NUCLEUSSETTINGS',                'Important settings');
+define('_ADMIN_SYSTEMOVERVIEW_VERSIONCHECK',           'Check for a new version');
+define('_ADMIN_SYSTEMOVERVIEW_VERSIONCHECK_TXT',       'Check on nucleuscms.org if a new version is available: ');
+define('_ADMIN_SYSTEMOVERVIEW_VERSIONCHECK_URL',       'http://nucleuscms.org/version.php?v=%d&amp;pl=%d');
+define('_ADMIN_SYSTEMOVERVIEW_VERSIONCHECK_TITLE',     'Check for upgrade');
+define('_ADMIN_SYSTEMOVERVIEW_NOT_ADMIN',                      "You haven't enough rights to see the system informations.");
+
+// ENCAPSULATE.php
+define('_ENCAPSULATE_ENCAPSULATE_NOENTRY',                     'No entries');
+
+// globalfunctions.php
+define('_GFUNCTIONS_LOGINPCSHARED_YES',                                'on shared PC');
+define('_GFUNCTIONS_LOGINPCSHARED_NO',                         'on not shared PC');
+define('_GFUNCTIONS_LOGINSUCCESSFUL_TXT',                      'Login successful for %s (%s)');
+define('_GFUNCTIONS_LOGINFAILED_TXT',                          'Login failed for %s');
+define('_GFUNCTIONS_LOGOUT_TXT',                                       '%s is logouted');
+define('_GFUNCTIONS_HEADERSALREADYSENT_FILE',          ' in <code>%s</code> line <code>%s</code>');
+define('_GFUNCTIONS_HEADERSALREADYSENT_TITLE',         ' Page headers already sent');
+define('_GFUNCTIONS_HEADERSALREADYSENT_TXT',           '<p>The page headers have already been sent out%s. This could cause Nucleus not to work in the expected way.</p><p>Usually, this is caused by spaces or newlines at the end of the <code>config.php</code> file, at the end of the translation file or at the end of a plugin file. Please check this and try again.</p><p>If you don\'t want to see this error message again, without solving the problem, set <code>$CONF[\'alertOnHeadersSent\']</code> in <code>globalfunctions.php</code> to <code>0</code></p>');
+define('_GFUNCTIONS_PARSEFILE_FILEMISSING',                    'A file is missing');
+define('_GFUNCTIONS_AN_ERROR_OCCURRED',                                'Sorry. An error occurred.');
+define('_GFUNCTIONS_YOU_AERNT_LOGGEDIN',                       "You aren't logged in.");
+
+// MANAGER.php
+define('_MANAGER_PLUGINFILE_NOCLASS',                          "Plugin %s was not loaded (Class not found in file, possible parse error)");
+define('_MANAGER_PLUGINTABLEPREFIX_NOTSUPPORT',                "Plugin %s was not loaded (does not support SqlTablePrefix)");
+
+// mysql.php
+define('_NO_SUITABLE_MYSQL_LIBRARY',                           "<p>No suitable mySQL library was found to run Nucleus</p>");
+
+// PLUGIN.php
+define('_ERROR_PLUGIN_NOSUCHACTION',                           'No Such Action');
+
+// PLUGINADMIN.php
+define('_ERROR_INVALID_PLUGIN',                                                'Invalid plugin');
+
+// showlist.php
+define('_LIST_PLUGS_DEPREQ',                                           'Plugin(s) requires:');
+define('_LIST_SKIN_PREVIEW',                                           "Preview for '%s' skin");
+define('_LIST_SKIN_PREVIEW_VIEWLARGER',                                "View larger");
+define('_LIST_SKIN_README',                                                    "More info on the '%s' skin");
+define('_LIST_SKIN_README_TXT',                                                'Read me');
+
+// BLOG.php createNewCategory()
+define('_CREATED_NEW_CATEGORY_NAME',                           'newcat');
+define('_CREATED_NEW_CATEGORY_DESC',                           'New category');
+
+// ADMIN.php blog settings
+define('_EBLOG_CURRENT_TEAM_MEMBER',                           'Members currently on your team:');
+
+/********************************************
+ *        End New for 3.40                  *
+ ********************************************/
+
+// START changed/added after 3.3 START
+define('_AUTOSAVEDRAFT',               'Auto save draft');
+define('_AUTOSAVEDRAFT_LASTSAVED',     'Last saved: ');
+define('_AUTOSAVEDRAFT_NOTYETSAVED',   'No saves have been made yet');
+define('_AUTOSAVEDRAFT_NOW',           'Auto save now');
+define('_SKIN_PARTS_SPECIAL',          'Special skin parts');
+define('_ERROR_SKIN_PARTS_SPECIAL_FORMAT',             'You must enter a name that exists only out of lowercase letters and digits');
+define('_ERROR_SKIN_PARTS_SPECIAL_DELETE',             'Can\'t delete this skin part');
+define('_CONFIRMTXT_SKIN_PARTS_SPECIAL',               'Do you really want to delete this special skin part?');
+define('_ERROR_PLUGIN_LOAD',           'Plugin could not be loaded, or does not support certain features that are required for it to run on your Nucleus installation (you might want to check the <a href="?action=actionlog">actionlog</a> for more info)');
+// END changed/added after 3.3 END
+
+// START changed/added after 3.22 START
+define('_SEARCHFORM_QUERY',                    'Keywords to search');
+define('_ERROR_EMAIL_REQUIRED',                'Email address is required');
+define('_COMMENTFORM_MAIL',            'E-mail/HTTP');
+define('_COMMENTFORM_EMAIL',           'E-mail:');
+define('_EBLOG_REQUIREDEMAIL',         'Require E-mail address with comments?');
+define('_ERROR_COMMENTS_SPAM',      'Your comment was rejected because it did not pass the spam test');
+// END changed/added after 3.22 END
+
+// START changed/added after 315 START
+
+define('_LIST_PLUG_SUBS_NEEDUPDATE','Per favore usa il pulsante \'Aggiorna lista di sottoscrizione\' per aggiornare la lista di sottoscrizione dei plugin.');
+define('_LIST_PLUGS_DEP',                      'I Plugin richiedono:');
+
+// END changed/added after 3.15
+
+// START changed/added after 3.1 START
+
+// comments list per weblog
+define('_COMMENTS_BLOG',                       'Όλα τα σχόλια για το ιστολόγιο');
+define('_NOCOMMENTS_BLOG',                     'Δεν έχουν γινει σχόλια σε άρθρα αυτού του ιστολογίου');
+define('_BLOGLIST_COMMENTS',           'Σχόλια');
+define('_BLOGLIST_TT_COMMENTS',                'Μια λίστα με όλα τα σχόλια που έχουν γίνει σε άρθρα αυτού του ιστολογίου');
+
+
+// for use in archivetype-skinvar
+define('_ARCHIVETYPE_DAY',                     'ημέρα');
+define('_ARCHIVETYPE_MONTH',           'μήνας');
+
+// tickets (prevents malicious users to trick an admin to perform actions he doesn't want)
+define('_ERROR_BADTICKET',                     'Μη έγκυρο ή ληγμένο εισιτήριο.');
+
+// cookie prefix
+define('_SETTINGS_COOKIEPREFIX',       'Πρόθεμα cookie');
+
+// account activation
+define('_ERROR_NOLOGON_NOACTIVATE',    'Δεν είναι δυνατή η αποστολή συνδέσμου ενεργοποίησης. Δεν σας επιτρέπεται να συνδεθείτε.');
+define('_ERROR_ACTIVATE',                      'Το κλειδί ενεργοποίησης δεν υπάρχει, δεν είναι έγκυρο ή έχει λήξει.');
+define('_ACTIONLOG_ACTIVATIONLINK', 'Ο σύνδεσμος ενεργοποίησης έχει σταλεί');
+define('_MSG_ACTIVATION_SENT',         'Ένας σύνδεσμος ενεργοποίησης έχει σταλεί με e-mail.');
+
+// activation link emails
+define('_ACTIVATE_REGISTER_MAIL',      "Γεια σας <%memberName%>,\n\nΠρέπει να ενεργοποιήσετε τον λογαριασμό σας στο <%siteName%> (<%siteUrl%>).\nΜπορείτε να το κάνετε πηγαίνοντας στον παρακάτω σύνδεσμο: \n\n\t<%activationUrl%>\n\nΈχετε 2 περιθώριο για να το κάνετε. Ύστερα, ο σύνδεσμος ενεργοποίησης δεν θα είναι πλέον έγκυρος.");
+define('_ACTIVATE_REGISTER_MAILTITLE', "Ενεργοποιήστε τον λογαριασμό σας '<%memberName%>'");
+define('_ACTIVATE_REGISTER_TITLE',     'Καλώς όρισες <%memberName%>');
+define('_ACTIVATE_REGISTER_TEXT',      'Έχετε σχεδόν τελειώσει. Παρακαλώ επιλέξτε έναν κωδικό πρόσβασης για τον παρακάτω λογαριασμό σας.');
+define('_ACTIVATE_FORGOT_MAIL',                "Hi <%memberName%>,\n\nΧρησιμοποιώντας τον παρακάτω σύνδεσμο, μπορείτε να επιλέξτε έναν νέο κωδικό πρόσβασης για τον λογαριασμό σας στο <%siteName%> (<%siteUrl%>) επιλέγοντας έναν νέο κωδικό πρόσβασης .\n\n\t<%activationUrl%>\n\nΈχετε 2 περιθώριο για να το κάνετε. Ύστερα, ο σύνδεσμος ενεργοποίησης δεν θα είναι πλέον έγκυρος.");
+define('_ACTIVATE_FORGOT_MAILTITLE',"Ενεργοποιήστε ξανά στον λογαριασμό σας '<%memberName%>'");
+define('_ACTIVATE_FORGOT_TITLE',       'Καλώς όρισες <%memberName%>');
+define('_ACTIVATE_FORGOT_TEXT',                'Μπορείτε να επιλέξτε έναν νέο κωδικό πρόσβασης για τον λογαριασμό σας παρακάτω:');
+define('_ACTIVATE_CHANGE_MAIL',                "Hi <%memberName%>,\n\nΚαθώς η διεύθυνσή σας e-mail έχει αλλάξει, θα χρειαστε να ενεργοποιήσετε ξανά το λογαριασμό σας στο <%siteName%> (<%siteUrl%>).\nΜπορείτε να το κάνετε πηγαίνοντας στον παρακάτω σύνδεσμο: \n\n\t<%activationUrl%>\n\nΈχετε 2 περιθώριο για να το κάνετε. Ύστερα, ο σύνδεσμος ενεργοποίησης δεν θα είναι πλέον έγκυρος.");
+define('_ACTIVATE_CHANGE_MAILTITLE',"Ενεργοποιήστε ξανά στον λογαριασμό σας '<%memberName%>'");
+define('_ACTIVATE_CHANGE_TITLE',       'Καλώς όρισες <%memberName%>');
+define('_ACTIVATE_CHANGE_TEXT',                'Η διεύθυνσή σας επαληθεύτηκε. Ευχαριστούμε!');
+define('_ACTIVATE_SUCCESS_TITLE',      'Η ενεργοποίηση πέτυχε');
+define('_ACTIVATE_SUCCESS_TEXT',       'Ο λογαριασμός σας ενεργοποιήθηκε με επιτυχία.');
+define('_MEMBERS_SETPWD',                      'Ορισμός κωδικού πρόσβασης');
+define('_MEMBERS_SETPWD_BTN',          'Ορισμός κωδικού πρόσβασης');
+define('_QMENU_ACTIVATE',                      'Ενεργοποίηση λογαριασμού');
+define('_QMENU_ACTIVATE_TEXT',         '<p>Αφού ενεργοποιήσετε τον λογαριασμό σας, μπορείτε να αρχίσετε να τον χρησιμοποιείτε αφού <a href="index.php?action=showlogin">συνδεθείτε</a>.</p>');
+
+define('_PLUGS_BTN_UPDATE',                    'Ενημέρωση λίστας συνδρομής');
+
+// global settings
+define('_SETTINGS_JSTOOLBAR',          'Γραμμή εργαλείων σε στυλ Javascript');
+define('_SETTINGS_JSTOOLBAR_FULL',     'Πλήρης γραμμή εργαλείων (IE)');
+define('_SETTINGS_JSTOOLBAR_SIMPLE','Απλή γραμμή εργαλείων (Όχι IE)');
+define('_SETTINGS_JSTOOLBAR_NONE',     'Απενεργοποίηση γραμμής εργαλείων');
+define('_SETTINGS_URLMODE_HELP',       '(Info: <a href="documentation/tips.html#searchengines-fancyurls">Πώς να ενεργοποιήσετε τα προχωρημένα URL</a>)');
+
+// extra plugin settings part when editing categories/members/blogs/...
+define('_PLUGINS_EXTRA',                       'Επιπρόσθετες ρυθμίσεις προσθέτων');
+
+// itemlist info column keys
+define('_LIST_ITEM_BLOG',                      'ιστολόγιο:');
+define('_LIST_ITEM_CAT',                       'κατ:');
+define('_LIST_ITEM_AUTHOR',                    'συντάκτης:');
+define('_LIST_ITEM_DATE',                      'ημερομηνία:');
+define('_LIST_ITEM_TIME',                      'ώρα:');
+
+// indication of registered members in comments list
+define('_LIST_COMMENTS_MEMBER',        '(μέλος)');
+
+// batch operations
+define('_BATCH_WITH_SEL',                      'Με τα επιλεγμένα:');
+define('_BATCH_EXEC',                          'Εκτέλεση');
+
+// quickmenu
+define('_QMENU_HOME',                          'Αρχική');
+define('_QMENU_ADD',                           'Προσθήκη άρθρου');
+define('_QMENU_ADD_SELECT',                    '-- επιλέξτε --');
+define('_QMENU_USER_SETTINGS',         'Ρυθμίσεις');
+define('_QMENU_USER_ITEMS',                    'Άρθρα');
+define('_QMENU_USER_COMMENTS',         'Σχόλια');
+define('_QMENU_MANAGE',                                'Διαχείριση');
+define('_QMENU_MANAGE_LOG',                    'Ημερολόγιο καταγραφής ενεργειών');
+define('_QMENU_MANAGE_SETTINGS',       'Γενικές ρυθμίσεις');
+define('_QMENU_MANAGE_MEMBERS',                'Μέλη');
+define('_QMENU_MANAGE_NEWBLOG',                'Νέο ιστολόγιο');
+define('_QMENU_MANAGE_BACKUPS',                'Αντίγραφα ασφαλείας');
+define('_QMENU_MANAGE_PLUGINS',                'Πρόσθετα');
+define('_QMENU_LAYOUT',                                'Διάταξη');
+define('_QMENU_LAYOUT_SKINS',          'Εμφανίσεις');
+define('_QMENU_LAYOUT_TEMPL',          'Πρότυπα');
+define('_QMENU_LAYOUT_IEXPORT',                'Εισαγωγή/Εξαγωγή');
+define('_QMENU_PLUGINS',                       'Πρόσθετα');
+
+// quickmenu on logon screen
+define('_QMENU_INTRO',                         'Εισαγωγή');
+define('_QMENU_INTRO_TEXT',                    '<p>Αυτή είναι η σελίδα σύνδεσης στο Nucleus CMS, το σύστημα διαχείρισης περιεχομένου που χρησιμοποιείτε για τη λειτουργία αυτού του δικτυακού τόπου.</p><p>Εάν έχετε λογαριασμό, μπορείτε να συνδεθείτε και να αρχίσετε να δημοσιεύεται νέα άρθρα.</p>');
+
+// helppages for plugins
+define('_ERROR_PLUGNOHELPFILE',                'Δεν είναι δυνατή η εύρεση του αρχείου βοηθείας για αυτό το πρόσθετο');
+define('_PLUGS_HELP_TITLE',                    'Σελίδα βοήθειας για το πρόσθετο');
+define('_LIST_PLUGS_HELP',                     'βοήθεια');
+
+
+// END changed/started after 3.1
+
+
+
+// general settings (security)
+define('_SETTINGS_EXTAUTH',                    'Ενεργοποίηση εξωτερικής πιστοποίησης ταυτότητας');
+define('_WARNING_EXTAUTH',                     'Προειδοποίηση: Ενεργοποιήστε το μόνο αν το χρειάζεστε.');
+
+// member profile
+define('_MEMBERS_BYPASS',                      'Χρήση εξωτερικής πιστοποίησης ταυτότητας');
+
+// 'always include in search' blog setting (yes/no) [in v2.5beta, the 'always' part wasn't clear]
+define('_EBLOG_SEARCH',                                '<em>Πάντα</em> να συμπεριλαμβάνεται στην αναζήτηση');
+
+// END changed/added after v2.5beta
+
+// START introduced after v2.0 START
+
+// media library
+define('_MEDIA_VIEW',                          'Προβολή');
+define('_MEDIA_VIEW_TT',                       'Προβολή αρχείου (άνοιγμα σε νέο παράθυρο)');
+define('_MEDIA_FILTER_APPLY',          'Εφαρμογή φίλτρου');
+define('_MEDIA_FILTER_LABEL',          'Φίλτρο: ');
+define('_MEDIA_UPLOAD_TO',                     'Αποστολή στο...');
+define('_MEDIA_UPLOAD_NEW',            'Αποστολή νέου αρχείου...');
+define('_MEDIA_COLLECTION_SELECT',     'Επιλογή');
+define('_MEDIA_COLLECTION_TT',         'Εναλλαγή σε αυτή την κατηγορία');
+define('_MEDIA_COLLECTION_LABEL',      'Τρέχουσα κατηγορία: ');
+
+// tooltips on toolbar
+define('_ADD_ALIGNLEFT_TT',                    'Αριστερή στοίχιση');
+define('_ADD_ALIGNRIGHT_TT',           'Δεξιά στοίχιση');
+define('_ADD_ALIGNCENTER_TT',          'Κεντρική στοίχιση');
+
+
+// generic upload failure
+define('_ERROR_UPLOADFAILED',          'Η αποστολή απέτυχε');
+
+// END introduced after v2.0 END
+
+// START introduced after v1.5 START
+
+// posting to the past/edit timestamps
+define('_EBLOG_ALLOWPASTPOSTING',      'Επιτρέπεται η δημοσίευση σε παρελθούσα ημερομηνία');
+define('_ADD_CHANGEDATE',                      'Ενημέρωση ώρας');
+define('_BMLET_CHANGEDATE',            'Ενημέρωση ώρας');
+
+// skin import/export
+define('_OVERVIEW_SKINIMPORT',         'Εισάγωγη/Εξαγωγή εμφάνισης...');
+
+// skin settings
+define('_PARSER_INCMODE_NORMAL',       'Κανονική');
+define('_PARSER_INCMODE_SKINDIR',      'Χρήση φακέλου εμφανίσεων');
+define('_SKIN_INCLUDE_MODE',           'Λειτουργία συμπερίληψης');
+define('_SKIN_INCLUDE_PREFIX',         'Συμπερίληψη προθέματος');
+
+// global settings
+define('_SETTINGS_BASESKIN',           'Βασική εμφάνιση');
+define('_SETTINGS_SKINSURL',           'URL εμφανίσεων');
+define('_SETTINGS_ACTIONSURL',         'Πλήρες URL για το action.php');
+
+// category moves (batch)
+define('_ERROR_MOVEDEFCATEGORY',       'Δεν είναι δυνατή η μεταφορά της προεπιλεγμένης κατηγορίας');
+define('_ERROR_MOVETOSELF',            'Δεν είναι δυνατή η μεταφορά της κατηγορίας (το ιστολόγιο προορισμού ειναι το ίδιο με το ιστολόγιο προέλευσης)');
+define('_MOVECAT_TITLE',                       'Επιλέξτε ιστολόγιο στο οποίο να μετακινηθεί η κατηγορία');
+define('_MOVECAT_BTN',                         'Μετακίνηση κατηγορίας');
+
+// URLMode setting
+define('_SETTINGS_URLMODE',            'Λειτουργία URL');
+define('_SETTINGS_URLMODE_NORMAL',     'Κανονική');
+define('_SETTINGS_URLMODE_PATHINFO','Προχωρημένη');
+
+// Batch operations
+define('_BATCH_NOSELECTION',           'Δεν εχει επιλεγεί τίποτα για να πραγματοποιηθούν ενέργειας σε αυτό');
+define('_BATCH_ITEMS',                         'Μαζική λειτουργία στα άρθρα');
+define('_BATCH_CATEGORIES',            'Μαζική λειτουργία σε κατηγορίες');
+define('_BATCH_MEMBERS',                       'Μαζική λειτουργία σε μέλη');
+define('_BATCH_TEAM',                          'Μαζική λειτουργία σε ομάδες μελών');
+define('_BATCH_COMMENTS',                      'Μαζική λειτουργία σε σχόλια');
+define('_BATCH_UNKNOWN',                       'Άγνωστη μαζική λειτουργία: ');
+define('_BATCH_EXECUTING',                     'Εκτέλεση');
+define('_BATCH_ONCATEGORY',            'στην κατηγορία');
+define('_BATCH_ONITEM',                        'στο άρθρο');
+define('_BATCH_ONCOMMENT',             'στο σχόλιο');
+define('_BATCH_ONMEMBER',                      'στο μέλος');
+define('_BATCH_ONTEAM',                        'στην ομάδα μελών');
+define('_BATCH_SUCCESS',                       'Επιτυχία!');
+define('_BATCH_DONE',                          'Ολοκληρώθηκε!');
+define('_BATCH_DELETE_CONFIRM',        'Επιβεβαίωση μαζικής διαγραφής');
+define('_BATCH_DELETE_CONFIRM_BTN','Επιβεβαίωση μαζικής διαγραφής');
+define('_BATCH_SELECTALL',                     'επιλογή όλων');
+define('_BATCH_DESELECTALL',           'αποεπιλογή όλων');
+
+// batch operations: options in dropdowns
+define('_BATCH_ITEM_DELETE',           'Διαγραφή');
+define('_BATCH_ITEM_MOVE',                     'Μετακίνηση');
+define('_BATCH_MEMBER_DELETE',         'Διαγραφή');
+define('_BATCH_MEMBER_SET_ADM',        'Απόδοση δικαιωμάτων διαχειριστή');
+define('_BATCH_MEMBER_UNSET_ADM',      'Στέρηση δικαιωμάτων διαχειριστή');
+define('_BATCH_TEAM_DELETE',           'Διαγραφή από την ομάδα');
+define('_BATCH_TEAM_SET_ADM',          'Απόδοση δικαιωμάτων διαχειριστή');
+define('_BATCH_TEAM_UNSET_ADM',        'Στέρηση δικαιωμάτων διαχειριστή');
+define('_BATCH_CAT_DELETE',            'Διαγραφή');
+define('_BATCH_CAT_MOVE',                      'Μετακίνηση σε άλλο ιστολόγιο');
+define('_BATCH_COMMENT_DELETE',        'Διαγραφή');
+
+// itemlist: Add new item...
+define('_ITEMLIST_ADDNEW',                     'Προσθήκη νέου άρθρου...');
+define('_ADD_PLUGIN_EXTRAS',           'Επιπλέον ρυθμίσεις Προσθέτων');
+
+// errors
+define('_ERROR_CATCREATEFAIL',         'Δεν ήταν δυνατή η δημιουργία νέας κατηγορίας');
+define('_ERROR_NUCLEUSVERSIONREQ',     'Αυτό το πρόσθετο απαιτεί μία νεότερη έκδοση του Nucleus: ');
+
+// backlinks
+define('_BACK_TO_BLOGSETTINGS',        'Επιστροφή στις ρυθμίσεις του ιστολογίου');
+
+// skin import export
+define('_SKINIE_TITLE_IMPORT',         'Εισαγωγή');
+define('_SKINIE_TITLE_EXPORT',         'Εξαγωγή');
+define('_SKINIE_BTN_IMPORT',           'Εισαγωγή');
+define('_SKINIE_BTN_EXPORT',           'Εξαγωγή επιλεγμένων εμφανίσεων/προτύπων');
+define('_SKINIE_LOCAL',                                'Εισαγωγή από τοπικό αρχείο:');
+define('_SKINIE_NOCANDIDATES',         'Δεν βρέθηκαν υποψήφιοι για εισαγωγή στο φάκελο των εμφανίσεων');
+define('_SKINIE_FROMURL',                      'Εισαγωγή από το URL:');
+define('_SKINIE_EXPORT_INTRO',         'Επιλέξτε παρακάτω τις εμφανίσεις και τα πρότυπα που θέλετε να εξάγετε');
+define('_SKINIE_EXPORT_SKINS',         'Εμφανίσεις');
+define('_SKINIE_EXPORT_TEMPLATES',     'Πρότυπα');
+define('_SKINIE_EXPORT_EXTRA',         'Επιπλέον πληροφορίες');
+define('_SKINIE_CONFIRM_OVERWRITE','Επανεγγραφή των ήδη υπαρχόντων εμφανίσεων (βλ. nameclashes)');
+define('_SKINIE_CONFIRM_IMPORT',       'Ναι, επιθυμώ να το εισάγω');
+define('_SKINIE_CONFIRM_TITLE',                'Πρόκειται να εισαχθούν πρότυπα εμφανίσεων');
+define('_SKINIE_INFO_SKINS',           'Εμφανίσεις στο αρχείο:');
+define('_SKINIE_INFO_TEMPLATES',       'Πρότυπα στο αρχείο:');
+define('_SKINIE_INFO_GENERAL',         'Πληροφορίες:');
+define('_SKINIE_INFO_SKINCLASH',       'Το όνομα της εμφάνισης είναι ίδιο με:');
+define('_SKINIE_INFO_TEMPLCLASH',      'Το όνομα του προτύπου είναι ίδιο με:');
+define('_SKINIE_INFO_IMPORTEDSKINS','Εισαγώμενες εμφανίσεις:');
+define('_SKINIE_INFO_IMPORTEDTEMPLS','Εισαγωμενα πρότυπα:');
+define('_SKINIE_DONE',                         'Η εισαγωγή ολοκληρώθηκε');
+
+define('_AND',                                         'και');
+define('_OR',                                          'ή');
+
+// empty fields on template edit
+define('_EDITTEMPLATE_EMPTY',          'κενό πεδίο (κάντε κλικ για επεξεργασία)');
+
+// skin overview list
+define('_LIST_SKINS_INCMODE',          'Λειτουργία συμπερίληψης:');
+define('_LIST_SKINS_INCPREFIX',                'Πρόθεμα συμπερίληψης:');
+define('_LIST_SKINS_DEFINED',          'Καθορισμένα μέρη:');
+
+// backup
+define('_BACKUPS_TITLE',                       'Αντίγραφο ασφάλειας/Επαναφορά');
+define('_BACKUP_TITLE',                                'Αντίγραφο ασφάλειας');
+define('_BACKUP_INTRO',                        'Πατήστε το παρακάτω κουμπί για να δημιουργήσετε ένα αντίγραφο ασφαλείας της βάσης δεδομένων σας. Θα σας προταθεί να αποθηκεύσετε ένα αρχείο αντιγράφου ασφαλείας. Αποθηκεύστε το σε ένα ασφαλές μέρος.');
+define('_BACKUP_ZIP_YES',                      'Προσπάθεια για συμπίεση');
+define('_BACKUP_ZIP_NO',                       'Χωρίς συμπίεση');
+define('_BACKUP_BTN',                          'Δημιουργία αντιγράφου ασφαλείας');
+define('_BACKUP_NOTE',                         '<b>Σημείωση:</b> Μόνο τα περιεχόμενα της βάσης δεδομένων αποθηκεύονται στο αντίγραφο ασφαλείας. Τα αρχεία και οι ρυθμίσεις πολυμέσων στο config.php συνεπώς <b>ΔΕΝ</b> συμπεριλαμβάνονται στο αντίγραφο ασφαλείας.');
+define('_RESTORE_TITLE',                       'Επαναφορά');
+define('_RESTORE_NOTE',                        '<b>ΠΡΟΕΙΔΟΠΟΙΗΣΗ:</b> Κάνοντας επαναφορά από ένα αντίγραφο ασφαλείας θα <b>ΔΙΑΓΡΑΨΕΤΕ</b> όλα τα τρέχοντα δεδομένα του Nucleus στη βάση δεδομένων! Κάντετο μόνο αν είστε πραγματικά σίγουροι!    <br />  <b>Σημείωση:</b> Βεβαιωθείτε ότι η έκδοση του Nucleus στην οποία δημιουργήσατε το αντίγραφο ασφαλείας είναι η ίδια με την έκδοση που εκτελείτε τώρα! Δεν θα λειτουργήσει σε αντίθετη περίπτωση');
+define('_RESTORE_INTRO',                       'Επιλέξτε το αρχείο αντιγράφου ασφαλείας (θα γίνει αποστολή στον διακομιστή) και κάντε κλικ στο Επαναφορά για έναρξη.');
+define('_RESTORE_IMSURE',                      'Ναι, είμαι σίγουρος ότι επιθυμώ να το κάνω!');
+define('_RESTORE_BTN',                         'Επαναφορά από αρχείο');
+define('_RESTORE_WARNING',                     '(βεβαιωθείτε ότι επαναφέρετε το σωστό αντίγραφο ασφάλειας, ίσως να κάνετε και ένα νέο αντίγραφο ασφάλειας πριν να ξεκινήσετε)');
+define('_ERROR_BACKUP_NOTSURE',        'Θα χρειαστεί να τσεκάρετε το \'Έίμαι σίγουρος\' testbox');
+define('_RESTORE_COMPLETE',            'Η επαναφορά ολοκληρώθηκε');
+
+// new item notification
+define('_NOTIFY_NI_MSG',                       'Ένα νέο άρθρο έχει δημοσιευθεί:');
+define('_NOTIFY_NI_TITLE',                     'Νέο άρθρο!');
+define('_NOTIFY_KV_MSG',                       'Ψήφος karma στο άρθρο:');
+define('_NOTIFY_KV_TITLE',                     'Nucleus karma:');
+define('_NOTIFY_NC_MSG',                       'Σχόλιο στο άρθρο:');
+define('_NOTIFY_NC_TITLE',                     'Σχόλιο Nucleus:');
+define('_NOTIFY_USERID',                       'ID χρήστη:');
+define('_NOTIFY_USER',                         'Χρήστης:');
+define('_NOTIFY_COMMENT',                      'Σχόλιο:');
+define('_NOTIFY_VOTE',                         'Ψήφος:');
+define('_NOTIFY_HOST',                         'Διακομιστής:');
+define('_NOTIFY_IP',                           'IP:');
+define('_NOTIFY_MEMBER',                       'Μέλος:');
+define('_NOTIFY_TITLE',                                'Τίτλος:');
+define('_NOTIFY_CONTENTS',                     'Περιεχόμενα:');
+
+// member mail message
+define('_MMAIL_MSG',                           'Σας έχει σταλεί ένα μήνυμα από');
+define('_MMAIL_FROMANON',                      'έναν ανώνυμο επισκέπτη');
+define('_MMAIL_FROMNUC',                       'Δημοσιεύθηκε από ένα ιστολόγιο Nucleus στο');
+define('_MMAIL_TITLE',                         'Ένα μήνυμα από');
+define('_MMAIL_MAIL',                          'Μήνυμα:');
+
+// END introduced after v1.5 END
+
+
+// START introduced after v1.1 START
+
+// bookmarklet buttons
+define('_BMLET_EDIT',                          'Επεξεργασία');
+define('_BMLET_ADD',                           'Προσθήκη');
+define('_BMLET_DELETE',                                'Διαγραφή');
+define('_BMLET_BODY',                          'Σώμα');
+define('_BMLET_MORE',                          'Περισσότερα');
+define('_BMLET_OPTIONS',                       'Επιλογές');
+define('_BMLET_PREVIEW',                       'Προεπισκόπηση');
+
+// used in bookmarklet
+define('_ITEM_UPDATED',                        'Το άρθρο ενημερώθηκε');
+define('_ITEM_DELETED',                                'Το άρθρο διαγράφηκε');
+
+// plugins
+define('_CONFIRMTXT_PLUGIN',           'Είστε σίγουροι ότι θέλετε να διαγράψετε το πρόσθετο με το όνομα');
+define('_ERROR_NOSUCHPLUGIN',          'Δεν υπάρχει τέτοιο πρόσθετο');
+define('_ERROR_DUPPLUGIN',                     'Λυπούμαστε, το πρόσθετο αυτό έχει ήδη εγκατασταθεί');
+define('_ERROR_PLUGFILEERROR',         'Δεν υπάρχει τέτοιο πρόσθετο, ή οι άδειες έχουν ορισθεί λανθασμένα');
+define('_PLUGS_NOCANDIDATES',          'Δεν βρέθηκαν πρόσθετα');
+
+define('_PLUGS_TITLE_MANAGE',          'Διαχείριση προσθέτων');
+define('_PLUGS_TITLE_INSTALLED',       'Ήδη εγκατεστημένα');
+define('_PLUGS_TITLE_UPDATE',          'Ενημέρωση λίστας εγγραφών');
+define('_PLUGS_TEXT_UPDATE',           'Το Nucleus διατηρεί μια προσωρινή μνήμη (cache) των γεγονότων εγγραφής των προσθέτων. Όταν αναβαθμίζετε ένα πρόσθετο αντικαθιστώντας το αρχείο του, πρέπει να εκτελείτε αυτό το αρχείο ενημέρωσης για να βεβαιωθείτε ότι γίνεται προσωρινή αποθήκευση των σωστών εγγραφών.');
+define('_PLUGS_TITLE_NEW',                     'Εγκατάσταση νέου προσθέτου');
+define('_PLUGS_ADD_TEXT',                      'Παρακάτω υπάρχει μια λίστα όλων των αρχείων στον φάκελο των προσθέτων, τα οποία πιθανώς να είναι μη εγκατεστημένα πρόσθετα. Βεβαιωθείτε ότι είστε <strong>πραγματικά σίγουροι</strong> ότι είοναι ένα πρόσθετο πριν το προσθέσετε.');
+define('_PLUGS_BTN_INSTALL',           'Εγκατάσταση Προσθέτου');
+define('_BACKTOOVERVIEW',                      'Επιστροφή στην προεπισκόπηση');
+
+// editlink
+define('_TEMPLATE_EDITLINK',           'Επεξεργασία συνδέσμου άρθρου');
+
+// add left / add right tooltips
+define('_ADD_LEFT_TT',                         'Προσθήκη αριστερού πλαισίου');
+define('_ADD_RIGHT_TT',                                'Προσθήκη δεξιου πλαισίου');
+
+// add/edit item: new category (in dropdown box)
+define('_ADD_NEWCAT',                          'Νέα κατηγορία...');
+
+// new settings
+define('_SETTINGS_PLUGINURL',          'URL προσθέτου');
+define('_SETTINGS_MAXUPLOADSIZE',      'Μέγιστο μέγεθος αρχείου για αποστολή (bytes)');
+define('_SETTINGS_NONMEMBERMSGS',      'Να επιτρέπεται η απόστολή μηνυμάτων από μη μέλη');
+define('_SETTINGS_PROTECTMEMNAMES','Προστασία ονομάτων μελών');
+
+// overview screen
+define('_OVERVIEW_PLUGINS',            'Διαχείριση προσθέτων...');
+
+// actionlog
+define('_ACTIONLOG_NEWMEMBER', 'Εγγραφή νέου μέλους:');
+
+// membermail (when not logged in)
+define('_MEMBERMAIL_MAIL',                     'Η διεύθυνση email σας:');
+
+// file upload
+define('_ERROR_DISALLOWEDUPLOAD2','Δεν έχετε δικαιώματα διαχειριστή πάνω σε κανένα από τα ιστολόγια τα οποία έχουν το μέλος προορισμού στο teamlist. Συνεπώς, δεν σας επιτρέπετε να ανεβάσετε αρχεία στο φάκελο πολυμέσων αυτού του μέλους');
+
+// plugin list
+define('_LISTS_INFO',                          'Πληροφορίες');
+define('_LIST_PLUGS_AUTHOR',           'Από:');
+define('_LIST_PLUGS_VER',                      'Έκδοση:');
+define('_LIST_PLUGS_SITE',                     'Επίσκεψη δικτυακού τόπου');
+define('_LIST_PLUGS_DESC',                     'Περιγραφή:');
+define('_LIST_PLUGS_SUBS',                     'Εγγραφές στα ακόλουθα γεγονότα:');
+define('_LIST_PLUGS_UP',                       'μετακίνηση επάνω');
+define('_LIST_PLUGS_DOWN',                     'μετακίνηση κάτω');
+define('_LIST_PLUGS_UNINSTALL',                'απεγκατάσταση');
+define('_LIST_PLUGS_ADMIN',                    'διαχείριση');
+define('_LIST_PLUGS_OPTIONS',          'Επεξεργασία&nbsp;επιλογών');
+
+// plugin option list
+define('_LISTS_VALUE',                         'τιμή');
+
+
+
+// plugin options
+define('_ERROR_NOPLUGOPTIONS',         'Δεν έχουν ρυθμιστεί οι επιλογές για αυτό το πρόσθετο');
+define('_PLUGS_BACK',                          'Επιστροφή στο προεπισκόπηση προσθέτου');
+define('_PLUGS_SAVE',                          'Αποθήκευση επιλογών');
+define('_PLUGS_OPTIONS_UPDATED',       'Οι επιλογές του προσθέτου ενημερώθηκαν');
+
+define('_OVERVIEW_MANAGEMENT', 'Διαχείριση');
+define('_OVERVIEW_MANAGE',             'Διαχείριση Nucleus...');
+define('_MANAGE_GENERAL',                      'Γενική διαχείριση');
+define('_MANAGE_SKINS',                        'Εμφανίσεις και πρότυπα');
+define('_MANAGE_EXTRA',                        'Επιπλέον χαρακτηριστικά');
+
+define('_BACKTOMANAGE',                        'Επιστροφή στη διαχείριση Nucleus');
+
+
+// END introduced after v1.1 END
+
+// global stuff
+define('_LOGOUT',                                      'Αποσύνδεση');
+define('_LOGIN',                                       'Σύνδεση');
+define('_YES',                                         'Ναι');
+define('_NO',                                          'Όχι');
+define('_SUBMIT',                                      'Υποβολή');
+define('_ERROR',                                       'Σφάλμα');
+define('_ERRORMSG',                            'Προέκυψε ένα σφάλμα!');
+define('_BACK',                                        'Επιστροφή');
+define('_NOTLOGGEDIN',                         'Δεν είστε συνδεμένοι');
+define('_LOGGEDINAS',                          'Συνδεθήκατε ως');
+define('_ADMINHOME',                           'Αρχική σελίδα διαχείρισης');
+define('_NAME',                                        'Όνομα');
+define('_BACKHOME',                            'Επιστρογή στην αρχική σελίδα διαχείρισης');
+define('_BADACTION',                           'Ζητήθηκε μη υπάρχουσα δράση');
+define('_MESSAGE',                                     'Μήνυμα');
+define('_HELP_TT',                                     'Βοήθεια!');
+define('_YOURSITE',                                    'Ο δικτυακός σας τόπος');
+
+
+define('_POPUP_CLOSE',                         'Κλείσιμο παραθύρου');
+
+define('_LOGIN_PLEASE',                                'Παρακαλώ συνδεθείτε πρώτα');
+
+// commentform
+define('_COMMENTFORM_YOUARE',          'Είστε ο/η');
+define('_COMMENTFORM_SUBMIT',          'Προσθήκη σχολίου');
+define('_COMMENTFORM_COMMENT', 'Το σχόλιό σας');
+define('_COMMENTFORM_NAME',            'Όνομα');
+define('_COMMENTFORM_REMEMBER',        'Θυμήσου με');
+
+// loginform
+define('_LOGINFORM_NAME',                      'Όνομα χρήστη');
+define('_LOGINFORM_PWD',                       'Κωδικός πρόσβασης');
+define('_LOGINFORM_YOUARE',            'Συνδεθήκατε ως');
+define('_LOGINFORM_SHARED',            'Κοινόχρηστός υπολογιστής');
+
+// member mailform
+define('_MEMBERMAIL_SUBMIT',           'Αποστολή μηνύματος');
+
+// search form
+define('_SEARCHFORM_SUBMIT',           'Εύρεση');
+
+// add item form
+define('_ADD_ADDTO',                           'Προσθήκη νέου άρθρου στο');
+define('_ADD_CREATENEW',                       'Δημιουργία νέα άρθρου');
+define('_ADD_BODY',                            'Σώμα');
+define('_ADD_TITLE',                           'Τίτλος');
+define('_ADD_MORE',                            'Εκτεταμένος (προαιρετικό)');
+define('_ADD_CATEGORY',                        'Κατηγορία');
+define('_ADD_PREVIEW',                         'Προεπισκόπηση');
+define('_ADD_DISABLE_COMMENTS',        'Απενεργοποίηση σχολίων;');
+define('_ADD_DRAFTNFUTURE',            'Πρόχειρα &amp; μελλοντικά άρθρα');
+define('_ADD_ADDITEM',                         'Προσθήκη άρθρου');
+define('_ADD_ADDNOW',                          'Προσθηκη τώρα');
+define('_ADD_PLACE_ON',                        'Τοποθετηση πάνω στο');
+define('_ADD_ADDDRAFT',                        'Προσθήκη στα πρόχειρα');
+define('_ADD_NOPASTDATES',                     '(Ημερομηνίες και ώρες στο παρελθόν ΔΕΝ είναι έγκυρες, η τρέχουσα όρα θα χρησιμοποιηθεί σε τέτοια περίπτωση)');
+define('_ADD_BOLD_TT',                         'Έντονα');
+define('_ADD_ITALIC_TT',                       'Πλάγια');
+define('_ADD_HREF_TT',                         'Δημιουργία συνδέσμου');
+define('_ADD_MEDIA_TT',                        'Προσθήκη πολυμέσου');
+define('_ADD_PREVIEW_TT',                      'Εμφάνιση/Απόκρυψη προεπισκόπησης');
+define('_ADD_CUT_TT',                          'Αποκοπή');
+define('_ADD_COPY_TT',                         'Αντιγραφή');
+define('_ADD_PASTE_TT',                                'Επικόλληση');
+
+
+// edit item form
+define('_EDIT_ITEM',                           'Προσθήκη άρθρου');
+define('_EDIT_SUBMIT',                         'Προσθήκη άρθρου');
+define('_EDIT_ORIG_AUTHOR',            'Αρχικός συντάκτης');
+define('_EDIT_BACKTODRAFTS',           'Προσθήκη πίσω στα πρόχειρα');
+define('_EDIT_COMMENTSNOTE',           '(Σημείωση: Η απενεργοποίηση σχολίων δεν θα αποκρύψει σχόλια που έχουν καταχωρηθεί παλαιότερα)');
+
+// used on delete screens
+define('_DELETE_CONFIRM',                      'Παρακαλώ επιβεβαιώστε τη διαγραφή');
+define('_DELETE_CONFIRM_BTN',          'Επιβεβαιώστε τη διαγραφή');
+define('_CONFIRMTXT_ITEM',                     'Πρόκειται να διαγράψετε το ακόλουθο άρθρο:');
+define('_CONFIRMTXT_COMMENT',          'Πρόκειται να διαγράψετε το ακόλουθο σχόλιο:');
+define('_CONFIRMTXT_TEAM1',            'Πρόκειται να διαγράψετε ');
+define('_CONFIRMTXT_TEAM2',            ' από τη λίστα ομάδας του ιστολογίου');
+define('_CONFIRMTXT_BLOG',                     'Το ιστολόγιο που προκειται να διαγράψετε είναι το: ');
+define('_WARNINGTXT_BLOGDEL',          'Προειδοποίηση! Διαγράφοντας ένα ιστολόγιο θα διαγράψετε ΟΛΑ τα άρθρα του και όλα τα σχόλια. Παρακαλώ επιβεβαιώστε για να κάνετε σαφές ότι είστε ΣΙΓΟΥΡΟΙ για αυτό που κάνετε!<br />Επίσης, μη διακόψετε το Nucleus καθώς διαγράφει το ιστολόγιο.');
+define('_CONFIRMTXT_MEMBER',           'Πρόκειται να διαγράψετε το ακόλουθο προφίλ μέλους: ');
+define('_CONFIRMTXT_TEMPLATE',         'Πρόκειται να διαγράψετε το πρότυπο με το όνομα');
+define('_CONFIRMTXT_SKIN',                     'Πρόκειται να διαγράψετε την εμφάνιση με το όνομα');
+define('_CONFIRMTXT_BAN',                      'Πρόκειται να διαγράψετε τον αποκλεισμό για το πεδίο ip');
+define('_CONFIRMTXT_CATEGORY',         'Πρόκειται να διαγράψετε την κατηγορία ');
+
+// some status messages
+define('_DELETED_ITEM',                                'Το άρθρο διαγράφηκε');
+define('_DELETED_MEMBER',                      'Το μέλος διαγράφηκε');
+define('_DELETED_COMMENT',                     'Το σχόλιο διαγράφηκε');
+define('_DELETED_BLOG',                        'Το ιστολόγιο διαγράφηκε');
+define('_DELETED_CATEGORY',            'Η κατηγορία διαγράφηκε');
+define('_ITEM_MOVED',                          'Το άρθρο μετακινήθηκε');
+define('_ITEM_ADDED',                          'Το άρθρο προστέθηκε');
+define('_COMMENT_UPDATED',             'Το σχόλιο ενημερώθηκε');
+define('_SKIN_UPDATED',                        'Τα δεδομένα της εμφάνισης έχουν αποθηκευτεί');
+define('_TEMPLATE_UPDATED',            'Τα δεδομένα του προτύπου έχουν αποθηκευτεί');
+
+// errors
+define('_ERROR_COMMENT_LONGWORD',      'Παρακαλώ μη χρησιμοποιείτε λέξεις μεγαλύτερες των 90 χαρακτήρων στα σχόλιά σας');
+define('_ERROR_COMMENT_NOCOMMENT',     'Παρακαλώ εισαγάγετε ένα σχόλιο');
+define('_ERROR_COMMENT_NOUSERNAME',    'Μη έγκυρο όνομα χρήστη');
+define('_ERROR_COMMENT_TOOLONG',               'Τα σχόλιά σας είναι υπερβολικά μεγάλα (μεγ. 5000 χαρακτήρες)');
+define('_ERROR_COMMENTS_DISABLED',             'Τα σχόλια για αυτό το ιστολόγιο είναι προς το παρόν απενεργοποιημένα.');
+define('_ERROR_COMMENTS_NONPUBLIC',    'Πρέπει να είστε συνδεμένος ως μέλος για να προσθέσετε σχόλιο σε αυτό το ιστολόγιο');
+define('_ERROR_COMMENTS_MEMBERNICK',   'Το όνομα που θέλετε να χρησιμοποιήσετε για να δημοσιεύσετε σχόλια χρησιμοποιείτε από ένα μέλος του δικτυακού τόπου. Επιλέξτε κάτι άλλο.');
+define('_ERROR_SKIN',                                  'Σφάλμα στην εμφάνιση');
+define('_ERROR_ITEMCLOSED',                    'Το άρθρο έχει κλείσει, δεν είναι δυνατό να προσθέσετε σχόλια σε αυτό ή να ψηφίσετε για αυτό');
+define('_ERROR_NOSUCHITEM',                    'Δεν υπάρχει τέτοιο άρθρο');
+define('_ERROR_NOSUCHBLOG',                    'Δεν υπάρχει τέτοιο ιστολόγιο');
+define('_ERROR_NOSUCHSKIN',                    'Δεν υπάρχει τέτοια εμφάνιση');
+define('_ERROR_NOSUCHMEMBER',                  'Δεν υπάρχει τέτοιο μέλος');
+define('_ERROR_NOTONTEAM',                     'Δεν είστε στην λίστα ομάδας αυτού του ιστολογίου.');
+define('_ERROR_BADDESTBLOG',                   'Δεν υπάρχει το ιστολόγιο προορισμού');
+define('_ERROR_NOTONDESTTEAM',         'Δεν είναι δυνατή η μετακίνηση του άρθρου, καθώς δεν είστε στη λίστα ομάδας του ιστολόγιο προορισμού');
+define('_ERROR_NOEMPTYITEMS',                  'Δεν είναι δυνατή η προσθήκη κενών άρθρων!');
+define('_ERROR_BADMAILADDRESS',                'Μη έγκυρη διεύθυνση ηλεκτρονικού ταχυδρομείου');
+define('_ERROR_BADNOTIFY',                             'Μία η περισσότερες από τις δοθείσες διευθύνσεις για ειδοποίηση δεν είναι έγκυρες διευθύνσεις ηλ. ταχυδρομείου');
+define('_ERROR_BADNAME',                               'Μη έγκυρο όνομα (επιτρέπονται μόνο a-z και 0-9, χωρίς κενά σε αρχή/τέλος)');
+define('_ERROR_NICKNAMEINUSE',                 'Ένα άλλο μέλος χρησιμοποιεί ήδη αυτό το ψευδώνυμο');
+define('_ERROR_PASSWORDMISMATCH',              'Οι κωδικοί πρέπει να ταιριάζουν');
+define('_ERROR_PASSWORDTOOSHORT',              'Οι κωδικοί πρέπει να είναι τουλάχιστον 6 χαρακτήρων');
+define('_ERROR_PASSWORDMISSING',               'Ο κωδικός πρόσβασης δεν μπορεί να είναι κενός');
+define('_ERROR_REALNAMEMISSING',               'Πρέπει να εισαγάγετε ένα πραγματικό όνομα');
+define('_ERROR_ATLEASTONEADMIN',               'Πρέπει να υπάρχει πάντοτε τουλάχιστον ένας super-admin που να μπορεί να συνδεθεί με την admin area.');
+define('_ERROR_ATLEASTONEBLOGADMIN',   'Πραγματοποιόντας αυτή την ενέργεια θα καταστήσετε το ιστολόγιο μη διατηρήσιμο. Παρακαλώ βεβαιωθείτε ότι υπάρχει πάντοτε τουλάχιστον ένας admin.');
+define('_ERROR_ALREADYONTEAM',                 'Δεν είναι δυνατή η προσθήκη ενός μέλους που υπάρχει ήδη στην ομάδα');
+define('_ERROR_BADSHORTBLOGNAME',              'Το σύντομο όνομα ιστολόγιο πρέπει να περιέχει μόνο a-z και 0-9, χωρίς κενά');
+define('_ERROR_DUPSHORTBLOGNAME',              'Κάποιο άλλο ιστολόγιο έχει ήδη το επιλεγμένο σύντομο όνομα. Αυτά τα ονόματα πρέπει να είναι μοναδικά');
+define('_ERROR_UPDATEFILE',                            'Δεν δίνεται άδεια εγγραφής για το συγκεκριμένο αρχείο ενημέρωσης. Βεβαιωθείτε ότι οι άδειες των αρχείων έχουν ορισθεί σωστά (try chmodding it to 666). Επίσης σημειώστε ότι η τοποθεσία εναι σχετική με το φάκελο admin-area, οπότε ίσωσ θα θέλατε να χρησιμοποιήσετε ένα απόλυτο μονοπάτι (κάτι σαν το /your/path/to/nucleus/)');
+define('_ERROR_DELDEFBLOG',                    'Δεν είναι δυνατή η διαγραφή του προεπιλεγμένου ιστολογίου');
+define('_ERROR_DELETEMEMBER',                  'Δεν είναι δυνατή η διαγραφή αυτού του μέλους, πιθανώς επειδή είναι ο συντάκτης άρθρων ή σχολιών');
+define('_ERROR_BADTEMPLATENAME',               'Μη έγκυρο όνομα για πρότυπο, χρησιμοποιήστε μόνο a-z και 0-9, χωρίς κενά');
+define('_ERROR_DUPTEMPLATENAME',               'Υπάρχει ήδη κάποιο άλλο πρότυπο με αυτό το όνομα');
+define('_ERROR_BADSKINNAME',                   'Μη έγκυρο όνομα για εμφάνιση (επιτρέπονται μόνο a-z, 0-9, χωρίς κενά)');
+define('_ERROR_DUPSKINNAME',                   'Υπάρχει ήδη κάποιο άλλη εμφάνιση με αυτό το όνομα');
+define('_ERROR_DEFAULTSKIN',                   'Πρέπει πάντοτε να υπάρχει μια εμφάνιση με το όνομα "προεπιλεγμένο"');
+define('_ERROR_SKINDEFDELETE',                 'Δεν είναι δυνατή η διαγραφή της εμφάνισης καθώς είναι η προεπιλεγμένη εμφάνιση για το ακόλουθο ιστολόγιο: ');
+define('_ERROR_DISALLOWED',                    'Λυπούμαστε, δεν σας επιτρέπεται να πραγματοποιήσετε αυτή την ενέργεια');
+define('_ERROR_DELETEBAN',                             'Σφάλμα κατα την προσπάθεια διαγραφής του ban (Ο αποκλεισμός δεν υπάρχει)');
+define('_ERROR_ADDBAN',                                'Σφάλμα κατα την προσπάθεια προσθήκης του αποκλεισμού. Πιθανώς ο αποκλεισμός να μην ενεργοποιηθεί σωστά σε όλα τα ιστολόγια.');
+define('_ERROR_BADACTION',                             'Η Απαιτούμενη ενέργεια δεν υπάρχει');
+define('_ERROR_MEMBERMAILDISABLED',    'Τα μηνύματα από μέλος σε μέλος είναι απενεργοποιημένα');
+define('_ERROR_MEMBERCREATEDISABLED',  'Η δημιουργιά λογαριασμών μέλών είναι απενεργοποιημένη');
+define('_ERROR_INCORRECTEMAIL',                'Λανθασμένη διεύθυνση ηλεκτρονικού ταχυδρομείου');
+define('_ERROR_VOTEDBEFORE',                   'Έχετε ήδη ψηφίσει για αυτό το άρθρο');
+define('_ERROR_BANNED1',                               'Δεν είναι δυνατή η πραγματοποίηση της ενέργειας (ip range ');
+define('_ERROR_BANNED2',                               'καθώς σας έχει απαγορευτεί. Το μήνυμα ήταν:');
+define('_ERROR_BANNED3',                               '\'');
+define('_ERROR_LOGINNEEDED',                   'Πρέπει να είστε συνδεδεμένοι για να πραγματοποιήσετε αυτή την ενέργεια');
+define('_ERROR_CONNECT',                               'Σφάλμα στη σύνδεση');
+define('_ERROR_FILE_TOO_BIG',                  'Το αρχείο είναι υπερβολικά μεγάλο!');
+define('_ERROR_BADFILETYPE',                   'Λυπούμαστε, αυτός ο τύπος αρχείου δεν επιτρέπεται');
+define('_ERROR_BADREQUEST',                    'Εσφαλμένη αίτηση αποστολής');
+define('_ERROR_DISALLOWEDUPLOAD',              'Δεν είσαστε σε καμία λίστα ομάδας ιστολογίων. Συνεπώς, δεν σας επιτρέπεται να ανεβάσετε αρχεία');
+define('_ERROR_BADPERMISSIONS',                'Τα δικαιώματα αρχείων/καταλόγων δεν έχουν οριστεί σωστά');
+define('_ERROR_UPLOADMOVEP',                   'Σφάλμα κατα τη μετακίνηση αρχείου που έχει αποσταλεί');
+define('_ERROR_UPLOADCOPY',                    'Σφάλμα κατά την αντιγραφή αρχείου');
+define('_ERROR_UPLOADDUPLICATE',               'Υπάρχει ήδη κάποιο άλλο αρχείο με αυτό το όνομα. Προσπαθείστε να το μετονομάσετε πριν το ανεβάσετε.');
+define('_ERROR_LOGINDISALLOWED',               'Λυπούμαστε, δεν σας επιτρέπετε να συνδεθείτε στην περιοχή διαχείρισης. Μπορείτε όμως να συνδεθείτε ως κάποιος άλλος χρήστης');
+define('_ERROR_DBCONNECT',                     'Δεν ήταν δυνατή η σύνδεση στον διακομιστή mySQL');
+define('_ERROR_DBSELECT',                              'Δεν ήταν δυνατή η επιλογή της βάσης δεδομένων nucleus.');
+define('_ERROR_NOSUCHLANGUAGE',                'Δεν υπάρχει τέτοιο αρχείο γλώσσας');
+define('_ERROR_NOSUCHCATEGORY',                'Δεν υπάρχει τέτοια κατηγορία');
+define('_ERROR_DELETELASTCATEGORY',    'Πρέπει να υπάρχει τουλάχιστον μια κατηγορία');
+define('_ERROR_DELETEDEFCATEGORY',             'Δεν είναι δυνατή η διαγραφή της προεπιλεγμένηςκατηγορίας');
+define('_ERROR_BADCATEGORYNAME',               'Μη έγκυρο όνομα κατηγορίας');
+define('_ERROR_DUPCATEGORYNAME',               'Υπάρχει ήδη κάποια άλλη κατηγορία με αυτό το όνομα');
+
+// some warnings (used for mediadir setting)
+define('_WARNING_NOTADIR',                     'Προειδοποίηση: Η τρέχουσα τιμή δεν είναι κάποιος φάκελος!');
+define('_WARNING_NOTREADABLE',         'Προειδοποίηση: Η τρέχουσα τιμή δεν είναι ένας μη αναγνώσιμος φάκελος!');
+define('_WARNING_NOTWRITABLE',         'Προειδοποίηση: Η τρέχουσα τιμή δεν είναι κάποιος εγγράψιμος φάκελος!');
+
+// media and upload
+define('_MEDIA_UPLOADLINK',                    'Αποστολή νέου αρχείου');
+define('_MEDIA_MODIFIED',                              'τροποποιημένο');
+define('_MEDIA_FILENAME',                              'όνομα αρχείου');
+define('_MEDIA_DIMENSIONS',                    'διαστάσεις');
+define('_MEDIA_INLINE',                                        'Ενσωματωμένο');
+define('_MEDIA_POPUP',                                 'Αναδυόμενο');
+define('_UPLOAD_TITLE',                                        'Επιλογή αρχείου');
+define('_UPLOAD_MSG',                                  'Επιλέξτε παρακάτω το αρχείο που θέλετε να ανεβάσετε, και πατήστε το κουμπί \'Αποστολή\'.');
+define('_UPLOAD_BUTTON',                               'Αποστολή');
+
+// some status messages
+define('_MSG_ACCOUNTCREATED',                  'Ο λογαριασμός δημιουργήθηκε, ο κωδικός πρόσβασης θα σας σταλεί μέσω ηλεκτρονικού ταχυδρομείου');
+define('_MSG_PASSWORDSENT',                    'Ο κωδικός πρόσβασης έχει σταλεί μέσω ηλεκτρονικού ταχυδρομείου.');
+define('_MSG_LOGINAGAIN',                              'Θα χρειαστεί να ξανασυνδεθείτε, επείδη τα άρθρα σας έχουν αλλάξει');
+define('_MSG_SETTINGSCHANGED',                 'Οι ρυθμίσεις έχουν αλλάξει');
+define('_MSG_ADMINCHANGED',                    'Ο διαχειριστής έχει αλλάξει');
+define('_MSG_NEWBLOG',                         'Ένα νέο ιστολόγιο δημιουργήθηκε');
+define('_MSG_ACTIONLOGCLEARED',                'Το ημερολόγιο ενεργειών έχει καθαρισθεί');
+
+// actionlog in admin area
+define('_ACTIONLOG_DISALLOWED',                'Μη επιτρεπόμενη ενέργεια: ');
+define('_ACTIONLOG_PWDREMINDERSENT',   'Νέος κωδικός πρόσβασης έχει σταλεί για ');
+define('_ACTIONLOG_TITLE',                             'Ημερολόγιο ενεργειών');
+define('_ACTIONLOG_CLEAR_TITLE',               'Καθαρισμός ημερολογίου ενεργειών');
+define('_ACTIONLOG_CLEAR_TEXT',                'Καθαρισμός ημερολογίου ενεργειών τώρα');
+
+// team management
+define('_TEAM_TITLE',                          'Διαχείριση ομάδας για ιστολόγιο');
+define('_TEAM_CURRENT',                        'Τρέχουσα ομάδα');
+define('_TEAM_ADDNEW',                 'Προσθήκη νέου μέλους στην ομάδα');
+define('_TEAM_CHOOSEMEMBER',           'Επιλογή μέλους');
+define('_TEAM_ADMIN',                          'Δικαιώματα διαχειριστή ;');
+define('_TEAM_ADD',                            'Προσθήκη στην ομάδα');
+define('_TEAM_ADD_BTN',                        'προσθήκη στην ομάδα');
+
+// blogsettings
+define('_EBLOG_TITLE',                         'Επεγεργασία ρυθμίσεων ιστολογίου');
+define('_EBLOG_TEAM_TITLE',                    'Επεξεργασία ομάδας');
+define('_EBLOG_TEAM_TEXT',                     'Πατήστε εδώ για να επεξεργαστείτε την ομάδα σας...');
+define('_EBLOG_SETTINGS_TITLE',                'Ρυθμίσεις ιστολογίου');
+define('_EBLOG_NAME',                          'Όνομα ιστολογίου');
+define('_EBLOG_SHORTNAME',                     'Σύντομο όνομα ιστολογίου');
+define('_EBLOG_SHORTNAME_EXTRA',       '<br />(πρέπει να περιέχει μόνο a-z και χωρίς κενά)');
+define('_EBLOG_DESC',                          'Περιγραφή ιστολογίου');
+define('_EBLOG_URL',                           'URL');
+define('_EBLOG_DEFSKIN',                       'Προεπιλεγμένη εμφάνιση');
+define('_EBLOG_DEFCAT',                        'Προεπιλεγμένη Κατηγορία');
+define('_EBLOG_LINEBREAKS',                    'Μετατροπή αλλαγών γραμμής');
+define('_EBLOG_DISABLECOMMENTS',       'Επιτρέπονται τα σχόλια;<br /><small>(Η απενεργοποίηση σχολίων σημαίνει ότι η προσθήκη σχολίων δεν είναι δυνατή.)</small>');
+define('_EBLOG_ANONYMOUS',             'Επιτρέπονται τα σχόλια από μη μέλη;');
+define('_EBLOG_NOTIFY',                                'Διευθύνσεις για ειδοποίηση (χρησιμοποιείστε το ; ως διαχωριστικό)');
+define('_EBLOG_NOTIFY_ON',                     'Ειδοποίηση όταν');
+define('_EBLOG_NOTIFY_COMMENT',        'Νέα σχόλια');
+define('_EBLOG_NOTIFY_KARMA',          'Νέοι ψήφοι κάρμα');
+define('_EBLOG_NOTIFY_ITEM',           'Νέα άρθρα ιστολογίου');
+define('_EBLOG_PING',                          'Ping Weblogs.com κατά την ενημέρωση;');
+define('_EBLOG_MAXCOMMENTS',           'Μέγιστος αριθμός σχολίων');
+define('_EBLOG_UPDATE',                        'Ενημέρωση αρχείου');
+define('_EBLOG_OFFSET',                        'Χρονική μετάθεση');
+define('_EBLOG_STIME',                         'Η τρέχουσα ώρα του διακομιστή είναι');
+define('_EBLOG_BTIME',                         'Η τρέχουσα ώρα του ιστολογίου είναι :');
+define('_EBLOG_CHANGE',                        'Αλλαγή ρυθμίσεων');
+define('_EBLOG_CHANGE_BTN',            'Αλλαγή ρυθμίσεων');
+define('_EBLOG_ADMIN',                         'Διαχειριστής ιστολογίου');
+define('_EBLOG_ADMIN_MSG',                     'Θα σας αποδωθούν δικαιώματα διαχειριστή');
+define('_EBLOG_CREATE_TITLE',          'Δημιουργία νέου ιστολογίου');
+define('_EBLOG_CREATE_TEXT',           'Συμπληρώστε την παρακάτω φόρμα για να δημιουργήσετε ένα νεό ιστολόγιο. <br /><br /> <b>Σημείωση:</b> Παρατίθενται μόνο οι απαραίτητες επιλογές. Αν θέλετε να ρυθμίσετε επιπλέον επιλογές, μπείτε στην σελίδα ρυθμίσεων ιστολογίου αφού δημιουργήσετε το ιστολόγιο.');
+define('_EBLOG_CREATE',                        'Δημιουργία!');
+define('_EBLOG_CREATE_BTN',            'Δημιουργία ιστολογίου');
+define('_EBLOG_CAT_TITLE',                     'Κατηγορίες');
+define('_EBLOG_CAT_NAME',                      'Όνομα κατηγορίας');
+define('_EBLOG_CAT_DESC',                      'Περιγραφή κατηγορίας');
+define('_EBLOG_CAT_CREATE',            'Δημιουργία νέας κατηγορίας');
+define('_EBLOG_CAT_UPDATE',            'Ενημέρωση κατηγορίας');
+define('_EBLOG_CAT_UPDATE_BTN',        'Ενημέρωση κατηγορίας');
+
+// templates
+define('_TEMPLATE_TITLE',                      'Επεξεργασία προτύπων');
+define('_TEMPLATE_AVAILABLE_TITLE',    'Διαθέσιμα πρότυπα');
+define('_TEMPLATE_NEW_TITLE',          'Νέο πρότυπο');
+define('_TEMPLATE_NAME',                       'Όνομα προτύπου');
+define('_TEMPLATE_DESC',                       'Περιγραφή προτύπου');
+define('_TEMPLATE_CREATE',                     'Δημιουργία προτύπου');
+define('_TEMPLATE_CREATE_BTN',         'Δημιουργία προτύπου');
+define('_TEMPLATE_EDIT_TITLE',         'Επεξεργασία προτύπου');
+define('_TEMPLATE_BACK',                       'Επιστροφή στην προεπισκόπηση προτύπου');
+define('_TEMPLATE_EDIT_MSG',           'Δεν είναι απαραραίτητα όλα τα μέρη του προτύπου, αφήστε κενά αυτά που δεν είναι απαραίτητα.');
+define('_TEMPLATE_SETTINGS',           'Ρυθμίσεις προτύπου');
+define('_TEMPLATE_ITEMS',                      'άρθρα');
+define('_TEMPLATE_ITEMHEADER',         'Κεφαλίδα άρθρου');
+define('_TEMPLATE_ITEMBODY',           'Σώμα άρθρου');
+define('_TEMPLATE_ITEMFOOTER',         'Υποσέλιδο άρθρου');
+define('_TEMPLATE_MORELINK',           'Σύνδεση σε εκτεταμένη καταχώρηση');
+define('_TEMPLATE_NEW',                        'Ένδειξη νέου άρθρου');
+define('_TEMPLATE_COMMENTS_ANY',       'Σχόλια (αν υπάρχουν)');
+define('_TEMPLATE_CHEADER',            'Κεφαλίδα σχολίων');
+define('_TEMPLATE_CBODY',                      'Σώμα σχολίου');
+define('_TEMPLATE_CFOOTER',            'Υποσέλιδο σχολίων');
+define('_TEMPLATE_CONE',                       'Ένα σχόλιο');
+define('_TEMPLATE_CMANY',                      'Δύο (ή περισσότερα) σχόλια');
+define('_TEMPLATE_CMORE',                      'Περισσότερα αναγνωσμένα σχόλια');
+define('_TEMPLATE_CMEXTRA',            'Επιπλέον μέλος');
+define('_TEMPLATE_COMMENTS_NONE',      'Σχόλια (αν υπάρχουν)');
+define('_TEMPLATE_CNONE',                      'Καθόλου σχόλια');
+define('_TEMPLATE_COMMENTS_TOOMUCH','Σχόλια (αν υπάρχουν, αλλά πάρα πολλά για να εμφανιστούν σε μια γραμμή)');
+define('_TEMPLATE_CTOOMUCH',           'Υπερβολικά πολλά σχόλια');
+define('_TEMPLATE_ARCHIVELIST',                'Λίστες αρχείου');
+define('_TEMPLATE_AHEADER',            'Κεφαλίδα λίστας αρχείου');
+define('_TEMPLATE_AITEM',                      'Άρθρο λίστας αρχείου');
+define('_TEMPLATE_AFOOTER',            'Υποσέλιδο λίστας αρχείου');
+define('_TEMPLATE_DATETIME',           'Ημερομηνία και ώρα');
+define('_TEMPLATE_DHEADER',            'Κεφαλίδα ημερομηνίας');
+define('_TEMPLATE_DFOOTER',            'Υποσέλιδο ημερομηνίας');
+define('_TEMPLATE_DFORMAT',            'Μορφή ημερομηνίας');
+define('_TEMPLATE_TFORMAT',            'Μορφή ώρας');
+define('_TEMPLATE_LOCALE',                     'Τοπικές ρυθμίσεις');
+define('_TEMPLATE_IMAGE',                      'Αναδυόμενες εικόνες');
+define('_TEMPLATE_PCODE',                      'Κωδικός αναδυόμενου συνδέσμου');
+define('_TEMPLATE_ICODE',                      'Ενσωματωμένος κώδικας εικόνας');
+define('_TEMPLATE_MCODE',                      'Κώδικας συνδέσμου άρθρου μέσων');
+define('_TEMPLATE_SEARCH',                     'Εύρεση');
+define('_TEMPLATE_SHIGHLIGHT',         'Επισήμανση');
+define('_TEMPLATE_SNOTFOUND',          'Δεν βρέθηκε τίποτα');
+define('_TEMPLATE_UPDATE',                     'Ενημέρωση');
+define('_TEMPLATE_UPDATE_BTN',         'Ενημέρωση προτύπου');
+define('_TEMPLATE_RESET_BTN',          'Επαναφορά δεδομένων');
+define('_TEMPLATE_CATEGORYLIST',       'Λίστες κατηγοριών');
+define('_TEMPLATE_CATHEADER',          'Κεφαλίδα λίστας κατηγοριών');
+define('_TEMPLATE_CATITEM',                    'Στοιχείο λίστας κατηγοριών');
+define('_TEMPLATE_CATFOOTER',          'Υποσέλιδο λίστας κατηγοριών');
+
+// skins - KOSTANTINOS
+define('_SKIN_EDIT_TITLE',                     'Επεξεργασία εμφανίσεων');
+define('_SKIN_AVAILABLE_TITLE',                'Διαθέσιμες εμφανίσεις');
+define('_SKIN_NEW_TITLE',                      'Νέα εμφάνιση');
+define('_SKIN_NAME',                           'Όνομα');
+define('_SKIN_DESC',                           'Περιγραφή');
+define('_SKIN_TYPE',                           'Τύπος Περιεχομένου');
+define('_SKIN_CREATE',                         'Δημιουργία');
+define('_SKIN_CREATE_BTN',                     'Δημιουργία εμφάνισης');
+define('_SKIN_EDITONE_TITLE',          'Επεξεργασία εμφάνισης');
+define('_SKIN_BACK',                           'Πίσω στη γενική προεπισκόπηση εμφάνισης ');
+define('_SKIN_PARTS_TITLE',                    'Μέρη εμφάνισης');
+define('_SKIN_PARTS_MSG',                      'Δεν χρειάζονται όλοι οι τύποι για κάθε εμφάνιση. Άφησε κενά αυτά που δεν χρειάζονται. Διαλέξτε τον τύπο εμφάνισης που θα επεξεργαστείτε:');
+define('_SKIN_PART_MAIN',                      'Αρχική σελίδα');
+define('_SKIN_PART_ITEM',                      'Σελίδες άρθρων');
+define('_SKIN_PART_ALIST',                     'Λίστα αρχείων');
+define('_SKIN_PART_ARCHIVE',           'Αρχείο');
+define('_SKIN_PART_SEARCH',                    'Αναζήτηση');
+define('_SKIN_PART_ERROR',                     'Λάθη');
+define('_SKIN_PART_MEMBER',            'Στοιχεία μελών');
+define('_SKIN_PART_POPUP',                     'Αναδυόμενες εικόνες');
+define('_SKIN_GENSETTINGS_TITLE',      'Γενικές ρυθμίσεις');
+define('_SKIN_CHANGE',                         'Αλλαγή');
+define('_SKIN_CHANGE_BTN',                     'Αλλαγή των ρυθμίσεων');
+define('_SKIN_UPDATE_BTN',                     'Ανανέωση εμφάνισης');
+define('_SKIN_RESET_BTN',                      'Επαναφορά δεδομένων');
+define('_SKIN_EDITPART_TITLE',         'Επεξεργασία εμφάνισης');
+define('_SKIN_GOBACK',                         'Πήγαινε Πίσω');
+define('_SKIN_ALLOWEDVARS',            'Επιτρεπόμενες μεταβλητές (πατήστε για πληροφορίες):');
+
+// global settings
+define('_SETTINGS_TITLE',                      'Γενικές ρυθμίσεις');
+define('_SETTINGS_SUB_GENERAL',                'Γενικές ρυθμίσεις');
+define('_SETTINGS_DEFBLOG',                    'Προεπιλεγμένο ιστολόγιο');
+define('_SETTINGS_ADMINMAIL',          'Email διαχειριστή' );
+define('_SETTINGS_SITENAME',           'Όνομα δικτυακού τόπου');
+define('_SETTINGS_SITEURL',                    'URL δικτυακού τόπου (πρέπει να τελειώνει με κάθετο)');
+define('_SETTINGS_ADMINURL',           'URL περιοχής διαχείρισης (πρέπει να τελειώνει με κάθετο)');
+define('_SETTINGS_DIRS',                       ' Κατάλογοι Nucleus ');
+define('_SETTINGS_MEDIADIR',           ' Κατάλογοι Media ');
+define('_SETTINGS_SEECONFIGPHP',       '(βλέπε config.php)');
+define('_SETTINGS_MEDIAURL',           'Media URL (πρέπει να τελειώνει με κάθετο)');
+define('_SETTINGS_ALLOWUPLOAD',        'Να επιτρέπεται η αποστολή αρχείων;');
+define('_SETTINGS_ALLOWUPLOADTYPES','Τύποι αρχείων που επιτρέπεται η αποστολή τους');
+define('_SETTINGS_CHANGELOGIN',        'Να επιτρέπεται στους χρήστες να αλλάξουν όνομα χρήστη/κωδικό πρόσβασης');
+define('_SETTINGS_COOKIES_TITLE',      ' Ρυθμίσεις cookie');
+define('_SETTINGS_COOKIELIFE',         'Διάρκεια cookie σύνδεσης');
+define('_SETTINGS_COOKIESESSION',      'Cookies περιόδου λειτουργίας');
+define('_SETTINGS_COOKIEMONTH',        'Διάρκεια για ένα μήνα');
+define('_SETTINGS_COOKIEPATH',         ' Διαδρομή cookie (προχωρημένο)');
+define('_SETTINGS_COOKIEDOMAIN',       'Cookie τομέα (προχωρημένο)');
+define('_SETTINGS_COOKIESECURE',       'Ασφαλές cookie (προχωρημένο)');
+define('_SETTINGS_LASTVISIT',          'Αποθήκευση cookies τελευταίας επίσκεψης');
+define('_SETTINGS_ALLOWCREATE',        'Να επιτρέπεται στους επισκέπτες να δημιουργήσουν λογαριασμό μέλους');
+define('_SETTINGS_NEWLOGIN',           'Να επιτρέπεται η σύνδεση σε λογαριασμούς που δημιούργησαν χρήστες');
+define('_SETTINGS_NEWLOGIN2',          '(ισχύει μόνο για νέους λογαριασμούς)');
+define('_SETTINGS_MEMBERMSGS',         'Να επιτρέπεται η υπηρεσία μέλος-σε-μέλος');
+define('_SETTINGS_LANGUAGE',           'Προεπιλεγμένη γλώσσα');
+define('_SETTINGS_DISABLESITE',                'Απενεργοποίηση δικτυακού τόπου');
+define('_SETTINGS_DBLOGIN',                    'mySQL Login &amp; Database');
+define('_SETTINGS_UPDATE',                     'Ανανέωση ρυθμίσεων');
+define('_SETTINGS_UPDATE_BTN',         'Ανανέωση ρυθμίσεων');
+define('_SETTINGS_DISABLEJS',          'Απενεργοποίηση γραμμών εργαλείων JavaScript ');
+define('_SETTINGS_MEDIA',                      'Μέσα/Αποστολή αρχείων');
+define('_SETTINGS_MEDIAPREFIX',                'Προκαθορισμένα αρχεία για αποστολή με ημερομηνία');
+define('_SETTINGS_MEMBERS',            'Ρυθμίσεις μέλους');
+
+// bans
+define('_BAN_TITLE',                           'Λίστα αποκλεισμού για');
+define('_BAN_NONE',                            'Όχι απαγορέυσεις για αυτό το ιστολόγιο');
+define('_BAN_NEW_TITLE',                       'Προσθήκη νέας αποκλεισμού');
+define('_BAN_NEW_TEXT',                        'Προσθήκη νέου αποκλεισμού τώρα');
+define('_BAN_REMOVE_TITLE',                    'Κατάργηση αποκλεισμού');
+define('_BAN_IPRANGE',                         'Εύρος IP');
+define('_BAN_BLOGS',                           'Ποια ιστολόγια;');
+define('_BAN_DELETE_TITLE',                    'Διαγραφή αποκλεισμού');
+define('_BAN_ALLBLOGS',                        'Όλα τα ιστολόγια στα οποία έχετε δικαιώματα διαχειριστή ');
+define('_BAN_REMOVED_TITLE',           'Ο αποκλεισμός διαγράφηκε');
+define('_BAN_REMOVED_TEXT',            'Ο αποκλεισμός καταργήθηκε από τα παρακάτω ιστολόγια:');
+define('_BAN_ADD_TITLE',                       'Προσθήκη αποκλεισμού');
+define('_BAN_IPRANGE_TEXT',                    'Επιλογή εμβέλεια IP που θέλετε να μπλοκάρετε. Όσο πιο λίγους αριθμούς περιέχει, τόσο περισσότερες διευθύνσεις θα αποκλειστούν');
+define('_BAN_BLOGS_TEXT',                      'Μπορείτε είτε να διαλέξετε να αποκλείσετε την IP σε ένα μόνο ιστολόγιο είτε να την αποκλείσετε σε όλα τα ιστολόγια στα οποία έχετε δικαιώματα διαχειριστή. Κάντε την επιλογή σας παρακάτω');
+define('_BAN_REASON_TITLE',                    'Λόγος');
+define('_BAN_REASON_TEXT',                     'Μπορείτε να δώσετε ένα λόγο για τον αποκλεισμό, ο οποίος θα εμφανίζεται όταν ο κάτοχος IP προσπαθήσει να προσθέσει άλλο σχόλιο ή να δώσει ψήφο karma. Το μέγιστο μήκος είναι 256 χαρακτήρες.');
+define('_BAN_ADD_BTN',                         'Προσθήκη αποκλεισμού');
+
+// LOGIN screen
+define('_LOGIN_MESSAGE',                       'Μήνυμα');
+define('_LOGIN_SHARED',                        'Κοινόχρηστη φόρμα σύνδεσης');
+define('_LOGIN_FORGOT',                        'Ξεχάσατε τον κωδικό σας;');
+
+// membermanagement
+define('_MEMBERS_TITLE',                       'Διαχείριση μέλους');
+define('_MEMBERS_CURRENT',                     'Υπάρχοντα μέλη');
+define('_MEMBERS_NEW',                 'Νέο μέλος');
+define('_MEMBERS_DISPLAY',                     'Εμφάνιση ονόματος');
+define('_MEMBERS_DISPLAY_INFO',                '(Αυτό είναι το όνομα που χρησιμοποιείς για login)');
+define('_MEMBERS_REALNAME',            'Πραγματικό όνομα');
+define('_MEMBERS_PWD',                 'Κωδικός πρόσβασης');
+define('_MEMBERS_REPPWD',                      'Επανάληψη κωδικού πρόσβασης');
+define('_MEMBERS_EMAIL',                       'Διεύθυνση ηλεκτρονικού ταχυδρομείου');
+define('_MEMBERS_EMAIL_EDIT',          '(Όταν αλλάξετε τη διεύθυνση ηλεκτρονικού ταχυδρομείου, ένας νέος κωδικός πρόσβασης θα σταλεί αυτόματα σε αυτή τη διεύθυνση )');
+define('_MEMBERS_URL',                         'Διεύθυνση τοποθεσίας (URL)');
+define('_MEMBERS_SUPERADMIN',          'Δικαιώματα διαχειριστή');
+define('_MEMBERS_CANLOGIN',            'Μπορείτε να συνδεθείτε στην περιοχή του Διαχειριστή');
+define('_MEMBERS_NOTES',                       'Σημειώσεις');
+define('_MEMBERS_NEW_BTN',             'Προσθήκη μέλους');
+define('_MEMBERS_EDIT',                        'Επεξεργασία μέλους');
+define('_MEMBERS_EDIT_BTN',            'Αλλαγή Ρυθμίσεων');
+define('_MEMBERS_BACKTOOVERVIEW',      'Πίσω στην προεπισκόπηση μέλους');
+define('_MEMBERS_DEFLANG',                     'Γλώσσα');
+define('_MEMBERS_USESITELANG',         '- Χρήση ρυθμίσεων δικτυακού τόπου -');
+
+// List of blogs (TT = tooltip)
+define('_BLOGLIST_TT_VISIT',           'Επίσκεψη δικτυακού τόπου');
+define('_BLOGLIST_ADD',                        'Προσθήκη άρθρου');
+define('_BLOGLIST_TT_ADD',             'Προσθήκη νέου άρθρου σε αυτό το ιστολόγιο');
+define('_BLOGLIST_EDIT',               'Επεξεργασία /Διαγραφή άρθρων');
+define('_BLOGLIST_TT_EDIT',                    '');
+define('_BLOGLIST_BMLET',                      'Σελιδοδεικτίδιο');
+define('_BLOGLIST_TT_BMLET',           '');
+define('_BLOGLIST_SETTINGS',           'Ρυθμίσεις');
+define('_BLOGLIST_TT_SETTINGS',                'Επεξεργασία ρυθμίσεων ή διαχείριση ομάδας');
+define('_BLOGLIST_BANS',                       'Απαγορεύσεις');
+define('_BLOGLIST_TT_BANS',                    'Προβολή, προσθήκη ή κατάργηση απαγορευμένων IP');
+define('_BLOGLIST_DELETE',                     'Διαγραφή όλων');
+define('_BLOGLIST_TT_DELETE',          'Διαγραφή αυτής της καταγραφής');
+
+// OVERVIEW screen
+define('_OVERVIEW_YRBLOGS',            'Οι καταγραφές σας');
+define('_OVERVIEW_YRDRAFTS',           'Το προσχέδιό σας');
+define('_OVERVIEW_YRSETTINGS',         'Οι ρυθμίσεις σας');
+define('_OVERVIEW_GSETTINGS',          'Γενικές ρυθμίσεις');
+define('_OVERVIEW_NOBLOGS',            'Δεν είστε σε καμία ομαδική λίστα καταγραφών');
+define('_OVERVIEW_NODRAFTS',           'Κανένα προσχέδιο');
+define('_OVERVIEW_EDITSETTINGS',       'Επεξεργασία ρυθμίσεων...');
+define('_OVERVIEW_BROWSEITEMS',        'Περιήγηση στα άρθρα...');
+define('_OVERVIEW_BROWSECOMM', 'Περιήγηση στα σχόλια...');
+define('_OVERVIEW_VIEWLOG',            'Προβολή ημερολογίου ενεργειών...');
+define('_OVERVIEW_MEMBERS',            'Διαχείριση μελών...');
+define('_OVERVIEW_NEWLOG',             'Δημιουργία νέου ημερολογίου ενεργειών...');
+define('_OVERVIEW_SETTINGS',           'Επεξεργασία ρυθμίσεων...');
+define('_OVERVIEW_TEMPLATES',          'Επεξεργασία προτύπου...');
+define('_OVERVIEW_SKINS',                      'Επεξεργασία εμφανίσεων...');
+define('_OVERVIEW_BACKUP',                     'Αντίγραφο ασφαλείας/Επαναφορά...');
+
+// ITEMLIST
+define('_ITEMLIST_BLOG',                       'Άρθρα για το ιστολόγιο'); 
+define('_ITEMLIST_YOUR',                       'Τα άρθρα σας');
+
+// Comments
+define('_COMMENTS',                            'Σχόλια');
+define('_NOCOMMENTS',                          'Κανένα σχόλιο για αυτό το άρθρο');
+define('_COMMENTS_YOUR',                       'Τα σχόλιά σας');
+define('_NOCOMMENTS_YOUR',             'Δεν γράψατε κανένα σχόλιο');
+
+// LISTS (general)
+define('_LISTS_NOMORE',                        'Δεν υπάρχουν άλλα αποτελέσματα ή δεν βρέθηκαν καθόλου αποτελέσματα');
+define('_LISTS_PREV',                          'Προηγούμενο');
+define('_LISTS_NEXT',                          'Επόμενο');
+define('_LISTS_SEARCH',                                'Εύρεση');
+define('_LISTS_CHANGE',                                'Αλλαγή');
+define('_LISTS_PERPAGE',                       'άρθρα/σελίδα');
+define('_LISTS_ACTIONS',                       'Ενέργειες');
+define('_LISTS_DELETE',                                'Διαγραφή');
+define('_LISTS_EDIT',                          'Επεξεργασία');
+define('_LISTS_MOVE',                          'Μετακίνηση');
+define('_LISTS_CLONE',                         'Κλωνοποίηση');
+define('_LISTS_TITLE',                         'Τίτλος');
+define('_LISTS_BLOG',                          'Ιστολόγιο');
+define('_LISTS_NAME',                          'Όνομα');
+define('_LISTS_DESC',                          'Περιγραφή');
+define('_LISTS_TIME',                          'Ώρα');
+define('_LISTS_COMMENTS',                      'Σχόλια');
+define('_LISTS_TYPE',                          'Τύπος ');
+
+
+// member list 
+define('_LIST_MEMBER_NAME',            'Εμφάνιση ονόματος');
+define('_LIST_MEMBER_RNAME',           'Πραγματικό όνομα');
+define('_LIST_MEMBER_ADMIN',           'Υπέρδιαχειριστής; ');
+define('_LIST_MEMBER_LOGIN',           'Μπορώ να συνδεθώ; ');
+define('_LIST_MEMBER_URL',                     'Δικτυακός τόπος');
+
+// banlist
+define('_LIST_BAN_IPRANGE',                    'Εμβέλεια IP');
+define('_LIST_BAN_REASON',                     'Λόγος');
+
+// actionlist
+define('_LIST_ACTION_MSG',                     'Μήνυμα');
+
+// commentlist
+define('_LIST_COMMENT_BANIP',          'Αποκλεισμός IP');
+define('_LIST_COMMENT_WHO',            'Συντάκτης');
+define('_LIST_COMMENT',                        'Σχόλιο');
+define('_LIST_COMMENT_HOST',           'Host');
+
+// itemlist
+define('_LIST_ITEM_INFO',                      'Πληροφορία');
+define('_LIST_ITEM_CONTENT',           'Τίτλος και Κείμενο');
+
+
+// teamlist
+define('_LIST_TEAM_ADMIN',                     'Διαχειριστής ');
+define('_LIST_TEAM_CHADMIN',           'Αλλαγή διαχειριστή');
+
+// edit comments
+define('_EDITC_TITLE',                         'Επεξεργασία σχολίων');
+define('_EDITC_WHO',                           'Συντάκτης');
+define('_EDITC_HOST',                          'Από πού;');
+define('_EDITC_WHEN',                          'Πότε;');
+define('_EDITC_TEXT',                          'Κείμενο');
+define('_EDITC_EDIT',                          'Επεξεργασία σχολίου');
+define('_EDITC_MEMBER',                        'μέλος');
+define('_EDITC_NONMEMBER',                     'όχι μέλος');
+
+// move item
+define('_MOVE_TITLE',                          'Μεταφορά σε ποιο ιστολόγιο;');
+define('_MOVE_BTN',                            'Μεταφορά άρθρου');
+
+// ADMIN-template template types
+include_once('adminskinTypes.php');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_NAVILIST',          'navibar for item/comment list');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is blog ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is super ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin URL');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'API entry');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'eventlist updates');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency to');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency by');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'couldn\'t load file');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin actions');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin admin link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin help link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin option setting link');
diff --git a/nucleus/locales/el_Grek_GR.WINDOWS-1253.php b/nucleus/locales/el_Grek_GR.WINDOWS-1253.php
new file mode 100644 (file)
index 0000000..1c1b150
--- /dev/null
@@ -0,0 +1,1351 @@
+<?php
+/**
+ * Nucleus CMS Translation File
+ * Greek in Greece (Greek script) (Greek script) (Greek script)
+ * 
+ * Nucleus version: v1.0-v2.5
+ * Authors: Antonis Scandalis (scandalis@datapages.gr) and Vangelis Pantelias (gelitheworm@limoutsis.gr)
+ * Full Revision and update for version 3.1 by Spiros Doikas (www.translatum.gr) on the 30th July 2005.
+ *
+ * @license http://nucleuscms.org/license.txt GNU General Public License
+ * @copyright Copyright (C) 2002-2012 The Nucleus Group
+ * @version $Id: el_Latn_GR.WINDOWS-1253.php 1837 2012-05-13 04:12:13Z sakamocchi $
+ */
+
+/********************************************
+ *        Start New for 4.0                 *
+ ********************************************/
+/* argument value for setlocale() in Microsoft's windows operating system */
+define('_LOCALE_IN_WINDOWS',   'ell_grc');
+
+/* labels for date and time measurement unit */
+define('_LABEL_YEAR_UNIT',             'year');
+define('_LABEL_MONTH_UNIT',            'month');
+define('_LABEL_DAY_UNIT',              'day');
+define('_LABEL_HOUR_UNIT',             'hour');
+define('_LABEL_MINUTE_UNIT',   'minute');
+
+// SkinableAdminArea vars
+define('_SKINABLEADMIN_DEL_UNINSTALL_DATA',                    'Delete ADMIN skin data table on uninstall?');
+define('_SKINABLEADMIN_DEFAULT_SKIN',                          'Choose a skin of the management area of the default.');
+define('_SKINABLEADMIN_MEMBER_DEFAULT_SKIN',           'Choose a skin of the management area of you use.');
+define('_SKINABLEADMIN_QMENU_LAYOUT',                          'Admin layout');
+define('_SKINABLEADMIN_PAGE_STR',                                      'page');
+define('_SKINABLEADMIN_BATCH_MOVE',                                    'Item move other category/Category move other blog');
+define('_SKINABLEADMIN_BATCH',                                         'batch');
+define('_SKINABLEADMIN_PAGEHEAD',                                      'Admin page head');
+define('_SKINABLEADMIN_PAGEFOOT',                                      'Admin page foot');
+define('_SKINABLEADMIN_TEMPLATEOVERVIEW',                      'Template overview');
+define('_SKINABLEADMIN_ADMINAREAHEADLINK',                     '[Your site]link');
+define('_SKINABLEADMIN_TPLSETTING_INGENERAL',          'In general');
+define('_SKINABLEADMIN_HEAD_STR',                                      ' head');
+define('_SKINABLEADMIN_BODY_STR',                                      ' body');
+define('_SKINABLEADMIN_FOOT_STR',                                      ' foot');
+define('_SKINABLEADMIN_TEXT_STR',                                      ' text');
+define('_SKINABLEADMIN_TITLE_STR',                                     ' title');
+define('_SKINABLEADMIN_ADMINSETTING_STR',                      ' set editmember is \'admin\'');
+define('_SKINABLEADMIN_NORMALSETTING_STR',                     ' normal');
+define('_SKINABLEADMIN_HELPICONURL_STR',                       ' icon URL');
+define('_SKINABLEADMIN_HELPFILEURL_STR',                       ' help file URL');
+define('_SKINABLEADMIN_ADMINSKINVAR_STR',                      ' skinvars');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_SELECT',      'selectbox used in ADMIN area');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE',       'Table for list indication');
+define('_SKINABLEADMIN_PLUGIN_QUICKMENU',                      'Link to admin page of the plugin shown to the quick-menu');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE',         'Template for option-type %s');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTMETA',         'Template for option-meta-data %s');
+define('_SKINABLEADMIN_MEMBERS_ADMINSKIN',                     "ADMIN-Area's skin");
+
+define('_LOCALE_BG_CYRL_BG',   'Bulgarian in Bulgaria');
+define('_LOCALE_CA_LATN_ES',   'Catalan in Spain');
+define('_LOCALE_CS_LATN_CZ',   'Czech in Czech Republic');
+define('_LOCALE_DE_LATN_DE',   'German in Germany');
+define('_LOCALE_EL_GREK_GR',   'Greek in Greece (Greek script) (Greek script)');
+define('_LOCALE_EN_LATN_US',   'English in United States');
+define('_LOCALE_ES_LATN_ES',   'Spanish in Spain');
+define('_LOCALE_FA_ARAB_IR',   'Persian in Islamic Republic of Iran');
+define('_LOCALE_FI_LATN_FI',   'Finnish in Finland');
+define('_LOCALE_FR_LATN_FR',   'French in France');
+define('_LOCALE_GL_LATN_ES',   'Galician in Spain');
+define('_LOCALE_HR_LATN_HR',   'Croatian in Croatia');
+define('_LOCALE_HU_LATN_HU',   'Hungarian in Hungary');
+define('_LOCALE_ID_LATN_ID',   'Indonesian in Indonesia (Latin script)');
+define('_LOCALE_IT_LATN_IT',   'Italian in Italy');
+define('_LOCALE_JA_JPAN_JP',   'Japanese in Japan');
+define('_LOCALE_KO_KORE_KR',   'Korean in Korea');
+define('_LOCALE_KU_ARAB_TR',   'Kurdish in Turkey (Arabic script)');
+define('_LOCALE_LV_LATN_LV',   'Latvian in Latvia');
+define('_LOCALE_NL_LATN_NL',   'Dutch in Netherlands');
+define('_LOCALE_PL_LATN_PL',   'Polish in Poland');
+define('_LOCALE_PT_LATN_BR',   'Portuguese in Brazil');
+define('_LOCALE_RO_LATN_RO',   'Romainan in Romania');
+define('_LOCALE_RU_CYRL_RU',   'Russian in Russia');
+define('_LOCALE_SK_LATN_SK',   'Slovak in Slovakia');
+define('_LOCALE_SR_CYRL_RS',   'Serbian in Serbia');
+define('_LOCALE_UR_ARAB_PK',   'Urdu in Pakistan');
+define('_LOCALE_VI_LATN_VN',   'Vietnamese in Vietnam (Latin script)');
+define('_LOCALE_ZH_HANS_CN',   'Chinese in China (simplified script)');
+define('_LOCALE_ZH_HANT_TW',   'Chinese in Taiwan (Traditional script)');
+
+define('_FORGOTPASSWORD_TITLE',                                'Forgot your password?');
+define('_FORGOTPASSWORD_MSG',                          'Enter your username and email address below, and you\'ll be sent an e-mail with a link where you can choose a new password.');
+define('_FORGOTPASSWORD_SUBMIT',                       'Send Activation Link" class="transparent');
+define('_FORGOTPASSWORD_CONTACT',                      'If you don\'t remember your exact username, contact the site administrator.');
+define('_SKINIE_INVALID_NAMES_DETECTED',       'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
+define('_LISTS_AUTHOR',                                                'Author');
+define('_OVERVIEW_OTHER_DRAFTS',                       'Other Drafts');
+define('_ERROR_BADADMINSKINNAME',                      'the name of skin for admin area must start with \'admin/\'.');
+define('_ERROR_BADADMINTEMPLATENAME',          'the name of template for admin area must start with \'admin/\'.');
+define('_SETTINGS_ADMINSKIN',                          'default skin for admin area');
+define('_SETTINGS_BKMKLTSKIN',                         'default skin for bookmarklet');
+define('_MEMBERS_BKMKLTSKIN',                          "bookmarklet skin");
+define('_ADMIN_SYSTEMOVERVIEW_VERSION_LATEST',         'The version which is being used is latest.');
+
+/********************************************
+ *        Start New for 3.6x                *
+ ********************************************/
+define('_ERROR_USER_TOO_LONG', 'Please enter a name shorter than 40 characters.');
+define('_ERROR_EMAIL_TOO_LONG', 'Please enter an email shorter than 100 characters.');
+define('_ERROR_URL_TOO_LONG', 'Please enter a website shorter than 100 characters.');
+
+/********************************************
+ *        Start New for 3.62                *
+ ********************************************/
+define('_SETTINGS_ADMINCSS',           'Admin Area Style');
+
+/********************************************
+ *        Start New for 3.50                *
+ ********************************************/
+define('_PLUGS_TITLE_GETPLUGINS',              'get more plugins...');
+define('_ARCHIVETYPE_YEAR', 'year');
+define('_ADMIN_SYSTEMOVERVIEW_LATESTVERSION_TITLE',            'Newer Version Available');
+define('_ADMIN_SYSTEMOVERVIEW_LATESTVERSION_TEXT',             'Upgrade available: v');
+define('_MANAGER_PLUGINSQLAPI_NOTSUPPORT', "Plugin %s was not loaded (does not support SqlApi and you are trying to use a non-mysql db)");
+
+
+/********************************************
+ *        Start New for 3.40                *
+ ********************************************/
+
+// START changed/added after 3.33 START
+define('_MEMBERS_USEAUTOSAVE',                                         'Use the Autosave function?');
+
+define('_TEMPLATE_PLUGIN_FIELDS',                                      'Custom Plugin Fields');
+define('_TEMPLATE_BLOGLIST',                                           'Template Blog List');
+define('_TEMPLATE_BLOGHEADER',                                         'Blog List Header');
+define('_TEMPLATE_BLOGITEM',                                           'Blog List Item');
+define('_TEMPLATE_BLOGFOOTER',                                         'Blog List Footer');
+
+define('_SETTINGS_DEFAULTLISTSIZE',                                    'Default Size of Lists in Admin Area');
+define('_SETTINGS_DEBUGVARS',          'Debug Vars');
+
+define('_CREATE_ACCOUNT_TITLE',                                                'Create Member Account');
+define('_CREATE_ACCOUNT0',                                                     'Create Account');
+define('_CREATE_ACCOUNT1',                                                     'Visitors are not allowed to create a Member Account.<br /><br />');
+define('_CREATE_ACCOUNT2',                                                     'Please contact the website administrator for more information.');
+define('_CREATE_ACCOUNT_USER_DATA',                                    'Account Info.');
+define('_CREATE_ACCOUNT_LOGIN_NAME',                           'Login Name (required):');
+define('_CREATE_ACCOUNT_LOGIN_NAME_VALID',                     'only a-z and 0-9 allowed, no spaces at start/end');
+define('_CREATE_ACCOUNT_REAL_NAME',                                    'Real Name (required):');
+define('_CREATE_ACCOUNT_EMAIL',                                                'Email (required):');
+define('_CREATE_ACCOUNT_EMAIL2',                                       '(must be valid, because an activation link will be sent over there)');
+define('_CREATE_ACCOUNT_URL',                                          'URL:');
+define('_CREATE_ACCOUNT_SUBMIT',                                       'Create Account');
+
+define('_BMLET_BACKTODRAFTS',          'Move back to drafts');
+define('_BMLET_CANCEL',                                'Cancel');
+
+define('_LIST_ITEM_NOCONTENT',                                         'No Comment');
+define('_LIST_ITEM_COMMENTS',                                          '%d Comments');
+
+define('_EDITC_URL',                           'Web site');
+define('_EDITC_EMAIL',                         'E-mail');
+
+define('_MANAGER_PLUGINFILE_NOTFOUND',                         "Plugin %s was not loaded (File not found)");
+/* changed */
+// plugin dependency
+define('_ERROR_INSREQPLUGIN',          'Ç åãêáôÜóôáóç ðñïóèÝôïõ áðÝôõ÷å, áðáéôåß ');
+define('_ERROR_DELREQPLUGIN',          'Ç äéáãñáöÞ ðñïóèÝôïõ áðÝôõ÷å, áðáéôåßôáé áðü');
+
+
+//define('_ADD_ADDLATER',                                                              'Add Later');
+define('_ADD_ADDLATER',                        'ÐñïóèÞêç áñãüôåñá');
+
+define('_LOGIN_NAME',                          '¼íïìá');
+define('_LOGIN_PASSWORD',                      'Êùäéêüò ðñüóâáóçò');
+
+// changed from _BOOKMARLET_BMARKLFOLLOW
+define('_BOOKMARKLET_BMARKFOLLOW',                                     ' (Works with nearly all browsers)');
+// END changed/added after 3.33 END
+
+// START merge UTF-8 and EUC-JP
+
+// Create New blog
+define('_ADMIN_NOTABILIA',                                                     'Some information');
+define('_ADMIN_PLEASE_READ',                                           "Before you start, here's some <strong>important information</strong>");
+define('_ADMIN_HOW_TO_ACCESS',                                         "After you've created a new weblog, you'll need to perform some actions to make your blog accessible. There are two possibilities:");
+define('_ADMIN_SIMPLE_WAY',                                                    "<strong>Simple:</strong> Create a copy of <code>index.php</code> and modify it to display your new weblog. Further instructions on how to do this will be provided after you've submitted this first form.");
+define('_ADMIN_ADVANCED_WAY',                                          "<strong>Advanced:</strong> Insert the blog content into your current skins using skinvars like <code>&lt;%otherblog()&gt;</code>. This way, you can place multiple blogs on the same page.");
+define('_ADMIN_HOW_TO_CREATE',                                         'Create Weblog');
+
+
+define('_BOOKMARKLET_NEW_CATEGORY',                                    'Item was added, and a new category was created. ');
+define('_BOOKMARKLET_NEW_CATEGORY_EDIT',                       'Click here to edit the name and description of the category.');
+define('_BOOKMARKLET_NEW_WINDOW',                                      'Opens in new window');
+define('_BOOKMARKLET_SEND_PING',                                       'Item was added successfully. Now pinging weblogs.com. Please hold on... (can take a while)'); // NOTE: This string is no longer in used
+
+// END merge UTF-8 and EUC-JP
+
+// <add by shizuki>
+// OVERVIEW screen
+define('_OVERVIEW_SHOWALL',                                                    'Show all blogs');      // <add by shizuki />
+
+// Edit skins
+define('_SKINEDIT_ALLOWEDBLOGS',                                               'Short blog names:');                   // <add by shizuki>
+define('_SKINEDIT_ALLOWEDTEMPLATESS',                                  'Template names:');             // <add by shizuki>
+
+// delete member
+define('_WARNINGTXT_NOTDELMEDIAFILES',                         'Please note that media files will <b>NOT</b> be deleted. (At least not in this Nucleus version)');     // <add by shizuki />
+
+// send Weblogupdate.ping
+define('_UPDATEDPING_MESSAGE',                                         '<h2>Site Updated, Now pinging various weblog listing services...</h2><p>This can take a while...</p><p>If you aren\'t automatically passed through, '); // NOTE: This string is no longer in used
+define('_UPDATEDPING_GOPINGPAGE',                                      'try again'); // NOTE: This string is no longer in used
+define('_UPDATEDPING_PINGING',                                         'Pinging services, please wait...'); // NOTE: This string is no longer in used
+define('_UPDATEDPING_VIEWITEM',                                                'View list of recent items for '); // NOTE: This string is no longer in used
+define('_UPDATEDPING_VISITOWNSITE',                                    'Visit your own site'); // NOTE: This string is no longer in used
+
+// General category
+define('_EBLOGDEFAULTCATEGORY_NAME',                           'General');
+define('_EBLOGDEFAULTCATEGORY_DESC',                           'Items that do not fit in other categories');
+
+// First ITEM
+define('_EBLOG_FIRSTITEM_TITLE',                                       'First Item');
+define('_EBLOG_FIRSTITEM_BODY',                                                'This is the first item in your weblog. Feel free to delete it.');
+
+// New weblog was created
+define('_BLOGCREATED_TITLE',                                           'New weblog created');
+define('_BLOGCREATED_ADDEDTXT',                                                "Your new weblog (%s) has been created. To continue, choose the way you'll want to make it viewable:");
+define('_BLOGCREATED_SIMPLEWAY',                                       "Easiest: A copy of <code>%s.php</code>");
+define('_BLOGCREATED_ADVANCEDWAY',                                     "Advanced: Call the weblog from existing skins");
+define('_BLOGCREATED_SIMPLEDESC1',                                     "Method 1: Create an extra <code>%s.php</code> file");
+define('_BLOGCREATED_SIMPLEDESC2',                                     "Create a file called <code>%s.php</code>, and copy-paste the following code into it:");
+define('_BLOGCREATED_SIMPLEDESC3',                                     "Upload the file next to your existing <code>index.php</code> file, and you should be all set.");
+define('_BLOGCREATED_SIMPLEDESC4',                                     "To finish the weblog creation process, please fill out the final URL for your weblog (the proposed value is a <em>guess</em>, don't take it for granted):");
+define('_BLOGCREATED_ADVANCEDWAY2',                                    "Method 2: Call the weblog from existing skins");
+define('_BLOGCREATED_ADVANCEDWAY3',                                    "To finish the weblog creation process, simply please fill out the final URL for your weblog: (might be the same as another already existing weblog)");
+
+// Donate!
+define('_ADMINPAGEFOOT_OFFICIALURL',                           'http://nucleuscms.org/');
+define('_ADMINPAGEFOOT_DONATEURL',                                     'http://nucleuscms.org/donate.php');
+define('_ADMINPAGEFOOT_DONATE',                                                'Donate!');
+define('_ADMINPAGEFOOT_COPYRIGHT',                                     'The Nucleus Group');
+
+// Quick menu
+define('_QMENU_MANAGE_SYSTEM',                                         'System info');
+
+// Bookmarklet
+define('_BOOKMARKLET_TITLE',                                           'Bookmarklet<!-- and Right Click Menu -->');
+define('_BOOKMARKLET_DESC1',                                           'Bookmarklets allow adding items to your weblog with just one single click. ');
+define('_BOOKMARKLET_DESC2',                                           'After installing these bookmarklets, you\'ll be able to click the \'add to weblog\' button on your browser toolbar, ');
+define('_BOOKMARKLET_DESC3',                                           'and a Nucleus add-item window will popup, ');
+define('_BOOKMARKLET_DESC4',                                           'containing the link and title of the page you were visiting, ');
+define('_BOOKMARKLET_DESC5',                                           'plus any text you might have selected.');
+define('_BOOKMARKLET_BOOKARKLET',                                      'bookmarklet');
+define('_BOOKMARKLET_ANCHOR',                                          'Add to %s');
+define('_BOOKMARKLET_BMARKTEXT',                                       'You can drag the following link to your favorites, or your browsers toolbar: ');
+define('_BOOKMARKLET_BMARKTEST',                                       '(if you want to test the bookmarklet first, click the link)');
+
+define('_BOOKMARKLET_ERROR_SOMETHINGWRONG',                    'Something went wrong');
+define('_BOOKMARKLET_ERROR_COULDNTNEWCAT',                     'Could not create new category');
+
+// BAN
+define('_BAN_EXAMPLE_TITLE',                                           'An example');
+define('_BAN_EXAMPLE_TEXT',                                                    ': "134.58.253.193" will only block one computer, while "134.58.253" will block 256 IP addresses, including the one from the first example.');
+define('_BAN_IP_CUSTOM',                                                       'Custom: ');
+define('_BAN_BANBLOGNAME',                                                     'Only blog %s');
+
+// Plugin Options
+define('_PLUGIN_OPTIONS_TITLE',                                                        'Options for %s');
+
+// Plugin file loda error
+define('_PLUGINFILE_COULDNT_BELOADED',                         'Error: plugin file <strong>%s.php</strong> could not be loaded, or it has been set inactive because it does not support some features (check the <a href="?action=actionlog">actionlog</a> for more info)');
+
+define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
+
+// Errors
+define('_ERRORS_INSTALLSQL',                                           'install.sql should be deleted');
+define('_ERRORS_INSTALLDIR',                                           'install directory should be deleted');  // <add by shizuki />
+define('_ERRORS_INSTALLPHP',                                           'install.php should be deleted');
+define('_ERRORS_UPGRADESDIR',                                          'nucleus/upgrades directory should be deleted');
+define('_ERRORS_CONVERTDIR',                                           'nucleus/convert directory should be deleted');
+define('_ERRORS_CONFIGPHP',                                                    'config.php should be non-writable (chmod to 444)');
+define('_ERRORS_STARTUPERROR1',                                                '<p>One or more of the Nucleus installation files are still present on the webserver, or are writable.</p><p>You should remove these files or change their permissions to ensure security. Here are the files that were found by Nucleus</p> <ul><li>');
+define('_ERRORS_STARTUPERROR2',                                                '</li></ul><p>If you don\'t want to see this error message again, without solving the problem, set <code>$CONF[\'alertOnSecurityRisk\']</code> in <code>globalfunctions.php</code> to <code>0</code>, or do this at the end of <code>config.php</code>.</p>');
+define('_ERRORS_STARTUPERROR3',                                                'Security Risk');
+
+// PluginAdmin tickets by javascript
+define('_PLUGINADMIN_TICKETS_JAVASCRIPT',                      '<p><b>Error occured during automatic addition of tickets.</b></p>');
+
+// Global settings disablesite URL
+define('_SETTINGS_DISABLESITEURL',                                     'Redirect URL:');
+
+// Skin import/export
+define('_SKINIE_SEELEMENT_UNEXPECTEDTAG',                      'UNEXPECTED TAG');
+define('_SKINIE_ERROR_FAILEDOPEN_FILEURL',                     'Failed to open file/URL');
+define('_SKINIE_NAME_CLASHES_DETECTED',                                'Name clashes detected, re-run with allowOverwrite = 1 to force overwrite');
+
+// ACTIONS.php parse_commentform
+define('_ACTIONURL_NOTLONGER_PARAMATER',                       'actionurl is not longer a parameter on commentform skinvars. Moved to be a global setting instead.');
+
+// ADMIN.php addToTemplate 'Query error: '
+define('_ADMIN_SQLDIE_QUERYERROR',                                     'Query error: ');
+
+// backyp.php Backup WARNING
+define('_BACKUP_BACKUPFILE_TITLE',                                     'This is a backup file generated by Nucleus');
+define('_BACKUP_BACKUPFILE_BACKUPDATE',                                'backup-date:');
+define('_BACKUP_BACKUPFILE_NUCLEUSVERSION',                    'Nucleus CMS version:');
+define('_BACKUP_BACKUPFILE_DATABASE_NAME',                     'Nucleus CMS Database name:');
+define('_BACKUP_BACKUPFILE_TABLE_NAME',                                'TABLE:');
+define('_BACKUP_BACKUPFILE_TABLEDATAFOR',                      'Table Data for %s');
+define('_BACKUP_WARNING_NUCLEUSVERSION',                       'WARNING: Only try to restore on servers running the exact same version of Nucleus');
+define('_BACKUP_RESTOR_NOFILEUPLOADED',                                'No file uploaded');
+define('_BACKUP_RESTOR_UPLOAD_ERROR',                          'File Upload Error');
+define('_BACKUP_RESTOR_UPLOAD_NOCORRECTTYPE',          'The uploaded file is not of the correct type');
+define('_BACKUP_RESTOR_UPLOAD_NOZLIB',                         'Cannot decompress gzipped backup (zlib package not installed)');
+define('_BACKUP_RESTOR_SQL_ERROR',                                     'SQL Error: ');
+
+// BLOG.php addTeamMember
+define('_TEAM_ADD_NEWTEAMMEMBER',                                      'Added %s (ID=%d) to the team of blog "%s"');
+
+// ADMIN.php systemoverview()
+define('_ADMIN_SYSTEMOVERVIEW_HEADING',                                'System Overview');
+define('_ADMIN_SYSTEMOVERVIEW_PHPANDMYSQL',                    'PHP and MySQL');
+define('_ADMIN_SYSTEMOVERVIEW_VERSIONS',                       'Versions');
+define('_ADMIN_SYSTEMOVERVIEW_PHPVERSION',                     'PHP version');
+define('_ADMIN_SYSTEMOVERVIEW_MYSQLVERSION',           'MySQL version');
+define('_ADMIN_SYSTEMOVERVIEW_SETTINGS',                       'Settings');
+define('_ADMIN_SYSTEMOVERVIEW_GDLIBRALY',                      'GD Libraly');
+define('_ADMIN_SYSTEMOVERVIEW_MODULES',                                'Modules');
+define('_ADMIN_SYSTEMOVERVIEW_ENABLE',                         'enabled');
+define('_ADMIN_SYSTEMOVERVIEW_DISABLE',                                'disabled');
+define('_ADMIN_SYSTEMOVERVIEW_NUCLEUSSYSTEM',          'Your Nucleus CMS System');
+define('_ADMIN_SYSTEMOVERVIEW_NUCLEUSVERSION',         'Nucleus CMS version');
+define('_ADMIN_SYSTEMOVERVIEW_NUCLEUSPATCHLEVEL',      'Nucleus CMS patch level');
+define('_ADMIN_SYSTEMOVERVIEW_NUCLEUSSETTINGS',                'Important settings');
+define('_ADMIN_SYSTEMOVERVIEW_VERSIONCHECK',           'Check for a new version');
+define('_ADMIN_SYSTEMOVERVIEW_VERSIONCHECK_TXT',       'Check on nucleuscms.org if a new version is available: ');
+define('_ADMIN_SYSTEMOVERVIEW_VERSIONCHECK_URL',       'http://nucleuscms.org/version.php?v=%d&amp;pl=%d');
+define('_ADMIN_SYSTEMOVERVIEW_VERSIONCHECK_TITLE',     'Check for upgrade');
+define('_ADMIN_SYSTEMOVERVIEW_NOT_ADMIN',                      "You haven't enough rights to see the system informations.");
+
+// ENCAPSULATE.php
+define('_ENCAPSULATE_ENCAPSULATE_NOENTRY',                     'No entries');
+
+// globalfunctions.php
+define('_GFUNCTIONS_LOGINPCSHARED_YES',                                'on shared PC');
+define('_GFUNCTIONS_LOGINPCSHARED_NO',                         'on not shared PC');
+define('_GFUNCTIONS_LOGINSUCCESSFUL_TXT',                      'Login successful for %s (%s)');
+define('_GFUNCTIONS_LOGINFAILED_TXT',                          'Login failed for %s');
+define('_GFUNCTIONS_LOGOUT_TXT',                                       '%s is logouted');
+define('_GFUNCTIONS_HEADERSALREADYSENT_FILE',          ' in <code>%s</code> line <code>%s</code>');
+define('_GFUNCTIONS_HEADERSALREADYSENT_TITLE',         ' Page headers already sent');
+define('_GFUNCTIONS_HEADERSALREADYSENT_TXT',           '<p>The page headers have already been sent out%s. This could cause Nucleus not to work in the expected way.</p><p>Usually, this is caused by spaces or newlines at the end of the <code>config.php</code> file, at the end of the translation file or at the end of a plugin file. Please check this and try again.</p><p>If you don\'t want to see this error message again, without solving the problem, set <code>$CONF[\'alertOnHeadersSent\']</code> in <code>globalfunctions.php</code> to <code>0</code></p>');
+define('_GFUNCTIONS_PARSEFILE_FILEMISSING',                    'A file is missing');
+define('_GFUNCTIONS_AN_ERROR_OCCURRED',                                'Sorry. An error occurred.');
+define('_GFUNCTIONS_YOU_AERNT_LOGGEDIN',                       "You aren't logged in.");
+
+// MANAGER.php
+define('_MANAGER_PLUGINFILE_NOCLASS',                          "Plugin %s was not loaded (Class not found in file, possible parse error)");
+define('_MANAGER_PLUGINTABLEPREFIX_NOTSUPPORT',                "Plugin %s was not loaded (does not support SqlTablePrefix)");
+
+// mysql.php
+define('_NO_SUITABLE_MYSQL_LIBRARY',                           "<p>No suitable mySQL library was found to run Nucleus</p>");
+
+// PLUGIN.php
+define('_ERROR_PLUGIN_NOSUCHACTION',                           'No Such Action');
+
+// PLUGINADMIN.php
+define('_ERROR_INVALID_PLUGIN',                                                'Invalid plugin');
+
+// showlist.php
+define('_LIST_PLUGS_DEPREQ',                                           'Plugin(s) requires:');
+define('_LIST_SKIN_PREVIEW',                                           "Preview for '%s' skin");
+define('_LIST_SKIN_PREVIEW_VIEWLARGER',                                "View larger");
+define('_LIST_SKIN_README',                                                    "More info on the '%s' skin");
+define('_LIST_SKIN_README_TXT',                                                'Read me');
+
+// BLOG.php createNewCategory()
+define('_CREATED_NEW_CATEGORY_NAME',                           'newcat');
+define('_CREATED_NEW_CATEGORY_DESC',                           'New category');
+
+// ADMIN.php blog settings
+define('_EBLOG_CURRENT_TEAM_MEMBER',                           'Members currently on your team:');
+
+/********************************************
+ *        End New for 3.40                  *
+ ********************************************/
+
+// START changed/added after 3.3 START
+define('_AUTOSAVEDRAFT',               'Auto save draft');
+define('_AUTOSAVEDRAFT_LASTSAVED',     'Last saved: ');
+define('_AUTOSAVEDRAFT_NOTYETSAVED',   'No saves have been made yet');
+define('_AUTOSAVEDRAFT_NOW',           'Auto save now');
+define('_SKIN_PARTS_SPECIAL',          'Special skin parts');
+define('_ERROR_SKIN_PARTS_SPECIAL_FORMAT',             'You must enter a name that exists only out of lowercase letters and digits');
+define('_ERROR_SKIN_PARTS_SPECIAL_DELETE',             'Can\'t delete this skin part');
+define('_CONFIRMTXT_SKIN_PARTS_SPECIAL',               'Do you really want to delete this special skin part?');
+define('_ERROR_PLUGIN_LOAD',           'Plugin could not be loaded, or does not support certain features that are required for it to run on your Nucleus installation (you might want to check the <a href="?action=actionlog">actionlog</a> for more info)');
+// END changed/added after 3.3 END
+
+// START changed/added after 3.22 START
+define('_SEARCHFORM_QUERY',                    'Keywords to search');
+define('_ERROR_EMAIL_REQUIRED',                'Email address is required');
+define('_COMMENTFORM_MAIL',            'E-mail/HTTP');
+define('_COMMENTFORM_EMAIL',           'E-mail:');
+define('_EBLOG_REQUIREDEMAIL',         'Require E-mail address with comments?');
+define('_ERROR_COMMENTS_SPAM',      'Your comment was rejected because it did not pass the spam test');
+// END changed/added after 3.22 END
+
+// START changed/added after 315 START
+
+define('_LIST_PLUG_SUBS_NEEDUPDATE','Per favore usa il pulsante \'Aggiorna lista di sottoscrizione\' per aggiornare la lista di sottoscrizione dei plugin.');
+define('_LIST_PLUGS_DEP',                      'I Plugin richiedono:');
+
+// END changed/added after 3.15
+
+// START changed/added after 3.1 START
+
+// comments list per weblog
+define('_COMMENTS_BLOG',                       '¼ëá ôá ó÷üëéá ãéá ôï éóôïëüãéï');
+define('_NOCOMMENTS_BLOG',                     'Äåí Ý÷ïõí ãéíåé ó÷üëéá óå Üñèñá áõôïý ôïõ éóôïëïãßïõ');
+define('_BLOGLIST_COMMENTS',           'Ó÷üëéá');
+define('_BLOGLIST_TT_COMMENTS',                'Ìéá ëßóôá ìå üëá ôá ó÷üëéá ðïõ Ý÷ïõí ãßíåé óå Üñèñá áõôïý ôïõ éóôïëïãßïõ');
+
+
+// for use in archivetype-skinvar
+define('_ARCHIVETYPE_DAY',                     'çìÝñá');
+define('_ARCHIVETYPE_MONTH',           'ìÞíáò');
+
+// tickets (prevents malicious users to trick an admin to perform actions he doesn't want)
+define('_ERROR_BADTICKET',                     'Ìç Ýãêõñï Þ ëçãìÝíï åéóéôÞñéï.');
+
+// cookie prefix
+define('_SETTINGS_COOKIEPREFIX',       'Ðñüèåìá cookie');
+
+// account activation
+define('_ERROR_NOLOGON_NOACTIVATE',    'Äåí åßíáé äõíáôÞ ç áðïóôïëÞ óõíäÝóìïõ åíåñãïðïßçóçò. Äåí óáò åðéôñÝðåôáé íá óõíäåèåßôå.');
+define('_ERROR_ACTIVATE',                      'Ôï êëåéäß åíåñãïðïßçóçò äåí õðÜñ÷åé, äåí åßíáé Ýãêõñï Þ Ý÷åé ëÞîåé.');
+define('_ACTIONLOG_ACTIVATIONLINK', 'Ï óýíäåóìïò åíåñãïðïßçóçò Ý÷åé óôáëåß');
+define('_MSG_ACTIVATION_SENT',         '¸íáò óýíäåóìïò åíåñãïðïßçóçò Ý÷åé óôáëåß ìå e-mail.');
+
+// activation link emails
+define('_ACTIVATE_REGISTER_MAIL',      "Ãåéá óáò <%memberName%>,\n\nÐñÝðåé íá åíåñãïðïéÞóåôå ôïí ëïãáñéáóìü óáò óôï <%siteName%> (<%siteUrl%>).\nÌðïñåßôå íá ôï êÜíåôå ðçãáßíïíôáò óôïí ðáñáêÜôù óýíäåóìï: \n\n\t<%activationUrl%>\n\n¸÷åôå 2 ðåñéèþñéï ãéá íá ôï êÜíåôå. ¾óôåñá, ï óýíäåóìïò åíåñãïðïßçóçò äåí èá åßíáé ðëÝïí Ýãêõñïò.");
+define('_ACTIVATE_REGISTER_MAILTITLE', "ÅíåñãïðïéÞóôå ôïí ëïãáñéáóìü óáò '<%memberName%>'");
+define('_ACTIVATE_REGISTER_TITLE',     'Êáëþò üñéóåò <%memberName%>');
+define('_ACTIVATE_REGISTER_TEXT',      '¸÷åôå ó÷åäüí ôåëåéþóåé. Ðáñáêáëþ åðéëÝîôå Ýíáí êùäéêü ðñüóâáóçò ãéá ôïí ðáñáêÜôù ëïãáñéáóìü óáò.');
+define('_ACTIVATE_FORGOT_MAIL',                "Hi <%memberName%>,\n\n×ñçóéìïðïéþíôáò ôïí ðáñáêÜôù óýíäåóìï, ìðïñåßôå íá åðéëÝîôå Ýíáí íÝï êùäéêü ðñüóâáóçò ãéá ôïí ëïãáñéáóìü óáò óôï <%siteName%> (<%siteUrl%>) åðéëÝãïíôáò Ýíáí íÝï êùäéêü ðñüóâáóçò .\n\n\t<%activationUrl%>\n\n¸÷åôå 2 ðåñéèþñéï ãéá íá ôï êÜíåôå. ¾óôåñá, ï óýíäåóìïò åíåñãïðïßçóçò äåí èá åßíáé ðëÝïí Ýãêõñïò.");
+define('_ACTIVATE_FORGOT_MAILTITLE',"ÅíåñãïðïéÞóôå îáíÜ óôïí ëïãáñéáóìü óáò '<%memberName%>'");
+define('_ACTIVATE_FORGOT_TITLE',       'Êáëþò üñéóåò <%memberName%>');
+define('_ACTIVATE_FORGOT_TEXT',                'Ìðïñåßôå íá åðéëÝîôå Ýíáí íÝï êùäéêü ðñüóâáóçò ãéá ôïí ëïãáñéáóìü óáò ðáñáêÜôù:');
+define('_ACTIVATE_CHANGE_MAIL',                "Hi <%memberName%>,\n\nÊáèþò ç äéåýèõíóÞ óáò e-mail Ý÷åé áëëÜîåé, èá ÷ñåéáóôå íá åíåñãïðïéÞóåôå îáíÜ ôï ëïãáñéáóìü óáò óôï <%siteName%> (<%siteUrl%>).\nÌðïñåßôå íá ôï êÜíåôå ðçãáßíïíôáò óôïí ðáñáêÜôù óýíäåóìï: \n\n\t<%activationUrl%>\n\n¸÷åôå 2 ðåñéèþñéï ãéá íá ôï êÜíåôå. ¾óôåñá, ï óýíäåóìïò åíåñãïðïßçóçò äåí èá åßíáé ðëÝïí Ýãêõñïò.");
+define('_ACTIVATE_CHANGE_MAILTITLE',"ÅíåñãïðïéÞóôå îáíÜ óôïí ëïãáñéáóìü óáò '<%memberName%>'");
+define('_ACTIVATE_CHANGE_TITLE',       'Êáëþò üñéóåò <%memberName%>');
+define('_ACTIVATE_CHANGE_TEXT',                'Ç äéåýèõíóÞ óáò åðáëçèåýôçêå. Åõ÷áñéóôïýìå!');
+define('_ACTIVATE_SUCCESS_TITLE',      'Ç åíåñãïðïßçóç ðÝôõ÷å');
+define('_ACTIVATE_SUCCESS_TEXT',       'Ï ëïãáñéáóìüò óáò åíåñãïðïéÞèçêå ìå åðéôõ÷ßá.');
+define('_MEMBERS_SETPWD',                      'Ïñéóìüò êùäéêïý ðñüóâáóçò');
+define('_MEMBERS_SETPWD_BTN',          'Ïñéóìüò êùäéêïý ðñüóâáóçò');
+define('_QMENU_ACTIVATE',                      'Åíåñãïðïßçóç ëïãáñéáóìïý');
+define('_QMENU_ACTIVATE_TEXT',         '<p>Áöïý åíåñãïðïéÞóåôå ôïí ëïãáñéáóìü óáò, ìðïñåßôå íá áñ÷ßóåôå íá ôïí ÷ñçóéìïðïéåßôå áöïý <a href="index.php?action=showlogin">óõíäåèåßôå</a>.</p>');
+
+define('_PLUGS_BTN_UPDATE',                    'ÅíçìÝñùóç ëßóôáò óõíäñïìÞò');
+
+// global settings
+define('_SETTINGS_JSTOOLBAR',          'ÃñáììÞ åñãáëåßùí óå óôõë Javascript');
+define('_SETTINGS_JSTOOLBAR_FULL',     'ÐëÞñçò ãñáììÞ åñãáëåßùí (IE)');
+define('_SETTINGS_JSTOOLBAR_SIMPLE','ÁðëÞ ãñáììÞ åñãáëåßùí (¼÷é IE)');
+define('_SETTINGS_JSTOOLBAR_NONE',     'Áðåíåñãïðïßçóç ãñáììÞò åñãáëåßùí');
+define('_SETTINGS_URLMODE_HELP',       '(Info: <a href="documentation/tips.html#searchengines-fancyurls">Ðþò íá åíåñãïðïéÞóåôå ôá ðñï÷ùñçìÝíá URL</a>)');
+
+// extra plugin settings part when editing categories/members/blogs/...
+define('_PLUGINS_EXTRA',                       'Åðéðñüóèåôåò ñõèìßóåéò ðñïóèÝôùí');
+
+// itemlist info column keys
+define('_LIST_ITEM_BLOG',                      'éóôïëüãéï:');
+define('_LIST_ITEM_CAT',                       'êáô:');
+define('_LIST_ITEM_AUTHOR',                    'óõíôÜêôçò:');
+define('_LIST_ITEM_DATE',                      'çìåñïìçíßá:');
+define('_LIST_ITEM_TIME',                      'þñá:');
+
+// indication of registered members in comments list
+define('_LIST_COMMENTS_MEMBER',        '(ìÝëïò)');
+
+// batch operations
+define('_BATCH_WITH_SEL',                      'Ìå ôá åðéëåãìÝíá:');
+define('_BATCH_EXEC',                          'ÅêôÝëåóç');
+
+// quickmenu
+define('_QMENU_HOME',                          'Áñ÷éêÞ');
+define('_QMENU_ADD',                           'ÐñïóèÞêç Üñèñïõ');
+define('_QMENU_ADD_SELECT',                    '-- åðéëÝîôå --');
+define('_QMENU_USER_SETTINGS',         'Ñõèìßóåéò');
+define('_QMENU_USER_ITEMS',                    '¢ñèñá');
+define('_QMENU_USER_COMMENTS',         'Ó÷üëéá');
+define('_QMENU_MANAGE',                                'Äéá÷åßñéóç');
+define('_QMENU_MANAGE_LOG',                    'Çìåñïëüãéï êáôáãñáöÞò åíåñãåéþí');
+define('_QMENU_MANAGE_SETTINGS',       'ÃåíéêÝò ñõèìßóåéò');
+define('_QMENU_MANAGE_MEMBERS',                'ÌÝëç');
+define('_QMENU_MANAGE_NEWBLOG',                'ÍÝï éóôïëüãéï');
+define('_QMENU_MANAGE_BACKUPS',                'Áíôßãñáöá áóöáëåßáò');
+define('_QMENU_MANAGE_PLUGINS',                'Ðñüóèåôá');
+define('_QMENU_LAYOUT',                                'ÄéÜôáîç');
+define('_QMENU_LAYOUT_SKINS',          'Åìöáíßóåéò');
+define('_QMENU_LAYOUT_TEMPL',          'Ðñüôõðá');
+define('_QMENU_LAYOUT_IEXPORT',                'ÅéóáãùãÞ/ÅîáãùãÞ');
+define('_QMENU_PLUGINS',                       'Ðñüóèåôá');
+
+// quickmenu on logon screen
+define('_QMENU_INTRO',                         'ÅéóáãùãÞ');
+define('_QMENU_INTRO_TEXT',                    '<p>ÁõôÞ åßíáé ç óåëßäá óýíäåóçò óôï Nucleus CMS, ôï óýóôçìá äéá÷åßñéóçò ðåñéå÷ïìÝíïõ ðïõ ÷ñçóéìïðïéåßôå ãéá ôç ëåéôïõñãßá áõôïý ôïõ äéêôõáêïý ôüðïõ.</p><p>ÅÜí Ý÷åôå ëïãáñéáóìü, ìðïñåßôå íá óõíäåèåßôå êáé íá áñ÷ßóåôå íá äçìïóéåýåôáé íÝá Üñèñá.</p>');
+
+// helppages for plugins
+define('_ERROR_PLUGNOHELPFILE',                'Äåí åßíáé äõíáôÞ ç åýñåóç ôïõ áñ÷åßïõ âïçèåßáò ãéá áõôü ôï ðñüóèåôï');
+define('_PLUGS_HELP_TITLE',                    'Óåëßäá âïÞèåéáò ãéá ôï ðñüóèåôï');
+define('_LIST_PLUGS_HELP',                     'âïÞèåéá');
+
+
+// END changed/started after 3.1
+
+
+
+// general settings (security)
+define('_SETTINGS_EXTAUTH',                    'Åíåñãïðïßçóç åîùôåñéêÞò ðéóôïðïßçóçò ôáõôüôçôáò');
+define('_WARNING_EXTAUTH',                     'Ðñïåéäïðïßçóç: ÅíåñãïðïéÞóôå ôï ìüíï áí ôï ÷ñåéÜæåóôå.');
+
+// member profile
+define('_MEMBERS_BYPASS',                      '×ñÞóç åîùôåñéêÞò ðéóôïðïßçóçò ôáõôüôçôáò');
+
+// 'always include in search' blog setting (yes/no) [in v2.5beta, the 'always' part wasn't clear]
+define('_EBLOG_SEARCH',                                '<em>ÐÜíôá</em> íá óõìðåñéëáìâÜíåôáé óôçí áíáæÞôçóç');
+
+// END changed/added after v2.5beta
+
+// START introduced after v2.0 START
+
+// media library
+define('_MEDIA_VIEW',                          'ÐñïâïëÞ');
+define('_MEDIA_VIEW_TT',                       'ÐñïâïëÞ áñ÷åßïõ (Üíïéãìá óå íÝï ðáñÜèõñï)');
+define('_MEDIA_FILTER_APPLY',          'ÅöáñìïãÞ ößëôñïõ');
+define('_MEDIA_FILTER_LABEL',          'Ößëôñï: ');
+define('_MEDIA_UPLOAD_TO',                     'ÁðïóôïëÞ óôï...');
+define('_MEDIA_UPLOAD_NEW',            'ÁðïóôïëÞ íÝïõ áñ÷åßïõ...');
+define('_MEDIA_COLLECTION_SELECT',     'ÅðéëïãÞ');
+define('_MEDIA_COLLECTION_TT',         'ÅíáëëáãÞ óå áõôÞ ôçí êáôçãïñßá');
+define('_MEDIA_COLLECTION_LABEL',      'ÔñÝ÷ïõóá êáôçãïñßá: ');
+
+// tooltips on toolbar
+define('_ADD_ALIGNLEFT_TT',                    'ÁñéóôåñÞ óôïß÷éóç');
+define('_ADD_ALIGNRIGHT_TT',           'ÄåîéÜ óôïß÷éóç');
+define('_ADD_ALIGNCENTER_TT',          'ÊåíôñéêÞ óôïß÷éóç');
+
+
+// generic upload failure
+define('_ERROR_UPLOADFAILED',          'Ç áðïóôïëÞ áðÝôõ÷å');
+
+// END introduced after v2.0 END
+
+// START introduced after v1.5 START
+
+// posting to the past/edit timestamps
+define('_EBLOG_ALLOWPASTPOSTING',      'ÅðéôñÝðåôáé ç äçìïóßåõóç óå ðáñåëèïýóá çìåñïìçíßá');
+define('_ADD_CHANGEDATE',                      'ÅíçìÝñùóç þñáò');
+define('_BMLET_CHANGEDATE',            'ÅíçìÝñùóç þñáò');
+
+// skin import/export
+define('_OVERVIEW_SKINIMPORT',         'ÅéóÜãùãç/ÅîáãùãÞ åìöÜíéóçò...');
+
+// skin settings
+define('_PARSER_INCMODE_NORMAL',       'ÊáíïíéêÞ');
+define('_PARSER_INCMODE_SKINDIR',      '×ñÞóç öáêÝëïõ åìöáíßóåùí');
+define('_SKIN_INCLUDE_MODE',           'Ëåéôïõñãßá óõìðåñßëçøçò');
+define('_SKIN_INCLUDE_PREFIX',         'Óõìðåñßëçøç ðñïèÝìáôïò');
+
+// global settings
+define('_SETTINGS_BASESKIN',           'ÂáóéêÞ åìöÜíéóç');
+define('_SETTINGS_SKINSURL',           'URL åìöáíßóåùí');
+define('_SETTINGS_ACTIONSURL',         'ÐëÞñåò URL ãéá ôï action.php');
+
+// category moves (batch)
+define('_ERROR_MOVEDEFCATEGORY',       'Äåí åßíáé äõíáôÞ ç ìåôáöïñÜ ôçò ðñïåðéëåãìÝíçò êáôçãïñßáò');
+define('_ERROR_MOVETOSELF',            'Äåí åßíáé äõíáôÞ ç ìåôáöïñÜ ôçò êáôçãïñßáò (ôï éóôïëüãéï ðñïïñéóìïý åéíáé ôï ßäéï ìå ôï éóôïëüãéï ðñïÝëåõóçò)');
+define('_MOVECAT_TITLE',                       'ÅðéëÝîôå éóôïëüãéï óôï ïðïßï íá ìåôáêéíçèåß ç êáôçãïñßá');
+define('_MOVECAT_BTN',                         'Ìåôáêßíçóç êáôçãïñßáò');
+
+// URLMode setting
+define('_SETTINGS_URLMODE',            'Ëåéôïõñãßá URL');
+define('_SETTINGS_URLMODE_NORMAL',     'ÊáíïíéêÞ');
+define('_SETTINGS_URLMODE_PATHINFO','Ðñï÷ùñçìÝíç');
+
+// Batch operations
+define('_BATCH_NOSELECTION',           'Äåí å÷åé åðéëåãåß ôßðïôá ãéá íá ðñáãìáôïðïéçèïýí åíÝñãåéáò óå áõôü');
+define('_BATCH_ITEMS',                         'ÌáæéêÞ ëåéôïõñãßá óôá Üñèñá');
+define('_BATCH_CATEGORIES',            'ÌáæéêÞ ëåéôïõñãßá óå êáôçãïñßåò');
+define('_BATCH_MEMBERS',                       'ÌáæéêÞ ëåéôïõñãßá óå ìÝëç');
+define('_BATCH_TEAM',                          'ÌáæéêÞ ëåéôïõñãßá óå ïìÜäåò ìåëþí');
+define('_BATCH_COMMENTS',                      'ÌáæéêÞ ëåéôïõñãßá óå ó÷üëéá');
+define('_BATCH_UNKNOWN',                       '¢ãíùóôç ìáæéêÞ ëåéôïõñãßá: ');
+define('_BATCH_EXECUTING',                     'ÅêôÝëåóç');
+define('_BATCH_ONCATEGORY',            'óôçí êáôçãïñßá');
+define('_BATCH_ONITEM',                        'óôï Üñèñï');
+define('_BATCH_ONCOMMENT',             'óôï ó÷üëéï');
+define('_BATCH_ONMEMBER',                      'óôï ìÝëïò');
+define('_BATCH_ONTEAM',                        'óôçí ïìÜäá ìåëþí');
+define('_BATCH_SUCCESS',                       'Åðéôõ÷ßá!');
+define('_BATCH_DONE',                          'Ïëïêëçñþèçêå!');
+define('_BATCH_DELETE_CONFIRM',        'Åðéâåâáßùóç ìáæéêÞò äéáãñáöÞò');
+define('_BATCH_DELETE_CONFIRM_BTN','Åðéâåâáßùóç ìáæéêÞò äéáãñáöÞò');
+define('_BATCH_SELECTALL',                     'åðéëïãÞ üëùí');
+define('_BATCH_DESELECTALL',           'áðïåðéëïãÞ üëùí');
+
+// batch operations: options in dropdowns
+define('_BATCH_ITEM_DELETE',           'ÄéáãñáöÞ');
+define('_BATCH_ITEM_MOVE',                     'Ìåôáêßíçóç');
+define('_BATCH_MEMBER_DELETE',         'ÄéáãñáöÞ');
+define('_BATCH_MEMBER_SET_ADM',        'Áðüäïóç äéêáéùìÜôùí äéá÷åéñéóôÞ');
+define('_BATCH_MEMBER_UNSET_ADM',      'ÓôÝñçóç äéêáéùìÜôùí äéá÷åéñéóôÞ');
+define('_BATCH_TEAM_DELETE',           'ÄéáãñáöÞ áðü ôçí ïìÜäá');
+define('_BATCH_TEAM_SET_ADM',          'Áðüäïóç äéêáéùìÜôùí äéá÷åéñéóôÞ');
+define('_BATCH_TEAM_UNSET_ADM',        'ÓôÝñçóç äéêáéùìÜôùí äéá÷åéñéóôÞ');
+define('_BATCH_CAT_DELETE',            'ÄéáãñáöÞ');
+define('_BATCH_CAT_MOVE',                      'Ìåôáêßíçóç óå Üëëï éóôïëüãéï');
+define('_BATCH_COMMENT_DELETE',        'ÄéáãñáöÞ');
+
+// itemlist: Add new item...
+define('_ITEMLIST_ADDNEW',                     'ÐñïóèÞêç íÝïõ Üñèñïõ...');
+define('_ADD_PLUGIN_EXTRAS',           'ÅðéðëÝïí ñõèìßóåéò ÐñïóèÝôùí');
+
+// errors
+define('_ERROR_CATCREATEFAIL',         'Äåí Þôáí äõíáôÞ ç äçìéïõñãßá íÝáò êáôçãïñßáò');
+define('_ERROR_NUCLEUSVERSIONREQ',     'Áõôü ôï ðñüóèåôï áðáéôåß ìßá íåüôåñç Ýêäïóç ôïõ Nucleus: ');
+
+// backlinks
+define('_BACK_TO_BLOGSETTINGS',        'ÅðéóôñïöÞ óôéò ñõèìßóåéò ôïõ éóôïëïãßïõ');
+
+// skin import export
+define('_SKINIE_TITLE_IMPORT',         'ÅéóáãùãÞ');
+define('_SKINIE_TITLE_EXPORT',         'ÅîáãùãÞ');
+define('_SKINIE_BTN_IMPORT',           'ÅéóáãùãÞ');
+define('_SKINIE_BTN_EXPORT',           'ÅîáãùãÞ åðéëåãìÝíùí åìöáíßóåùí/ðñïôýðùí');
+define('_SKINIE_LOCAL',                                'ÅéóáãùãÞ áðü ôïðéêü áñ÷åßï:');
+define('_SKINIE_NOCANDIDATES',         'Äåí âñÝèçêáí õðïøÞöéïé ãéá åéóáãùãÞ óôï öÜêåëï ôùí åìöáíßóåùí');
+define('_SKINIE_FROMURL',                      'ÅéóáãùãÞ áðü ôï URL:');
+define('_SKINIE_EXPORT_INTRO',         'ÅðéëÝîôå ðáñáêÜôù ôéò åìöáíßóåéò êáé ôá ðñüôõðá ðïõ èÝëåôå íá åîÜãåôå');
+define('_SKINIE_EXPORT_SKINS',         'Åìöáíßóåéò');
+define('_SKINIE_EXPORT_TEMPLATES',     'Ðñüôõðá');
+define('_SKINIE_EXPORT_EXTRA',         'ÅðéðëÝïí ðëçñïöïñßåò');
+define('_SKINIE_CONFIRM_OVERWRITE','ÅðáíåããñáöÞ ôùí Þäç õðáñ÷üíôùí åìöáíßóåùí (âë. nameclashes)');
+define('_SKINIE_CONFIRM_IMPORT',       'Íáé, åðéèõìþ íá ôï åéóÜãù');
+define('_SKINIE_CONFIRM_TITLE',                'Ðñüêåéôáé íá åéóá÷èïýí ðñüôõðá åìöáíßóåùí');
+define('_SKINIE_INFO_SKINS',           'Åìöáíßóåéò óôï áñ÷åßï:');
+define('_SKINIE_INFO_TEMPLATES',       'Ðñüôõðá óôï áñ÷åßï:');
+define('_SKINIE_INFO_GENERAL',         'Ðëçñïöïñßåò:');
+define('_SKINIE_INFO_SKINCLASH',       'Ôï üíïìá ôçò åìöÜíéóçò åßíáé ßäéï ìå:');
+define('_SKINIE_INFO_TEMPLCLASH',      'Ôï üíïìá ôïõ ðñïôýðïõ åßíáé ßäéï ìå:');
+define('_SKINIE_INFO_IMPORTEDSKINS','Åéóáãþìåíåò åìöáíßóåéò:');
+define('_SKINIE_INFO_IMPORTEDTEMPLS','Åéóáãùìåíá ðñüôõðá:');
+define('_SKINIE_DONE',                         'Ç åéóáãùãÞ ïëïêëçñþèçêå');
+
+define('_AND',                                         'êáé');
+define('_OR',                                          'Þ');
+
+// empty fields on template edit
+define('_EDITTEMPLATE_EMPTY',          'êåíü ðåäßï (êÜíôå êëéê ãéá åðåîåñãáóßá)');
+
+// skin overview list
+define('_LIST_SKINS_INCMODE',          'Ëåéôïõñãßá óõìðåñßëçøçò:');
+define('_LIST_SKINS_INCPREFIX',                'Ðñüèåìá óõìðåñßëçøçò:');
+define('_LIST_SKINS_DEFINED',          'ÊáèïñéóìÝíá ìÝñç:');
+
+// backup
+define('_BACKUPS_TITLE',                       'Áíôßãñáöï áóöÜëåéáò/ÅðáíáöïñÜ');
+define('_BACKUP_TITLE',                                'Áíôßãñáöï áóöÜëåéáò');
+define('_BACKUP_INTRO',                        'ÐáôÞóôå ôï ðáñáêÜôù êïõìðß ãéá íá äçìéïõñãÞóåôå Ýíá áíôßãñáöï áóöáëåßáò ôçò âÜóçò äåäïìÝíùí óáò. Èá óáò ðñïôáèåß íá áðïèçêåýóåôå Ýíá áñ÷åßï áíôéãñÜöïõ áóöáëåßáò. Áðïèçêåýóôå ôï óå Ýíá áóöáëÝò ìÝñïò.');
+define('_BACKUP_ZIP_YES',                      'ÐñïóðÜèåéá ãéá óõìðßåóç');
+define('_BACKUP_ZIP_NO',                       '×ùñßò óõìðßåóç');
+define('_BACKUP_BTN',                          'Äçìéïõñãßá áíôéãñÜöïõ áóöáëåßáò');
+define('_BACKUP_NOTE',                         '<b>Óçìåßùóç:</b> Ìüíï ôá ðåñéå÷üìåíá ôçò âÜóçò äåäïìÝíùí áðïèçêåýïíôáé óôï áíôßãñáöï áóöáëåßáò. Ôá áñ÷åßá êáé ïé ñõèìßóåéò ðïëõìÝóùí óôï config.php óõíåðþò <b>ÄÅÍ</b> óõìðåñéëáìâÜíïíôáé óôï áíôßãñáöï áóöáëåßáò.');
+define('_RESTORE_TITLE',                       'ÅðáíáöïñÜ');
+define('_RESTORE_NOTE',                        '<b>ÐÑÏÅÉÄÏÐÏÉÇÓÇ:</b> ÊÜíïíôáò åðáíáöïñÜ áðü Ýíá áíôßãñáöï áóöáëåßáò èá <b>ÄÉÁÃÑÁØÅÔÅ</b> üëá ôá ôñÝ÷ïíôá äåäïìÝíá ôïõ Nucleus óôç âÜóç äåäïìÝíùí! ÊÜíôåôï ìüíï áí åßóôå ðñáãìáôéêÜ óßãïõñïé!  <br />  <b>Óçìåßùóç:</b> Âåâáéùèåßôå üôé ç Ýêäïóç ôïõ Nucleus óôçí ïðïßá äçìéïõñãÞóáôå ôï áíôßãñáöï áóöáëåßáò åßíáé ç ßäéá ìå ôçí Ýêäïóç ðïõ åêôåëåßôå ôþñá! Äåí èá ëåéôïõñãÞóåé óå áíôßèåôç ðåñßðôùóç');
+define('_RESTORE_INTRO',                       'ÅðéëÝîôå ôï áñ÷åßï áíôéãñÜöïõ áóöáëåßáò (èá ãßíåé áðïóôïëÞ óôïí äéáêïìéóôÞ) êáé êÜíôå êëéê óôï ÅðáíáöïñÜ ãéá Ýíáñîç.');
+define('_RESTORE_IMSURE',                      'Íáé, åßìáé óßãïõñïò üôé åðéèõìþ íá ôï êÜíù!');
+define('_RESTORE_BTN',                         'ÅðáíáöïñÜ áðü áñ÷åßï');
+define('_RESTORE_WARNING',                     '(âåâáéùèåßôå üôé åðáíáöÝñåôå ôï óùóôü áíôßãñáöï áóöÜëåéáò, ßóùò íá êÜíåôå êáé Ýíá íÝï áíôßãñáöï áóöÜëåéáò ðñéí íá îåêéíÞóåôå)');
+define('_ERROR_BACKUP_NOTSURE',        'Èá ÷ñåéáóôåß íá ôóåêÜñåôå ôï \'¸ßìáé óßãïõñïò\' testbox');
+define('_RESTORE_COMPLETE',            'Ç åðáíáöïñÜ ïëïêëçñþèçêå');
+
+// new item notification
+define('_NOTIFY_NI_MSG',                       '¸íá íÝï Üñèñï Ý÷åé äçìïóéåõèåß:');
+define('_NOTIFY_NI_TITLE',                     'ÍÝï Üñèñï!');
+define('_NOTIFY_KV_MSG',                       'ØÞöïò karma óôï Üñèñï:');
+define('_NOTIFY_KV_TITLE',                     'Nucleus karma:');
+define('_NOTIFY_NC_MSG',                       'Ó÷üëéï óôï Üñèñï:');
+define('_NOTIFY_NC_TITLE',                     'Ó÷üëéï Nucleus:');
+define('_NOTIFY_USERID',                       'ID ÷ñÞóôç:');
+define('_NOTIFY_USER',                         '×ñÞóôçò:');
+define('_NOTIFY_COMMENT',                      'Ó÷üëéï:');
+define('_NOTIFY_VOTE',                         'ØÞöïò:');
+define('_NOTIFY_HOST',                         'ÄéáêïìéóôÞò:');
+define('_NOTIFY_IP',                           'IP:');
+define('_NOTIFY_MEMBER',                       'ÌÝëïò:');
+define('_NOTIFY_TITLE',                                'Ôßôëïò:');
+define('_NOTIFY_CONTENTS',                     'Ðåñéå÷üìåíá:');
+
+// member mail message
+define('_MMAIL_MSG',                           'Óáò Ý÷åé óôáëåß Ýíá ìÞíõìá áðü');
+define('_MMAIL_FROMANON',                      'Ýíáí áíþíõìï åðéóêÝðôç');
+define('_MMAIL_FROMNUC',                       'Äçìïóéåýèçêå áðü Ýíá éóôïëüãéï Nucleus óôï');
+define('_MMAIL_TITLE',                         '¸íá ìÞíõìá áðü');
+define('_MMAIL_MAIL',                          'ÌÞíõìá:');
+
+// END introduced after v1.5 END
+
+
+// START introduced after v1.1 START
+
+// bookmarklet buttons
+define('_BMLET_EDIT',                          'Åðåîåñãáóßá');
+define('_BMLET_ADD',                           'ÐñïóèÞêç');
+define('_BMLET_DELETE',                                'ÄéáãñáöÞ');
+define('_BMLET_BODY',                          'Óþìá');
+define('_BMLET_MORE',                          'Ðåñéóóüôåñá');
+define('_BMLET_OPTIONS',                       'ÅðéëïãÝò');
+define('_BMLET_PREVIEW',                       'Ðñïåðéóêüðçóç');
+
+// used in bookmarklet
+define('_ITEM_UPDATED',                        'Ôï Üñèñï åíçìåñþèçêå');
+define('_ITEM_DELETED',                                'Ôï Üñèñï äéáãñÜöçêå');
+
+// plugins
+define('_CONFIRMTXT_PLUGIN',           'Åßóôå óßãïõñïé üôé èÝëåôå íá äéáãñÜøåôå ôï ðñüóèåôï ìå ôï üíïìá');
+define('_ERROR_NOSUCHPLUGIN',          'Äåí õðÜñ÷åé ôÝôïéï ðñüóèåôï');
+define('_ERROR_DUPPLUGIN',                     'Ëõðïýìáóôå, ôï ðñüóèåôï áõôü Ý÷åé Þäç åãêáôáóôáèåß');
+define('_ERROR_PLUGFILEERROR',         'Äåí õðÜñ÷åé ôÝôïéï ðñüóèåôï, Þ ïé Üäåéåò Ý÷ïõí ïñéóèåß ëáíèáóìÝíá');
+define('_PLUGS_NOCANDIDATES',          'Äåí âñÝèçêáí ðñüóèåôá');
+
+define('_PLUGS_TITLE_MANAGE',          'Äéá÷åßñéóç ðñïóèÝôùí');
+define('_PLUGS_TITLE_INSTALLED',       '¹äç åãêáôåóôçìÝíá');
+define('_PLUGS_TITLE_UPDATE',          'ÅíçìÝñùóç ëßóôáò åããñáöþí');
+define('_PLUGS_TEXT_UPDATE',           'Ôï Nucleus äéáôçñåß ìéá ðñïóùñéíÞ ìíÞìç (cache) ôùí ãåãïíüôùí åããñáöÞò ôùí ðñïóèÝôùí. ¼ôáí áíáâáèìßæåôå Ýíá ðñüóèåôï áíôéêáèéóôþíôáò ôï áñ÷åßï ôïõ, ðñÝðåé íá åêôåëåßôå áõôü ôï áñ÷åßï åíçìÝñùóçò ãéá íá âåâáéùèåßôå üôé ãßíåôáé ðñïóùñéíÞ áðïèÞêåõóç ôùí óùóôþí åããñáöþí.');
+define('_PLUGS_TITLE_NEW',                     'ÅãêáôÜóôáóç íÝïõ ðñïóèÝôïõ');
+define('_PLUGS_ADD_TEXT',                      'ÐáñáêÜôù õðÜñ÷åé ìéá ëßóôá üëùí ôùí áñ÷åßùí óôïí öÜêåëï ôùí ðñïóèÝôùí, ôá ïðïßá ðéèáíþò íá åßíáé ìç åãêáôåóôçìÝíá ðñüóèåôá. Âåâáéùèåßôå üôé åßóôå <strong>ðñáãìáôéêÜ óßãïõñïé</strong> üôé åßïíáé Ýíá ðñüóèåôï ðñéí ôï ðñïóèÝóåôå.');
+define('_PLUGS_BTN_INSTALL',           'ÅãêáôÜóôáóç ÐñïóèÝôïõ');
+define('_BACKTOOVERVIEW',                      'ÅðéóôñïöÞ óôçí ðñïåðéóêüðçóç');
+
+// editlink
+define('_TEMPLATE_EDITLINK',           'Åðåîåñãáóßá óõíäÝóìïõ Üñèñïõ');
+
+// add left / add right tooltips
+define('_ADD_LEFT_TT',                         'ÐñïóèÞêç áñéóôåñïý ðëáéóßïõ');
+define('_ADD_RIGHT_TT',                                'ÐñïóèÞêç äåîéïõ ðëáéóßïõ');
+
+// add/edit item: new category (in dropdown box)
+define('_ADD_NEWCAT',                          'ÍÝá êáôçãïñßá...');
+
+// new settings
+define('_SETTINGS_PLUGINURL',          'URL ðñïóèÝôïõ');
+define('_SETTINGS_MAXUPLOADSIZE',      'ÌÝãéóôï ìÝãåèïò áñ÷åßïõ ãéá áðïóôïëÞ (bytes)');
+define('_SETTINGS_NONMEMBERMSGS',      'Íá åðéôñÝðåôáé ç áðüóôïëÞ ìçíõìÜôùí áðü ìç ìÝëç');
+define('_SETTINGS_PROTECTMEMNAMES','Ðñïóôáóßá ïíïìÜôùí ìåëþí');
+
+// overview screen
+define('_OVERVIEW_PLUGINS',            'Äéá÷åßñéóç ðñïóèÝôùí...');
+
+// actionlog
+define('_ACTIONLOG_NEWMEMBER', 'ÅããñáöÞ íÝïõ ìÝëïõò:');
+
+// membermail (when not logged in)
+define('_MEMBERMAIL_MAIL',                     'Ç äéåýèõíóç email óáò:');
+
+// file upload
+define('_ERROR_DISALLOWEDUPLOAD2','Äåí Ý÷åôå äéêáéþìáôá äéá÷åéñéóôÞ ðÜíù óå êáíÝíá áðü ôá éóôïëüãéá ôá ïðïßá Ý÷ïõí ôï ìÝëïò ðñïïñéóìïý óôï teamlist. Óõíåðþò, äåí óáò åðéôñÝðåôå íá áíåâÜóåôå áñ÷åßá óôï öÜêåëï ðïëõìÝóùí áõôïý ôïõ ìÝëïõò');
+
+// plugin list
+define('_LISTS_INFO',                          'Ðëçñïöïñßåò');
+define('_LIST_PLUGS_AUTHOR',           'Áðü:');
+define('_LIST_PLUGS_VER',                      '¸êäïóç:');
+define('_LIST_PLUGS_SITE',                     'Åðßóêåøç äéêôõáêïý ôüðïõ');
+define('_LIST_PLUGS_DESC',                     'ÐåñéãñáöÞ:');
+define('_LIST_PLUGS_SUBS',                     'ÅããñáöÝò óôá áêüëïõèá ãåãïíüôá:');
+define('_LIST_PLUGS_UP',                       'ìåôáêßíçóç åðÜíù');
+define('_LIST_PLUGS_DOWN',                     'ìåôáêßíçóç êÜôù');
+define('_LIST_PLUGS_UNINSTALL',                'áðåãêáôÜóôáóç');
+define('_LIST_PLUGS_ADMIN',                    'äéá÷åßñéóç');
+define('_LIST_PLUGS_OPTIONS',          'Åðåîåñãáóßá&nbsp;åðéëïãþí');
+
+// plugin option list
+define('_LISTS_VALUE',                         'ôéìÞ');
+
+
+
+// plugin options
+define('_ERROR_NOPLUGOPTIONS',         'Äåí Ý÷ïõí ñõèìéóôåß ïé åðéëïãÝò ãéá áõôü ôï ðñüóèåôï');
+define('_PLUGS_BACK',                          'ÅðéóôñïöÞ óôï ðñïåðéóêüðçóç ðñïóèÝôïõ');
+define('_PLUGS_SAVE',                          'ÁðïèÞêåõóç åðéëïãþí');
+define('_PLUGS_OPTIONS_UPDATED',       'Ïé åðéëïãÝò ôïõ ðñïóèÝôïõ åíçìåñþèçêáí');
+
+define('_OVERVIEW_MANAGEMENT', 'Äéá÷åßñéóç');
+define('_OVERVIEW_MANAGE',             'Äéá÷åßñéóç Nucleus...');
+define('_MANAGE_GENERAL',                      'ÃåíéêÞ äéá÷åßñéóç');
+define('_MANAGE_SKINS',                        'Åìöáíßóåéò êáé ðñüôõðá');
+define('_MANAGE_EXTRA',                        'ÅðéðëÝïí ÷áñáêôçñéóôéêÜ');
+
+define('_BACKTOMANAGE',                        'ÅðéóôñïöÞ óôç äéá÷åßñéóç Nucleus');
+
+
+// END introduced after v1.1 END
+
+// global stuff
+define('_LOGOUT',                                      'Áðïóýíäåóç');
+define('_LOGIN',                                       'Óýíäåóç');
+define('_YES',                                         'Íáé');
+define('_NO',                                          '¼÷é');
+define('_SUBMIT',                                      'ÕðïâïëÞ');
+define('_ERROR',                                       'ÓöÜëìá');
+define('_ERRORMSG',                            'ÐñïÝêõøå Ýíá óöÜëìá!');
+define('_BACK',                                        'ÅðéóôñïöÞ');
+define('_NOTLOGGEDIN',                         'Äåí åßóôå óõíäåìÝíïé');
+define('_LOGGEDINAS',                          'ÓõíäåèÞêáôå ùò');
+define('_ADMINHOME',                           'Áñ÷éêÞ óåëßäá äéá÷åßñéóçò');
+define('_NAME',                                        '¼íïìá');
+define('_BACKHOME',                            'ÅðéóôñïãÞ óôçí áñ÷éêÞ óåëßäá äéá÷åßñéóçò');
+define('_BADACTION',                           'ÆçôÞèçêå ìç õðÜñ÷ïõóá äñÜóç');
+define('_MESSAGE',                                     'ÌÞíõìá');
+define('_HELP_TT',                                     'ÂïÞèåéá!');
+define('_YOURSITE',                                    'Ï äéêôõáêüò óáò ôüðïò');
+
+
+define('_POPUP_CLOSE',                         'Êëåßóéìï ðáñáèýñïõ');
+
+define('_LOGIN_PLEASE',                                'Ðáñáêáëþ óõíäåèåßôå ðñþôá');
+
+// commentform
+define('_COMMENTFORM_YOUARE',          'Åßóôå ï/ç');
+define('_COMMENTFORM_SUBMIT',          'ÐñïóèÞêç ó÷ïëßïõ');
+define('_COMMENTFORM_COMMENT', 'Ôï ó÷üëéü óáò');
+define('_COMMENTFORM_NAME',            '¼íïìá');
+define('_COMMENTFORM_REMEMBER',        'ÈõìÞóïõ ìå');
+
+// loginform
+define('_LOGINFORM_NAME',                      '¼íïìá ÷ñÞóôç');
+define('_LOGINFORM_PWD',                       'Êùäéêüò ðñüóâáóçò');
+define('_LOGINFORM_YOUARE',            'ÓõíäåèÞêáôå ùò');
+define('_LOGINFORM_SHARED',            'Êïéíü÷ñçóôüò õðïëïãéóôÞò');
+
+// member mailform
+define('_MEMBERMAIL_SUBMIT',           'ÁðïóôïëÞ ìçíýìáôïò');
+
+// search form
+define('_SEARCHFORM_SUBMIT',           'Åýñåóç');
+
+// add item form
+define('_ADD_ADDTO',                           'ÐñïóèÞêç íÝïõ Üñèñïõ óôï');
+define('_ADD_CREATENEW',                       'Äçìéïõñãßá íÝá Üñèñïõ');
+define('_ADD_BODY',                            'Óþìá');
+define('_ADD_TITLE',                           'Ôßôëïò');
+define('_ADD_MORE',                            'ÅêôåôáìÝíïò (ðñïáéñåôéêü)');
+define('_ADD_CATEGORY',                        'Êáôçãïñßá');
+define('_ADD_PREVIEW',                         'Ðñïåðéóêüðçóç');
+define('_ADD_DISABLE_COMMENTS',        'Áðåíåñãïðïßçóç ó÷ïëßùí;');
+define('_ADD_DRAFTNFUTURE',            'Ðñü÷åéñá &amp; ìåëëïíôéêÜ Üñèñá');
+define('_ADD_ADDITEM',                         'ÐñïóèÞêç Üñèñïõ');
+define('_ADD_ADDNOW',                          'Ðñïóèçêç ôþñá');
+define('_ADD_PLACE_ON',                        'Ôïðïèåôçóç ðÜíù óôï');
+define('_ADD_ADDDRAFT',                        'ÐñïóèÞêç óôá ðñü÷åéñá');
+define('_ADD_NOPASTDATES',                     '(Çìåñïìçíßåò êáé þñåò óôï ðáñåëèüí ÄÅÍ åßíáé Ýãêõñåò, ç ôñÝ÷ïõóá üñá èá ÷ñçóéìïðïéçèåß óå ôÝôïéá ðåñßðôùóç)');
+define('_ADD_BOLD_TT',                         '¸íôïíá');
+define('_ADD_ITALIC_TT',                       'ÐëÜãéá');
+define('_ADD_HREF_TT',                         'Äçìéïõñãßá óõíäÝóìïõ');
+define('_ADD_MEDIA_TT',                        'ÐñïóèÞêç ðïëõìÝóïõ');
+define('_ADD_PREVIEW_TT',                      'ÅìöÜíéóç/Áðüêñõøç ðñïåðéóêüðçóçò');
+define('_ADD_CUT_TT',                          'ÁðïêïðÞ');
+define('_ADD_COPY_TT',                         'ÁíôéãñáöÞ');
+define('_ADD_PASTE_TT',                                'Åðéêüëëçóç');
+
+
+// edit item form
+define('_EDIT_ITEM',                           'ÐñïóèÞêç Üñèñïõ');
+define('_EDIT_SUBMIT',                         'ÐñïóèÞêç Üñèñïõ');
+define('_EDIT_ORIG_AUTHOR',            'Áñ÷éêüò óõíôÜêôçò');
+define('_EDIT_BACKTODRAFTS',           'ÐñïóèÞêç ðßóù óôá ðñü÷åéñá');
+define('_EDIT_COMMENTSNOTE',           '(Óçìåßùóç: Ç áðåíåñãïðïßçóç ó÷ïëßùí äåí èá áðïêñýøåé ó÷üëéá ðïõ Ý÷ïõí êáôá÷ùñçèåß ðáëáéüôåñá)');
+
+// used on delete screens
+define('_DELETE_CONFIRM',                      'Ðáñáêáëþ åðéâåâáéþóôå ôç äéáãñáöÞ');
+define('_DELETE_CONFIRM_BTN',          'Åðéâåâáéþóôå ôç äéáãñáöÞ');
+define('_CONFIRMTXT_ITEM',                     'Ðñüêåéôáé íá äéáãñÜøåôå ôï áêüëïõèï Üñèñï:');
+define('_CONFIRMTXT_COMMENT',          'Ðñüêåéôáé íá äéáãñÜøåôå ôï áêüëïõèï ó÷üëéï:');
+define('_CONFIRMTXT_TEAM1',            'Ðñüêåéôáé íá äéáãñÜøåôå ');
+define('_CONFIRMTXT_TEAM2',            ' áðü ôç ëßóôá ïìÜäáò ôïõ éóôïëïãßïõ');
+define('_CONFIRMTXT_BLOG',                     'Ôï éóôïëüãéï ðïõ ðñïêåéôáé íá äéáãñÜøåôå åßíáé ôï: ');
+define('_WARNINGTXT_BLOGDEL',          'Ðñïåéäïðïßçóç! ÄéáãñÜöïíôáò Ýíá éóôïëüãéï èá äéáãñÜøåôå ÏËÁ ôá Üñèñá ôïõ êáé üëá ôá ó÷üëéá. Ðáñáêáëþ åðéâåâáéþóôå ãéá íá êÜíåôå óáöÝò üôé åßóôå ÓÉÃÏÕÑÏÉ ãéá áõôü ðïõ êÜíåôå!<br />Åðßóçò, ìç äéáêüøåôå ôï Nucleus êáèþò äéáãñÜöåé ôï éóôïëüãéï.');
+define('_CONFIRMTXT_MEMBER',           'Ðñüêåéôáé íá äéáãñÜøåôå ôï áêüëïõèï ðñïößë ìÝëïõò: ');
+define('_CONFIRMTXT_TEMPLATE',         'Ðñüêåéôáé íá äéáãñÜøåôå ôï ðñüôõðï ìå ôï üíïìá');
+define('_CONFIRMTXT_SKIN',                     'Ðñüêåéôáé íá äéáãñÜøåôå ôçí åìöÜíéóç ìå ôï üíïìá');
+define('_CONFIRMTXT_BAN',                      'Ðñüêåéôáé íá äéáãñÜøåôå ôïí áðïêëåéóìü ãéá ôï ðåäßï ip');
+define('_CONFIRMTXT_CATEGORY',         'Ðñüêåéôáé íá äéáãñÜøåôå ôçí êáôçãïñßá ');
+
+// some status messages
+define('_DELETED_ITEM',                                'Ôï Üñèñï äéáãñÜöçêå');
+define('_DELETED_MEMBER',                      'Ôï ìÝëïò äéáãñÜöçêå');
+define('_DELETED_COMMENT',                     'Ôï ó÷üëéï äéáãñÜöçêå');
+define('_DELETED_BLOG',                        'Ôï éóôïëüãéï äéáãñÜöçêå');
+define('_DELETED_CATEGORY',            'Ç êáôçãïñßá äéáãñÜöçêå');
+define('_ITEM_MOVED',                          'Ôï Üñèñï ìåôáêéíÞèçêå');
+define('_ITEM_ADDED',                          'Ôï Üñèñï ðñïóôÝèçêå');
+define('_COMMENT_UPDATED',             'Ôï ó÷üëéï åíçìåñþèçêå');
+define('_SKIN_UPDATED',                        'Ôá äåäïìÝíá ôçò åìöÜíéóçò Ý÷ïõí áðïèçêåõôåß');
+define('_TEMPLATE_UPDATED',            'Ôá äåäïìÝíá ôïõ ðñïôýðïõ Ý÷ïõí áðïèçêåõôåß');
+
+// errors
+define('_ERROR_COMMENT_LONGWORD',      'Ðáñáêáëþ ìç ÷ñçóéìïðïéåßôå ëÝîåéò ìåãáëýôåñåò ôùí 90 ÷áñáêôÞñùí óôá ó÷üëéÜ óáò');
+define('_ERROR_COMMENT_NOCOMMENT',     'Ðáñáêáëþ åéóáãÜãåôå Ýíá ó÷üëéï');
+define('_ERROR_COMMENT_NOUSERNAME',    'Ìç Ýãêõñï üíïìá ÷ñÞóôç');
+define('_ERROR_COMMENT_TOOLONG',               'Ôá ó÷üëéÜ óáò åßíáé õðåñâïëéêÜ ìåãÜëá (ìåã. 5000 ÷áñáêôÞñåò)');
+define('_ERROR_COMMENTS_DISABLED',             'Ôá ó÷üëéá ãéá áõôü ôï éóôïëüãéï åßíáé ðñïò ôï ðáñüí áðåíåñãïðïéçìÝíá.');
+define('_ERROR_COMMENTS_NONPUBLIC',    'ÐñÝðåé íá åßóôå óõíäåìÝíïò ùò ìÝëïò ãéá íá ðñïóèÝóåôå ó÷üëéï óå áõôü ôï éóôïëüãéï');
+define('_ERROR_COMMENTS_MEMBERNICK',   'Ôï üíïìá ðïõ èÝëåôå íá ÷ñçóéìïðïéÞóåôå ãéá íá äçìïóéåýóåôå ó÷üëéá ÷ñçóéìïðïéåßôå áðü Ýíá ìÝëïò ôïõ äéêôõáêïý ôüðïõ. ÅðéëÝîôå êÜôé Üëëï.');
+define('_ERROR_SKIN',                                  'ÓöÜëìá óôçí åìöÜíéóç');
+define('_ERROR_ITEMCLOSED',                    'Ôï Üñèñï Ý÷åé êëåßóåé, äåí åßíáé äõíáôü íá ðñïóèÝóåôå ó÷üëéá óå áõôü Þ íá øçößóåôå ãéá áõôü');
+define('_ERROR_NOSUCHITEM',                    'Äåí õðÜñ÷åé ôÝôïéï Üñèñï');
+define('_ERROR_NOSUCHBLOG',                    'Äåí õðÜñ÷åé ôÝôïéï éóôïëüãéï');
+define('_ERROR_NOSUCHSKIN',                    'Äåí õðÜñ÷åé ôÝôïéá åìöÜíéóç');
+define('_ERROR_NOSUCHMEMBER',                  'Äåí õðÜñ÷åé ôÝôïéï ìÝëïò');
+define('_ERROR_NOTONTEAM',                     'Äåí åßóôå óôçí ëßóôá ïìÜäáò áõôïý ôïõ éóôïëïãßïõ.');
+define('_ERROR_BADDESTBLOG',                   'Äåí õðÜñ÷åé ôï éóôïëüãéï ðñïïñéóìïý');
+define('_ERROR_NOTONDESTTEAM',         'Äåí åßíáé äõíáôÞ ç ìåôáêßíçóç ôïõ Üñèñïõ, êáèþò äåí åßóôå óôç ëßóôá ïìÜäáò ôïõ éóôïëüãéï ðñïïñéóìïý');
+define('_ERROR_NOEMPTYITEMS',                  'Äåí åßíáé äõíáôÞ ç ðñïóèÞêç êåíþí Üñèñùí!');
+define('_ERROR_BADMAILADDRESS',                'Ìç Ýãêõñç äéåýèõíóç çëåêôñïíéêïý ôá÷õäñïìåßïõ');
+define('_ERROR_BADNOTIFY',                             'Ìßá ç ðåñéóóüôåñåò áðü ôéò äïèåßóåò äéåõèýíóåéò ãéá åéäïðïßçóç äåí åßíáé Ýãêõñåò äéåõèýíóåéò çë. ôá÷õäñïìåßïõ');
+define('_ERROR_BADNAME',                               'Ìç Ýãêõñï üíïìá (åðéôñÝðïíôáé ìüíï a-z êáé 0-9, ÷ùñßò êåíÜ óå áñ÷Þ/ôÝëïò)');
+define('_ERROR_NICKNAMEINUSE',                 '¸íá Üëëï ìÝëïò ÷ñçóéìïðïéåß Þäç áõôü ôï øåõäþíõìï');
+define('_ERROR_PASSWORDMISMATCH',              'Ïé êùäéêïß ðñÝðåé íá ôáéñéÜæïõí');
+define('_ERROR_PASSWORDTOOSHORT',              'Ïé êùäéêïß ðñÝðåé íá åßíáé ôïõëÜ÷éóôïí 6 ÷áñáêôÞñùí');
+define('_ERROR_PASSWORDMISSING',               'Ï êùäéêüò ðñüóâáóçò äåí ìðïñåß íá åßíáé êåíüò');
+define('_ERROR_REALNAMEMISSING',               'ÐñÝðåé íá åéóáãÜãåôå Ýíá ðñáãìáôéêü üíïìá');
+define('_ERROR_ATLEASTONEADMIN',               'ÐñÝðåé íá õðÜñ÷åé ðÜíôïôå ôïõëÜ÷éóôïí Ýíáò super-admin ðïõ íá ìðïñåß íá óõíäåèåß ìå ôçí admin area.');
+define('_ERROR_ATLEASTONEBLOGADMIN',   'Ðñáãìáôïðïéüíôáò áõôÞ ôçí åíÝñãåéá èá êáôáóôÞóåôå ôï éóôïëüãéï ìç äéáôçñÞóéìï. Ðáñáêáëþ âåâáéùèåßôå üôé õðÜñ÷åé ðÜíôïôå ôïõëÜ÷éóôïí Ýíáò admin.');
+define('_ERROR_ALREADYONTEAM',                 'Äåí åßíáé äõíáôÞ ç ðñïóèÞêç åíüò ìÝëïõò ðïõ õðÜñ÷åé Þäç óôçí ïìÜäá');
+define('_ERROR_BADSHORTBLOGNAME',              'Ôï óýíôïìï üíïìá éóôïëüãéï ðñÝðåé íá ðåñéÝ÷åé ìüíï a-z êáé 0-9, ÷ùñßò êåíÜ');
+define('_ERROR_DUPSHORTBLOGNAME',              'ÊÜðïéï Üëëï éóôïëüãéï Ý÷åé Þäç ôï åðéëåãìÝíï óýíôïìï üíïìá. ÁõôÜ ôá ïíüìáôá ðñÝðåé íá åßíáé ìïíáäéêÜ');
+define('_ERROR_UPDATEFILE',                            'Äåí äßíåôáé Üäåéá åããñáöÞò ãéá ôï óõãêåêñéìÝíï áñ÷åßï åíçìÝñùóçò. Âåâáéùèåßôå üôé ïé Üäåéåò ôùí áñ÷åßùí Ý÷ïõí ïñéóèåß óùóôÜ (try chmodding it to 666). Åðßóçò óçìåéþóôå üôé ç ôïðïèåóßá åíáé ó÷åôéêÞ ìå ôï öÜêåëï admin-area, ïðüôå ßóùó èá èÝëáôå íá ÷ñçóéìïðïéÞóåôå Ýíá áðüëõôï ìïíïðÜôé (êÜôé óáí ôï /your/path/to/nucleus/)');
+define('_ERROR_DELDEFBLOG',                    'Äåí åßíáé äõíáôÞ ç äéáãñáöÞ ôïõ ðñïåðéëåãìÝíïõ éóôïëïãßïõ');
+define('_ERROR_DELETEMEMBER',                  'Äåí åßíáé äõíáôÞ ç äéáãñáöÞ áõôïý ôïõ ìÝëïõò, ðéèáíþò åðåéäÞ åßíáé ï óõíôÜêôçò Üñèñùí Þ ó÷ïëéþí');
+define('_ERROR_BADTEMPLATENAME',               'Ìç Ýãêõñï üíïìá ãéá ðñüôõðï, ÷ñçóéìïðïéÞóôå ìüíï a-z êáé 0-9, ÷ùñßò êåíÜ');
+define('_ERROR_DUPTEMPLATENAME',               'ÕðÜñ÷åé Þäç êÜðïéï Üëëï ðñüôõðï ìå áõôü ôï üíïìá');
+define('_ERROR_BADSKINNAME',                   'Ìç Ýãêõñï üíïìá ãéá åìöÜíéóç (åðéôñÝðïíôáé ìüíï a-z, 0-9, ÷ùñßò êåíÜ)');
+define('_ERROR_DUPSKINNAME',                   'ÕðÜñ÷åé Þäç êÜðïéï Üëëç åìöÜíéóç ìå áõôü ôï üíïìá');
+define('_ERROR_DEFAULTSKIN',                   'ÐñÝðåé ðÜíôïôå íá õðÜñ÷åé ìéá åìöÜíéóç ìå ôï üíïìá "ðñïåðéëåãìÝíï"');
+define('_ERROR_SKINDEFDELETE',                 'Äåí åßíáé äõíáôÞ ç äéáãñáöÞ ôçò åìöÜíéóçò êáèþò åßíáé ç ðñïåðéëåãìÝíç åìöÜíéóç ãéá ôï áêüëïõèï éóôïëüãéï: ');
+define('_ERROR_DISALLOWED',                    'Ëõðïýìáóôå, äåí óáò åðéôñÝðåôáé íá ðñáãìáôïðïéÞóåôå áõôÞ ôçí åíÝñãåéá');
+define('_ERROR_DELETEBAN',                             'ÓöÜëìá êáôá ôçí ðñïóðÜèåéá äéáãñáöÞò ôïõ ban (Ï áðïêëåéóìüò äåí õðÜñ÷åé)');
+define('_ERROR_ADDBAN',                                'ÓöÜëìá êáôá ôçí ðñïóðÜèåéá ðñïóèÞêçò ôïõ áðïêëåéóìïý. Ðéèáíþò ï áðïêëåéóìüò íá ìçí åíåñãïðïéçèåß óùóôÜ óå üëá ôá éóôïëüãéá.');
+define('_ERROR_BADACTION',                             'Ç Áðáéôïýìåíç åíÝñãåéá äåí õðÜñ÷åé');
+define('_ERROR_MEMBERMAILDISABLED',    'Ôá ìçíýìáôá áðü ìÝëïò óå ìÝëïò åßíáé áðåíåñãïðïéçìÝíá');
+define('_ERROR_MEMBERCREATEDISABLED',  'Ç äçìéïõñãéÜ ëïãáñéáóìþí ìÝëþí åßíáé áðåíåñãïðïéçìÝíç');
+define('_ERROR_INCORRECTEMAIL',                'ËáíèáóìÝíç äéåýèõíóç çëåêôñïíéêïý ôá÷õäñïìåßïõ');
+define('_ERROR_VOTEDBEFORE',                   '¸÷åôå Þäç øçößóåé ãéá áõôü ôï Üñèñï');
+define('_ERROR_BANNED1',                               'Äåí åßíáé äõíáôÞ ç ðñáãìáôïðïßçóç ôçò åíÝñãåéáò (ip range ');
+define('_ERROR_BANNED2',                               'êáèþò óáò Ý÷åé áðáãïñåõôåß. Ôï ìÞíõìá Þôáí:');
+define('_ERROR_BANNED3',                               '\'');
+define('_ERROR_LOGINNEEDED',                   'ÐñÝðåé íá åßóôå óõíäåäåìÝíïé ãéá íá ðñáãìáôïðïéÞóåôå áõôÞ ôçí åíÝñãåéá');
+define('_ERROR_CONNECT',                               'ÓöÜëìá óôç óýíäåóç');
+define('_ERROR_FILE_TOO_BIG',                  'Ôï áñ÷åßï åßíáé õðåñâïëéêÜ ìåãÜëï!');
+define('_ERROR_BADFILETYPE',                   'Ëõðïýìáóôå, áõôüò ï ôýðïò áñ÷åßïõ äåí åðéôñÝðåôáé');
+define('_ERROR_BADREQUEST',                    'ÅóöáëìÝíç áßôçóç áðïóôïëÞò');
+define('_ERROR_DISALLOWEDUPLOAD',              'Äåí åßóáóôå óå êáìßá ëßóôá ïìÜäáò éóôïëïãßùí. Óõíåðþò, äåí óáò åðéôñÝðåôáé íá áíåâÜóåôå áñ÷åßá');
+define('_ERROR_BADPERMISSIONS',                'Ôá äéêáéþìáôá áñ÷åßùí/êáôáëüãùí äåí Ý÷ïõí ïñéóôåß óùóôÜ');
+define('_ERROR_UPLOADMOVEP',                   'ÓöÜëìá êáôá ôç ìåôáêßíçóç áñ÷åßïõ ðïõ Ý÷åé áðïóôáëåß');
+define('_ERROR_UPLOADCOPY',                    'ÓöÜëìá êáôÜ ôçí áíôéãñáöÞ áñ÷åßïõ');
+define('_ERROR_UPLOADDUPLICATE',               'ÕðÜñ÷åé Þäç êÜðïéï Üëëï áñ÷åßï ìå áõôü ôï üíïìá. Ðñïóðáèåßóôå íá ôï ìåôïíïìÜóåôå ðñéí ôï áíåâÜóåôå.');
+define('_ERROR_LOGINDISALLOWED',               'Ëõðïýìáóôå, äåí óáò åðéôñÝðåôå íá óõíäåèåßôå óôçí ðåñéï÷Þ äéá÷åßñéóçò. Ìðïñåßôå üìùò íá óõíäåèåßôå ùò êÜðïéïò Üëëïò ÷ñÞóôçò');
+define('_ERROR_DBCONNECT',                     'Äåí Þôáí äõíáôÞ ç óýíäåóç óôïí äéáêïìéóôÞ mySQL');
+define('_ERROR_DBSELECT',                              'Äåí Þôáí äõíáôÞ ç åðéëïãÞ ôçò âÜóçò äåäïìÝíùí nucleus.');
+define('_ERROR_NOSUCHLANGUAGE',                'Äåí õðÜñ÷åé ôÝôïéï áñ÷åßï ãëþóóáò');
+define('_ERROR_NOSUCHCATEGORY',                'Äåí õðÜñ÷åé ôÝôïéá êáôçãïñßá');
+define('_ERROR_DELETELASTCATEGORY',    'ÐñÝðåé íá õðÜñ÷åé ôïõëÜ÷éóôïí ìéá êáôçãïñßá');
+define('_ERROR_DELETEDEFCATEGORY',             'Äåí åßíáé äõíáôÞ ç äéáãñáöÞ ôçò ðñïåðéëåãìÝíçòêáôçãïñßáò');
+define('_ERROR_BADCATEGORYNAME',               'Ìç Ýãêõñï üíïìá êáôçãïñßáò');
+define('_ERROR_DUPCATEGORYNAME',               'ÕðÜñ÷åé Þäç êÜðïéá Üëëç êáôçãïñßá ìå áõôü ôï üíïìá');
+
+// some warnings (used for mediadir setting)
+define('_WARNING_NOTADIR',                     'Ðñïåéäïðïßçóç: Ç ôñÝ÷ïõóá ôéìÞ äåí åßíáé êÜðïéïò öÜêåëïò!');
+define('_WARNING_NOTREADABLE',         'Ðñïåéäïðïßçóç: Ç ôñÝ÷ïõóá ôéìÞ äåí åßíáé Ýíáò ìç áíáãíþóéìïò öÜêåëïò!');
+define('_WARNING_NOTWRITABLE',         'Ðñïåéäïðïßçóç: Ç ôñÝ÷ïõóá ôéìÞ äåí åßíáé êÜðïéïò åããñÜøéìïò öÜêåëïò!');
+
+// media and upload
+define('_MEDIA_UPLOADLINK',                    'ÁðïóôïëÞ íÝïõ áñ÷åßïõ');
+define('_MEDIA_MODIFIED',                              'ôñïðïðïéçìÝíï');
+define('_MEDIA_FILENAME',                              'üíïìá áñ÷åßïõ');
+define('_MEDIA_DIMENSIONS',                    'äéáóôÜóåéò');
+define('_MEDIA_INLINE',                                        'ÅíóùìáôùìÝíï');
+define('_MEDIA_POPUP',                                 'Áíáäõüìåíï');
+define('_UPLOAD_TITLE',                                        'ÅðéëïãÞ áñ÷åßïõ');
+define('_UPLOAD_MSG',                                  'ÅðéëÝîôå ðáñáêÜôù ôï áñ÷åßï ðïõ èÝëåôå íá áíåâÜóåôå, êáé ðáôÞóôå ôï êïõìðß \'ÁðïóôïëÞ\'.');
+define('_UPLOAD_BUTTON',                               'ÁðïóôïëÞ');
+
+// some status messages
+define('_MSG_ACCOUNTCREATED',                  'Ï ëïãáñéáóìüò äçìéïõñãÞèçêå, ï êùäéêüò ðñüóâáóçò èá óáò óôáëåß ìÝóù çëåêôñïíéêïý ôá÷õäñïìåßïõ');
+define('_MSG_PASSWORDSENT',                    'Ï êùäéêüò ðñüóâáóçò Ý÷åé óôáëåß ìÝóù çëåêôñïíéêïý ôá÷õäñïìåßïõ.');
+define('_MSG_LOGINAGAIN',                              'Èá ÷ñåéáóôåß íá îáíáóõíäåèåßôå, åðåßäç ôá Üñèñá óáò Ý÷ïõí áëëÜîåé');
+define('_MSG_SETTINGSCHANGED',                 'Ïé ñõèìßóåéò Ý÷ïõí áëëÜîåé');
+define('_MSG_ADMINCHANGED',                    'Ï äéá÷åéñéóôÞò Ý÷åé áëëÜîåé');
+define('_MSG_NEWBLOG',                         '¸íá íÝï éóôïëüãéï äçìéïõñãÞèçêå');
+define('_MSG_ACTIONLOGCLEARED',                'Ôï çìåñïëüãéï åíåñãåéþí Ý÷åé êáèáñéóèåß');
+
+// actionlog in admin area
+define('_ACTIONLOG_DISALLOWED',                'Ìç åðéôñåðüìåíç åíÝñãåéá: ');
+define('_ACTIONLOG_PWDREMINDERSENT',   'ÍÝïò êùäéêüò ðñüóâáóçò Ý÷åé óôáëåß ãéá ');
+define('_ACTIONLOG_TITLE',                             'Çìåñïëüãéï åíåñãåéþí');
+define('_ACTIONLOG_CLEAR_TITLE',               'Êáèáñéóìüò çìåñïëïãßïõ åíåñãåéþí');
+define('_ACTIONLOG_CLEAR_TEXT',                'Êáèáñéóìüò çìåñïëïãßïõ åíåñãåéþí ôþñá');
+
+// team management
+define('_TEAM_TITLE',                          'Äéá÷åßñéóç ïìÜäáò ãéá éóôïëüãéï');
+define('_TEAM_CURRENT',                        'ÔñÝ÷ïõóá ïìÜäá');
+define('_TEAM_ADDNEW',                 'ÐñïóèÞêç íÝïõ ìÝëïõò óôçí ïìÜäá');
+define('_TEAM_CHOOSEMEMBER',           'ÅðéëïãÞ ìÝëïõò');
+define('_TEAM_ADMIN',                          'Äéêáéþìáôá äéá÷åéñéóôÞ ;');
+define('_TEAM_ADD',                            'ÐñïóèÞêç óôçí ïìÜäá');
+define('_TEAM_ADD_BTN',                        'ðñïóèÞêç óôçí ïìÜäá');
+
+// blogsettings
+define('_EBLOG_TITLE',                         'Åðåãåñãáóßá ñõèìßóåùí éóôïëïãßïõ');
+define('_EBLOG_TEAM_TITLE',                    'Åðåîåñãáóßá ïìÜäáò');
+define('_EBLOG_TEAM_TEXT',                     'ÐáôÞóôå åäþ ãéá íá åðåîåñãáóôåßôå ôçí ïìÜäá óáò...');
+define('_EBLOG_SETTINGS_TITLE',                'Ñõèìßóåéò éóôïëïãßïõ');
+define('_EBLOG_NAME',                          '¼íïìá éóôïëïãßïõ');
+define('_EBLOG_SHORTNAME',                     'Óýíôïìï üíïìá éóôïëïãßïõ');
+define('_EBLOG_SHORTNAME_EXTRA',       '<br />(ðñÝðåé íá ðåñéÝ÷åé ìüíï a-z êáé ÷ùñßò êåíÜ)');
+define('_EBLOG_DESC',                          'ÐåñéãñáöÞ éóôïëïãßïõ');
+define('_EBLOG_URL',                           'URL');
+define('_EBLOG_DEFSKIN',                       'ÐñïåðéëåãìÝíç åìöÜíéóç');
+define('_EBLOG_DEFCAT',                        'ÐñïåðéëåãìÝíç Êáôçãïñßá');
+define('_EBLOG_LINEBREAKS',                    'ÌåôáôñïðÞ áëëáãþí ãñáììÞò');
+define('_EBLOG_DISABLECOMMENTS',       'ÅðéôñÝðïíôáé ôá ó÷üëéá;<br /><small>(Ç áðåíåñãïðïßçóç ó÷ïëßùí óçìáßíåé üôé ç ðñïóèÞêç ó÷ïëßùí äåí åßíáé äõíáôÞ.)</small>');
+define('_EBLOG_ANONYMOUS',             'ÅðéôñÝðïíôáé ôá ó÷üëéá áðü ìç ìÝëç;');
+define('_EBLOG_NOTIFY',                                'Äéåõèýíóåéò ãéá åéäïðïßçóç (÷ñçóéìïðïéåßóôå ôï ; ùò äéá÷ùñéóôéêü)');
+define('_EBLOG_NOTIFY_ON',                     'Åéäïðïßçóç üôáí');
+define('_EBLOG_NOTIFY_COMMENT',        'ÍÝá ó÷üëéá');
+define('_EBLOG_NOTIFY_KARMA',          'ÍÝïé øÞöïé êÜñìá');
+define('_EBLOG_NOTIFY_ITEM',           'ÍÝá Üñèñá éóôïëïãßïõ');
+define('_EBLOG_PING',                          'Ping Weblogs.com êáôÜ ôçí åíçìÝñùóç;');
+define('_EBLOG_MAXCOMMENTS',           'ÌÝãéóôïò áñéèìüò ó÷ïëßùí');
+define('_EBLOG_UPDATE',                        'ÅíçìÝñùóç áñ÷åßïõ');
+define('_EBLOG_OFFSET',                        '×ñïíéêÞ ìåôÜèåóç');
+define('_EBLOG_STIME',                         'Ç ôñÝ÷ïõóá þñá ôïõ äéáêïìéóôÞ åßíáé');
+define('_EBLOG_BTIME',                         'Ç ôñÝ÷ïõóá þñá ôïõ éóôïëïãßïõ åßíáé :');
+define('_EBLOG_CHANGE',                        'ÁëëáãÞ ñõèìßóåùí');
+define('_EBLOG_CHANGE_BTN',            'ÁëëáãÞ ñõèìßóåùí');
+define('_EBLOG_ADMIN',                         'Äéá÷åéñéóôÞò éóôïëïãßïõ');
+define('_EBLOG_ADMIN_MSG',                     'Èá óáò áðïäùèïýí äéêáéþìáôá äéá÷åéñéóôÞ');
+define('_EBLOG_CREATE_TITLE',          'Äçìéïõñãßá íÝïõ éóôïëïãßïõ');
+define('_EBLOG_CREATE_TEXT',           'Óõìðëçñþóôå ôçí ðáñáêÜôù öüñìá ãéá íá äçìéïõñãÞóåôå Ýíá íåü éóôïëüãéï. <br /><br /> <b>Óçìåßùóç:</b> Ðáñáôßèåíôáé ìüíï ïé áðáñáßôçôåò åðéëïãÝò. Áí èÝëåôå íá ñõèìßóåôå åðéðëÝïí åðéëïãÝò, ìðåßôå óôçí óåëßäá ñõèìßóåùí éóôïëïãßïõ áöïý äçìéïõñãÞóåôå ôï éóôïëüãéï.');
+define('_EBLOG_CREATE',                        'Äçìéïõñãßá!');
+define('_EBLOG_CREATE_BTN',            'Äçìéïõñãßá éóôïëïãßïõ');
+define('_EBLOG_CAT_TITLE',                     'Êáôçãïñßåò');
+define('_EBLOG_CAT_NAME',                      '¼íïìá êáôçãïñßáò');
+define('_EBLOG_CAT_DESC',                      'ÐåñéãñáöÞ êáôçãïñßáò');
+define('_EBLOG_CAT_CREATE',            'Äçìéïõñãßá íÝáò êáôçãïñßáò');
+define('_EBLOG_CAT_UPDATE',            'ÅíçìÝñùóç êáôçãïñßáò');
+define('_EBLOG_CAT_UPDATE_BTN',        'ÅíçìÝñùóç êáôçãïñßáò');
+
+// templates
+define('_TEMPLATE_TITLE',                      'Åðåîåñãáóßá ðñïôýðùí');
+define('_TEMPLATE_AVAILABLE_TITLE',    'ÄéáèÝóéìá ðñüôõðá');
+define('_TEMPLATE_NEW_TITLE',          'ÍÝï ðñüôõðï');
+define('_TEMPLATE_NAME',                       '¼íïìá ðñïôýðïõ');
+define('_TEMPLATE_DESC',                       'ÐåñéãñáöÞ ðñïôýðïõ');
+define('_TEMPLATE_CREATE',                     'Äçìéïõñãßá ðñïôýðïõ');
+define('_TEMPLATE_CREATE_BTN',         'Äçìéïõñãßá ðñïôýðïõ');
+define('_TEMPLATE_EDIT_TITLE',         'Åðåîåñãáóßá ðñïôýðïõ');
+define('_TEMPLATE_BACK',                       'ÅðéóôñïöÞ óôçí ðñïåðéóêüðçóç ðñïôýðïõ');
+define('_TEMPLATE_EDIT_MSG',           'Äåí åßíáé áðáñáñáßôçôá üëá ôá ìÝñç ôïõ ðñïôýðïõ, áöÞóôå êåíÜ áõôÜ ðïõ äåí åßíáé áðáñáßôçôá.');
+define('_TEMPLATE_SETTINGS',           'Ñõèìßóåéò ðñïôýðïõ');
+define('_TEMPLATE_ITEMS',                      'Üñèñá');
+define('_TEMPLATE_ITEMHEADER',         'Êåöáëßäá Üñèñïõ');
+define('_TEMPLATE_ITEMBODY',           'Óþìá Üñèñïõ');
+define('_TEMPLATE_ITEMFOOTER',         'ÕðïóÝëéäï Üñèñïõ');
+define('_TEMPLATE_MORELINK',           'Óýíäåóç óå åêôåôáìÝíç êáôá÷þñçóç');
+define('_TEMPLATE_NEW',                        '¸íäåéîç íÝïõ Üñèñïõ');
+define('_TEMPLATE_COMMENTS_ANY',       'Ó÷üëéá (áí õðÜñ÷ïõí)');
+define('_TEMPLATE_CHEADER',            'Êåöáëßäá ó÷ïëßùí');
+define('_TEMPLATE_CBODY',                      'Óþìá ó÷ïëßïõ');
+define('_TEMPLATE_CFOOTER',            'ÕðïóÝëéäï ó÷ïëßùí');
+define('_TEMPLATE_CONE',                       '¸íá ó÷üëéï');
+define('_TEMPLATE_CMANY',                      'Äýï (Þ ðåñéóóüôåñá) ó÷üëéá');
+define('_TEMPLATE_CMORE',                      'Ðåñéóóüôåñá áíáãíùóìÝíá ó÷üëéá');
+define('_TEMPLATE_CMEXTRA',            'ÅðéðëÝïí ìÝëïò');
+define('_TEMPLATE_COMMENTS_NONE',      'Ó÷üëéá (áí õðÜñ÷ïõí)');
+define('_TEMPLATE_CNONE',                      'Êáèüëïõ ó÷üëéá');
+define('_TEMPLATE_COMMENTS_TOOMUCH','Ó÷üëéá (áí õðÜñ÷ïõí, áëëÜ ðÜñá ðïëëÜ ãéá íá åìöáíéóôïýí óå ìéá ãñáììÞ)');
+define('_TEMPLATE_CTOOMUCH',           'ÕðåñâïëéêÜ ðïëëÜ ó÷üëéá');
+define('_TEMPLATE_ARCHIVELIST',                'Ëßóôåò áñ÷åßïõ');
+define('_TEMPLATE_AHEADER',            'Êåöáëßäá ëßóôáò áñ÷åßïõ');
+define('_TEMPLATE_AITEM',                      '¢ñèñï ëßóôáò áñ÷åßïõ');
+define('_TEMPLATE_AFOOTER',            'ÕðïóÝëéäï ëßóôáò áñ÷åßïõ');
+define('_TEMPLATE_DATETIME',           'Çìåñïìçíßá êáé þñá');
+define('_TEMPLATE_DHEADER',            'Êåöáëßäá çìåñïìçíßáò');
+define('_TEMPLATE_DFOOTER',            'ÕðïóÝëéäï çìåñïìçíßáò');
+define('_TEMPLATE_DFORMAT',            'ÌïñöÞ çìåñïìçíßáò');
+define('_TEMPLATE_TFORMAT',            'ÌïñöÞ þñáò');
+define('_TEMPLATE_LOCALE',                     'ÔïðéêÝò ñõèìßóåéò');
+define('_TEMPLATE_IMAGE',                      'Áíáäõüìåíåò åéêüíåò');
+define('_TEMPLATE_PCODE',                      'Êùäéêüò áíáäõüìåíïõ óõíäÝóìïõ');
+define('_TEMPLATE_ICODE',                      'ÅíóùìáôùìÝíïò êþäéêáò åéêüíáò');
+define('_TEMPLATE_MCODE',                      'Êþäéêáò óõíäÝóìïõ Üñèñïõ ìÝóùí');
+define('_TEMPLATE_SEARCH',                     'Åýñåóç');
+define('_TEMPLATE_SHIGHLIGHT',         'ÅðéóÞìáíóç');
+define('_TEMPLATE_SNOTFOUND',          'Äåí âñÝèçêå ôßðïôá');
+define('_TEMPLATE_UPDATE',                     'ÅíçìÝñùóç');
+define('_TEMPLATE_UPDATE_BTN',         'ÅíçìÝñùóç ðñïôýðïõ');
+define('_TEMPLATE_RESET_BTN',          'ÅðáíáöïñÜ äåäïìÝíùí');
+define('_TEMPLATE_CATEGORYLIST',       'Ëßóôåò êáôçãïñéþí');
+define('_TEMPLATE_CATHEADER',          'Êåöáëßäá ëßóôáò êáôçãïñéþí');
+define('_TEMPLATE_CATITEM',                    'Óôïé÷åßï ëßóôáò êáôçãïñéþí');
+define('_TEMPLATE_CATFOOTER',          'ÕðïóÝëéäï ëßóôáò êáôçãïñéþí');
+
+// skins - KOSTANTINOS
+define('_SKIN_EDIT_TITLE',                     'Åðåîåñãáóßá åìöáíßóåùí');
+define('_SKIN_AVAILABLE_TITLE',                'ÄéáèÝóéìåò åìöáíßóåéò');
+define('_SKIN_NEW_TITLE',                      'ÍÝá åìöÜíéóç');
+define('_SKIN_NAME',                           '¼íïìá');
+define('_SKIN_DESC',                           'ÐåñéãñáöÞ');
+define('_SKIN_TYPE',                           'Ôýðïò Ðåñéå÷ïìÝíïõ');
+define('_SKIN_CREATE',                         'Äçìéïõñãßá');
+define('_SKIN_CREATE_BTN',                     'Äçìéïõñãßá åìöÜíéóçò');
+define('_SKIN_EDITONE_TITLE',          'Åðåîåñãáóßá åìöÜíéóçò');
+define('_SKIN_BACK',                           'Ðßóù óôç ãåíéêÞ ðñïåðéóêüðçóç åìöÜíéóçò ');
+define('_SKIN_PARTS_TITLE',                    'ÌÝñç åìöÜíéóçò');
+define('_SKIN_PARTS_MSG',                      'Äåí ÷ñåéÜæïíôáé üëïé ïé ôýðïé ãéá êÜèå åìöÜíéóç. ¢öçóå êåíÜ áõôÜ ðïõ äåí ÷ñåéÜæïíôáé. ÄéáëÝîôå ôïí ôýðï åìöÜíéóçò ðïõ èá åðåîåñãáóôåßôå:');
+define('_SKIN_PART_MAIN',                      'Áñ÷éêÞ óåëßäá');
+define('_SKIN_PART_ITEM',                      'Óåëßäåò Üñèñùí');
+define('_SKIN_PART_ALIST',                     'Ëßóôá áñ÷åßùí');
+define('_SKIN_PART_ARCHIVE',           'Áñ÷åßï');
+define('_SKIN_PART_SEARCH',                    'ÁíáæÞôçóç');
+define('_SKIN_PART_ERROR',                     'ËÜèç');
+define('_SKIN_PART_MEMBER',            'Óôïé÷åßá ìåëþí');
+define('_SKIN_PART_POPUP',                     'Áíáäõüìåíåò åéêüíåò');
+define('_SKIN_GENSETTINGS_TITLE',      'ÃåíéêÝò ñõèìßóåéò');
+define('_SKIN_CHANGE',                         'ÁëëáãÞ');
+define('_SKIN_CHANGE_BTN',                     'ÁëëáãÞ ôùí ñõèìßóåùí');
+define('_SKIN_UPDATE_BTN',                     'ÁíáíÝùóç åìöÜíéóçò');
+define('_SKIN_RESET_BTN',                      'ÅðáíáöïñÜ äåäïìÝíùí');
+define('_SKIN_EDITPART_TITLE',         'Åðåîåñãáóßá åìöÜíéóçò');
+define('_SKIN_GOBACK',                         'ÐÞãáéíå Ðßóù');
+define('_SKIN_ALLOWEDVARS',            'Åðéôñåðüìåíåò ìåôáâëçôÝò (ðáôÞóôå ãéá ðëçñïöïñßåò):');
+
+// global settings
+define('_SETTINGS_TITLE',                      'ÃåíéêÝò ñõèìßóåéò');
+define('_SETTINGS_SUB_GENERAL',                'ÃåíéêÝò ñõèìßóåéò');
+define('_SETTINGS_DEFBLOG',                    'ÐñïåðéëåãìÝíï éóôïëüãéï');
+define('_SETTINGS_ADMINMAIL',          'Email äéá÷åéñéóôÞ' );
+define('_SETTINGS_SITENAME',           '¼íïìá äéêôõáêïý ôüðïõ');
+define('_SETTINGS_SITEURL',                    'URL äéêôõáêïý ôüðïõ (ðñÝðåé íá ôåëåéþíåé ìå êÜèåôï)');
+define('_SETTINGS_ADMINURL',           'URL ðåñéï÷Þò äéá÷åßñéóçò (ðñÝðåé íá ôåëåéþíåé ìå êÜèåôï)');
+define('_SETTINGS_DIRS',                       ' ÊáôÜëïãïé Nucleus ');
+define('_SETTINGS_MEDIADIR',           ' ÊáôÜëïãïé Media ');
+define('_SETTINGS_SEECONFIGPHP',       '(âëÝðå config.php)');
+define('_SETTINGS_MEDIAURL',           'Media URL (ðñÝðåé íá ôåëåéþíåé ìå êÜèåôï)');
+define('_SETTINGS_ALLOWUPLOAD',        'Íá åðéôñÝðåôáé ç áðïóôïëÞ áñ÷åßùí;');
+define('_SETTINGS_ALLOWUPLOADTYPES','Ôýðïé áñ÷åßùí ðïõ åðéôñÝðåôáé ç áðïóôïëÞ ôïõò');
+define('_SETTINGS_CHANGELOGIN',        'Íá åðéôñÝðåôáé óôïõò ÷ñÞóôåò íá áëëÜîïõí üíïìá ÷ñÞóôç/êùäéêü ðñüóâáóçò');
+define('_SETTINGS_COOKIES_TITLE',      ' Ñõèìßóåéò cookie');
+define('_SETTINGS_COOKIELIFE',         'ÄéÜñêåéá cookie óýíäåóçò');
+define('_SETTINGS_COOKIESESSION',      'Cookies ðåñéüäïõ ëåéôïõñãßáò');
+define('_SETTINGS_COOKIEMONTH',        'ÄéÜñêåéá ãéá Ýíá ìÞíá');
+define('_SETTINGS_COOKIEPATH',         ' ÄéáäñïìÞ cookie (ðñï÷ùñçìÝíï)');
+define('_SETTINGS_COOKIEDOMAIN',       'Cookie ôïìÝá (ðñï÷ùñçìÝíï)');
+define('_SETTINGS_COOKIESECURE',       'ÁóöáëÝò cookie (ðñï÷ùñçìÝíï)');
+define('_SETTINGS_LASTVISIT',          'ÁðïèÞêåõóç cookies ôåëåõôáßáò åðßóêåøçò');
+define('_SETTINGS_ALLOWCREATE',        'Íá åðéôñÝðåôáé óôïõò åðéóêÝðôåò íá äçìéïõñãÞóïõí ëïãáñéáóìü ìÝëïõò');
+define('_SETTINGS_NEWLOGIN',           'Íá åðéôñÝðåôáé ç óýíäåóç óå ëïãáñéáóìïýò ðïõ äçìéïýñãçóáí ÷ñÞóôåò');
+define('_SETTINGS_NEWLOGIN2',          '(éó÷ýåé ìüíï ãéá íÝïõò ëïãáñéáóìïýò)');
+define('_SETTINGS_MEMBERMSGS',         'Íá åðéôñÝðåôáé ç õðçñåóßá ìÝëïò-óå-ìÝëïò');
+define('_SETTINGS_LANGUAGE',           'ÐñïåðéëåãìÝíç ãëþóóá');
+define('_SETTINGS_DISABLESITE',                'Áðåíåñãïðïßçóç äéêôõáêïý ôüðïõ');
+define('_SETTINGS_DBLOGIN',                    'mySQL Login &amp; Database');
+define('_SETTINGS_UPDATE',                     'ÁíáíÝùóç ñõèìßóåùí');
+define('_SETTINGS_UPDATE_BTN',         'ÁíáíÝùóç ñõèìßóåùí');
+define('_SETTINGS_DISABLEJS',          'Áðåíåñãïðïßçóç ãñáììþí åñãáëåßùí JavaScript ');
+define('_SETTINGS_MEDIA',                      'ÌÝóá/ÁðïóôïëÞ áñ÷åßùí');
+define('_SETTINGS_MEDIAPREFIX',                'ÐñïêáèïñéóìÝíá áñ÷åßá ãéá áðïóôïëÞ ìå çìåñïìçíßá');
+define('_SETTINGS_MEMBERS',            'Ñõèìßóåéò ìÝëïõò');
+
+// bans
+define('_BAN_TITLE',                           'Ëßóôá áðïêëåéóìïý ãéá');
+define('_BAN_NONE',                            '¼÷é áðáãïñÝõóåéò ãéá áõôü ôï éóôïëüãéï');
+define('_BAN_NEW_TITLE',                       'ÐñïóèÞêç íÝáò áðïêëåéóìïý');
+define('_BAN_NEW_TEXT',                        'ÐñïóèÞêç íÝïõ áðïêëåéóìïý ôþñá');
+define('_BAN_REMOVE_TITLE',                    'ÊáôÜñãçóç áðïêëåéóìïý');
+define('_BAN_IPRANGE',                         'Åýñïò IP');
+define('_BAN_BLOGS',                           'Ðïéá éóôïëüãéá;');
+define('_BAN_DELETE_TITLE',                    'ÄéáãñáöÞ áðïêëåéóìïý');
+define('_BAN_ALLBLOGS',                        '¼ëá ôá éóôïëüãéá óôá ïðïßá Ý÷åôå äéêáéþìáôá äéá÷åéñéóôÞ ');
+define('_BAN_REMOVED_TITLE',           'Ï áðïêëåéóìüò äéáãñÜöçêå');
+define('_BAN_REMOVED_TEXT',            'Ï áðïêëåéóìüò êáôáñãÞèçêå áðü ôá ðáñáêÜôù éóôïëüãéá:');
+define('_BAN_ADD_TITLE',                       'ÐñïóèÞêç áðïêëåéóìïý');
+define('_BAN_IPRANGE_TEXT',                    'ÅðéëïãÞ åìâÝëåéá IP ðïõ èÝëåôå íá ìðëïêÜñåôå. ¼óï ðéï ëßãïõò áñéèìïýò ðåñéÝ÷åé, ôüóï ðåñéóóüôåñåò äéåõèýíóåéò èá áðïêëåéóôïýí');
+define('_BAN_BLOGS_TEXT',                      'Ìðïñåßôå åßôå íá äéáëÝîåôå íá áðïêëåßóåôå ôçí IP óå Ýíá ìüíï éóôïëüãéï åßôå íá ôçí áðïêëåßóåôå óå üëá ôá éóôïëüãéá óôá ïðïßá Ý÷åôå äéêáéþìáôá äéá÷åéñéóôÞ. ÊÜíôå ôçí åðéëïãÞ óáò ðáñáêÜôù');
+define('_BAN_REASON_TITLE',                    'Ëüãïò');
+define('_BAN_REASON_TEXT',                     'Ìðïñåßôå íá äþóåôå Ýíá ëüãï ãéá ôïí áðïêëåéóìü, ï ïðïßïò èá åìöáíßæåôáé üôáí ï êÜôï÷ïò IP ðñïóðáèÞóåé íá ðñïóèÝóåé Üëëï ó÷üëéï Þ íá äþóåé øÞöï karma. Ôï ìÝãéóôï ìÞêïò åßíáé 256 ÷áñáêôÞñåò.');
+define('_BAN_ADD_BTN',                         'ÐñïóèÞêç áðïêëåéóìïý');
+
+// LOGIN screen
+define('_LOGIN_MESSAGE',                       'ÌÞíõìá');
+define('_LOGIN_SHARED',                        'Êïéíü÷ñçóôç öüñìá óýíäåóçò');
+define('_LOGIN_FORGOT',                        'Îå÷Üóáôå ôïí êùäéêü óáò;');
+
+// membermanagement
+define('_MEMBERS_TITLE',                       'Äéá÷åßñéóç ìÝëïõò');
+define('_MEMBERS_CURRENT',                     'ÕðÜñ÷ïíôá ìÝëç');
+define('_MEMBERS_NEW',                 'ÍÝï ìÝëïò');
+define('_MEMBERS_DISPLAY',                     'ÅìöÜíéóç ïíüìáôïò');
+define('_MEMBERS_DISPLAY_INFO',                '(Áõôü åßíáé ôï üíïìá ðïõ ÷ñçóéìïðïéåßò ãéá login)');
+define('_MEMBERS_REALNAME',            'Ðñáãìáôéêü üíïìá');
+define('_MEMBERS_PWD',                 'Êùäéêüò ðñüóâáóçò');
+define('_MEMBERS_REPPWD',                      'ÅðáíÜëçøç êùäéêïý ðñüóâáóçò');
+define('_MEMBERS_EMAIL',                       'Äéåýèõíóç çëåêôñïíéêïý ôá÷õäñïìåßïõ');
+define('_MEMBERS_EMAIL_EDIT',          '(¼ôáí áëëÜîåôå ôç äéåýèõíóç çëåêôñïíéêïý ôá÷õäñïìåßïõ, Ýíáò íÝïò êùäéêüò ðñüóâáóçò èá óôáëåß áõôüìáôá óå áõôÞ ôç äéåýèõíóç )');
+define('_MEMBERS_URL',                         'Äéåýèõíóç ôïðïèåóßáò (URL)');
+define('_MEMBERS_SUPERADMIN',          'Äéêáéþìáôá äéá÷åéñéóôÞ');
+define('_MEMBERS_CANLOGIN',            'Ìðïñåßôå íá óõíäåèåßôå óôçí ðåñéï÷Þ ôïõ Äéá÷åéñéóôÞ');
+define('_MEMBERS_NOTES',                       'Óçìåéþóåéò');
+define('_MEMBERS_NEW_BTN',             'ÐñïóèÞêç ìÝëïõò');
+define('_MEMBERS_EDIT',                        'Åðåîåñãáóßá ìÝëïõò');
+define('_MEMBERS_EDIT_BTN',            'ÁëëáãÞ Ñõèìßóåùí');
+define('_MEMBERS_BACKTOOVERVIEW',      'Ðßóù óôçí ðñïåðéóêüðçóç ìÝëïõò');
+define('_MEMBERS_DEFLANG',                     'Ãëþóóá');
+define('_MEMBERS_USESITELANG',         '- ×ñÞóç ñõèìßóåùí äéêôõáêïý ôüðïõ -');
+
+// List of blogs (TT = tooltip)
+define('_BLOGLIST_TT_VISIT',           'Åðßóêåøç äéêôõáêïý ôüðïõ');
+define('_BLOGLIST_ADD',                        'ÐñïóèÞêç Üñèñïõ');
+define('_BLOGLIST_TT_ADD',             'ÐñïóèÞêç íÝïõ Üñèñïõ óå áõôü ôï éóôïëüãéï');
+define('_BLOGLIST_EDIT',               'Åðåîåñãáóßá /ÄéáãñáöÞ Üñèñùí');
+define('_BLOGLIST_TT_EDIT',                    '');
+define('_BLOGLIST_BMLET',                      'Óåëéäïäåéêôßäéï');
+define('_BLOGLIST_TT_BMLET',           '');
+define('_BLOGLIST_SETTINGS',           'Ñõèìßóåéò');
+define('_BLOGLIST_TT_SETTINGS',                'Åðåîåñãáóßá ñõèìßóåùí Þ äéá÷åßñéóç ïìÜäáò');
+define('_BLOGLIST_BANS',                       'Áðáãïñåýóåéò');
+define('_BLOGLIST_TT_BANS',                    'ÐñïâïëÞ, ðñïóèÞêç Þ êáôÜñãçóç áðáãïñåõìÝíùí IP');
+define('_BLOGLIST_DELETE',                     'ÄéáãñáöÞ üëùí');
+define('_BLOGLIST_TT_DELETE',          'ÄéáãñáöÞ áõôÞò ôçò êáôáãñáöÞò');
+
+// OVERVIEW screen
+define('_OVERVIEW_YRBLOGS',            'Ïé êáôáãñáöÝò óáò');
+define('_OVERVIEW_YRDRAFTS',           'Ôï ðñïó÷Ýäéü óáò');
+define('_OVERVIEW_YRSETTINGS',         'Ïé ñõèìßóåéò óáò');
+define('_OVERVIEW_GSETTINGS',          'ÃåíéêÝò ñõèìßóåéò');
+define('_OVERVIEW_NOBLOGS',            'Äåí åßóôå óå êáìßá ïìáäéêÞ ëßóôá êáôáãñáöþí');
+define('_OVERVIEW_NODRAFTS',           'ÊáíÝíá ðñïó÷Ýäéï');
+define('_OVERVIEW_EDITSETTINGS',       'Åðåîåñãáóßá ñõèìßóåùí...');
+define('_OVERVIEW_BROWSEITEMS',        'ÐåñéÞãçóç óôá Üñèñá...');
+define('_OVERVIEW_BROWSECOMM', 'ÐåñéÞãçóç óôá ó÷üëéá...');
+define('_OVERVIEW_VIEWLOG',            'ÐñïâïëÞ çìåñïëïãßïõ åíåñãåéþí...');
+define('_OVERVIEW_MEMBERS',            'Äéá÷åßñéóç ìåëþí...');
+define('_OVERVIEW_NEWLOG',             'Äçìéïõñãßá íÝïõ çìåñïëïãßïõ åíåñãåéþí...');
+define('_OVERVIEW_SETTINGS',           'Åðåîåñãáóßá ñõèìßóåùí...');
+define('_OVERVIEW_TEMPLATES',          'Åðåîåñãáóßá ðñïôýðïõ...');
+define('_OVERVIEW_SKINS',                      'Åðåîåñãáóßá åìöáíßóåùí...');
+define('_OVERVIEW_BACKUP',                     'Áíôßãñáöï áóöáëåßáò/ÅðáíáöïñÜ...');
+
+// ITEMLIST
+define('_ITEMLIST_BLOG',                       '¢ñèñá ãéá ôï éóôïëüãéï'); 
+define('_ITEMLIST_YOUR',                       'Ôá Üñèñá óáò');
+
+// Comments
+define('_COMMENTS',                            'Ó÷üëéá');
+define('_NOCOMMENTS',                          'ÊáíÝíá ó÷üëéï ãéá áõôü ôï Üñèñï');
+define('_COMMENTS_YOUR',                       'Ôá ó÷üëéÜ óáò');
+define('_NOCOMMENTS_YOUR',             'Äåí ãñÜøáôå êáíÝíá ó÷üëéï');
+
+// LISTS (general)
+define('_LISTS_NOMORE',                        'Äåí õðÜñ÷ïõí Üëëá áðïôåëÝóìáôá Þ äåí âñÝèçêáí êáèüëïõ áðïôåëÝóìáôá');
+define('_LISTS_PREV',                          'Ðñïçãïýìåíï');
+define('_LISTS_NEXT',                          'Åðüìåíï');
+define('_LISTS_SEARCH',                                'Åýñåóç');
+define('_LISTS_CHANGE',                                'ÁëëáãÞ');
+define('_LISTS_PERPAGE',                       'Üñèñá/óåëßäá');
+define('_LISTS_ACTIONS',                       'ÅíÝñãåéåò');
+define('_LISTS_DELETE',                                'ÄéáãñáöÞ');
+define('_LISTS_EDIT',                          'Åðåîåñãáóßá');
+define('_LISTS_MOVE',                          'Ìåôáêßíçóç');
+define('_LISTS_CLONE',                         'Êëùíïðïßçóç');
+define('_LISTS_TITLE',                         'Ôßôëïò');
+define('_LISTS_BLOG',                          'Éóôïëüãéï');
+define('_LISTS_NAME',                          '¼íïìá');
+define('_LISTS_DESC',                          'ÐåñéãñáöÞ');
+define('_LISTS_TIME',                          '¿ñá');
+define('_LISTS_COMMENTS',                      'Ó÷üëéá');
+define('_LISTS_TYPE',                          'Ôýðïò ');
+
+
+// member list 
+define('_LIST_MEMBER_NAME',            'ÅìöÜíéóç ïíüìáôïò');
+define('_LIST_MEMBER_RNAME',           'Ðñáãìáôéêü üíïìá');
+define('_LIST_MEMBER_ADMIN',           'ÕðÝñäéá÷åéñéóôÞò; ');
+define('_LIST_MEMBER_LOGIN',           'Ìðïñþ íá óõíäåèþ; ');
+define('_LIST_MEMBER_URL',                     'Äéêôõáêüò ôüðïò');
+
+// banlist
+define('_LIST_BAN_IPRANGE',                    'ÅìâÝëåéá IP');
+define('_LIST_BAN_REASON',                     'Ëüãïò');
+
+// actionlist
+define('_LIST_ACTION_MSG',                     'ÌÞíõìá');
+
+// commentlist
+define('_LIST_COMMENT_BANIP',          'Áðïêëåéóìüò IP');
+define('_LIST_COMMENT_WHO',            'ÓõíôÜêôçò');
+define('_LIST_COMMENT',                        'Ó÷üëéï');
+define('_LIST_COMMENT_HOST',           'Host');
+
+// itemlist
+define('_LIST_ITEM_INFO',                      'Ðëçñïöïñßá');
+define('_LIST_ITEM_CONTENT',           'Ôßôëïò êáé Êåßìåíï');
+
+
+// teamlist
+define('_LIST_TEAM_ADMIN',                     'Äéá÷åéñéóôÞò ');
+define('_LIST_TEAM_CHADMIN',           'ÁëëáãÞ äéá÷åéñéóôÞ');
+
+// edit comments
+define('_EDITC_TITLE',                         'Åðåîåñãáóßá ó÷ïëßùí');
+define('_EDITC_WHO',                           'ÓõíôÜêôçò');
+define('_EDITC_HOST',                          'Áðü ðïý;');
+define('_EDITC_WHEN',                          'Ðüôå;');
+define('_EDITC_TEXT',                          'Êåßìåíï');
+define('_EDITC_EDIT',                          'Åðåîåñãáóßá ó÷ïëßïõ');
+define('_EDITC_MEMBER',                        'ìÝëïò');
+define('_EDITC_NONMEMBER',                     'ü÷é ìÝëïò');
+
+// move item
+define('_MOVE_TITLE',                          'ÌåôáöïñÜ óå ðïéï éóôïëüãéï;');
+define('_MOVE_BTN',                            'ÌåôáöïñÜ Üñèñïõ');
+
+// ADMIN-template template types
+include_once('adminskinTypes.php');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_NAVILIST',          'navibar for item/comment list');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is blog ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is super ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin URL');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'API entry');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'eventlist updates');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency to');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency by');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'couldn\'t load file');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin actions');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin admin link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin help link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin option setting link');
index 153d81b..e117a62 100644 (file)
  *
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2009 The Nucleus Group
+<<<<<<< HEAD
  * @version $Id: en_Latn_US.ISO-8859-1.php 1868 2012-05-22 05:10:53Z sakamocchi $
+=======
+ * @version $Id: en_Latn_US.ISO-8859-1.php 1887 2012-06-17 08:30:08Z sakamocchi $
+>>>>>>> skinnable-master
  */
 
 /********************************************
  *        Start New for 4.0                 *
  ********************************************/
-define('_SKINIE_INVALID_NAMES_DETECTED', 'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
-define('_LISTS_AUTHOR', 'Author');
-define('_OVERVIEW_OTHER_DRAFTS', 'Other Drafts');
+/* argument value for setlocale() in Microsoft's windows operating system */
+define('_LOCALE_IN_WINDOWS',   'enu_usa');
+
+/* labels for date and time measurement unit */
+define('_LABEL_YEAR_UNIT',             'year');
+define('_LABEL_MONTH_UNIT',            'month');
+define('_LABEL_DAY_UNIT',              'day');
+define('_LABEL_HOUR_UNIT',             'hour');
+define('_LABEL_MINUTE_UNIT',   'minute');
+
+// SkinableAdminArea vars
+define('_SKINABLEADMIN_DEL_UNINSTALL_DATA',                    'Delete ADMIN skin data table on uninstall?');
+define('_SKINABLEADMIN_DEFAULT_SKIN',                          'Choose a skin of the management area of the default.');
+define('_SKINABLEADMIN_MEMBER_DEFAULT_SKIN',           'Choose a skin of the management area of you use.');
+define('_SKINABLEADMIN_QMENU_LAYOUT',                          'Admin layout');
+define('_SKINABLEADMIN_PAGE_STR',                                      'page');
+define('_SKINABLEADMIN_BATCH_MOVE',                                    'Item move other category/Category move other blog');
+define('_SKINABLEADMIN_BATCH',                                         'batch');
+define('_SKINABLEADMIN_PAGEHEAD',                                      'Admin page head');
+define('_SKINABLEADMIN_PAGEFOOT',                                      'Admin page foot');
+define('_SKINABLEADMIN_TEMPLATEOVERVIEW',                      'Template overview');
+define('_SKINABLEADMIN_ADMINAREAHEADLINK',                     '[Your site]link');
+define('_SKINABLEADMIN_TPLSETTING_INGENERAL',          'In general');
+define('_SKINABLEADMIN_HEAD_STR',                                      ' head');
+define('_SKINABLEADMIN_BODY_STR',                                      ' body');
+define('_SKINABLEADMIN_FOOT_STR',                                      ' foot');
+define('_SKINABLEADMIN_TEXT_STR',                                      ' text');
+define('_SKINABLEADMIN_TITLE_STR',                                     ' title');
+define('_SKINABLEADMIN_ADMINSETTING_STR',                      ' set editmember is \'admin\'');
+define('_SKINABLEADMIN_NORMALSETTING_STR',                     ' normal');
+define('_SKINABLEADMIN_HELPICONURL_STR',                       ' icon URL');
+define('_SKINABLEADMIN_HELPFILEURL_STR',                       ' help file URL');
+define('_SKINABLEADMIN_ADMINSKINVAR_STR',                      ' skinvars');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_SELECT',      'selectbox used in ADMIN area');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE',       'Table for list indication');
+define('_SKINABLEADMIN_PLUGIN_QUICKMENU',                      'Link to admin page of the plugin shown to the quick-menu');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE',         'Template for option-type %s');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTMETA',         'Template for option-meta-data %s');
+define('_SKINABLEADMIN_MEMBERS_ADMINSKIN',                     "ADMIN-Area's skin");
+
+define('_LOCALE_BG_CYRL_BG',   'Bulgarian in Bulgaria');
+define('_LOCALE_CA_LATN_ES',   'Catalan in Spain');
+define('_LOCALE_CS_LATN_CZ',   'Czech in Czech Republic');
+define('_LOCALE_DE_LATN_DE',   'German in Germany');
+define('_LOCALE_EL_GREK_GR',   'Greek in Greece (Greek script)');
+define('_LOCALE_EN_LATN_US',   'English in United States');
+define('_LOCALE_ES_LATN_ES',   'Spanish in Spain');
+define('_LOCALE_FA_ARAB_IR',   'Persian in Islamic Republic of Iran');
+define('_LOCALE_FI_LATN_FI',   'Finnish in Finland');
+define('_LOCALE_FR_LATN_FR',   'French in France');
+define('_LOCALE_GL_LATN_ES',   'Galician in Spain');
+define('_LOCALE_HR_LATN_HR',   'Croatian in Croatia');
+define('_LOCALE_HU_LATN_HU',   'Hungarian in Hungary');
+define('_LOCALE_ID_LATN_ID',   'Indonesian in Indonesia (Latin script)');
+define('_LOCALE_IT_LATN_IT',   'Italian in Italy');
+define('_LOCALE_JA_JPAN_JP',   'Japanese in Japan');
+define('_LOCALE_KO_KORE_KR',   'Korean in Korea');
+define('_LOCALE_KU_ARAB_TR',   'Kurdish in Turkey (Arabic script)');
+define('_LOCALE_LV_LATN_LV',   'Latvian in Latvia');
+define('_LOCALE_NL_LATN_NL',   'Dutch in Netherlands');
+define('_LOCALE_PL_LATN_PL',   'Polish in Poland');
+define('_LOCALE_PT_LATN_BR',   'Portuguese in Brazil');
+define('_LOCALE_RO_LATN_RO',   'Romainan in Romania');
+define('_LOCALE_RU_CYRL_RU',   'Russian in Russia');
+define('_LOCALE_SK_LATN_SK',   'Slovak in Slovakia');
+define('_LOCALE_SR_CYRL_RS',   'Serbian in Serbia');
+define('_LOCALE_UR_ARAB_PK',   'Urdu in Pakistan');
+define('_LOCALE_VI_LATN_VN',   'Vietnamese in Vietnam (Latin script)');
+define('_LOCALE_ZH_HANS_CN',   'Chinese in China (simplified script)');
+define('_LOCALE_ZH_HANT_TW',   'Chinese in Taiwan (Traditional script)');
+
+define('_FORGOTPASSWORD_TITLE',                                'Forgot your password?');
+define('_FORGOTPASSWORD_MSG',                          'Enter your username and email address below, and you\'ll be sent an e-mail with a link where you can choose a new password.');
+define('_FORGOTPASSWORD_SUBMIT',                       'Send Activation Link" class="transparent');
+define('_FORGOTPASSWORD_CONTACT',                      'If you don\'t remember your exact username, contact the site administrator.');
+define('_SKINIE_INVALID_NAMES_DETECTED',       'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
+define('_LISTS_AUTHOR',                                                'Author');
+define('_OVERVIEW_OTHER_DRAFTS',                       'Other Drafts');
+define('_ERROR_BADADMINSKINNAME',                      'the name of skin for admin area must start with \'admin/\'.');
+define('_ERROR_BADADMINTEMPLATENAME',          'the name of template for admin area must start with \'admin/\'.');
+define('_SETTINGS_ADMINSKIN',                          'default skin for admin area');
+define('_SETTINGS_BKMKLTSKIN',                         'default skin for bookmarklet');
+define('_MEMBERS_BKMKLTSKIN',                          "bookmarklet skin");
+define('_ADMIN_SYSTEMOVERVIEW_VERSION_LATEST',         'The version which is being used is latest.');
+
 /********************************************
  *        Start New for 3.6x                *
  ********************************************/
@@ -183,13 +268,7 @@ define('_PLUGIN_OPTIONS_TITLE',                                                    'Options for %s');
 // Plugin file loda error
 define('_PLUGINFILE_COULDNT_BELOADED',                         'Error: plugin file <strong>%s.php</strong> could not be loaded, or it has been set inactive because it does not support some features (check the <a href="?action=actionlog">actionlog</a> for more info)');
 
-//ITEM add/edit template (for japanese only)
 define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
-define('_ITEM_ADDEDITTEMPLATE_YEAR',                           'Year');
-define('_ITEM_ADDEDITTEMPLATE_MONTH',                          'Month');
-define('_ITEM_ADDEDITTEMPLATE_DAY',                                    'Day');
-define('_ITEM_ADDEDITTEMPLATE_HOUR',                           'Hour');
-define('_ITEM_ADDEDITTEMPLATE_MINUTE',                         'Minute');
 
 // Errors
 define('_ERRORS_INSTALLSQL',                                           'install.sql should be deleted');
@@ -1254,3 +1333,20 @@ define('_EDITC_NONMEMBER',                       'non member');
 // move item
 define('_MOVE_TITLE',                          'Move to which blog?');
 define('_MOVE_BTN',                                    'Move Item');
+
+// ADMIN-template template types
+include_once('adminskinTypes.php');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_NAVILIST',          'navibar for item/comment list');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is blog ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is super ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin URL');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'API entry');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'eventlist updates');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency to');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency by');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'couldn\'t load file');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin actions');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin admin link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin help link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin option setting link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_NAVILIST',          'navibar for item/comment list');
index a6abc02..1a8d328 100644 (file)
 <?php
 /**
+<<<<<<< HEAD
  * Nucleus CMS Locale File
+=======
+ * Nucleus CMS Translation File
+>>>>>>> skinnable-master
  * English in United States (Latin script)
  *
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2009 The Nucleus Group
+<<<<<<< HEAD
  * @version $Id: en_Latn_US.UTF-8.php 1868 2012-05-22 05:10:53Z sakamocchi $
+=======
+ * @version $Id: en_Latn_US.UTF-8.php 1887 2012-06-17 08:30:08Z sakamocchi $
+>>>>>>> skinnable-master
  */
 
 /********************************************
  *        Start New for 4.0                 *
  ********************************************/
-define('_SKINIE_INVALID_NAMES_DETECTED', 'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
-define('_LISTS_AUTHOR', 'Author');
-define('_OVERVIEW_OTHER_DRAFTS', 'Other Drafts');
+/* argument value for setlocale() in Microsoft's windows operating system */
+define('_LOCALE_IN_WINDOWS',   'enu_usa');
+
+/* labels for date and time measurement unit */
+define('_LABEL_YEAR_UNIT',             'year');
+define('_LABEL_MONTH_UNIT',            'month');
+define('_LABEL_DAY_UNIT',              'day');
+define('_LABEL_HOUR_UNIT',             'hour');
+define('_LABEL_MINUTE_UNIT',   'minute');
+
+// SkinableAdminArea vars
+define('_SKINABLEADMIN_DEL_UNINSTALL_DATA',                    'Delete ADMIN skin data table on uninstall?');
+define('_SKINABLEADMIN_DEFAULT_SKIN',                          'Choose a skin of the management area of the default.');
+define('_SKINABLEADMIN_MEMBER_DEFAULT_SKIN',           'Choose a skin of the management area of you use.');
+define('_SKINABLEADMIN_QMENU_LAYOUT',                          'Admin layout');
+define('_SKINABLEADMIN_PAGE_STR',                                      'page');
+define('_SKINABLEADMIN_BATCH_MOVE',                                    'Item move other category/Category move other blog');
+define('_SKINABLEADMIN_BATCH',                                         'batch');
+define('_SKINABLEADMIN_PAGEHEAD',                                      'Admin page head');
+define('_SKINABLEADMIN_PAGEFOOT',                                      'Admin page foot');
+define('_SKINABLEADMIN_TEMPLATEOVERVIEW',                      'Template overview');
+define('_SKINABLEADMIN_ADMINAREAHEADLINK',                     '[Your site]link');
+define('_SKINABLEADMIN_TPLSETTING_INGENERAL',          'In general');
+define('_SKINABLEADMIN_HEAD_STR',                                      ' head');
+define('_SKINABLEADMIN_BODY_STR',                                      ' body');
+define('_SKINABLEADMIN_FOOT_STR',                                      ' foot');
+define('_SKINABLEADMIN_TEXT_STR',                                      ' text');
+define('_SKINABLEADMIN_TITLE_STR',                                     ' title');
+define('_SKINABLEADMIN_ADMINSETTING_STR',                      ' set editmember is \'admin\'');
+define('_SKINABLEADMIN_NORMALSETTING_STR',                     ' normal');
+define('_SKINABLEADMIN_HELPICONURL_STR',                       ' icon URL');
+define('_SKINABLEADMIN_HELPFILEURL_STR',                       ' help file URL');
+define('_SKINABLEADMIN_ADMINSKINVAR_STR',                      ' skinvars');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_SELECT',      'selectbox used in ADMIN area');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE',       'Table for list indication');
+define('_SKINABLEADMIN_PLUGIN_QUICKMENU',                      'Link to admin page of the plugin shown to the quick-menu');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE',         'Template for option-type %s');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTMETA',         'Template for option-meta-data %s');
+define('_SKINABLEADMIN_MEMBERS_ADMINSKIN',                     "ADMIN-Area's skin");
+
+define('_LOCALE_BG_CYRL_BG',   'Bulgarian in Bulgaria');
+define('_LOCALE_CA_LATN_ES',   'Catalan in Spain');
+define('_LOCALE_CS_LATN_CZ',   'Czech in Czech Republic');
+define('_LOCALE_DE_LATN_DE',   'German in Germany');
+define('_LOCALE_EL_GREK_GR',   'Greek in Greece (Greek script)');
+define('_LOCALE_EN_LATN_US',   'English in United States');
+define('_LOCALE_ES_LATN_ES',   'Spanish in Spain');
+define('_LOCALE_FA_ARAB_IR',   'Persian in Islamic Republic of Iran');
+define('_LOCALE_FI_LATN_FI',   'Finnish in Finland');
+define('_LOCALE_FR_LATN_FR',   'French in France');
+define('_LOCALE_GL_LATN_ES',   'Galician in Spain');
+define('_LOCALE_HR_LATN_HR',   'Croatian in Croatia');
+define('_LOCALE_HU_LATN_HU',   'Hungarian in Hungary');
+define('_LOCALE_ID_LATN_ID',   'Indonesian in Indonesia (Latin script)');
+define('_LOCALE_IT_LATN_IT',   'Italian in Italy');
+define('_LOCALE_JA_JPAN_JP',   'Japanese in Japan');
+define('_LOCALE_KO_KORE_KR',   'Korean in Korea');
+define('_LOCALE_KU_ARAB_TR',   'Kurdish in Turkey (Arabic script)');
+define('_LOCALE_LV_LATN_LV',   'Latvian in Latvia');
+define('_LOCALE_NL_LATN_NL',   'Dutch in Netherlands');
+define('_LOCALE_PL_LATN_PL',   'Polish in Poland');
+define('_LOCALE_PT_LATN_BR',   'Portuguese in Brazil');
+define('_LOCALE_RO_LATN_RO',   'Romainan in Romania');
+define('_LOCALE_RU_CYRL_RU',   'Russian in Russia');
+define('_LOCALE_SK_LATN_SK',   'Slovak in Slovakia');
+define('_LOCALE_SR_CYRL_RS',   'Serbian in Serbia');
+define('_LOCALE_UR_ARAB_PK',   'Urdu in Pakistan');
+define('_LOCALE_VI_LATN_VN',   'Vietnamese in Vietnam (Latin script)');
+define('_LOCALE_ZH_HANS_CN',   'Chinese in China (simplified script)');
+define('_LOCALE_ZH_HANT_TW',   'Chinese in Taiwan (Traditional script)');
+
+define('_FORGOTPASSWORD_TITLE',                                'Forgot your password?');
+define('_FORGOTPASSWORD_MSG',                          'Enter your username and email address below, and you\'ll be sent an e-mail with a link where you can choose a new password.');
+define('_FORGOTPASSWORD_SUBMIT',                       'Send Activation Link" class="transparent');
+define('_FORGOTPASSWORD_CONTACT',                      'If you don\'t remember your exact username, contact the site administrator.');
+define('_SKINIE_INVALID_NAMES_DETECTED',       'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
+define('_LISTS_AUTHOR',                                                'Author');
+define('_OVERVIEW_OTHER_DRAFTS',                       'Other Drafts');
+define('_ERROR_BADADMINSKINNAME',                      'the name of skin for admin area must start with \'admin/\'.');
+define('_ERROR_BADADMINTEMPLATENAME',          'the name of template for admin area must start with \'admin/\'.');
+define('_SETTINGS_ADMINSKIN',                          'default skin for admin area');
+define('_SETTINGS_BKMKLTSKIN',                         'default skin for bookmarklet');
+define('_MEMBERS_BKMKLTSKIN',                          "bookmarklet skin");
+define('_ADMIN_SYSTEMOVERVIEW_VERSION_LATEST',         'The version which is being used is latest.');
+
 /********************************************
  *        Start New for 3.6x                *
  ********************************************/
@@ -183,13 +272,7 @@ define('_PLUGIN_OPTIONS_TITLE',                                                    'Options for %s');
 // Plugin file loda error
 define('_PLUGINFILE_COULDNT_BELOADED',                         'Error: plugin file <strong>%s.php</strong> could not be loaded, or it has been set inactive because it does not support some features (check the <a href="?action=actionlog">actionlog</a> for more info)');
 
-//ITEM add/edit template (for japanese only)
 define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
-define('_ITEM_ADDEDITTEMPLATE_YEAR',                           'Year');
-define('_ITEM_ADDEDITTEMPLATE_MONTH',                          'Month');
-define('_ITEM_ADDEDITTEMPLATE_DAY',                                    'Day');
-define('_ITEM_ADDEDITTEMPLATE_HOUR',                           'Hour');
-define('_ITEM_ADDEDITTEMPLATE_MINUTE',                         'Minute');
 
 // Errors
 define('_ERRORS_INSTALLSQL',                                           'install.sql should be deleted');
@@ -1254,3 +1337,19 @@ define('_EDITC_NONMEMBER',                       'non member');
 // move item
 define('_MOVE_TITLE',                          'Move to which blog?');
 define('_MOVE_BTN',                                    'Move Item');
+
+// ADMIN-template template types
+include_once('adminskinTypes.php');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_NAVILIST',          'navibar for item/comment list');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is blog ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is super ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin URL');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'API entry');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'eventlist updates');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency to');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency by');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'couldn\'t load file');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin actions');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin admin link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin help link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin option setting link');
index 2eaa516..ce5a376 100644 (file)
  * 
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2012 The Nucleus Group
+<<<<<<< HEAD
  * @version $Id: es_Latn_ES.ISO-8859-1.php 1868 2012-05-22 05:10:53Z sakamocchi $
+=======
+ * @version $Id: es_Latn_ES.ISO-8859-1.php 1887 2012-06-17 08:30:08Z sakamocchi $
+>>>>>>> skinnable-master
  */
 
 /********************************************
  *        Start New for 4.0                 *
  ********************************************/
-define('_SKINIE_INVALID_NAMES_DETECTED', 'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
-define('_LISTS_AUTHOR', 'Author');
-define('_OVERVIEW_OTHER_DRAFTS', 'Other Drafts');
+/* argument value for setlocale() in Microsoft's windows operating system */
+define('_LOCALE_IN_WINDOWS',   'esp_esp');
+
+/* labels for date and time measurement unit */
+define('_LABEL_YEAR_UNIT',             'year');
+define('_LABEL_MONTH_UNIT',            'month');
+define('_LABEL_DAY_UNIT',              'day');
+define('_LABEL_HOUR_UNIT',             'hour');
+define('_LABEL_MINUTE_UNIT',   'minute');
+
+// SkinableAdminArea vars
+define('_SKINABLEADMIN_DEL_UNINSTALL_DATA',                    'Delete ADMIN skin data table on uninstall?');
+define('_SKINABLEADMIN_DEFAULT_SKIN',                          'Choose a skin of the management area of the default.');
+define('_SKINABLEADMIN_MEMBER_DEFAULT_SKIN',           'Choose a skin of the management area of you use.');
+define('_SKINABLEADMIN_QMENU_LAYOUT',                          'Admin layout');
+define('_SKINABLEADMIN_PAGE_STR',                                      'page');
+define('_SKINABLEADMIN_BATCH_MOVE',                                    'Item move other category/Category move other blog');
+define('_SKINABLEADMIN_BATCH',                                         'batch');
+define('_SKINABLEADMIN_PAGEHEAD',                                      'Admin page head');
+define('_SKINABLEADMIN_PAGEFOOT',                                      'Admin page foot');
+define('_SKINABLEADMIN_TEMPLATEOVERVIEW',                      'Template overview');
+define('_SKINABLEADMIN_ADMINAREAHEADLINK',                     '[Your site]link');
+define('_SKINABLEADMIN_TPLSETTING_INGENERAL',          'In general');
+define('_SKINABLEADMIN_HEAD_STR',                                      ' head');
+define('_SKINABLEADMIN_BODY_STR',                                      ' body');
+define('_SKINABLEADMIN_FOOT_STR',                                      ' foot');
+define('_SKINABLEADMIN_TEXT_STR',                                      ' text');
+define('_SKINABLEADMIN_TITLE_STR',                                     ' title');
+define('_SKINABLEADMIN_ADMINSETTING_STR',                      ' set editmember is \'admin\'');
+define('_SKINABLEADMIN_NORMALSETTING_STR',                     ' normal');
+define('_SKINABLEADMIN_HELPICONURL_STR',                       ' icon URL');
+define('_SKINABLEADMIN_HELPFILEURL_STR',                       ' help file URL');
+define('_SKINABLEADMIN_ADMINSKINVAR_STR',                      ' skinvars');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_SELECT',      'selectbox used in ADMIN area');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE',       'Table for list indication');
+define('_SKINABLEADMIN_PLUGIN_QUICKMENU',                      'Link to admin page of the plugin shown to the quick-menu');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE',         'Template for option-type %s');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTMETA',         'Template for option-meta-data %s');
+define('_SKINABLEADMIN_MEMBERS_ADMINSKIN',                     "ADMIN-Area's skin");
+
+define('_LOCALE_BG_CYRL_BG',   'Bulgarian in Bulgaria');
+define('_LOCALE_CA_LATN_ES',   'Catalan in Spain');
+define('_LOCALE_CS_LATN_CZ',   'Czech in Czech Republic');
+define('_LOCALE_DE_LATN_DE',   'German in Germany');
+define('_LOCALE_EL_GREK_GR',   'Greek in Greece (Greek script)');
+define('_LOCALE_EN_LATN_US',   'English in United States');
+define('_LOCALE_ES_LATN_ES',   'Spanish in Spain');
+define('_LOCALE_FA_ARAB_IR',   'Persian in Islamic Republic of Iran');
+define('_LOCALE_FI_LATN_FI',   'Finnish in Finland');
+define('_LOCALE_FR_LATN_FR',   'French in France');
+define('_LOCALE_GL_LATN_ES',   'Galician in Spain');
+define('_LOCALE_HR_LATN_HR',   'Croatian in Croatia');
+define('_LOCALE_HU_LATN_HU',   'Hungarian in Hungary');
+define('_LOCALE_ID_LATN_ID',   'Indonesian in Indonesia (Latin script)');
+define('_LOCALE_IT_LATN_IT',   'Italian in Italy');
+define('_LOCALE_JA_JPAN_JP',   'Japanese in Japan');
+define('_LOCALE_KO_KORE_KR',   'Korean in Korea');
+define('_LOCALE_KU_ARAB_TR',   'Kurdish in Turkey (Arabic script)');
+define('_LOCALE_LV_LATN_LV',   'Latvian in Latvia');
+define('_LOCALE_NL_LATN_NL',   'Dutch in Netherlands');
+define('_LOCALE_PL_LATN_PL',   'Polish in Poland');
+define('_LOCALE_PT_LATN_BR',   'Portuguese in Brazil');
+define('_LOCALE_RO_LATN_RO',   'Romainan in Romania');
+define('_LOCALE_RU_CYRL_RU',   'Russian in Russia');
+define('_LOCALE_SK_LATN_SK',   'Slovak in Slovakia');
+define('_LOCALE_SR_CYRL_RS',   'Serbian in Serbia');
+define('_LOCALE_UR_ARAB_PK',   'Urdu in Pakistan');
+define('_LOCALE_VI_LATN_VN',   'Vietnamese in Vietnam (Latin script)');
+define('_LOCALE_ZH_HANS_CN',   'Chinese in China (simplified script)');
+define('_LOCALE_ZH_HANT_TW',   'Chinese in Taiwan (Traditional script)');
+
+define('_FORGOTPASSWORD_TITLE',                                'Forgot your password?');
+define('_FORGOTPASSWORD_MSG',                          'Enter your username and email address below, and you\'ll be sent an e-mail with a link where you can choose a new password.');
+define('_FORGOTPASSWORD_SUBMIT',                       'Send Activation Link" class="transparent');
+define('_FORGOTPASSWORD_CONTACT',                      'If you don\'t remember your exact username, contact the site administrator.');
+define('_SKINIE_INVALID_NAMES_DETECTED',       'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
+define('_LISTS_AUTHOR',                                                'Author');
+define('_OVERVIEW_OTHER_DRAFTS',                       'Other Drafts');
+define('_ERROR_BADADMINSKINNAME',                      'the name of skin for admin area must start with \'admin/\'.');
+define('_ERROR_BADADMINTEMPLATENAME',          'the name of template for admin area must start with \'admin/\'.');
+define('_SETTINGS_ADMINSKIN',                          'default skin for admin area');
+define('_SETTINGS_BKMKLTSKIN',                         'default skin for bookmarklet');
+define('_MEMBERS_BKMKLTSKIN',                          "bookmarklet skin");
+define('_ADMIN_SYSTEMOVERVIEW_VERSION_LATEST',         'The version which is being used is latest.');
+
 /********************************************
  *        Start New for 3.6x                *
  ********************************************/
@@ -83,15 +168,15 @@ define('_EDITC_EMAIL',                             'E-mail');
 
 define('_MANAGER_PLUGINFILE_NOTFOUND',                         "Plugin %s was not loaded (File not found)");
 /* changed */
-// plugin dependency 
-define('_ERROR_INSREQPLUGIN',          'Plugin installation failed, requires %s');
-define('_ERROR_DELREQPLUGIN',          'Plugin deletion failed, required by %s');
+// plugin dependency
+define('_ERROR_INSREQPLUGIN',          'Fracasó la instalación del plugin, requiere ');
+define('_ERROR_DELREQPLUGIN',          'Fracasó la eliminación del plugin, es requerido por ');
 
 //define('_ADD_ADDLATER',                                                              'Add Later');
-define('_ADD_ADDLATER',                                                                'Add the dates specified');
+define('_ADD_ADDLATER',                                'Introducir luego');
 
-define('_LOGIN_NAME',                          'Name:');
-define('_LOGIN_PASSWORD',                      'Password:');
+define('_LOGIN_NAME',                          'Nombre');
+define('_LOGIN_PASSWORD',                      'Clave');
 
 // changed from _BOOKMARLET_BMARKLFOLLOW
 define('_BOOKMARKLET_BMARKFOLLOW',                                     ' (Works with nearly all browsers)');
@@ -189,13 +274,7 @@ define('_PLUGIN_OPTIONS_TITLE',                                                    'Options for %s');
 // Plugin file loda error
 define('_PLUGINFILE_COULDNT_BELOADED',                         'Error: plugin file <strong>%s.php</strong> could not be loaded, or it has been set inactive because it does not support some features (check the <a href="?action=actionlog">actionlog</a> for more info)');
 
-//ITEM add/edit template (for japanese only)
 define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
-define('_ITEM_ADDEDITTEMPLATE_YEAR',                           'Year');
-define('_ITEM_ADDEDITTEMPLATE_MONTH',                          'Month');
-define('_ITEM_ADDEDITTEMPLATE_DAY',                                    'Day');
-define('_ITEM_ADDEDITTEMPLATE_HOUR',                           'Hour');
-define('_ITEM_ADDEDITTEMPLATE_MINUTE',                         'Minute');
 
 // Errors
 define('_ERRORS_INSTALLSQL',                                           'install.sql should be deleted');
@@ -325,7 +404,7 @@ define('_ERROR_PLUGIN_LOAD',                'Plugin could not be loaded, or does not support c
 // START changed/added after 3.22 START
 define('_SEARCHFORM_QUERY',                    'Keywords to search');
 define('_ERROR_EMAIL_REQUIRED',                'Email address is required');
-define('_COMMENTFORM_MAIL',                    'Website:');
+define('_COMMENTFORM_MAIL',                    'Website');
 define('_COMMENTFORM_EMAIL',           'E-mail:');
 define('_EBLOG_REQUIREDEMAIL',         'Require E-mail address with comments?');
 define('_ERROR_COMMENTS_SPAM',      'Your comment was rejected because it did not pass the spam test');
@@ -333,18 +412,30 @@ define('_ERROR_COMMENTS_SPAM',      'Your comment was rejected because it did no
 
 // START changed/added after 315 START
 
+<<<<<<< HEAD
 define('_LIST_PLUG_SUBS_NEEDUPDATE','Per favore usa il pulsante \'Aggiorna lista di sottoscrizione\' per aggiornare la lista di sottoscrizione dei plugin.');
 define('_LIST_PLUGS_DEP',                      'I Plugin richiedono:');
+=======
+define('_LIST_PLUG_SUBS_NEEDUPDATE','Por favor, usa el botón de la \'lista de suscripción de actualizaciones\' para actualizar la lista de suscripciones de los plugin\'s.');
+define('_LIST_PLUGS_DEP',                      'Plugin(s) requires:');
+>>>>>>> skinnable-master
 
 // END changed/added after 3.15
 
 // START changed/added after 3.1 START
 
 // comments list per weblog
+<<<<<<< HEAD
 define('_COMMENTS_BLOG',                       'Tutti i commenti di un blog');
 define('_NOCOMMENTS_BLOG',                     'Nessun commento è stato fatto agli elementi di questo blog');
 define('_BLOGLIST_COMMENTS',           'Commenti');
 define('_BLOGLIST_TT_COMMENTS',                'Un elenco di tutti i commenti fatti agli elementi di questo blog');
+=======
+define('_COMMENTS_BLOG',                       'Todos los comentarios para la bitácora');
+define('_NOCOMMENTS_BLOG',                     'No se hicieron comentarios en los elementos de esta bitácora');
+define('_BLOGLIST_COMMENTS',           'Comentarios');
+define('_BLOGLIST_TT_COMMENTS',                'Una lista de los comentarios hechos en los elementos de esta bitácora');
+>>>>>>> skinnable-master
 
 
 // for use in archivetype-skinvar
@@ -352,16 +443,21 @@ define('_ARCHIVETYPE_DAY',                        'giorno');
 define('_ARCHIVETYPE_MONTH',           'mese');
 
 // tickets (prevents malicious users to trick an admin to perform actions he doesn't want)
+<<<<<<< HEAD
 define('_ERROR_BADTICKET',                     'Biglietto non valido o scaduto.');
 
 // plugin dependency
 define('_ERROR_INSREQPLUGIN',          'Installazione del plugin fallita, richiede ');
 define('_ERROR_DELREQPLUGIN',          'Cancellazione del plugin fallita, è richiesto da ');
+=======
+define('_ERROR_BADTICKET',                     'Ticket inválido o caducado.');
+>>>>>>> skinnable-master
 
 // cookie prefix
 define('_SETTINGS_COOKIEPREFIX',       'Prefisso dei Cookie');
 
 // account activation
+<<<<<<< HEAD
 define('_ERROR_NOLOGON_NOACTIVATE',    'Impossibile inviare il link di attivazione. Non sei autorizzato ad eseguire il login.');
 define('_ERROR_ACTIVATE',                      'La chiave di attivazione non esiste, non &egrave; valida o &egrave; scaduta.');
 define('_ACTIONLOG_ACTIVATIONLINK', 'Link di attivazione inviato');
@@ -401,6 +497,47 @@ define('_PLUGINS_EXTRA',                   'Impostazioni extra per i Plugin');
 
 // itemlist info column keys
 define('_LIST_ITEM_BLOG',                      'blog:');
+=======
+define('_ERROR_NOLOGON_NOACTIVATE',    'No se puede enviar el enlace de activación. No tienes permitido el acceso.');
+define('_ERROR_ACTIVATE',                      'La clave de activación no existe, es inválida, o ha caducado.');
+define('_ACTIONLOG_ACTIVATIONLINK', 'Enlace de activación enviado');
+define('_MSG_ACTIVATION_SENT',         'Un enlace de activación ha sido enviado por correo electrónico.');
+
+// activation link emails
+define('_ACTIVATE_REGISTER_MAIL',      "Hola <%memberName%>,\n\nNecesitas activar tu cuenta en <%siteName%> (<%siteUrl%>).\nPuedes hacerlo visitando el siguiente enlace: \n\n\t<%activationUrl%>\n\nTienes 2 dias para hacerlo. Después, el enlace de activación pierde su validez.");
+define('_ACTIVATE_REGISTER_MAILTITLE', "Activa tu cuenta '<%memberName%>'");
+define('_ACTIVATE_REGISTER_TITLE',     'Bienvenido <%memberName%>');
+define('_ACTIVATE_REGISTER_TEXT',      'Ya casi está. Por favor, selecciona una clave para tu cuenta aquí.');
+define('_ACTIVATE_FORGOT_MAIL',                "Hola <%memberName%>,\n\nUsando el enlace inferior, puedes seleccionar una nueva clave para tu cuenta en <%siteName%> (<%siteUrl%>).\n\n\t<%activationUrl%>\n\nTienes 2 dias para hacerlo. Después, el enlace de activación pierde su validez.");
+define('_ACTIVATE_FORGOT_MAILTITLE',"Reactiva tu cuenta '<%memberName%>'");
+define('_ACTIVATE_FORGOT_TITLE',       'Bienvenido <%memberName%>');
+define('_ACTIVATE_FORGOT_TEXT',                'Puedes elegir una nueva clave para tu cuenta aquí:');
+define('_ACTIVATE_CHANGE_MAIL',                "Hola <%memberName%>,\n\nPuesto que tu dirección de correo electrónico ha cambiado, necesitarás reactivar tu cuenta en <%siteName%> (<%siteUrl%>).\nPuedes hacerlo visitando el siguiente enlace: \n\n\t<%activationUrl%>\n\nTienes 2 dias para hacerlo. Después, el enlace de activación pierde su validez.");
+define('_ACTIVATE_CHANGE_MAILTITLE',"Reactiva tu cuenta '<%memberName%>'");
+define('_ACTIVATE_CHANGE_TITLE',       'Bienvenido <%memberName%>');
+define('_ACTIVATE_CHANGE_TEXT',                'Tu cambio de dirección ha sido verificado. ¡Gracias!');
+define('_ACTIVATE_SUCCESS_TITLE',      'Activation Succeeded');
+define('_ACTIVATE_SUCCESS_TEXT',       'Tu cuenta ha sido activada con éxito.');
+define('_MEMBERS_SETPWD',                      'Introduce clave');
+define('_MEMBERS_SETPWD_BTN',          'Introduce clave');
+define('_QMENU_ACTIVATE',                      'Activación de la cuenta');
+define('_QMENU_ACTIVATE_TEXT',         '<p>Después de que hayas activado tu cuenta, puedes empezar a usarla <a href="index.php?action=showlogin">accediendo</a>.</p>');
+
+define('_PLUGS_BTN_UPDATE',                    'Lista de suscripción de actualizaciones');
+
+// global settings 
+define('_SETTINGS_JSTOOLBAR',          'Estilo de barra de herramientas Javascript');
+define('_SETTINGS_JSTOOLBAR_FULL',     'Barra de herramientas completa (IE)');
+define('_SETTINGS_JSTOOLBAR_SIMPLE','Barra de herramientas simple (No IE)');
+define('_SETTINGS_JSTOOLBAR_NONE',     'Deshabilita la barra de herramientas');
+define('_SETTINGS_URLMODE_HELP',       '(Info: <a href="documentation/tips.html#searchengines-fancyurls">Cómo activar URLs atractivas</a>)');
+
+// extra plugin settings part when editing categories/members/blogs/...
+define('_PLUGINS_EXTRA',                       'Configuración Extra de Plugins');
+
+// itemlist info column keys
+define('_LIST_ITEM_BLOG',                      'bitácora:');
+>>>>>>> skinnable-master
 define('_LIST_ITEM_CAT',                       'cat:');
 define('_LIST_ITEM_AUTHOR',                    'autore:');
 define('_LIST_ITEM_DATE',                      'data:');
@@ -414,6 +551,7 @@ define('_BATCH_WITH_SEL',                   'Con la selezione:');
 define('_BATCH_EXEC',                          'Esegui');
 
 // quickmenu
+<<<<<<< HEAD
 define('_QMENU_HOME',                          'Home');
 define('_QMENU_ADD',                           'Aggiungi articoli');
 define('_QMENU_ADD_SELECT',                    '-- seleziona --');
@@ -441,6 +579,35 @@ define('_QMENU_INTRO_TEXT',                        '<p>Questa &egrave; la schermata di Login per BLOG
 define('_ERROR_PLUGNOHELPFILE',                'Il file di aiuto per questo plugin non pu&ograve; essere trovato');
 define('_PLUGS_HELP_TITLE',                    'Pagina di aiuto per il plugin');
 define('_LIST_PLUGS_HELP',                     'aiuto');
+=======
+define('_QMENU_HOME',                          'Inicio');
+define('_QMENU_ADD',                           'Agregar elemento');
+define('_QMENU_ADD_SELECT',                    '-- seleccionar --');
+define('_QMENU_USER_SETTINGS',         'Configuración');
+define('_QMENU_USER_ITEMS',                    'Elementos');
+define('_QMENU_USER_COMMENTS',         'Comentarios');
+define('_QMENU_MANAGE',                                'Gestión');
+define('_QMENU_MANAGE_LOG',                    'Historial de acciones');
+define('_QMENU_MANAGE_SETTINGS',       'Configuración global');
+define('_QMENU_MANAGE_MEMBERS',                'Miembros');
+define('_QMENU_MANAGE_NEWBLOG',                'Nueva bitácora');
+define('_QMENU_MANAGE_BACKUPS',                'Copias de seguridad');
+define('_QMENU_MANAGE_PLUGINS',                'Plugins');
+define('_QMENU_LAYOUT',                                'Distribución');
+define('_QMENU_LAYOUT_SKINS',          'Pieles');
+define('_QMENU_LAYOUT_TEMPL',          'Plantillas');
+define('_QMENU_LAYOUT_IEXPORT',                'Import/Export');
+define('_QMENU_PLUGINS',                       'Plugins');
+
+// quickmenu on logon screen
+define('_QMENU_INTRO',                         'Introducción');
+define('_QMENU_INTRO_TEXT',                    '<p>Esta es la pantalla de entrada de Nucleus CMS, el sistema de gestión de contenido usado para mantener este sitio.</p><p>Si tienes una cuenta, puedes acceder e introducir nuevos elementos (historias o posts).</p>');
+
+// helppages for plugins
+define('_ERROR_PLUGNOHELPFILE',                'El archivo de ayuda de este plugin no se encuentra');
+define('_PLUGS_HELP_TITLE',                    'Página de ayuda del plugin');
+define('_LIST_PLUGS_HELP',                     'ayuda');
+>>>>>>> skinnable-master
 
 
 // END changed/started after 3.1
@@ -448,6 +615,7 @@ define('_LIST_PLUGS_HELP',                  'aiuto');
 // START changed/added after v2.5beta START
 
 // general settings (security)
+<<<<<<< HEAD
 define('_SETTINGS_EXTAUTH',                    'Abilita l\'Autenticazione Esterna');
 define('_WARNING_EXTAUTH',                     'Attenzione: Abilitare solo se necessario.');
 
@@ -456,6 +624,16 @@ define('_MEMBERS_BYPASS',                  'Usa l\'Autenticazione Esterna');
 
 // 'always include in search' blog setting (yes/no) [in v2.5beta, the 'always' part wasn't clear]
 define('_EBLOG_SEARCH',                                'Includi <em>SEMPRE</em> nella ricerca');
+=======
+define('_SETTINGS_EXTAUTH',                    'Habilita la autenticación externa');
+define('_WARNING_EXTAUTH',                     'Aviso: Habilita sólo si es necesario.');
+
+// member profile
+define('_MEMBERS_BYPASS',                      'Usar Autenticación Externa');
+
+// 'always include in search' blog setting (yes/no) [in v2.5beta, the 'always' part wasn't clear]
+define('_EBLOG_SEARCH',                                'Incluir en búsquedas');
+>>>>>>> skinnable-master
 
 // END changed/added after v2.5beta
 
@@ -466,18 +644,29 @@ define('_MEDIA_VIEW',                             'visualizza');
 define('_MEDIA_VIEW_TT',                       'Visualizza il file (apre una nuova finestra)');
 define('_MEDIA_FILTER_APPLY',          'Applica filtro');
 define('_MEDIA_FILTER_LABEL',          'Filtro: ');
+<<<<<<< HEAD
 define('_MEDIA_UPLOAD_TO',                     'Carica in...');
 define('_MEDIA_UPLOAD_NEW',                    'Carica un nuovo file...');
 define('_MEDIA_COLLECTION_SELECT',     'Seleziona');
 define('_MEDIA_COLLECTION_TT',         'Passa a questa categoria');
 define('_MEDIA_COLLECTION_LABEL',      'Collezione corrente: ');
+=======
+define('_MEDIA_UPLOAD_TO',                     'Subir a...');
+define('_MEDIA_UPLOAD_NEW',                    'Subir nuevo archivo...');
+define('_MEDIA_COLLECTION_SELECT',     'Seleccionar');
+define('_MEDIA_COLLECTION_TT',         'Cambiar a esta categoría');
+define('_MEDIA_COLLECTION_LABEL',      'Colección actual: ');
+>>>>>>> skinnable-master
 
 // tooltips on toolbar
 define('_ADD_ALIGNLEFT_TT',                    'Allinea a sinistra');
 define('_ADD_ALIGNRIGHT_TT',           'Allinea a destra');
 define('_ADD_ALIGNCENTER_TT',          'Centra');
 
+<<<<<<< HEAD
 
+=======
+>>>>>>> skinnable-master
 // generic upload failure
 define('_ERROR_UPLOADFAILED',          'Caricamento fallito');
 
@@ -505,10 +694,17 @@ define('_SETTINGS_SKINSURL',              'URL dei temi');
 define('_SETTINGS_ACTIONSURL',         'URL completa al file action.php');
 
 // category moves (batch)
+<<<<<<< HEAD
 define('_ERROR_MOVEDEFCATEGORY',       'Non posso spostare la categoria di default');
 define('_ERROR_MOVETOSELF',                    'Non posso spostare la categoria (il blog di destinazione coincide con quello di partenza)');
 define('_MOVECAT_TITLE',                       'Seleziona il blog dove spostare la categoria selezionata');
 define('_MOVECAT_BTN',                         'Sposta la Categoria');
+=======
+define('_ERROR_MOVEDEFCATEGORY',       'No se puede mover la categoría por defecto');
+define('_ERROR_MOVETOSELF',                    'No se puede mover la categoría (la bitácora de destino es la misma que la de origen)');
+define('_MOVECAT_TITLE',                       'Seleccionar la bitácora a la que mover la categoría');
+define('_MOVECAT_BTN',                         'Mover categoría');
+>>>>>>> skinnable-master
 
 // URLMode setting
 define('_SETTINGS_URLMODE',                    'Modo URL');
@@ -516,6 +712,7 @@ define('_SETTINGS_URLMODE_NORMAL',  'Normale');
 define('_SETTINGS_URLMODE_PATHINFO','Fancy');
 
 // Batch operations
+<<<<<<< HEAD
 define('_BATCH_NOSELECTION',           'Non &egrave; stato selezionato nulla su cui eseguire le azioni richieste');
 define('_BATCH_ITEMS',                         'Operazione automatiche sugli articoli');
 define('_BATCH_CATEGORIES',                    'Operazioni automatiche sulle categorie');
@@ -548,12 +745,47 @@ define('_BATCH_TEAM_UNSET_ADM',           'Togli i privilegi di amministrazione');
 define('_BATCH_CAT_DELETE',                    'Cancella');
 define('_BATCH_CAT_MOVE',                      'Spostalo in un altro blog');
 define('_BATCH_COMMENT_DELETE',                'Cancella');
+=======
+define('_BATCH_NOSELECTION',           'Nada seleccionado sobre lo que se pueda realizar una acción');
+define('_BATCH_ITEMS',                         'Operación de lotes sobre elementos');
+define('_BATCH_CATEGORIES',                    'Operación de lotes sobre categorías');
+define('_BATCH_MEMBERS',                       'Operación de lotes sobre miembros');
+define('_BATCH_TEAM',                          'Operación de lotes sobre miembros de equipos');
+define('_BATCH_COMMENTS',                      'Operación de lotes sobre comentarios');
+define('_BATCH_UNKNOWN',                       'Operación de lotes desconocida: ');
+define('_BATCH_EXECUTING',                     'Ejecutando');
+define('_BATCH_ONCATEGORY',                    'sobre la categoría');
+define('_BATCH_ONITEM',                                'sobre el elemento');
+define('_BATCH_ONCOMMENT',                     'sobre el comentario');
+define('_BATCH_ONMEMBER',                      'sobre el miembro');
+define('_BATCH_ONTEAM',                                'sobre el miembro de equipo');
+define('_BATCH_SUCCESS',                       '¡Sin problemas!');
+define('_BATCH_DONE',                          '¡Hecho!');
+define('_BATCH_DELETE_CONFIRM',                'Confirmar eliminación de lote');
+define('_BATCH_DELETE_CONFIRM_BTN',    'Confirmar eliminación de lote');
+define('_BATCH_SELECTALL',                     'seleccionar todo');
+define('_BATCH_DESELECTALL',           'deseleccionar todo');
+
+// batch operations: options in dropdowns
+define('_BATCH_ITEM_DELETE',           'Eliminar');
+define('_BATCH_ITEM_MOVE',                     'Mover');
+define('_BATCH_MEMBER_DELETE',         'Eliminar');
+define('_BATCH_MEMBER_SET_ADM',                'Dar derechos de administración');
+define('_BATCH_MEMBER_UNSET_ADM',      'Quitar derechos de administración');
+define('_BATCH_TEAM_DELETE',           'Borrar del equipo');
+define('_BATCH_TEAM_SET_ADM',          'Dar derechos de administración');
+define('_BATCH_TEAM_UNSET_ADM',                'Quitar derechos de administración');
+define('_BATCH_CAT_DELETE',                    'Eliminar');
+define('_BATCH_CAT_MOVE',                      'Mover a otra bitácora');
+define('_BATCH_COMMENT_DELETE',                'Eliminar');
+>>>>>>> skinnable-master
 
 // itemlist: Add new item...
 define('_ITEMLIST_ADDNEW',                     'Aggiungi un nuovo articolo...');
 define('_ADD_PLUGIN_EXTRAS',           'Moduli aggiuntivi - Opzioni extra ');
 
 // errors
+<<<<<<< HEAD
 define('_ERROR_CATCREATEFAIL',         'Non posso creare una nuova categoria');
 define('_ERROR_NUCLEUSVERSIONREQ',     'Questo modulo aggiuntivo richiede una versione di Nucleus pi&ugrave; recente: ');
 
@@ -589,6 +821,43 @@ define('_OR',                                              'o');
 
 // empty fields on template edit
 define('_EDITTEMPLATE_EMPTY',          'campo vuoto (clicca per modificare)');
+=======
+define('_ERROR_CATCREATEFAIL',         'No se puede crear una nueva categoría');
+define('_ERROR_NUCLEUSVERSIONREQ',     'Este plugin necesita una versión más reciente de Nucleus: ');
+
+// backlinks
+define('_BACK_TO_BLOGSETTINGS',                'Volver a preferencias de bitácora');
+
+// skin import export
+define('_SKINIE_TITLE_IMPORT',         'Importar');
+define('_SKINIE_TITLE_EXPORT',         'Exportar');
+define('_SKINIE_BTN_IMPORT',           'Importar');
+define('_SKINIE_BTN_EXPORT',           'Exportar pieles/plantillas seleccionadas');
+define('_SKINIE_LOCAL',                                'Importar desde un archivo local:');
+define('_SKINIE_NOCANDIDATES',         'No se han encontrado candidatos para importar en el directorio de pieles');
+define('_SKINIE_FROMURL',                      'Importar desde URL:');
+define('_SKINIE_EXPORT_INTRO',         'Seleccionar abajo las pieles y plantillas a exportar');
+define('_SKINIE_EXPORT_SKINS',         'Pieles');
+define('_SKINIE_EXPORT_TEMPLATES',     'Plantillas');
+define('_SKINIE_EXPORT_EXTRA',         'Información Extra');
+define('_SKINIE_CONFIRM_OVERWRITE',    'Sobreescribe pieles que ya existan (ver conflictos de nombre)');
+define('_SKINIE_CONFIRM_IMPORT',       'Sí, quiero importar ésto');
+define('_SKINIE_CONFIRM_TITLE',                'Sobre importar pieles y plantillas');
+define('_SKINIE_INFO_SKINS',           'Pieles en archivo:');
+define('_SKINIE_INFO_TEMPLATES',       'Plantillas en archivo:');
+define('_SKINIE_INFO_GENERAL',         'Información:');
+define('_SKINIE_INFO_SKINCLASH',       'Nombre de piel conflictivo:');
+define('_SKINIE_INFO_TEMPLCLASH',      'Nombre de plantilla conflictivo:');
+define('_SKINIE_INFO_IMPORTEDSKINS','Pieles importadas:');
+define('_SKINIE_INFO_IMPORTEDTEMPLS','Plantillas importadas:');
+define('_SKINIE_DONE',                         'Importación realizada');
+
+define('_AND',                                         'y');
+define('_OR',                                          'o');
+
+// empty fields on template edit
+define('_EDITTEMPLATE_EMPTY',          'campo vacío (hacer clic para editar)');
+>>>>>>> skinnable-master
 
 // skin overview list
 define('_LIST_SKINS_INCMODE',          'Modo inclusione:');
@@ -596,6 +865,7 @@ define('_LIST_SKINS_INCPREFIX',             'Prefisso inclusione:');
 define('_LIST_SKINS_DEFINED',          'Parti definite:');
 
 // backup
+<<<<<<< HEAD
 define('_BACKUPS_TITLE',                       'Salva / Ripristina');
 define('_BACKUP_TITLE',                                'Salvataggio');
 define('_BACKUP_INTRO',                                'Clicca sul pulsante qui sotto per eseguire un salvataggio (backup) del database di Nucleus. Ti verr&agrave; richiesto di salvare un file contenente il backup: scegli di conservare tale file in un posto sicuro.');
@@ -611,6 +881,23 @@ define('_RESTORE_BTN',                             'Ripristina');
 define('_RESTORE_WARNING',                     '(assicurati di selezionare il backup corretto; &egrave; consigliato effettuare un nuovo backup prima di procedere con il ripristino di un precedente salvataggio)');
 define('_ERROR_BACKUP_NOTSURE',                'Devi spuntare la casellina \'Si, sono sicuro\' per poter procedere con il ripristino dei dati');
 define('_RESTORE_COMPLETE',                    'Ripristino dati completato');
+=======
+define('_BACKUPS_TITLE',                       'Almacenar / Restaurar');
+define('_BACKUP_TITLE',                                'Almacenar');
+define('_BACKUP_INTRO',                                'Hacer clic sobre el siguiente botón para crear una copia de seguridad de la base de datos de Nucleus. Se pedirá que guarde un archivo de seguridad. Guárdelo en lugar seguro.');
+define('_BACKUP_ZIP_YES',                      'Intente usar la compresión');
+define('_BACKUP_ZIP_NO',                       'No use compresión');
+define('_BACKUP_BTN',                          'Crear copia de seguridad');
+define('_BACKUP_NOTE',                         '<b>Nota:</b> Sólo los contenidos de la base de datos se guardan en la copia de seguridad. Archivos de medios, imágenes y preferencias de config.php <b>NO</b> se incluyen en la copia de seguridad.');
+define('_RESTORE_TITLE',                       'Restaurar');
+define('_RESTORE_NOTE',                                '<b>AVISO:</b> Restaurar desde una copia de seguridad <b>BORRARÁ</b> todos los datos de Nucleus actuales! ¡Hacer ésto sólo se esté totalmente seguro!   <br />  <b>Nota:</b> Comprobar que la versión de Nucleus en la que se creó la copia es la misma que la versión que se está usando ahora! No funcionará si no es así');
+define('_RESTORE_INTRO',                       'Seleccionar el archivo de copia de seguridad (será enviado al servidor) y haga clic sobre el botón "Restaurar" para empezar.');
+define('_RESTORE_IMSURE',                      '¡Sí, estoy seguro de que quiero hacer eso!');
+define('_RESTORE_BTN',                         'Restaurar desde archivo');
+define('_RESTORE_WARNING',                     '(asegurarse de estar restaurando la copia de seguridad correcta, quizá sea mejor hacer una copia de seguridad antes de empezar)');
+define('_ERROR_BACKUP_NOTSURE',                'Necesitará marcar la casilla \'Estoy seguro\'');
+define('_RESTORE_COMPLETE',                    'Restauración completada');
+>>>>>>> skinnable-master
 
 // new item notification
 define('_NOTIFY_NI_MSG',                       'E\' stato inserito un nuovo articolo:');
@@ -625,6 +912,7 @@ define('_NOTIFY_COMMENT',                   'Commento:');
 define('_NOTIFY_VOTE',                         'Vota:');
 define('_NOTIFY_HOST',                         'Host:');
 define('_NOTIFY_IP',                           'IP:');
+<<<<<<< HEAD
 define('_NOTIFY_MEMBER',                       'Membro:');
 define('_NOTIFY_TITLE',                                'Titolo:');
 define('_NOTIFY_CONTENTS',                     'Contenuti:');
@@ -635,6 +923,18 @@ define('_MMAIL_FROMANON',                  'un visitatore anonimo');
 define('_MMAIL_FROMNUC',                       'il messaggio ti &egrave; stato inviato utilizzando i servizi di nucleus utilizzato dal sito ');
 define('_MMAIL_TITLE',                         'Un messaggio da');
 define('_MMAIL_MAIL',                          'Messaggio:');
+=======
+define('_NOTIFY_MEMBER',                       'Miembro:');
+define('_NOTIFY_TITLE',                                'Título:');
+define('_NOTIFY_CONTENTS',                     'Contenido:');
+
+// member mail message
+define('_MMAIL_MSG',                           'Un mensaje enviado por');
+define('_MMAIL_FROMANON',                      'un visitante anónimo');
+define('_MMAIL_FROMNUC',                       'Insertado desde una bitácora de Nucleus en');
+define('_MMAIL_TITLE',                         'Un mensaje de');
+define('_MMAIL_MAIL',                          'Mensaje:');
+>>>>>>> skinnable-master
 
 // END introduced after v1.5 END
 
@@ -642,6 +942,7 @@ define('_MMAIL_MAIL',                               'Messaggio:');
 // START introduced after v1.1 START
 
 // bookmarklet buttons
+<<<<<<< HEAD
 define('_BMLET_ADD',                           'Aggiungi un articolo');
 define('_BMLET_EDIT',                          'Modifica un articolo');
 define('_BMLET_DELETE',                                'Cancella un articolo');
@@ -649,12 +950,22 @@ define('_BMLET_BODY',                             'Corpo');
 define('_BMLET_MORE',                          'Corpo (esteso)');
 define('_BMLET_OPTIONS',                       'Opzioni');
 define('_BMLET_PREVIEW',                       'Anteprima');
+=======
+define('_BMLET_ADD',                           'Introducir entrada');
+define('_BMLET_EDIT',                          'Editar entrada');
+define('_BMLET_DELETE',                                'Eliminar entrada');
+define('_BMLET_BODY',                          'Cuerpo');
+define('_BMLET_MORE',                          'Más');
+define('_BMLET_OPTIONS',                       'Opciones');
+define('_BMLET_PREVIEW',                       'Previsualizar');
+>>>>>>> skinnable-master
 
 // used in bookmarklet
 define('_ITEM_UPDATED',                                'L\'articolo &egrave; stato aggiornato');
 define('_ITEM_DELETED',                                'L\'articolo &egrave; stato cancellato');
 
 // plugins
+<<<<<<< HEAD
 define('_CONFIRMTXT_PLUGIN',           'Sei sicuro di volere eliminare il modulo aggiuntivo chiamato');
 define('_ERROR_NOSUCHPLUGIN',          'Modulo aggiuntivo inesistente');
 define('_ERROR_DUPPLUGIN',                     'Questo modulo aggiuntivo &egrave; gi&agrave; stato installato');
@@ -669,6 +980,22 @@ define('_PLUGS_TITLE_NEW',                 'Installa un nuovo modulo aggiuntivo');
 define('_PLUGS_ADD_TEXT',                      'Qui sotto sono elencati tutti i file contenuti nella directory dei moduli aggiuntivi. Dovrebbero essere elencati solo i moduli non ancora installati. Prima di procedere con l\'installazione di uno qualsiasi dei file elencati accertati che lo stesso sia <strong>sicuramente</strong> un modulo aggiuntivo valido.');
 define('_PLUGS_BTN_INSTALL',           'Installa');
 define('_BACKTOOVERVIEW',                      'Torna alla pagina principale dei moduli aggiuntivi');
+=======
+define('_CONFIRMTXT_PLUGIN',           'Seguro que se desea eliminar el plugin llamado');
+define('_ERROR_NOSUCHPLUGIN',          'No existe ese plugin');
+define('_ERROR_DUPPLUGIN',                     'Ese plugin ya ha sido instalado');
+define('_ERROR_PLUGFILEERROR',         'No existe ese plugin, o los permisos no son los correctos');
+define('_PLUGS_NOCANDIDATES',          'No se han encontrado candidatos para el plugin');
+
+define('_PLUGS_TITLE_MANAGE',          'Gestionar plugins');
+define('_PLUGS_TITLE_INSTALLED',       'Actualmente instalado');
+define('_PLUGS_TITLE_UPDATE',          'Actualizar la lista de suscripción');
+define('_PLUGS_TEXT_UPDATE',           'Nucleus mantiene una caché de las suscripciones a eventos de los plugins. Cuando se actualiza un plugin sustituyendo su archivo, se debe ejecutar esta actualización para asegurar que las suscripciones de la caché son correctas');
+define('_PLUGS_TITLE_NEW',                     'Instalar un nuevo plugin');
+define('_PLUGS_ADD_TEXT',                      'A continuación hay una lista de todos los archivos de tu directorio de plugins, algunos podrían ser plugins sin instalación. Asegúrate de estar <strong>totalmente seguro</strong> de que se trata de un plugin antes de introducirlo.');
+define('_PLUGS_BTN_INSTALL',           'Instalar plugin');
+define('_BACKTOOVERVIEW',                      'Volver a principal');
+>>>>>>> skinnable-master
 
 // editlink
 define('_TEMPLATE_EDITLINK',           'Link per la modifica dell\'articolo');
@@ -678,6 +1005,7 @@ define('_ADD_LEFT_TT',                             'Aggiungi un riquadro laterale a sinistra');
 define('_ADD_RIGHT_TT',                                'Aggiungi un riquadro laterale a destra');
 
 // add/edit item: new category (in dropdown box)
+<<<<<<< HEAD
 define('_ADD_NEWCAT',                          'Nuova categoria...');
 
 // new settings
@@ -685,6 +1013,15 @@ define('_SETTINGS_PLUGINURL',             'URL moduli aggiuntivi');
 define('_SETTINGS_MAXUPLOADSIZE',      'Max. grandezza file caricabili (in byte)');
 define('_SETTINGS_NONMEMBERMSGS',      'Abilita gli utenti non registrati ad inviare messaggi');
 define('_SETTINGS_PROTECTMEMNAMES',    'Proteggi i nomi degli utenti registrati');
+=======
+define('_ADD_NEWCAT',                          'Nueva categoría');
+
+// new settings
+define('_SETTINGS_PLUGINURL',          'URL del plugin');
+define('_SETTINGS_MAXUPLOADSIZE',      'Max. tamaño de archivo para subida (bytes)');
+define('_SETTINGS_NONMEMBERMSGS',      'Permitir a los no miembros que envien mensajes');
+define('_SETTINGS_PROTECTMEMNAMES',    'Proteger los nombres de los miembros');
+>>>>>>> skinnable-master
 
 // overview screen
 define('_OVERVIEW_PLUGINS',                    'Gestisci i moduli aggiuntivi...');
@@ -696,6 +1033,7 @@ define('_ACTIONLOG_NEWMEMBER',             'Registrazione nuovo membro:');
 define('_MEMBERMAIL_MAIL',                     'Il tuo indirizzo email:');
 
 // file upload
+<<<<<<< HEAD
 define('_ERROR_DISALLOWEDUPLOAD2',     'Non hai diritti di amministrazione su nessuno dei blog che hanno il membro di destinazione nel loro gruppo. Per questo motivo non sei abilitato a caricare file nella directory media di questi mebri.');
 
 // plugin list
@@ -710,11 +1048,28 @@ define('_LIST_PLUGS_DOWN',                       'sposta sotto');
 define('_LIST_PLUGS_UNINSTALL',                'disinstalla');
 define('_LIST_PLUGS_ADMIN',                    'amministra');
 define('_LIST_PLUGS_OPTIONS',          'modifica&nbsp;opzioni');
+=======
+define('_ERROR_DISALLOWEDUPLOAD2',     'Sin permiso de administración sobre ninguna de las bitácoras que tiene el miembro de destino del equipo. Por tanto, no es posible subir archivos al directorio de medios de este miembro');
+
+// plugin list
+define('_LISTS_INFO',                          'Información');
+define('_LIST_PLUGS_AUTHOR',           'Por:');
+define('_LIST_PLUGS_VER',                      'Versión:');
+define('_LIST_PLUGS_SITE',                     'Visitar sitio');
+define('_LIST_PLUGS_DESC',                     'Descripción:');
+define('_LIST_PLUGS_SUBS',                     'Suscribir a los siguientes eventos:');
+define('_LIST_PLUGS_UP',                       'desplazar arriba');
+define('_LIST_PLUGS_DOWN',                     'desplazar abajo');
+define('_LIST_PLUGS_UNINSTALL',                'desinstalar');
+define('_LIST_PLUGS_ADMIN',                    'admin');
+define('_LIST_PLUGS_OPTIONS',          'editar&nbsp;opciones');
+>>>>>>> skinnable-master
 
 // plugin option list
 define('_LISTS_VALUE',                         'Valore');
 
 // plugin options
+<<<<<<< HEAD
 define('_ERROR_NOPLUGOPTIONS',         'questo modulo non ha alcuna opzione impostata');
 define('_PLUGS_BACK',                          'Torna alla pagina principale dei moduli aggiuntivi');
 define('_PLUGS_SAVE',                          'Salva le opzioni');
@@ -727,6 +1082,20 @@ define('_MANAGE_SKINS',                           'Temi e Modelli');
 define('_MANAGE_EXTRA',                                'Caratteristiche aggiuntive');
 
 define('_BACKTOMANAGE',                                'Torna all\'amministrazione di Nucleus');
+=======
+define('_ERROR_NOPLUGOPTIONS',         'este plugin no tiene establecida ninguna opción');
+define('_PLUGS_BACK',                          'Volver a la lista de plugins');
+define('_PLUGS_SAVE',                          'Guardar opciones');
+define('_PLUGS_OPTIONS_UPDATED',       'Opciones de plugin actualizadas');
+
+define('_OVERVIEW_MANAGEMENT',         'Gestión');
+define('_OVERVIEW_MANAGE',                     'Gestión de Nucleus...');
+define('_MANAGE_GENERAL',                      'Gestión general');
+define('_MANAGE_SKINS',                                '"Skins" y plantillas');
+define('_MANAGE_EXTRA',                                'Características extra');
+
+define('_BACKTOMANAGE',                                'Volver a la gestión de Nucleus');
+>>>>>>> skinnable-master
 
 
 // END introduced after v1.1 END
@@ -736,6 +1105,7 @@ define('_BACKTOMANAGE',                            'Torna all\'amministrazione di Nucleus');
 
 
 // global stuff
+<<<<<<< HEAD
 define('_LOGOUT',                                      'Disconnettiti');
 define('_LOGIN',                                       'Connettiti');
 define('_YES',                                         'Si');
@@ -753,10 +1123,30 @@ define('_BADACTION',                             'E\' stato richiesto di eseguire un\'azione non esistent
 define('_MESSAGE',                                     'Messaggio');
 define('_HELP_TT',                                     'Aiuto!');
 define('_YOURSITE',                                    'Il tuo sito');
+=======
+define('_LOGOUT',                                      'Salir');
+define('_LOGIN',                                       'Entrar');
+define('_YES',                                         'Sí');
+define('_NO',                                          'No');
+define('_SUBMIT',                                      'Enviar');
+define('_ERROR',                                       'Error');
+define('_ERRORMSG',                                    'Ha sucedido un error!');
+define('_BACK',                                                'Volver');
+define('_NOTLOGGEDIN',                         'No registrado');
+define('_LOGGEDINAS',                          'Registrado como');
+define('_ADMINHOME',                           'Administración');
+define('_NAME',                                                'Nombre');
+define('_BACKHOME',                                    'Volver a la administración');
+define('_BADACTION',                           'No existe la acción requerida');
+define('_MESSAGE',                                     'Mensaje');
+define('_HELP_TT',                                     'Ayuda!');
+define('_YOURSITE',                                    'Ver web');
+>>>>>>> skinnable-master
 
 
 define('_POPUP_CLOSE',                         'Chiudi la finestra');
 
+<<<<<<< HEAD
 define('_LOGIN_PLEASE',                                'Connettiti per poter utilizzare quest\'opzione');
 
 // commentform
@@ -766,6 +1156,16 @@ define('_COMMENTFORM_COMMENT',            'Il tuo commento');
 define('_COMMENTFORM_NAME',                    'Nome');
 define('_COMMENTFORM_MAIL',                    'E-mail/HTTP');
 define('_COMMENTFORM_REMEMBER',                'Ricordami');
+=======
+define('_LOGIN_PLEASE',                                'Es necesario regístrarse primero');
+
+// commentform
+define('_COMMENTFORM_YOUARE',          'Eres');
+define('_COMMENTFORM_SUBMIT',          'Introducir comentario');
+define('_COMMENTFORM_COMMENT',         'Comentario');
+define('_COMMENTFORM_NAME',                    'Nombre');
+define('_COMMENTFORM_REMEMBER',                'Recordar usuario');
+>>>>>>> skinnable-master
 
 // loginform
 define('_LOGINFORM_NAME',                      'Nome utente');
@@ -780,6 +1180,7 @@ define('_MEMBERMAIL_SUBMIT',               'Invia messaggio');
 define('_SEARCHFORM_SUBMIT',           'Cerca');
 
 // add item form
+<<<<<<< HEAD
 define('_ADD_ADDTO',                           'Aggiungi un nuovo articolo in');
 define('_ADD_CREATENEW',                       'Crea un nuovo articolo');
 define('_ADD_BODY',                                    'Corpo');
@@ -909,6 +1310,136 @@ define('_ERROR_DELETELASTCATEGORY',      'Ci deve essere almeno una categoria');
 define('_ERROR_DELETEDEFCATEGORY',     'Non puoi cancellare la categoria di default');
 define('_ERROR_BADCATEGORYNAME',       'Nome della categoria non valido');
 define('_ERROR_DUPCATEGORYNAME',       'Una categoria con questo nome &egrave; gi&agrave; presente');
+=======
+define('_ADD_ADDTO',                           'Introducir nueva entrada a');
+define('_ADD_CREATENEW',                       'Crear nueva entrada');
+define('_ADD_BODY',                                    'Cuerpo');
+define('_ADD_TITLE',                           'Título');
+define('_ADD_MORE',                                    'Extensión (opcional)');
+define('_ADD_CATEGORY',                                'Categoría');
+define('_ADD_PREVIEW',                         'Previsualizar');
+define('_ADD_DISABLE_COMMENTS',                'Deshabilitar comentarios?');
+define('_ADD_DRAFTNFUTURE',                    'Borrador y futuras entradas');
+define('_ADD_ADDITEM',                         'Introducir entrada');
+define('_ADD_ADDNOW',                          'Introducir ahora');
+define('_ADD_PLACE_ON',                                'Colocar en');
+define('_ADD_ADDDRAFT',                                'Introducir en el borrador');
+define('_ADD_NOPASTDATES',                     '(las fechas y horas pasadas no son válidas, se usará el momento actual)');
+define('_ADD_BOLD_TT',                         'Negrita');
+define('_ADD_ITALIC_TT',                       'Itálica');
+define('_ADD_HREF_TT',                         'Crear enlace');
+define('_ADD_MEDIA_TT',                                'Introducir imagen o multimedia');
+define('_ADD_PREVIEW_TT',                      'Mostrar/ocultar previsualización');
+define('_ADD_CUT_TT',                          'Cortar');
+define('_ADD_COPY_TT',                         'Copiar');
+define('_ADD_PASTE_TT',                                'Pegar');
+
+
+// edit item form
+define('_EDIT_ITEM',                           'Editar entrada');
+define('_EDIT_SUBMIT',                         'Editar entrada');
+define('_EDIT_ORIG_AUTHOR',                    'Autor original');
+define('_EDIT_BACKTODRAFTS',           'Enviar al borrador');
+define('_EDIT_COMMENTSNOTE',           '(nota: deshabilitar los comentarios no ocultará los existentes)');
+
+// used on delete screens
+define('_DELETE_CONFIRM',                      'Confirmar la eliminación');
+define('_DELETE_CONFIRM_BTN',          'Confirmar la eliminación');
+define('_CONFIRMTXT_ITEM',                     'A punto de eliminar la siguiente entrada:');
+define('_CONFIRMTXT_COMMENT',          'A punto de eliminar el siguiente comentario:');
+define('_CONFIRMTXT_TEAM1',                    'A punto de eliminar ');
+define('_CONFIRMTXT_TEAM2',                    ' del equipo para la bitácora ');
+define('_CONFIRMTXT_BLOG',                     'La bitácora a eliminar es: ');
+define('_WARNINGTXT_BLOGDEL',          'Cuidado! Eliminar una bitácora eliminará TODAS sus entradas y comentarios. Confirmar definitivamente la eliminación!<br />No interrumpir el sistema durante la eliminación.');
+define('_CONFIRMTXT_MEMBER',           'A punto de eliminar al siguiente miembro: ');
+define('_CONFIRMTXT_TEMPLATE',         'A punto de eliminar la plantilla llamada ');
+define('_CONFIRMTXT_SKIN',                     'A punto de eliminar la piel llamada ');
+define('_CONFIRMTXT_BAN',                      'A punto de eliminar la restricción para el rango IP');
+define('_CONFIRMTXT_CATEGORY',         'A punto de eliminar la categoría ');
+
+// some status messages
+define('_DELETED_ITEM',                                'Entrada eliminada');
+define('_DELETED_MEMBER',                      'Miembro eliminado');
+define('_DELETED_COMMENT',                     'Comentario eliminado');
+define('_DELETED_BLOG',                                'Bitácora eliminada');
+define('_DELETED_CATEGORY',                    'Categoría eliminada');
+define('_ITEM_MOVED',                          'Entrada movida');
+define('_ITEM_ADDED',                          'Entrada introducida');
+define('_COMMENT_UPDATED',                     'Comentario actualizado');
+define('_SKIN_UPDATED',                                'Datos de la piel actualizados');
+define('_TEMPLATE_UPDATED',                    'Datos de la plantilla guardados');
+
+// errors
+define('_ERROR_COMMENT_LONGWORD',      'No usar palabras de longitud mayor a 90 carácteres en los comentarios');
+define('_ERROR_COMMENT_NOCOMMENT',     'Introducir el comentario');
+define('_ERROR_COMMENT_NOUSERNAME',    'Usuario incorrecto');
+define('_ERROR_COMMENT_TOOLONG',       'Comentario  demasiado largo (máximo : 5000 carácteres)');
+define('_ERROR_COMMENTS_DISABLED',     'Comentarios deshabilitados para esta bitácora.');
+define('_ERROR_COMMENTS_NONPUBLIC',    'Registrarse primero como miembro para introducir comentarios a esta bitácora');
+define('_ERROR_COMMENTS_MEMBERNICK','El nombre indicado para introducir comentarios está siendo usado por otro miembro. Probar con otro distinto.');
+define('_ERROR_SKIN',                          'Error de piel');
+define('_ERROR_ITEMCLOSED',                    'Esta entrada ha sido cerrada, no es posible introducir nuevos comentarios o votar');
+define('_ERROR_NOSUCHITEM',                    'La entrada indicada no existe');
+define('_ERROR_NOSUCHBLOG',                    'La bitácora indicada no existe');
+define('_ERROR_NOSUCHSKIN',                    'La piel indicada no existe');
+define('_ERROR_NOSUCHMEMBER',          'El miembro indicado no existe');
+define('_ERROR_NOTONTEAM',                     'El usuario no pertenece al equipo de esta bitácora.');
+define('_ERROR_BADDESTBLOG',           'La bitácora de destino no existe');
+define('_ERROR_NOTONDESTTEAM',         'No es posible mover la entrada, ya que el usuario no pertenece al equipo de la bitácora de destino');
+define('_ERROR_NOEMPTYITEMS',          'No es posible introducir entradas vacias!');
+define('_ERROR_BADMAILADDRESS',                'Dirección de correo incorrecta');
+define('_ERROR_BADNOTIFY',                     'Una o más de las direcciones de notificación no son direcciones correctas');
+define('_ERROR_BADNAME',                       'El nombre no es válido (sólo a-z y 0-9 permitidos, sin espacios al principio ni al final)');
+define('_ERROR_NICKNAMEINUSE',         'Otro miembro está usando ya ese nombre');
+define('_ERROR_PASSWORDMISMATCH',      'Las claves deben coincidir');
+define('_ERROR_PASSWORDTOOSHORT',      'La clave debe tener al menos 6 carácteres');
+define('_ERROR_PASSWORDMISSING',       'La clave no puede estar vacia');
+define('_ERROR_REALNAMEMISSING',       'El nombre real introducido no es válido');
+define('_ERROR_ATLEASTONEADMIN',       'Debe existir siempre al menos un superadministrador que pueda registrarse en la zona de administración.');
+define('_ERROR_ATLEASTONEBLOGADMIN','Ejecutar esta acción dejaría la bitácora inmantenible. Debe existir siempre al menos un administrador.');
+define('_ERROR_ALREADYONTEAM',         'No es posible introducir un miembro que ya pertenezca al equipo');
+define('_ERROR_BADSHORTBLOGNAME',      'El nombre corto de la bitácora sólo debe contener a-z y 0-9, y sin espacios');
+define('_ERROR_DUPSHORTBLOGNAME',      'Otra bitácora ya tiene ese nombre corto. Los nombres cortos deben ser únicos');
+define('_ERROR_UPDATEFILE',                    'Sin permiso de escritura para actualizar el archivo. Los permisos deben ser correctos (probar chmod 666). La localización debe ser relativa al directorio de administración, por lo que quizás convendría usar un camino absoluto (como /camino/hasta/nucleus/)');
+define('_ERROR_DELDEFBLOG',                    'No es posible eliminar la bitácora principal');
+define('_ERROR_DELETEMEMBER',          'Este miembro no puede ser eliminado, probablemente porque es el autor de entradas o comentarios');
+define('_ERROR_BADTEMPLATENAME',       'Nombre incorrecto para la plantilla, usar sólo a-z y 0-9, y sin espacios');
+define('_ERROR_DUPTEMPLATENAME',       'Ya existe otra plantilla con ese nombre');
+define('_ERROR_BADSKINNAME',           'Nombre incorrecto para la piel (sólo a-z, 0-9 están permitidos, y sin espacios)');
+define('_ERROR_DUPSKINNAME',           'Ya existe otra piel con ese nombre');
+define('_ERROR_DEFAULTSKIN',           'Siempre debe existir una piel llamada "default"');
+define('_ERROR_SKINDEFDELETE',         'No es posible eliminar la piel ya que es la piel predeterminada para la siguiente bitácora: ');
+define('_ERROR_DISALLOWED',                    'Sin suficiente permiso para ejecutar esa acción');
+define('_ERROR_DELETEBAN',                     'Error al eliminar la restricción (la restricción no existe)');
+define('_ERROR_ADDBAN',                                'Error al introducir restricción. La restricción podría no haberse introducido correctamente en las bitácoras.');
+define('_ERROR_BADACTION',                     'La acción indicada no existe');
+define('_ERROR_MEMBERMAILDISABLED',    'Los mensajes de miembro a miembro están deshabilitados');
+define('_ERROR_MEMBERCREATEDISABLED','La creación de cuentas para miembros está deshabilitada');
+define('_ERROR_INCORRECTEMAIL',                'Dirección de correo incorrecta');
+define('_ERROR_VOTEDBEFORE',           'El voto del usuario para esta entrada ya existe');
+define('_ERROR_BANNED1',                       'No es posible ejecutar la acción ya que el (rango IP ');
+define('_ERROR_BANNED2',                       ') está restringido. El mensaje era: \'');
+define('_ERROR_BANNED3',                       '\'');
+define('_ERROR_LOGINNEEDED',           'El usuario debe estar registrado para hacer eso');
+define('_ERROR_CONNECT',                       'Error de conexión');
+define('_ERROR_FILE_TOO_BIG',          'El archivo es demasiado grande!');
+define('_ERROR_BADFILETYPE',           'Tipo de archivo no permitido');
+define('_ERROR_BADREQUEST',                    'Error en el envío del archivo');
+define('_ERROR_DISALLOWEDUPLOAD',      'El usuario no pertenece al equipo de ninguna bitácora. No es posible enviar archivos');
+define('_ERROR_BADPERMISSIONS',                'Los permisos no son correctos');
+define('_ERROR_UPLOADMOVEP',           'Error al mover el archivo enviado');
+define('_ERROR_UPLOADCOPY',                    'Error al copiar el archivo enviado');
+define('_ERROR_UPLOADDUPLICATE',       'Ya existe otro archivo con ese nombre. Intentar renombrarlo antes de enviarlo.');
+define('_ERROR_LOGINDISALLOWED',       'Sin permiso para entrar en la administración. Es posible registrarse como otro usuario');
+define('_ERROR_DBCONNECT',                     'No es posible conectar con MySQL server');
+define('_ERROR_DBSELECT',                      'No es posible seleccionar la base de datos de Nucleus.');
+define('_ERROR_NOSUCHLOCALE',          'No existe el archivo para el idioma');
+define('_ERROR_NOSUCHCATEGORY',                'No existe la categoría');
+define('_ERROR_DELETELASTCATEGORY',    'Debe haber al menos una categoría');
+define('_ERROR_DELETEDEFCATEGORY',     'No es posible eliminar la categoría principal');
+define('_ERROR_BADCATEGORYNAME',       'Nombre de categoría incorrecto');
+define('_ERROR_DUPCATEGORYNAME',       'Ya existe otra categoría con ese nombre');
+>>>>>>> skinnable-master
 
 // some warnings (used for mediadir setting)
 define('_WARNING_NOTADIR',                     'Attenzione: il valore inserito non &egrave; una directory!');
@@ -916,6 +1447,7 @@ define('_WARNING_NOTREADABLE',             'Attenzione: il valore inserito &egrave; una dir
 define('_WARNING_NOTWRITABLE',         'Attenzione: il valore inserito NON &egrave; una directory scrivibile dal webserver!');
 
 // media and upload
+<<<<<<< HEAD
 define('_MEDIA_UPLOADLINK',                    'Carica un nuovo file');
 define('_MEDIA_MODIFIED',                      'modificato');
 define('_MEDIA_FILENAME',                      'nome file');
@@ -1137,10 +1669,232 @@ define('_BAN_ADD_BTN',                         'Aggiungi ban');
 define('_LOGIN_MESSAGE',                       'Messaggio');
 define('_LOGIN_NAME',                          'Nome');
 define('_LOGIN_PASSWORD',                      'Password');
+=======
+define('_MEDIA_UPLOADLINK',                    'Enviar un nuevo archivo');
+define('_MEDIA_MODIFIED',                      'modificado');
+define('_MEDIA_FILENAME',                      'nombre de archivo');
+define('_MEDIA_DIMENSIONS',                    'dimensiones');
+define('_MEDIA_INLINE',                                'Conectado');
+define('_MEDIA_POPUP',                         'Ventana popup');
+define('_UPLOAD_TITLE',                                'Seleccionar archivo');
+define('_UPLOAD_MSG',                          'Seleccionar el archivo a enviar, y pulsar el botón \'Enviar\'.');
+define('_UPLOAD_BUTTON',                       'Enviar');
+
+// some status messages
+define('_MSG_ACCOUNTCREATED',          'Cuenta creada, la clave será enviada por correo');
+define('_MSG_PASSWORDSENT',                    'La clave ha sido enviada por correo.');
+define('_MSG_LOGINAGAIN',                      'Es necesario registrarse de nuevo ya que los datos del usuario han sido modificados');
+define('_MSG_SETTINGSCHANGED',         'Preferencias modificadas');
+define('_MSG_ADMINCHANGED',                    'Administrador modificado');
+define('_MSG_NEWBLOG',                         'Nueva bitácora creada');
+define('_MSG_ACTIONLOGCLEARED',                'Registro de actividades vaciado');
+
+// actionlog in admin area
+define('_ACTIONLOG_DISALLOWED',                'Acción no permitida: ');
+define('_ACTIONLOG_PWDREMINDERSENT','Nueva clave enviada a ');
+define('_ACTIONLOG_TITLE',                     'Registro de actividades');
+define('_ACTIONLOG_CLEAR_TITLE',       'Limpiar el registro de actividades');
+define('_ACTIONLOG_CLEAR_TEXT',                'Limpiar el registro de actividades ahora');
+
+// team management
+define('_TEAM_TITLE',                          'Modificar el equipo de la bitácora ');
+define('_TEAM_CURRENT',                                'Equipo actual');
+define('_TEAM_ADDNEW',                         'Introducir un nuevo miembro en el equipo');
+define('_TEAM_CHOOSEMEMBER',           'Seleccionar miembro');
+define('_TEAM_ADMIN',                          'Privilegios de administración? ');
+define('_TEAM_ADD',                                    'Introducir en el equipo');
+define('_TEAM_ADD_BTN',                                'Introducir en el equipo');
+
+// blogsettings
+define('_EBLOG_TITLE',                         'Modificar las preferencias de la bitácora');
+define('_EBLOG_TEAM_TITLE',                    'Modificar el equipo');
+define('_EBLOG_TEAM_TEXT',                     'Pulsa aquí para modificar el equipo.');
+define('_EBLOG_SETTINGS_TITLE',                'Preferencias de la bitácora');
+define('_EBLOG_NAME',                          'Nombre de la bitácora');
+define('_EBLOG_SHORTNAME',                     'Nombre corto de la bitácora');
+define('_EBLOG_SHORTNAME_EXTRA',       '<br />(debe contener sólo letras y sin espacios)');
+define('_EBLOG_DESC',                          'Descripción de la bitácora');
+define('_EBLOG_URL',                           'URL');
+define('_EBLOG_DEFSKIN',                       'Piel por defecto');
+define('_EBLOG_DEFCAT',                                'Categoría por defecto');
+define('_EBLOG_LINEBREAKS',                    'Convertir saltos de línea');
+define('_EBLOG_DISABLECOMMENTS',       'Habilitar comentarios?<br /><small>(Deshabilitar los comentarios implica no poder introducir nuevos.)</small>');
+define('_EBLOG_ANONYMOUS',                     'Se permite la introducción de comentarios por no miembros?');
+define('_EBLOG_NOTIFY',                                'Dirección(es) de notificación (usa ; como separador)');
+define('_EBLOG_NOTIFY_ON',                     'Notificar');
+define('_EBLOG_NOTIFY_COMMENT',                'Nuevos comentarios');
+define('_EBLOG_NOTIFY_KARMA',          'Nuevos votos');
+define('_EBLOG_NOTIFY_ITEM',           'Nuevas entradas');
+define('_EBLOG_PING',                          'Ping Weblogs.com al actualizar?');
+define('_EBLOG_MAXCOMMENTS',           'Máxima cantidad de comentarios');
+define('_EBLOG_UPDATE',                                'Actualizar archivo');
+define('_EBLOG_OFFSET',                                'Zona horaria');
+define('_EBLOG_STIME',                         'La hora actual del servidor es');
+define('_EBLOG_BTIME',                         'La hora actual de la bitácora es');
+define('_EBLOG_CHANGE',                                'Modificar las preferencias');
+define('_EBLOG_CHANGE_BTN',                    'Modificar preferencias');
+define('_EBLOG_ADMIN',                         'Administración de la bitácora');
+define('_EBLOG_ADMIN_MSG',                     'Se asignarán privilegios de administrador al usuario');
+define('_EBLOG_CREATE_TITLE',          'Crear nueva bitácora');
+define('_EBLOG_CREATE_TEXT',           'Rellenar el siguiente formulario para crear una nueva bitácora. <br /><br /> <b>Nota:</b> Sólo las opciones necesarios están listadas. Para opciones extra, entrar en la página de preferencias de la bitácora después de crearla.');
+define('_EBLOG_CREATE',                                'Crear!');
+define('_EBLOG_CREATE_BTN',                    'Crear bitácora');
+define('_EBLOG_CAT_TITLE',                     'Categorías');
+define('_EBLOG_CAT_NAME',                      'Nombre de la categoría');
+define('_EBLOG_CAT_DESC',                      'Descripción de la categoría');
+define('_EBLOG_CAT_CREATE',                    'Crear nueva categoría');
+define('_EBLOG_CAT_UPDATE',                    'Actualizar categoría');
+define('_EBLOG_CAT_UPDATE_BTN',                'Actualizar categoría');
+
+// templates
+define('_TEMPLATE_TITLE',                      'Modificar plantillas');
+define('_TEMPLATE_AVAILABLE_TITLE',    'Plantillas disponibles');
+define('_TEMPLATE_NEW_TITLE',          'Nueva plantilla');
+define('_TEMPLATE_NAME',                       'Nombre de plantilla');
+define('_TEMPLATE_DESC',                       'Descripción de la plantilla');
+define('_TEMPLATE_CREATE',                     'Crear plantilla');
+define('_TEMPLATE_CREATE_BTN',         'Crear plantilla');
+define('_TEMPLATE_EDIT_TITLE',         'Editar plantilla');
+define('_TEMPLATE_BACK',                       'Volver a la página de la plantilla');
+define('_TEMPLATE_EDIT_MSG',           'No todas las partes de la plantilla son necesarias, es posible dejar en blanco las innecesarias.');
+define('_TEMPLATE_SETTINGS',           'Preferencias de las plantillas');
+define('_TEMPLATE_ITEMS',                      'Entradas');
+define('_TEMPLATE_ITEMHEADER',         'Cabecera de entrada');
+define('_TEMPLATE_ITEMBODY',           'Cuerpo de la entrada');
+define('_TEMPLATE_ITEMFOOTER',         'Pie de la entrada');
+define('_TEMPLATE_MORELINK',           'Enlazar a extensión de la entrada');
+define('_TEMPLATE_NEW',                                'Indicación de nueva entrada');
+define('_TEMPLATE_COMMENTS_ANY',       'Comentarios (si los hay)');
+define('_TEMPLATE_CHEADER',                    'Cabecera de los comentarios');
+define('_TEMPLATE_CBODY',                      'Cuerpo de los comentarios');
+define('_TEMPLATE_CFOOTER',                    'Pie de los comentarios');
+define('_TEMPLATE_CONE',                       'Un comentario');
+define('_TEMPLATE_CMANY',                      'Dos (o más) comentarios');
+define('_TEMPLATE_CMORE',                      'Comentarios Leer más');
+define('_TEMPLATE_CMEXTRA',                    'Miembro Extra');
+define('_TEMPLATE_COMMENTS_NONE',      'Comentarios (si no hay)');
+define('_TEMPLATE_CNONE',                      'Sin comentarios');
+define('_TEMPLATE_COMMENTS_TOOMUCH','Comentarios (si los hay, pero son demasiados para mostrar directamente)');
+define('_TEMPLATE_CTOOMUCH',           'Demasiados comentarios');
+define('_TEMPLATE_ARCHIVELIST',                'Listas de archivos');
+define('_TEMPLATE_AHEADER',                    'Cabecera de la lista de archivos');
+define('_TEMPLATE_AITEM',                      'Elemento de la lista de archivos');
+define('_TEMPLATE_AFOOTER',                    'Pie de la lista de archivos');
+define('_TEMPLATE_DATETIME',           'Fecha y hora');
+define('_TEMPLATE_DHEADER',                    'Cabecera de la fecha');
+define('_TEMPLATE_DFOOTER',                    'Pie de la fecha');
+define('_TEMPLATE_DFORMAT',                    'Formato de la fecha');
+define('_TEMPLATE_TFORMAT',                    'Formato de hora');
+define('_TEMPLATE_LOCALE',                     'Local');
+define('_TEMPLATE_IMAGE',                      'Ventanas de imagen');
+define('_TEMPLATE_PCODE',                      'Código de enlace popup');
+define('_TEMPLATE_ICODE',                      'Código de imagen insertada');
+define('_TEMPLATE_MCODE',                      'Código de enlace a imagen o multimedia');
+define('_TEMPLATE_SEARCH',                     'Buscar');
+define('_TEMPLATE_SHIGHLIGHT',         'Resaltar');
+define('_TEMPLATE_SNOTFOUND',          'Nada encontrado en la búsqueda');
+define('_TEMPLATE_UPDATE',                     'Actualizar');
+define('_TEMPLATE_UPDATE_BTN',         'Actualizar plantilla');
+define('_TEMPLATE_RESET_BTN',          'Inicializar datos');
+define('_TEMPLATE_CATEGORYLIST',       'Lista de categorías');
+define('_TEMPLATE_CATHEADER',          'Cabecera de lista de categorías');
+define('_TEMPLATE_CATITEM',                    'Elemento de lista de categorías');
+define('_TEMPLATE_CATFOOTER',          'Pie de lista de categorías');
+
+// skins
+define('_SKIN_EDIT_TITLE',                     'Modificar pieles');
+define('_SKIN_AVAILABLE_TITLE',                'Pieles disponibles');
+define('_SKIN_NEW_TITLE',                      'Nueva piel');
+define('_SKIN_NAME',                           'Nombre');
+define('_SKIN_DESC',                           'Descripción');
+define('_SKIN_TYPE',                           'Tipo de contenido');
+define('_SKIN_CREATE',                         'Crear');
+define('_SKIN_CREATE_BTN',                     'Crear piel');
+define('_SKIN_EDITONE_TITLE',          'Modificar piel');
+define('_SKIN_BACK',                           'Volver a la página de la piel');
+define('_SKIN_PARTS_TITLE',                    'Partes de la piel');
+define('_SKIN_PARTS_MSG',                      'No todos los tipos son necesarios para cada piel. Dejar en blanco los innecesarios. Selecciona el tipo de piel a modificar:');
+define('_SKIN_PART_MAIN',                      'Índice principal');
+define('_SKIN_PART_ITEM',                      'Páginas del elemento');
+define('_SKIN_PART_ALIST',                     'Lista de archivo');
+define('_SKIN_PART_ARCHIVE',           'Archivo');
+define('_SKIN_PART_SEARCH',                    'Buscar');
+define('_SKIN_PART_ERROR',                     'Errores');
+define('_SKIN_PART_MEMBER',                    'Detalles del miembro');
+define('_SKIN_PART_POPUP',                     'Imágenes de popup');
+define('_SKIN_GENSETTINGS_TITLE',      'Preferencias generales');
+define('_SKIN_CHANGE',                         'Modificar');
+define('_SKIN_CHANGE_BTN',                     'Modificar estas preferencias');
+define('_SKIN_UPDATE_BTN',                     'Actualizar piel');
+define('_SKIN_RESET_BTN',                      'Inicializar datos');
+define('_SKIN_EDITPART_TITLE',         'Modificar piel');
+define('_SKIN_GOBACK',                         'Volver');
+define('_SKIN_ALLOWEDVARS',                    'Variables permitidas (hacer clic para mayor información):');
+
+// global settings
+define('_SETTINGS_TITLE',                      'Preferencias generales');
+define('_SETTINGS_SUB_GENERAL',                'Preferencias generales');
+define('_SETTINGS_DEFBLOG',                    'Bitácora principal');
+define('_SETTINGS_ADMINMAIL',          'Administrador de correo');
+define('_SETTINGS_SITENAME',           'Nombre de la web');
+define('_SETTINGS_SITEURL',                    'URL de la web ( debe terminar con una barra / )');
+define('_SETTINGS_ADMINURL',           'URL de la administración ( debe terminar con una barra / )');
+define('_SETTINGS_DIRS',                       'Directorios de Nucleus');
+define('_SETTINGS_MEDIADIR',           'Directorios de imagenes y multimedia');
+define('_SETTINGS_SEECONFIGPHP',       '(ver config.php)');
+define('_SETTINGS_MEDIAURL',           'URL para imágenes o multimedia ( debe terminar con una barra / )');
+define('_SETTINGS_ALLOWUPLOAD',                'Permitir el envío de archivos?');
+define('_SETTINGS_ALLOWUPLOADTYPES','Tipos de archivo permitidos para envío');
+define('_SETTINGS_CHANGELOGIN',                'Permitir a los miembros modificar sus datos de registro / clave');
+define('_SETTINGS_COOKIES_TITLE',      'Preferencias de cookies');
+define('_SETTINGS_COOKIELIFE',         'Tiempo de vida de la cookie de registro');
+define('_SETTINGS_COOKIESESSION',      'Cookies de sesión');
+define('_SETTINGS_COOKIEMONTH',                'Tiempo de vida de un mes');
+define('_SETTINGS_COOKIEPATH',         'Camino de las cookies (avanzado)');
+define('_SETTINGS_COOKIEDOMAIN',       'Dominio de las cookies (avanzado)');
+define('_SETTINGS_COOKIESECURE',       'Cookies seguras (avanzado)');
+define('_SETTINGS_LASTVISIT',          'Guardar las cookies de la última visita');
+define('_SETTINGS_ALLOWCREATE',                'Permitir a los visitantes crear una cuenta de miembro');
+define('_SETTINGS_NEWLOGIN',           'Registro permitido para las cuentas creadas por el usuario');
+define('_SETTINGS_NEWLOGIN2',          '(sólo para cuentas nuevas)');
+define('_SETTINGS_MEMBERMSGS',         'Permite un servicio de miembro a miembro');
+define('_SETTINGS_LOCALE',             'Idioma por defecto');
+define('_SETTINGS_DISABLESITE',                'Deshabilitar web');
+define('_SETTINGS_DBLOGIN',                    'MySQL Registro y base de datos');
+define('_SETTINGS_UPDATE',                     'Actualizar preferencias');
+define('_SETTINGS_UPDATE_BTN',         'Actualizar preferencias');
+define('_SETTINGS_DISABLEJS',          'Deshabilitar la barra de herramientas de JavaScript');
+define('_SETTINGS_MEDIA',                      'Preferencias de envío / imágenes / multimedia');
+define('_SETTINGS_MEDIAPREFIX',                'Prefijar los archivos enviados con la fecha');
+define('_SETTINGS_MEMBERS',                    'Preferencias de los miembros');
+
+// bans
+define('_BAN_TITLE',                           'Lista de restricciones para');
+define('_BAN_NONE',                                    'No hay restricciones para esta bitácora');
+define('_BAN_NEW_TITLE',                       'Introducir nueva restricción');
+define('_BAN_NEW_TEXT',                                'Introducir una nueva restricción ahora');
+define('_BAN_REMOVE_TITLE',                    'Eliminar restricción');
+define('_BAN_IPRANGE',                         'Rango IP');
+define('_BAN_BLOGS',                           'Qué bitácoras?');
+define('_BAN_DELETE_TITLE',                    'Eliminar restricción');
+define('_BAN_ALLBLOGS',                                'Bitácoras para las que el usuario tiene privilegios de administrador.');
+define('_BAN_REMOVED_TITLE',           'Restricción eliminada');
+define('_BAN_REMOVED_TEXT',                    'Restricción eliminada para las siguientes bitácoras:');
+define('_BAN_ADD_TITLE',                       'Introducir restricción');
+define('_BAN_IPRANGE_TEXT',                    'Seleccionar el rango IP a restringir. A menor cantidad de números, más direcciones restringidas.');
+define('_BAN_BLOGS_TEXT',                      'Es posible optar por restringir la IP para una sóla bitácora, o restringir la IP en todas las bitácoras en las que el usuario tenga privilegios de administrador.');
+define('_BAN_REASON_TITLE',                    'Razón');
+define('_BAN_REASON_TEXT',                     'Es posible incluir una razón para la restricción, que será mostrada cuando el usuario con esa IP intente añadir un comentario o votar. La longitud máxima es de 256 carácteres.');
+define('_BAN_ADD_BTN',                         'Introducir restricción');
+
+// LOGIN screen
+define('_LOGIN_MESSAGE',                       'Mensaje');
+>>>>>>> skinnable-master
 define('_LOGIN_SHARED',                                _LOGINFORM_SHARED);
 define('_LOGIN_FORGOT',                                'Hai dimenticato la password?');
 
 // membermanagement
+<<<<<<< HEAD
 define('_MEMBERS_TITLE',                       'Gestione utenti');
 define('_MEMBERS_CURRENT',                     'Utenti registrati');
 define('_MEMBERS_NEW',                         'Nuovo utente');
@@ -1223,6 +1977,90 @@ define('_LISTS_NAME',                            'Nome');
 define('_LISTS_DESC',                          'Descrizione');
 define('_LISTS_TIME',                          'Ora');
 define('_LISTS_COMMENTS',                      'Commenti');
+=======
+define('_MEMBERS_TITLE',                       'Gestión de los miembros');
+define('_MEMBERS_CURRENT',                     'Miembros actuales');
+define('_MEMBERS_NEW',                         'Nuevo miembro');
+define('_MEMBERS_DISPLAY',                     'Nombre mostrado');
+define('_MEMBERS_DISPLAY_INFO',                '(Este es el nombre usado para registrarse)');
+define('_MEMBERS_REALNAME',                    'Nombre real');
+define('_MEMBERS_PWD',                         'Clave');
+define('_MEMBERS_REPPWD',                      'Repetir la clave');
+define('_MEMBERS_EMAIL',                       'Dirección de correo');
+define('_MEMBERS_EMAIL_EDIT',          '(Cuando se cambie la dirección de correo, una nueva clave será enviada automáticamente a esa dirección)');
+define('_MEMBERS_URL',                         'Dirección de la web (URL)');
+define('_MEMBERS_SUPERADMIN',          'Privilegios de administrador');
+define('_MEMBERS_CANLOGIN',                    'El usuario puede entrar en la administración');
+define('_MEMBERS_NOTES',                       'Notas');
+define('_MEMBERS_NEW_BTN',                     'Introducir miembro');
+define('_MEMBERS_EDIT',                                'Modificar miembro');
+define('_MEMBERS_EDIT_BTN',                    'Modificar las preferencias');
+define('_MEMBERS_BACKTOOVERVIEW',      'Volver a la página del miembro');
+define('_MEMBERS_LOCALE',                      'Idioma');
+define('_MEMBERS_USESITELANG',         '- usar las preferencias de la web -');
+
+// List of blogs (TT = tooltip)
+define('_BLOGLIST_TT_VISIT',           'Visitar web');
+define('_BLOGLIST_ADD',                                'Introducir entrada');
+define('_BLOGLIST_TT_ADD',                     'Introducir una nueva entrada en esta bitácora');
+define('_BLOGLIST_EDIT',                       'Modificar/Eliminar entradas');
+define('_BLOGLIST_TT_EDIT',                    '');
+define('_BLOGLIST_BMLET',                      'Bookmarklet');
+define('_BLOGLIST_TT_BMLET',           '');
+define('_BLOGLIST_SETTINGS',           'Preferencias');
+define('_BLOGLIST_TT_SETTINGS',                'Modificar preferencias o gestionar equipo');
+define('_BLOGLIST_BANS',                       'Restricciones');
+define('_BLOGLIST_TT_BANS',                    'Ver, introducir o eliminar IPs restringidas');
+define('_BLOGLIST_DELETE',                     'Eliminar todo');
+define('_BLOGLIST_TT_DELETE',          'Eliminar esta bitácora');
+
+// OVERVIEW screen
+define('_OVERVIEW_YRBLOGS',                    'Tus bitácoras');
+define('_OVERVIEW_YRDRAFTS',           'Tus borradores');
+define('_OVERVIEW_YRSETTINGS',         'Preferencias personales');
+define('_OVERVIEW_GSETTINGS',          'Preferencias generales');
+define('_OVERVIEW_NOBLOGS',                    'El usuario no está en ningún equipo de bitácora');
+define('_OVERVIEW_NODRAFTS',           'No hay borradores');
+define('_OVERVIEW_EDITSETTINGS',       'Modificar preferencias personales...');
+define('_OVERVIEW_BROWSEITEMS',                'Examinar entradas...');
+define('_OVERVIEW_BROWSECOMM',         'Examinar comentarios...');
+define('_OVERVIEW_VIEWLOG',                    'Ver el registro de actividades...');
+define('_OVERVIEW_MEMBERS',                    'Gestionar los miembros...');
+define('_OVERVIEW_NEWLOG',                     'Crear nueva bitácora...');
+define('_OVERVIEW_SETTINGS',           'Modificar preferencias...');
+define('_OVERVIEW_TEMPLATES',          'Modificar plantillas...');
+define('_OVERVIEW_SKINS',                      'Modificar pieles...');
+define('_OVERVIEW_BACKUP',                     'Copia de seguridad / Restauración...');
+
+// ITEMLIST
+define('_ITEMLIST_BLOG',                       'Entradas para la bitácora'); 
+define('_ITEMLIST_YOUR',                       'Entradas');
+
+// Comments
+define('_COMMENTS',                                    'Comentarios');
+define('_NOCOMMENTS',                          'Entrada sin comentarios');
+define('_COMMENTS_YOUR',                       'Comentarios');
+define('_NOCOMMENTS_YOUR',                     'No se ha escrito ningún comentario');
+
+// LISTS (general)
+define('_LISTS_NOMORE',                                'No hay resultados (adicionales)');
+define('_LISTS_PREV',                          'Anterior');
+define('_LISTS_NEXT',                          'Siguiente');
+define('_LISTS_SEARCH',                                'Buscar');
+define('_LISTS_CHANGE',                                'Modificar');
+define('_LISTS_PERPAGE',                       'Entradas por página');
+define('_LISTS_ACTIONS',                       'Acciones');
+define('_LISTS_DELETE',                                'Eliminar');
+define('_LISTS_EDIT',                          'Modificar');
+define('_LISTS_MOVE',                          'Mover');
+define('_LISTS_CLONE',                         'Clonar');
+define('_LISTS_TITLE',                         'Título');
+define('_LISTS_BLOG',                          'Bitácora');
+define('_LISTS_NAME',                          'Nombre');
+define('_LISTS_DESC',                          'Descripción');
+define('_LISTS_TIME',                          'Tiempo');
+define('_LISTS_COMMENTS',                      'Comentarios');
+>>>>>>> skinnable-master
 define('_LISTS_TYPE',                          'Tipo');
 
 
@@ -1234,13 +2072,19 @@ define('_LIST_MEMBER_LOGIN',            'Pu&ograve; connettersi? ');
 define('_LIST_MEMBER_URL',                     'Sito Web');
 
 // banlist
+<<<<<<< HEAD
 define('_LIST_BAN_IPRANGE',                    'Range IP');
 define('_LIST_BAN_REASON',                     'Motivo');
+=======
+define('_LIST_BAN_IPRANGE',                    'Rango IP');
+define('_LIST_BAN_REASON',                     'Razón');
+>>>>>>> skinnable-master
 
 // actionlist
 define('_LIST_ACTION_MSG',                     'Messaggio');
 
 // commentlist
+<<<<<<< HEAD
 define('_LIST_COMMENT_BANIP',          'Ban IP');
 define('_LIST_COMMENT_WHO',                    'Autore');
 define('_LIST_COMMENT',                                'Commento');
@@ -1249,6 +2093,16 @@ define('_LIST_COMMENT_HOST',             'Host');
 // itemlist
 define('_LIST_ITEM_INFO',                      'Informazioni');
 define('_LIST_ITEM_CONTENT',           'Titolo e testo');
+=======
+define('_LIST_COMMENT_BANIP',          'Restricción de IP');
+define('_LIST_COMMENT_WHO',                    'Autor');
+define('_LIST_COMMENT',                                'Comentario');
+define('_LIST_COMMENT_HOST',           'Host');
+
+// itemlist
+define('_LIST_ITEM_INFO',                      'Info');
+define('_LIST_ITEM_CONTENT',           'Título y texto');
+>>>>>>> skinnable-master
 
 
 // teamlist
@@ -1256,6 +2110,7 @@ define('_LIST_TEAM_ADMIN',                        'Amministratore ');
 define('_LIST_TEAM_CHADMIN',           'Modifica amministratore');
 
 // edit comments
+<<<<<<< HEAD
 define('_EDITC_TITLE',                         'Modifica commenti');
 define('_EDITC_WHO',                           'Autore');
 define('_EDITC_HOST',                          'Da dove?');
@@ -1268,3 +2123,33 @@ define('_EDITC_NONMEMBER',                       'utente non registrato');
 // move item
 define('_MOVE_TITLE',                          'Sposta in quale blog?');
 define('_MOVE_BTN',                                    'Sposta articolo');
+=======
+define('_EDITC_TITLE',                         'Modificar comentarios');
+define('_EDITC_WHO',                           'Autor');
+define('_EDITC_HOST',                          'Desde dónde?');
+define('_EDITC_WHEN',                          'Cuándo?');
+define('_EDITC_TEXT',                          'Texto');
+define('_EDITC_EDIT',                          'Modificar comentario');
+define('_EDITC_MEMBER',                                'miembro');
+define('_EDITC_NONMEMBER',                     'no miembro');
+
+// move item
+define('_MOVE_TITLE',                          'Mover a qué bitácora?');
+define('_MOVE_BTN',                                    'Mover entrada');
+
+// ADMIN-template template types
+include_once('adminskinTypes.php');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_NAVILIST',          'navibar for item/comment list');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is blog ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is super ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin URL');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'API entry');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'eventlist updates');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency to');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency by');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'couldn\'t load file');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin actions');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin admin link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin help link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin option setting link');
+>>>>>>> skinnable-master
index db057eb..14d7d30 100644 (file)
  * 
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2012 The Nucleus Group
+<<<<<<< HEAD
  * @version $Id: es_Latn_ES.UTF-8.php 1868 2012-05-22 05:10:53Z sakamocchi $
+=======
+ * @version $Id: es_Latn_ES.UTF-8.php 1887 2012-06-17 08:30:08Z sakamocchi $
+>>>>>>> skinnable-master
  */
 
 /********************************************
  *        Start New for 4.0                 *
  ********************************************/
-define('_SKINIE_INVALID_NAMES_DETECTED', 'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
-define('_LISTS_AUTHOR', 'Author');
-define('_OVERVIEW_OTHER_DRAFTS', 'Other Drafts');
+/* argument value for setlocale() in Microsoft's windows operating system */
+define('_LOCALE_IN_WINDOWS',   'esp_esp');
+
+/* labels for date and time measurement unit */
+define('_LABEL_YEAR_UNIT',             'year');
+define('_LABEL_MONTH_UNIT',            'month');
+define('_LABEL_DAY_UNIT',              'day');
+define('_LABEL_HOUR_UNIT',             'hour');
+define('_LABEL_MINUTE_UNIT',   'minute');
+
+// SkinableAdminArea vars
+define('_SKINABLEADMIN_DEL_UNINSTALL_DATA',                    'Delete ADMIN skin data table on uninstall?');
+define('_SKINABLEADMIN_DEFAULT_SKIN',                          'Choose a skin of the management area of the default.');
+define('_SKINABLEADMIN_MEMBER_DEFAULT_SKIN',           'Choose a skin of the management area of you use.');
+define('_SKINABLEADMIN_QMENU_LAYOUT',                          'Admin layout');
+define('_SKINABLEADMIN_PAGE_STR',                                      'page');
+define('_SKINABLEADMIN_BATCH_MOVE',                                    'Item move other category/Category move other blog');
+define('_SKINABLEADMIN_BATCH',                                         'batch');
+define('_SKINABLEADMIN_PAGEHEAD',                                      'Admin page head');
+define('_SKINABLEADMIN_PAGEFOOT',                                      'Admin page foot');
+define('_SKINABLEADMIN_TEMPLATEOVERVIEW',                      'Template overview');
+define('_SKINABLEADMIN_ADMINAREAHEADLINK',                     '[Your site]link');
+define('_SKINABLEADMIN_TPLSETTING_INGENERAL',          'In general');
+define('_SKINABLEADMIN_HEAD_STR',                                      ' head');
+define('_SKINABLEADMIN_BODY_STR',                                      ' body');
+define('_SKINABLEADMIN_FOOT_STR',                                      ' foot');
+define('_SKINABLEADMIN_TEXT_STR',                                      ' text');
+define('_SKINABLEADMIN_TITLE_STR',                                     ' title');
+define('_SKINABLEADMIN_ADMINSETTING_STR',                      ' set editmember is \'admin\'');
+define('_SKINABLEADMIN_NORMALSETTING_STR',                     ' normal');
+define('_SKINABLEADMIN_HELPICONURL_STR',                       ' icon URL');
+define('_SKINABLEADMIN_HELPFILEURL_STR',                       ' help file URL');
+define('_SKINABLEADMIN_ADMINSKINVAR_STR',                      ' skinvars');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_SELECT',      'selectbox used in ADMIN area');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE',       'Table for list indication');
+define('_SKINABLEADMIN_PLUGIN_QUICKMENU',                      'Link to admin page of the plugin shown to the quick-menu');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE',         'Template for option-type %s');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTMETA',         'Template for option-meta-data %s');
+define('_SKINABLEADMIN_MEMBERS_ADMINSKIN',                     "ADMIN-Area's skin");
+
+define('_LOCALE_BG_CYRL_BG',   'Bulgarian in Bulgaria');
+define('_LOCALE_CA_LATN_ES',   'Catalan in Spain');
+define('_LOCALE_CS_LATN_CZ',   'Czech in Czech Republic');
+define('_LOCALE_DE_LATN_DE',   'German in Germany');
+define('_LOCALE_EL_GREK_GR',   'Greek in Greece (Greek script)');
+define('_LOCALE_EN_LATN_US',   'English in United States');
+define('_LOCALE_ES_LATN_ES',   'Spanish in Spain');
+define('_LOCALE_FA_ARAB_IR',   'Persian in Islamic Republic of Iran');
+define('_LOCALE_FI_LATN_FI',   'Finnish in Finland');
+define('_LOCALE_FR_LATN_FR',   'French in France');
+define('_LOCALE_GL_LATN_ES',   'Galician in Spain');
+define('_LOCALE_HR_LATN_HR',   'Croatian in Croatia');
+define('_LOCALE_HU_LATN_HU',   'Hungarian in Hungary');
+define('_LOCALE_ID_LATN_ID',   'Indonesian in Indonesia (Latin script)');
+define('_LOCALE_IT_LATN_IT',   'Italian in Italy');
+define('_LOCALE_JA_JPAN_JP',   'Japanese in Japan');
+define('_LOCALE_KO_KORE_KR',   'Korean in Korea');
+define('_LOCALE_KU_ARAB_TR',   'Kurdish in Turkey (Arabic script)');
+define('_LOCALE_LV_LATN_LV',   'Latvian in Latvia');
+define('_LOCALE_NL_LATN_NL',   'Dutch in Netherlands');
+define('_LOCALE_PL_LATN_PL',   'Polish in Poland');
+define('_LOCALE_PT_LATN_BR',   'Portuguese in Brazil');
+define('_LOCALE_RO_LATN_RO',   'Romainan in Romania');
+define('_LOCALE_RU_CYRL_RU',   'Russian in Russia');
+define('_LOCALE_SK_LATN_SK',   'Slovak in Slovakia');
+define('_LOCALE_SR_CYRL_RS',   'Serbian in Serbia');
+define('_LOCALE_UR_ARAB_PK',   'Urdu in Pakistan');
+define('_LOCALE_VI_LATN_VN',   'Vietnamese in Vietnam (Latin script)');
+define('_LOCALE_ZH_HANS_CN',   'Chinese in China (simplified script)');
+define('_LOCALE_ZH_HANT_TW',   'Chinese in Taiwan (Traditional script)');
+
+define('_FORGOTPASSWORD_TITLE',                                'Forgot your password?');
+define('_FORGOTPASSWORD_MSG',                          'Enter your username and email address below, and you\'ll be sent an e-mail with a link where you can choose a new password.');
+define('_FORGOTPASSWORD_SUBMIT',                       'Send Activation Link" class="transparent');
+define('_FORGOTPASSWORD_CONTACT',                      'If you don\'t remember your exact username, contact the site administrator.');
+define('_SKINIE_INVALID_NAMES_DETECTED',       'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
+define('_LISTS_AUTHOR',                                                'Author');
+define('_OVERVIEW_OTHER_DRAFTS',                       'Other Drafts');
+define('_ERROR_BADADMINSKINNAME',                      'the name of skin for admin area must start with \'admin/\'.');
+define('_ERROR_BADADMINTEMPLATENAME',          'the name of template for admin area must start with \'admin/\'.');
+define('_SETTINGS_ADMINSKIN',                          'default skin for admin area');
+define('_SETTINGS_BKMKLTSKIN',                         'default skin for bookmarklet');
+define('_MEMBERS_BKMKLTSKIN',                          "bookmarklet skin");
+define('_ADMIN_SYSTEMOVERVIEW_VERSION_LATEST',         'The version which is being used is latest.');
+
 /********************************************
  *        Start New for 3.6x                *
  ********************************************/
@@ -83,15 +168,15 @@ define('_EDITC_EMAIL',                             'E-mail');
 
 define('_MANAGER_PLUGINFILE_NOTFOUND',                         "Plugin %s was not loaded (File not found)");
 /* changed */
-// plugin dependency 
-define('_ERROR_INSREQPLUGIN',          'Plugin installation failed, requires %s');
-define('_ERROR_DELREQPLUGIN',          'Plugin deletion failed, required by %s');
+// plugin dependency
+define('_ERROR_INSREQPLUGIN',          'Fracasó la instalación del plugin, requiere ');
+define('_ERROR_DELREQPLUGIN',          'Fracasó la eliminación del plugin, es requerido por ');
 
 //define('_ADD_ADDLATER',                                                              'Add Later');
-define('_ADD_ADDLATER',                                                                'Add the dates specified');
+define('_ADD_ADDLATER',                                'Introducir luego');
 
-define('_LOGIN_NAME',                          'Name:');
-define('_LOGIN_PASSWORD',                      'Password:');
+define('_LOGIN_NAME',                          'Nombre');
+define('_LOGIN_PASSWORD',                      'Clave');
 
 // changed from _BOOKMARLET_BMARKLFOLLOW
 define('_BOOKMARKLET_BMARKFOLLOW',                                     ' (Works with nearly all browsers)');
@@ -189,13 +274,7 @@ define('_PLUGIN_OPTIONS_TITLE',                                                    'Options for %s');
 // Plugin file loda error
 define('_PLUGINFILE_COULDNT_BELOADED',                         'Error: plugin file <strong>%s.php</strong> could not be loaded, or it has been set inactive because it does not support some features (check the <a href="?action=actionlog">actionlog</a> for more info)');
 
-//ITEM add/edit template (for japanese only)
 define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
-define('_ITEM_ADDEDITTEMPLATE_YEAR',                           'Year');
-define('_ITEM_ADDEDITTEMPLATE_MONTH',                          'Month');
-define('_ITEM_ADDEDITTEMPLATE_DAY',                                    'Day');
-define('_ITEM_ADDEDITTEMPLATE_HOUR',                           'Hour');
-define('_ITEM_ADDEDITTEMPLATE_MINUTE',                         'Minute');
 
 // Errors
 define('_ERRORS_INSTALLSQL',                                           'install.sql should be deleted');
@@ -325,7 +404,7 @@ define('_ERROR_PLUGIN_LOAD',                'Plugin could not be loaded, or does not support c
 // START changed/added after 3.22 START
 define('_SEARCHFORM_QUERY',                    'Keywords to search');
 define('_ERROR_EMAIL_REQUIRED',                'Email address is required');
-define('_COMMENTFORM_MAIL',                    'Website:');
+define('_COMMENTFORM_MAIL',                    'Website');
 define('_COMMENTFORM_EMAIL',           'E-mail:');
 define('_EBLOG_REQUIREDEMAIL',         'Require E-mail address with comments?');
 define('_ERROR_COMMENTS_SPAM',      'Your comment was rejected because it did not pass the spam test');
@@ -354,10 +433,6 @@ define('_ARCHIVETYPE_MONTH',               'mes');
 // tickets (prevents malicious users to trick an admin to perform actions he doesn't want)
 define('_ERROR_BADTICKET',                     'Ticket inválido o caducado.');
 
-// plugin dependency
-define('_ERROR_INSREQPLUGIN',          'Fracasó la instalación del plugin, requiere ');
-define('_ERROR_DELREQPLUGIN',          'Fracasó la eliminación del plugin, es requerido por ');
-
 // cookie prefix
 define('_SETTINGS_COOKIEPREFIX',       'Prefijo de la Cookie');
 
@@ -455,7 +530,7 @@ define('_WARNING_EXTAUTH',                  'Aviso: Habilita sólo si es necesario.');
 define('_MEMBERS_BYPASS',                      'Usar Autenticación Externa');
 
 // 'always include in search' blog setting (yes/no) [in v2.5beta, the 'always' part wasn't clear]
-define('_EBLOG_SEARCH',                                '<em>Siempre</em> incluir en la búsqueda');
+define('_EBLOG_SEARCH',                                'Incluir en búsquedas');
 
 // END changed/added after v2.5beta
 
@@ -477,9 +552,6 @@ define('_ADD_ALIGNLEFT_TT',                 'Alinear a la izquierda');
 define('_ADD_ALIGNRIGHT_TT',           'Alinear a la derecha');
 define('_ADD_ALIGNCENTER_TT',          'Alinear al centro');
 
-// searchable blog setting (yes/no)
-define('_EBLOG_SEARCH',                                'Incluir en búsquedas');
-
 // generic upload failure
 define('_ERROR_UPLOADFAILED',          'Error al subir');
 
@@ -766,7 +838,6 @@ define('_COMMENTFORM_YOUARE',               'Eres');
 define('_COMMENTFORM_SUBMIT',          'Introducir comentario');
 define('_COMMENTFORM_COMMENT',         'Comentario');
 define('_COMMENTFORM_NAME',                    'Nombre');
-define('_COMMENTFORM_MAIL',                    'Email/HTTP');
 define('_COMMENTFORM_REMEMBER',                'Recordar usuario');
 
 // loginform
@@ -793,7 +864,6 @@ define('_ADD_DISABLE_COMMENTS',             'Deshabilitar comentarios?');
 define('_ADD_DRAFTNFUTURE',                    'Borrador y futuras entradas');
 define('_ADD_ADDITEM',                         'Introducir entrada');
 define('_ADD_ADDNOW',                          'Introducir ahora');
-define('_ADD_ADDLATER',                                'Introducir luego');
 define('_ADD_PLACE_ON',                                'Colocar en');
 define('_ADD_ADDDRAFT',                                'Introducir en el borrador');
 define('_ADD_NOPASTDATES',                     '(las fechas y horas pasadas no son válidas, se usará el momento actual)');
@@ -1137,8 +1207,6 @@ define('_BAN_ADD_BTN',                            'Introducir restricción');
 
 // LOGIN screen
 define('_LOGIN_MESSAGE',                       'Mensaje');
-define('_LOGIN_NAME',                          'Nombre');
-define('_LOGIN_PASSWORD',                      'Clave');
 define('_LOGIN_SHARED',                                _LOGINFORM_SHARED);
 define('_LOGIN_FORGOT',                                'Has olvidado la clave?');
 
@@ -1270,3 +1338,19 @@ define('_EDITC_NONMEMBER',                       'no miembro');
 // move item
 define('_MOVE_TITLE',                          'Mover a qué bitácora?');
 define('_MOVE_BTN',                                    'Mover entrada');
+
+// ADMIN-template template types
+include_once('adminskinTypes.php');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_NAVILIST',          'navibar for item/comment list');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is blog ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is super ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin URL');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'API entry');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'eventlist updates');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency to');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency by');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'couldn\'t load file');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin actions');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin admin link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin help link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin option setting link');
index aa3f981..3ac45ec 100644 (file)
  * 
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2012 The Nucleus Group
+<<<<<<< HEAD
  * @version $Id: fa_Arab_IR.UTF-8.php 1868 2012-05-22 05:10:53Z sakamocchi $
+=======
+ * @version $Id: fa_Arab_IR.UTF-8.php 1887 2012-06-17 08:30:08Z sakamocchi $
+>>>>>>> skinnable-master
  */
 
  /********************************************
  *        Start New for 4.0                 *
  ********************************************/
-define('_SKINIE_INVALID_NAMES_DETECTED', 'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
-define('_LISTS_AUTHOR', 'Author');
-define('_OVERVIEW_OTHER_DRAFTS', 'Other Drafts');
+/* argument value for setlocale() in Microsoft's windows operating system */
+define('_LOCALE_IN_WINDOWS',   'C');
+
+/* labels for date and time measurement unit */
+define('_LABEL_YEAR_UNIT',             'year');
+define('_LABEL_MONTH_UNIT',            'month');
+define('_LABEL_DAY_UNIT',              'day');
+define('_LABEL_HOUR_UNIT',             'hour');
+define('_LABEL_MINUTE_UNIT',   'minute');
+
+// SkinableAdminArea vars
+define('_SKINABLEADMIN_DEL_UNINSTALL_DATA',                    'Delete ADMIN skin data table on uninstall?');
+define('_SKINABLEADMIN_DEFAULT_SKIN',                          'Choose a skin of the management area of the default.');
+define('_SKINABLEADMIN_MEMBER_DEFAULT_SKIN',           'Choose a skin of the management area of you use.');
+define('_SKINABLEADMIN_QMENU_LAYOUT',                          'Admin layout');
+define('_SKINABLEADMIN_PAGE_STR',                                      'page');
+define('_SKINABLEADMIN_BATCH_MOVE',                                    'Item move other category/Category move other blog');
+define('_SKINABLEADMIN_BATCH',                                         'batch');
+define('_SKINABLEADMIN_PAGEHEAD',                                      'Admin page head');
+define('_SKINABLEADMIN_PAGEFOOT',                                      'Admin page foot');
+define('_SKINABLEADMIN_TEMPLATEOVERVIEW',                      'Template overview');
+define('_SKINABLEADMIN_ADMINAREAHEADLINK',                     '[Your site]link');
+define('_SKINABLEADMIN_TPLSETTING_INGENERAL',          'In general');
+define('_SKINABLEADMIN_HEAD_STR',                                      ' head');
+define('_SKINABLEADMIN_BODY_STR',                                      ' body');
+define('_SKINABLEADMIN_FOOT_STR',                                      ' foot');
+define('_SKINABLEADMIN_TEXT_STR',                                      ' text');
+define('_SKINABLEADMIN_TITLE_STR',                                     ' title');
+define('_SKINABLEADMIN_ADMINSETTING_STR',                      ' set editmember is \'admin\'');
+define('_SKINABLEADMIN_NORMALSETTING_STR',                     ' normal');
+define('_SKINABLEADMIN_HELPICONURL_STR',                       ' icon URL');
+define('_SKINABLEADMIN_HELPFILEURL_STR',                       ' help file URL');
+define('_SKINABLEADMIN_ADMINSKINVAR_STR',                      ' skinvars');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_SELECT',      'selectbox used in ADMIN area');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE',       'Table for list indication');
+define('_SKINABLEADMIN_PLUGIN_QUICKMENU',                      'Link to admin page of the plugin shown to the quick-menu');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE',         'Template for option-type %s');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTMETA',         'Template for option-meta-data %s');
+define('_SKINABLEADMIN_MEMBERS_ADMINSKIN',                     "ADMIN-Area's skin");
+
+define('_LOCALE_BG_CYRL_BG',   'Bulgarian in Bulgaria');
+define('_LOCALE_CA_LATN_ES',   'Catalan in Spain');
+define('_LOCALE_CS_LATN_CZ',   'Czech in Czech Republic');
+define('_LOCALE_DE_LATN_DE',   'German in Germany');
+define('_LOCALE_EL_GREK_GR',   'Greek in Greece (Greek script)');
+define('_LOCALE_EN_LATN_US',   'English in United States');
+define('_LOCALE_ES_LATN_ES',   'Spanish in Spain');
+define('_LOCALE_FA_ARAB_IR',   'Persian in Islamic Republic of Iran');
+define('_LOCALE_FI_LATN_FI',   'Finnish in Finland');
+define('_LOCALE_FR_LATN_FR',   'French in France');
+define('_LOCALE_GL_LATN_ES',   'Galician in Spain');
+define('_LOCALE_HR_LATN_HR',   'Croatian in Croatia');
+define('_LOCALE_HU_LATN_HU',   'Hungarian in Hungary');
+define('_LOCALE_ID_LATN_ID',   'Indonesian in Indonesia (Latin script)');
+define('_LOCALE_IT_LATN_IT',   'Italian in Italy');
+define('_LOCALE_JA_JPAN_JP',   'Japanese in Japan');
+define('_LOCALE_KO_KORE_KR',   'Korean in Korea');
+define('_LOCALE_KU_ARAB_TR',   'Kurdish in Turkey (Arabic script)');
+define('_LOCALE_LV_LATN_LV',   'Latvian in Latvia');
+define('_LOCALE_NL_LATN_NL',   'Dutch in Netherlands');
+define('_LOCALE_PL_LATN_PL',   'Polish in Poland');
+define('_LOCALE_PT_LATN_BR',   'Portuguese in Brazil');
+define('_LOCALE_RO_LATN_RO',   'Romainan in Romania');
+define('_LOCALE_RU_CYRL_RU',   'Russian in Russia');
+define('_LOCALE_SK_LATN_SK',   'Slovak in Slovakia');
+define('_LOCALE_SR_CYRL_RS',   'Serbian in Serbia');
+define('_LOCALE_UR_ARAB_PK',   'Urdu in Pakistan');
+define('_LOCALE_VI_LATN_VN',   'Vietnamese in Vietnam (Latin script)');
+define('_LOCALE_ZH_HANS_CN',   'Chinese in China (simplified script)');
+define('_LOCALE_ZH_HANT_TW',   'Chinese in Taiwan (Traditional script)');
+
+define('_FORGOTPASSWORD_TITLE',                                'Forgot your password?');
+define('_FORGOTPASSWORD_MSG',                          'Enter your username and email address below, and you\'ll be sent an e-mail with a link where you can choose a new password.');
+define('_FORGOTPASSWORD_SUBMIT',                       'Send Activation Link" class="transparent');
+define('_FORGOTPASSWORD_CONTACT',                      'If you don\'t remember your exact username, contact the site administrator.');
+define('_SKINIE_INVALID_NAMES_DETECTED',       'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
+define('_LISTS_AUTHOR',                                                'Author');
+define('_OVERVIEW_OTHER_DRAFTS',                       'Other Drafts');
+define('_ERROR_BADADMINSKINNAME',                      'the name of skin for admin area must start with \'admin/\'.');
+define('_ERROR_BADADMINTEMPLATENAME',          'the name of template for admin area must start with \'admin/\'.');
+define('_SETTINGS_ADMINSKIN',                          'default skin for admin area');
+define('_SETTINGS_BKMKLTSKIN',                         'default skin for bookmarklet');
+define('_MEMBERS_BKMKLTSKIN',                          "bookmarklet skin");
+define('_ADMIN_SYSTEMOVERVIEW_VERSION_LATEST',         'The version which is being used is latest.');
+
 /********************************************
  *        Start New for 3.6x                *
  ********************************************/
@@ -86,10 +171,10 @@ define('_ERROR_INSREQPLUGIN',              'Plugin installation failed, requires %s');
 define('_ERROR_DELREQPLUGIN',          'Plugin deletion failed, required by %s');
 
 //define('_ADD_ADDLATER',                                                              'Add Later');
-define('_ADD_ADDLATER',                                                                'Add the dates specified');
+define('_ADD_ADDLATER',                                'بعدا اضافه كن');
 
-define('_LOGIN_NAME',                          'Name:');
-define('_LOGIN_PASSWORD',                      'Password:');
+define('_LOGIN_NAME',                          'نام كاربري');
+define('_LOGIN_PASSWORD',                      'گذرواژه');
 
 // changed from _BOOKMARLET_BMARKLFOLLOW
 define('_BOOKMARKLET_BMARKFOLLOW',                                     ' (Works with nearly all browsers)');
@@ -187,13 +272,7 @@ define('_PLUGIN_OPTIONS_TITLE',                                                    'Options for %s');
 // Plugin file loda error
 define('_PLUGINFILE_COULDNT_BELOADED',                         'Error: plugin file <strong>%s.php</strong> could not be loaded, or it has been set inactive because it does not support some features (check the <a href="?action=actionlog">actionlog</a> for more info)');
 
-//ITEM add/edit template (for japanese only)
 define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
-define('_ITEM_ADDEDITTEMPLATE_YEAR',                           'Year');
-define('_ITEM_ADDEDITTEMPLATE_MONTH',                          'Month');
-define('_ITEM_ADDEDITTEMPLATE_DAY',                                    'Day');
-define('_ITEM_ADDEDITTEMPLATE_HOUR',                           'Hour');
-define('_ITEM_ADDEDITTEMPLATE_MINUTE',                         'Minute');
 
 // Errors
 define('_ERRORS_INSTALLSQL',                                           'install.sql should be deleted');
@@ -323,7 +402,7 @@ define('_ERROR_PLUGIN_LOAD',                'Plugin could not be loaded, or does not support c
 // START changed/added after 3.22 START
 define('_SEARCHFORM_QUERY',                    'Keywords to search');
 define('_ERROR_EMAIL_REQUIRED',                'Email address is required');
-define('_COMMENTFORM_MAIL',                    'Website:');
+define('_COMMENTFORM_MAIL',                    'Website');
 define('_COMMENTFORM_EMAIL',           'E-mail:');
 define('_EBLOG_REQUIREDEMAIL',         'Require E-mail address with comments?');
 define('_ERROR_COMMENTS_SPAM',      'Your comment was rejected because it did not pass the spam test');
@@ -449,7 +528,7 @@ define('_WARNING_EXTAUTH',                  'Warning: Enable only if needed.');
 define('_MEMBERS_BYPASS',                      'Use External Authentication');
 
 // 'always include in search' blog setting (yes/no) [in v2.5beta, the 'always' part wasn't clear]
-define('_EBLOG_SEARCH',                                '<em>Always</em> include in search');
+define('_EBLOG_SEARCH',                                'شامل جستجو بودن');
 
 // END changed/added after v2.5beta
 
@@ -471,9 +550,6 @@ define('_ADD_ALIGNLEFT_TT',                 'تراز از چپ');
 define('_ADD_ALIGNRIGHT_TT',           'تراز از راست');
 define('_ADD_ALIGNCENTER_TT',          'تراز از وسط');
 
-// searchable blog setting (yes/no)
-define('_EBLOG_SEARCH',                                'شامل جستجو بودن');
-
 // generic upload failure
 define('_ERROR_UPLOADFAILED',          'خطا در بارگذاري');
 
@@ -760,7 +836,6 @@ define('_COMMENTFORM_YOUARE',               'You are');
 define('_COMMENTFORM_SUBMIT',          'ارسال نظر');
 define('_COMMENTFORM_COMMENT',         'نظر شما');
 define('_COMMENTFORM_NAME',                    'نام');
-define('_COMMENTFORM_MAIL',                    'E-mail/HTTP');
 define('_COMMENTFORM_REMEMBER',                'مرا به ياد آر');
 
 // loginform
@@ -787,7 +862,6 @@ define('_ADD_DISABLE_COMMENTS',             'فعال نبودن نظرها؟');
 define('_ADD_DRAFTNFUTURE',                    'Draft &amp; Future Items');
 define('_ADD_ADDITEM',                         'اضافه كردن نوشته');
 define('_ADD_ADDNOW',                          'اكنون اضافه كن');
-define('_ADD_ADDLATER',                                'بعدا اضافه كن');
 define('_ADD_PLACE_ON',                                'در تاريخ');
 define('_ADD_ADDDRAFT',                                'به پيش نويس ها اضافه كن');
 define('_ADD_NOPASTDATES',                     '(dates and times in the past are NOT valid, the current time will be used in that case)');
@@ -1131,8 +1205,6 @@ define('_BAN_ADD_BTN',                            'Add Ban');
 
 // LOGIN screen
 define('_LOGIN_MESSAGE',                       'پيغام');
-define('_LOGIN_NAME',                          'نام كاربري');
-define('_LOGIN_PASSWORD',                      'گذرواژه');
 define('_LOGIN_SHARED',                                _LOGINFORM_SHARED);
 define('_LOGIN_FORGOT',                                'گذرواژه را فراموش كرده ايد؟');
 
@@ -1264,3 +1336,19 @@ define('_EDITC_NONMEMBER',                       'غير كاربر');
 // move item
 define('_MOVE_TITLE',                          'انتقال به كدام وبلاگ؟');
 define('_MOVE_BTN',                                    'جابجايي نوشته');
+
+// ADMIN-template template types
+include_once('adminskinTypes.php');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_NAVILIST',          'navibar for item/comment list');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is blog ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is super ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin URL');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'API entry');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'eventlist updates');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency to');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency by');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'couldn\'t load file');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin actions');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin admin link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin help link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin option setting link');
index cb1b849..fe5d807 100644 (file)
  * 
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2012 The Nucleus Group
+<<<<<<< HEAD
  * @version $Id: fi_Latn_FI.ISO-8859-1.php 1868 2012-05-22 05:10:53Z sakamocchi $
+=======
+ * @version $Id: fi_Latn_FI.ISO-8859-1.php 1887 2012-06-17 08:30:08Z sakamocchi $
+>>>>>>> skinnable-master
  */
 
 /********************************************
  *        Start New for 4.0                 *
  ********************************************/
-define('_SKINIE_INVALID_NAMES_DETECTED', 'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
-define('_LISTS_AUTHOR', 'Author');
-define('_OVERVIEW_OTHER_DRAFTS', 'Other Drafts');
+/* argument value for setlocale() in Microsoft's windows operating system */
+define('_LOCALE_IN_WINDOWS',   'fin_fin');
+
+/* labels for date and time measurement unit */
+define('_LABEL_YEAR_UNIT',             'year');
+define('_LABEL_MONTH_UNIT',            'month');
+define('_LABEL_DAY_UNIT',              'day');
+define('_LABEL_HOUR_UNIT',             'hour');
+define('_LABEL_MINUTE_UNIT',   'minute');
+
+// SkinableAdminArea vars
+define('_SKINABLEADMIN_DEL_UNINSTALL_DATA',                    'Delete ADMIN skin data table on uninstall?');
+define('_SKINABLEADMIN_DEFAULT_SKIN',                          'Choose a skin of the management area of the default.');
+define('_SKINABLEADMIN_MEMBER_DEFAULT_SKIN',           'Choose a skin of the management area of you use.');
+define('_SKINABLEADMIN_QMENU_LAYOUT',                          'Admin layout');
+define('_SKINABLEADMIN_PAGE_STR',                                      'page');
+define('_SKINABLEADMIN_BATCH_MOVE',                                    'Item move other category/Category move other blog');
+define('_SKINABLEADMIN_BATCH',                                         'batch');
+define('_SKINABLEADMIN_PAGEHEAD',                                      'Admin page head');
+define('_SKINABLEADMIN_PAGEFOOT',                                      'Admin page foot');
+define('_SKINABLEADMIN_TEMPLATEOVERVIEW',                      'Template overview');
+define('_SKINABLEADMIN_ADMINAREAHEADLINK',                     '[Your site]link');
+define('_SKINABLEADMIN_TPLSETTING_INGENERAL',          'In general');
+define('_SKINABLEADMIN_HEAD_STR',                                      ' head');
+define('_SKINABLEADMIN_BODY_STR',                                      ' body');
+define('_SKINABLEADMIN_FOOT_STR',                                      ' foot');
+define('_SKINABLEADMIN_TEXT_STR',                                      ' text');
+define('_SKINABLEADMIN_TITLE_STR',                                     ' title');
+define('_SKINABLEADMIN_ADMINSETTING_STR',                      ' set editmember is \'admin\'');
+define('_SKINABLEADMIN_NORMALSETTING_STR',                     ' normal');
+define('_SKINABLEADMIN_HELPICONURL_STR',                       ' icon URL');
+define('_SKINABLEADMIN_HELPFILEURL_STR',                       ' help file URL');
+define('_SKINABLEADMIN_ADMINSKINVAR_STR',                      ' skinvars');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_SELECT',      'selectbox used in ADMIN area');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE',       'Table for list indication');
+define('_SKINABLEADMIN_PLUGIN_QUICKMENU',                      'Link to admin page of the plugin shown to the quick-menu');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE',         'Template for option-type %s');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTMETA',         'Template for option-meta-data %s');
+define('_SKINABLEADMIN_MEMBERS_ADMINSKIN',                     "ADMIN-Area's skin");
+
+define('_LOCALE_BG_CYRL_BG',   'Bulgarian in Bulgaria');
+define('_LOCALE_CA_LATN_ES',   'Catalan in Spain');
+define('_LOCALE_CS_LATN_CZ',   'Czech in Czech Republic');
+define('_LOCALE_DE_LATN_DE',   'German in Germany');
+define('_LOCALE_EL_GREK_GR',   'Greek in Greece (Greek script)');
+define('_LOCALE_EN_LATN_US',   'English in United States');
+define('_LOCALE_ES_LATN_ES',   'Spanish in Spain');
+define('_LOCALE_FA_ARAB_IR',   'Persian in Islamic Republic of Iran');
+define('_LOCALE_FI_LATN_FI',   'Finnish in Finland');
+define('_LOCALE_FR_LATN_FR',   'French in France');
+define('_LOCALE_GL_LATN_ES',   'Galician in Spain');
+define('_LOCALE_HR_LATN_HR',   'Croatian in Croatia');
+define('_LOCALE_HU_LATN_HU',   'Hungarian in Hungary');
+define('_LOCALE_ID_LATN_ID',   'Indonesian in Indonesia (Latin script)');
+define('_LOCALE_IT_LATN_IT',   'Italian in Italy');
+define('_LOCALE_JA_JPAN_JP',   'Japanese in Japan');
+define('_LOCALE_KO_KORE_KR',   'Korean in Korea');
+define('_LOCALE_KU_ARAB_TR',   'Kurdish in Turkey (Arabic script)');
+define('_LOCALE_LV_LATN_LV',   'Latvian in Latvia');
+define('_LOCALE_NL_LATN_NL',   'Dutch in Netherlands');
+define('_LOCALE_PL_LATN_PL',   'Polish in Poland');
+define('_LOCALE_PT_LATN_BR',   'Portuguese in Brazil');
+define('_LOCALE_RO_LATN_RO',   'Romainan in Romania');
+define('_LOCALE_RU_CYRL_RU',   'Russian in Russia');
+define('_LOCALE_SK_LATN_SK',   'Slovak in Slovakia');
+define('_LOCALE_SR_CYRL_RS',   'Serbian in Serbia');
+define('_LOCALE_UR_ARAB_PK',   'Urdu in Pakistan');
+define('_LOCALE_VI_LATN_VN',   'Vietnamese in Vietnam (Latin script)');
+define('_LOCALE_ZH_HANS_CN',   'Chinese in China (simplified script)');
+define('_LOCALE_ZH_HANT_TW',   'Chinese in Taiwan (Traditional script)');
+
+define('_FORGOTPASSWORD_TITLE',                                'Forgot your password?');
+define('_FORGOTPASSWORD_MSG',                          'Enter your username and email address below, and you\'ll be sent an e-mail with a link where you can choose a new password.');
+define('_FORGOTPASSWORD_SUBMIT',                       'Send Activation Link" class="transparent');
+define('_FORGOTPASSWORD_CONTACT',                      'If you don\'t remember your exact username, contact the site administrator.');
+define('_SKINIE_INVALID_NAMES_DETECTED',       'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
+define('_LISTS_AUTHOR',                                                'Author');
+define('_OVERVIEW_OTHER_DRAFTS',                       'Other Drafts');
+define('_ERROR_BADADMINSKINNAME',                      'the name of skin for admin area must start with \'admin/\'.');
+define('_ERROR_BADADMINTEMPLATENAME',          'the name of template for admin area must start with \'admin/\'.');
+define('_SETTINGS_ADMINSKIN',                          'default skin for admin area');
+define('_SETTINGS_BKMKLTSKIN',                         'default skin for bookmarklet');
+define('_MEMBERS_BKMKLTSKIN',                          "bookmarklet skin");
+define('_ADMIN_SYSTEMOVERVIEW_VERSION_LATEST',         'The version which is being used is latest.');
+
 /********************************************
  *        Start New for 3.6x                *
  ********************************************/
@@ -83,15 +168,16 @@ define('_EDITC_EMAIL',                             'E-mail');
 
 define('_MANAGER_PLUGINFILE_NOTFOUND',                         "Plugin %s was not loaded (File not found)");
 /* changed */
-// plugin dependency 
-define('_ERROR_INSREQPLUGIN',          'Plugin installation failed, requires %s');
-define('_ERROR_DELREQPLUGIN',          'Plugin deletion failed, required by %s');
+// plugin dependency
+define('_ERROR_INSREQPLUGIN',          'Laajennuksen asennus ei onnistunut, syynä ');
+define('_ERROR_DELREQPLUGIN',          'Laajennuksen poistaminen ei onnistunut, syynä ');
+
 
 //define('_ADD_ADDLATER',                                                              'Add Later');
-define('_ADD_ADDLATER',                                                                'Add the dates specified');
+define('_ADD_ADDLATER',                                'Lisää myöhemmin');
 
-define('_LOGIN_NAME',                          'Name:');
-define('_LOGIN_PASSWORD',                      'Password:');
+define('_LOGIN_NAME',                          'Tunnus');
+define('_LOGIN_PASSWORD',                      'Salasana');
 
 // changed from _BOOKMARLET_BMARKLFOLLOW
 define('_BOOKMARKLET_BMARKFOLLOW',                                     ' (Works with nearly all browsers)');
@@ -189,13 +275,7 @@ define('_PLUGIN_OPTIONS_TITLE',                                                    'Options for %s');
 // Plugin file loda error
 define('_PLUGINFILE_COULDNT_BELOADED',                         'Error: plugin file <strong>%s.php</strong> could not be loaded, or it has been set inactive because it does not support some features (check the <a href="?action=actionlog">actionlog</a> for more info)');
 
-//ITEM add/edit template (for japanese only)
 define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
-define('_ITEM_ADDEDITTEMPLATE_YEAR',                           'Year');
-define('_ITEM_ADDEDITTEMPLATE_MONTH',                          'Month');
-define('_ITEM_ADDEDITTEMPLATE_DAY',                                    'Day');
-define('_ITEM_ADDEDITTEMPLATE_HOUR',                           'Hour');
-define('_ITEM_ADDEDITTEMPLATE_MINUTE',                         'Minute');
 
 // Errors
 define('_ERRORS_INSTALLSQL',                                           'install.sql should be deleted');
@@ -325,7 +405,7 @@ define('_ERROR_PLUGIN_LOAD',                'Plugin could not be loaded, or does not support c
 // START changed/added after 3.22 START
 define('_SEARCHFORM_QUERY',                    'Keywords to search');
 define('_ERROR_EMAIL_REQUIRED',                'Email address is required');
-define('_COMMENTFORM_MAIL',                    'Website:');
+define('_COMMENTFORM_MAIL',                    'Sähköpostiosoite tai WWW-osoite');
 define('_COMMENTFORM_EMAIL',           'E-mail:');
 define('_EBLOG_REQUIREDEMAIL',         'Require E-mail address with comments?');
 define('_ERROR_COMMENTS_SPAM',      'Your comment was rejected because it did not pass the spam test');
@@ -354,10 +434,13 @@ define('_ARCHIVETYPE_MONTH',              'kuukausi');
 // tickets (prevents malicious users to trick an admin to perform actions he doesn't want)
 define('_ERROR_BADTICKET',                     'Vanhentunut tai virheellinen tunniste.');
 
+<<<<<<< HEAD
 // plugin dependency
 define('_ERROR_INSREQPLUGIN',          'Laajennuksen asennus ei onnistunut, syynä ');
 define('_ERROR_DELREQPLUGIN',          'Laajennuksen poistaminen ei onnistunut, syynä ');
 
+=======
+>>>>>>> skinnable-master
 // cookie prefix
 define('_SETTINGS_COOKIEPREFIX',       'Evästeen tunniste');
 
@@ -454,7 +537,11 @@ define('_WARNING_EXTAUTH',                 'Varoitus: salli vain jos tarvitset t
 define('_MEMBERS_BYPASS',                      'Käytä ulkoista varmennusta');
 
 // 'always include in search' blog setting (yes/no) [in v2.5beta, the 'always' part wasn't clear]
+<<<<<<< HEAD
 define('_EBLOG_SEARCH',                                'Sisällytä <em>aina</em> hakuun');
+=======
+define('_EBLOG_SEARCH',                                'Sisällytä hakuun');
+>>>>>>> skinnable-master
 
 // END changed/added after v2.5beta
 
@@ -476,9 +563,12 @@ define('_MEDIA_COLLECTION_LABEL',  'Valittu kokoelma: ');
 define('_ADD_ALIGNLEFT_TT',                    'Tasaa vasemmalle');
 define('_ADD_ALIGNRIGHT_TT',           'Tasaa oikealle');
 define('_ADD_ALIGNCENTER_TT',          'Keskitä');
+<<<<<<< HEAD
 
 // searchable blog setting (yes/no)
 define('_EBLOG_SEARCH',                                'Sisällytä hakuun');
+=======
+>>>>>>> skinnable-master
 
 // generic upload failure
 define('_ERROR_UPLOADFAILED',          'Lähetys epäonnistui');
@@ -768,7 +858,10 @@ define('_COMMENTFORM_YOUARE',              'Olet');
 define('_COMMENTFORM_SUBMIT',          'Lisää kommentti');
 define('_COMMENTFORM_COMMENT',         'Kommenttisi');
 define('_COMMENTFORM_NAME',                    'Nimi');
+<<<<<<< HEAD
 define('_COMMENTFORM_MAIL',                    'Sähköpostiosoite tai WWW-osoite');
+=======
+>>>>>>> skinnable-master
 define('_COMMENTFORM_REMEMBER',                'Muista minut');
 
 // loginform
@@ -795,7 +888,10 @@ define('_ADD_DISABLE_COMMENTS',            'Kommentit pois k
 define('_ADD_DRAFTNFUTURE',                    'Vedos &amp; tulevat artikkelit');
 define('_ADD_ADDITEM',                         'Lisää artikkeli');
 define('_ADD_ADDNOW',                          'Lisää nyt');
+<<<<<<< HEAD
 define('_ADD_ADDLATER',                                'Lisää myöhemmin');
+=======
+>>>>>>> skinnable-master
 define('_ADD_PLACE_ON',                                'Place on');
 define('_ADD_ADDDRAFT',                                'Lisää vedoksiin');
 define('_ADD_NOPASTDATES',                     '(Menneet päiväykset ja kellonajat EIVÄT kelpaa, käytä meneillään olevaa aikaa.)');
@@ -1139,8 +1235,6 @@ define('_BAN_ADD_BTN',                            'Lis
 
 // LOGIN screen
 define('_LOGIN_MESSAGE',                       'Viesti');
-define('_LOGIN_NAME',                          'Tunnus');
-define('_LOGIN_PASSWORD',                      'Salasana');
 define('_LOGIN_SHARED',                                _LOGINFORM_SHARED);
 define('_LOGIN_FORGOT',                                'Unohditko salasanasi?');
 
@@ -1272,3 +1366,22 @@ define('_EDITC_NONMEMBER',                       'ei-k
 // move item
 define('_MOVE_TITLE',                          'Siirrä mihin blogiin?');
 define('_MOVE_BTN',                                    'Siirrä artikkeli');
+<<<<<<< HEAD
+=======
+
+// ADMIN-template template types
+include_once('adminskinTypes.php');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_NAVILIST',          'navibar for item/comment list');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is blog ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is super ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin URL');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'API entry');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'eventlist updates');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency to');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency by');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'couldn\'t load file');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin actions');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin admin link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin help link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin option setting link');
+>>>>>>> skinnable-master
index 92808a2..082ac66 100644 (file)
  * 
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2012 The Nucleus Group
+<<<<<<< HEAD
  * @version $Id: fi_Latn_FI.UTF-8.php 1868 2012-05-22 05:10:53Z sakamocchi $
+=======
+ * @version $Id: fi_Latn_FI.UTF-8.php 1887 2012-06-17 08:30:08Z sakamocchi $
+>>>>>>> skinnable-master
  */
 
 /********************************************
  *        Start New for 4.0                 *
  ********************************************/
-define('_SKINIE_INVALID_NAMES_DETECTED', 'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
-define('_LISTS_AUTHOR', 'Author');
-define('_OVERVIEW_OTHER_DRAFTS', 'Other Drafts');
+/* argument value for setlocale() in Microsoft's windows operating system */
+define('_LOCALE_IN_WINDOWS',   'fin_fin');
+
+/* labels for date and time measurement unit */
+define('_LABEL_YEAR_UNIT',             'year');
+define('_LABEL_MONTH_UNIT',            'month');
+define('_LABEL_DAY_UNIT',              'day');
+define('_LABEL_HOUR_UNIT',             'hour');
+define('_LABEL_MINUTE_UNIT',   'minute');
+
+// SkinableAdminArea vars
+define('_SKINABLEADMIN_DEL_UNINSTALL_DATA',                    'Delete ADMIN skin data table on uninstall?');
+define('_SKINABLEADMIN_DEFAULT_SKIN',                          'Choose a skin of the management area of the default.');
+define('_SKINABLEADMIN_MEMBER_DEFAULT_SKIN',           'Choose a skin of the management area of you use.');
+define('_SKINABLEADMIN_QMENU_LAYOUT',                          'Admin layout');
+define('_SKINABLEADMIN_PAGE_STR',                                      'page');
+define('_SKINABLEADMIN_BATCH_MOVE',                                    'Item move other category/Category move other blog');
+define('_SKINABLEADMIN_BATCH',                                         'batch');
+define('_SKINABLEADMIN_PAGEHEAD',                                      'Admin page head');
+define('_SKINABLEADMIN_PAGEFOOT',                                      'Admin page foot');
+define('_SKINABLEADMIN_TEMPLATEOVERVIEW',                      'Template overview');
+define('_SKINABLEADMIN_ADMINAREAHEADLINK',                     '[Your site]link');
+define('_SKINABLEADMIN_TPLSETTING_INGENERAL',          'In general');
+define('_SKINABLEADMIN_HEAD_STR',                                      ' head');
+define('_SKINABLEADMIN_BODY_STR',                                      ' body');
+define('_SKINABLEADMIN_FOOT_STR',                                      ' foot');
+define('_SKINABLEADMIN_TEXT_STR',                                      ' text');
+define('_SKINABLEADMIN_TITLE_STR',                                     ' title');
+define('_SKINABLEADMIN_ADMINSETTING_STR',                      ' set editmember is \'admin\'');
+define('_SKINABLEADMIN_NORMALSETTING_STR',                     ' normal');
+define('_SKINABLEADMIN_HELPICONURL_STR',                       ' icon URL');
+define('_SKINABLEADMIN_HELPFILEURL_STR',                       ' help file URL');
+define('_SKINABLEADMIN_ADMINSKINVAR_STR',                      ' skinvars');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_SELECT',      'selectbox used in ADMIN area');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE',       'Table for list indication');
+define('_SKINABLEADMIN_PLUGIN_QUICKMENU',                      'Link to admin page of the plugin shown to the quick-menu');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE',         'Template for option-type %s');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTMETA',         'Template for option-meta-data %s');
+define('_SKINABLEADMIN_MEMBERS_ADMINSKIN',                     "ADMIN-Area's skin");
+
+define('_LOCALE_BG_CYRL_BG',   'Bulgarian in Bulgaria');
+define('_LOCALE_CA_LATN_ES',   'Catalan in Spain');
+define('_LOCALE_CS_LATN_CZ',   'Czech in Czech Republic');
+define('_LOCALE_DE_LATN_DE',   'German in Germany');
+define('_LOCALE_EL_GREK_GR',   'Greek in Greece (Greek script)');
+define('_LOCALE_EN_LATN_US',   'English in United States');
+define('_LOCALE_ES_LATN_ES',   'Spanish in Spain');
+define('_LOCALE_FA_ARAB_IR',   'Persian in Islamic Republic of Iran');
+define('_LOCALE_FI_LATN_FI',   'Finnish in Finland');
+define('_LOCALE_FR_LATN_FR',   'French in France');
+define('_LOCALE_GL_LATN_ES',   'Galician in Spain');
+define('_LOCALE_HR_LATN_HR',   'Croatian in Croatia');
+define('_LOCALE_HU_LATN_HU',   'Hungarian in Hungary');
+define('_LOCALE_ID_LATN_ID',   'Indonesian in Indonesia (Latin script)');
+define('_LOCALE_IT_LATN_IT',   'Italian in Italy');
+define('_LOCALE_JA_JPAN_JP',   'Japanese in Japan');
+define('_LOCALE_KO_KORE_KR',   'Korean in Korea');
+define('_LOCALE_KU_ARAB_TR',   'Kurdish in Turkey (Arabic script)');
+define('_LOCALE_LV_LATN_LV',   'Latvian in Latvia');
+define('_LOCALE_NL_LATN_NL',   'Dutch in Netherlands');
+define('_LOCALE_PL_LATN_PL',   'Polish in Poland');
+define('_LOCALE_PT_LATN_BR',   'Portuguese in Brazil');
+define('_LOCALE_RO_LATN_RO',   'Romainan in Romania');
+define('_LOCALE_RU_CYRL_RU',   'Russian in Russia');
+define('_LOCALE_SK_LATN_SK',   'Slovak in Slovakia');
+define('_LOCALE_SR_CYRL_RS',   'Serbian in Serbia');
+define('_LOCALE_UR_ARAB_PK',   'Urdu in Pakistan');
+define('_LOCALE_VI_LATN_VN',   'Vietnamese in Vietnam (Latin script)');
+define('_LOCALE_ZH_HANS_CN',   'Chinese in China (simplified script)');
+define('_LOCALE_ZH_HANT_TW',   'Chinese in Taiwan (Traditional script)');
+
+define('_FORGOTPASSWORD_TITLE',                                'Forgot your password?');
+define('_FORGOTPASSWORD_MSG',                          'Enter your username and email address below, and you\'ll be sent an e-mail with a link where you can choose a new password.');
+define('_FORGOTPASSWORD_SUBMIT',                       'Send Activation Link" class="transparent');
+define('_FORGOTPASSWORD_CONTACT',                      'If you don\'t remember your exact username, contact the site administrator.');
+define('_SKINIE_INVALID_NAMES_DETECTED',       'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
+define('_LISTS_AUTHOR',                                                'Author');
+define('_OVERVIEW_OTHER_DRAFTS',                       'Other Drafts');
+define('_ERROR_BADADMINSKINNAME',                      'the name of skin for admin area must start with \'admin/\'.');
+define('_ERROR_BADADMINTEMPLATENAME',          'the name of template for admin area must start with \'admin/\'.');
+define('_SETTINGS_ADMINSKIN',                          'default skin for admin area');
+define('_SETTINGS_BKMKLTSKIN',                         'default skin for bookmarklet');
+define('_MEMBERS_BKMKLTSKIN',                          "bookmarklet skin");
+define('_ADMIN_SYSTEMOVERVIEW_VERSION_LATEST',         'The version which is being used is latest.');
+
 /********************************************
  *        Start New for 3.6x                *
  ********************************************/
@@ -83,15 +168,16 @@ define('_EDITC_EMAIL',                             'E-mail');
 
 define('_MANAGER_PLUGINFILE_NOTFOUND',                         "Plugin %s was not loaded (File not found)");
 /* changed */
-// plugin dependency 
-define('_ERROR_INSREQPLUGIN',          'Plugin installation failed, requires %s');
-define('_ERROR_DELREQPLUGIN',          'Plugin deletion failed, required by %s');
+// plugin dependency
+define('_ERROR_INSREQPLUGIN',          'Laajennuksen asennus ei onnistunut, syynä ');
+define('_ERROR_DELREQPLUGIN',          'Laajennuksen poistaminen ei onnistunut, syynä ');
+
 
 //define('_ADD_ADDLATER',                                                              'Add Later');
-define('_ADD_ADDLATER',                                                                'Add the dates specified');
+define('_ADD_ADDLATER',                                'Lisää myöhemmin');
 
-define('_LOGIN_NAME',                          'Name:');
-define('_LOGIN_PASSWORD',                      'Password:');
+define('_LOGIN_NAME',                          'Tunnus');
+define('_LOGIN_PASSWORD',                      'Salasana');
 
 // changed from _BOOKMARLET_BMARKLFOLLOW
 define('_BOOKMARKLET_BMARKFOLLOW',                                     ' (Works with nearly all browsers)');
@@ -189,13 +275,7 @@ define('_PLUGIN_OPTIONS_TITLE',                                                    'Options for %s');
 // Plugin file loda error
 define('_PLUGINFILE_COULDNT_BELOADED',                         'Error: plugin file <strong>%s.php</strong> could not be loaded, or it has been set inactive because it does not support some features (check the <a href="?action=actionlog">actionlog</a> for more info)');
 
-//ITEM add/edit template (for japanese only)
 define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
-define('_ITEM_ADDEDITTEMPLATE_YEAR',                           'Year');
-define('_ITEM_ADDEDITTEMPLATE_MONTH',                          'Month');
-define('_ITEM_ADDEDITTEMPLATE_DAY',                                    'Day');
-define('_ITEM_ADDEDITTEMPLATE_HOUR',                           'Hour');
-define('_ITEM_ADDEDITTEMPLATE_MINUTE',                         'Minute');
 
 // Errors
 define('_ERRORS_INSTALLSQL',                                           'install.sql should be deleted');
@@ -325,7 +405,7 @@ define('_ERROR_PLUGIN_LOAD',                'Plugin could not be loaded, or does not support c
 // START changed/added after 3.22 START
 define('_SEARCHFORM_QUERY',                    'Keywords to search');
 define('_ERROR_EMAIL_REQUIRED',                'Email address is required');
-define('_COMMENTFORM_MAIL',                    'Website:');
+define('_COMMENTFORM_MAIL',                    'Sähköpostiosoite tai WWW-osoite');
 define('_COMMENTFORM_EMAIL',           'E-mail:');
 define('_EBLOG_REQUIREDEMAIL',         'Require E-mail address with comments?');
 define('_ERROR_COMMENTS_SPAM',      'Your comment was rejected because it did not pass the spam test');
@@ -354,10 +434,6 @@ define('_ARCHIVETYPE_MONTH',               'kuukausi');
 // tickets (prevents malicious users to trick an admin to perform actions he doesn't want)
 define('_ERROR_BADTICKET',                     'Vanhentunut tai virheellinen tunniste.');
 
-// plugin dependency
-define('_ERROR_INSREQPLUGIN',          'Laajennuksen asennus ei onnistunut, syynä ');
-define('_ERROR_DELREQPLUGIN',          'Laajennuksen poistaminen ei onnistunut, syynä ');
-
 // cookie prefix
 define('_SETTINGS_COOKIEPREFIX',       'Evästeen tunniste');
 
@@ -454,7 +530,7 @@ define('_WARNING_EXTAUTH',                  'Varoitus: salli vain jos tarvitset tätä.');
 define('_MEMBERS_BYPASS',                      'Käytä ulkoista varmennusta');
 
 // 'always include in search' blog setting (yes/no) [in v2.5beta, the 'always' part wasn't clear]
-define('_EBLOG_SEARCH',                                'Sisällytä <em>aina</em> hakuun');
+define('_EBLOG_SEARCH',                                'Sisällytä hakuun');
 
 // END changed/added after v2.5beta
 
@@ -477,9 +553,6 @@ define('_ADD_ALIGNLEFT_TT',                 'Tasaa vasemmalle');
 define('_ADD_ALIGNRIGHT_TT',           'Tasaa oikealle');
 define('_ADD_ALIGNCENTER_TT',          'Keskitä');
 
-// searchable blog setting (yes/no)
-define('_EBLOG_SEARCH',                                'Sisällytä hakuun');
-
 // generic upload failure
 define('_ERROR_UPLOADFAILED',          'Lähetys epäonnistui');
 
@@ -768,7 +841,6 @@ define('_COMMENTFORM_YOUARE',               'Olet');
 define('_COMMENTFORM_SUBMIT',          'Lisää kommentti');
 define('_COMMENTFORM_COMMENT',         'Kommenttisi');
 define('_COMMENTFORM_NAME',                    'Nimi');
-define('_COMMENTFORM_MAIL',                    'Sähköpostiosoite tai WWW-osoite');
 define('_COMMENTFORM_REMEMBER',                'Muista minut');
 
 // loginform
@@ -795,7 +867,6 @@ define('_ADD_DISABLE_COMMENTS',             'Kommentit pois käytöstä?');
 define('_ADD_DRAFTNFUTURE',                    'Vedos &amp; tulevat artikkelit');
 define('_ADD_ADDITEM',                         'Lisää artikkeli');
 define('_ADD_ADDNOW',                          'Lisää nyt');
-define('_ADD_ADDLATER',                                'Lisää myöhemmin');
 define('_ADD_PLACE_ON',                                'Place on');
 define('_ADD_ADDDRAFT',                                'Lisää vedoksiin');
 define('_ADD_NOPASTDATES',                     '(Menneet päiväykset ja kellonajat EIVÄT kelpaa, käytä meneillään olevaa aikaa.)');
@@ -1139,8 +1210,6 @@ define('_BAN_ADD_BTN',                            'Lisää esto');
 
 // LOGIN screen
 define('_LOGIN_MESSAGE',                       'Viesti');
-define('_LOGIN_NAME',                          'Tunnus');
-define('_LOGIN_PASSWORD',                      'Salasana');
 define('_LOGIN_SHARED',                                _LOGINFORM_SHARED);
 define('_LOGIN_FORGOT',                                'Unohditko salasanasi?');
 
@@ -1272,3 +1341,19 @@ define('_EDITC_NONMEMBER',                       'ei-käyttäjä');
 // move item
 define('_MOVE_TITLE',                          'Siirrä mihin blogiin?');
 define('_MOVE_BTN',                                    'Siirrä artikkeli');
+
+// ADMIN-template template types
+include_once('adminskinTypes.php');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_NAVILIST',          'navibar for item/comment list');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is blog ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is super ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin URL');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'API entry');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'eventlist updates');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency to');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency by');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'couldn\'t load file');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin actions');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin admin link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin help link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin option setting link');
index 8a43b92..8b51872 100644 (file)
  * 
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2012 The Nucleus Group
+<<<<<<< HEAD
  * @version $Id: fr_Latn_FR.ISO-8859-15.php 1868 2012-05-22 05:10:53Z sakamocchi $
+=======
+ * @version $Id: fr_Latn_FR.ISO-8859-15.php 1887 2012-06-17 08:30:08Z sakamocchi $
+>>>>>>> skinnable-master
  */
 
 /********************************************
  *        Start New for 4.0                 *
  ********************************************/
-define('_SKINIE_INVALID_NAMES_DETECTED', 'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
-define('_LISTS_AUTHOR', 'Author');
-define('_OVERVIEW_OTHER_DRAFTS', 'Other Drafts');
+/* argument value for setlocale() in Microsoft's windows operating system */
+define('_LOCALE_IN_WINDOWS',   'fra_fra');
+
+/* labels for date and time measurement unit */
+define('_LABEL_YEAR_UNIT',             'year');
+define('_LABEL_MONTH_UNIT',            'month');
+define('_LABEL_DAY_UNIT',              'day');
+define('_LABEL_HOUR_UNIT',             'hour');
+define('_LABEL_MINUTE_UNIT',   'minute');
+
+// SkinableAdminArea vars
+define('_SKINABLEADMIN_DEL_UNINSTALL_DATA',                    'Delete ADMIN skin data table on uninstall?');
+define('_SKINABLEADMIN_DEFAULT_SKIN',                          'Choose a skin of the management area of the default.');
+define('_SKINABLEADMIN_MEMBER_DEFAULT_SKIN',           'Choose a skin of the management area of you use.');
+define('_SKINABLEADMIN_QMENU_LAYOUT',                          'Admin layout');
+define('_SKINABLEADMIN_PAGE_STR',                                      'page');
+define('_SKINABLEADMIN_BATCH_MOVE',                                    'Item move other category/Category move other blog');
+define('_SKINABLEADMIN_BATCH',                                         'batch');
+define('_SKINABLEADMIN_PAGEHEAD',                                      'Admin page head');
+define('_SKINABLEADMIN_PAGEFOOT',                                      'Admin page foot');
+define('_SKINABLEADMIN_TEMPLATEOVERVIEW',                      'Template overview');
+define('_SKINABLEADMIN_ADMINAREAHEADLINK',                     '[Your site]link');
+define('_SKINABLEADMIN_TPLSETTING_INGENERAL',          'In general');
+define('_SKINABLEADMIN_HEAD_STR',                                      ' head');
+define('_SKINABLEADMIN_BODY_STR',                                      ' body');
+define('_SKINABLEADMIN_FOOT_STR',                                      ' foot');
+define('_SKINABLEADMIN_TEXT_STR',                                      ' text');
+define('_SKINABLEADMIN_TITLE_STR',                                     ' title');
+define('_SKINABLEADMIN_ADMINSETTING_STR',                      ' set editmember is \'admin\'');
+define('_SKINABLEADMIN_NORMALSETTING_STR',                     ' normal');
+define('_SKINABLEADMIN_HELPICONURL_STR',                       ' icon URL');
+define('_SKINABLEADMIN_HELPFILEURL_STR',                       ' help file URL');
+define('_SKINABLEADMIN_ADMINSKINVAR_STR',                      ' skinvars');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_SELECT',      'selectbox used in ADMIN area');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE',       'Table for list indication');
+define('_SKINABLEADMIN_PLUGIN_QUICKMENU',                      'Link to admin page of the plugin shown to the quick-menu');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE',         'Template for option-type %s');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTMETA',         'Template for option-meta-data %s');
+define('_SKINABLEADMIN_MEMBERS_ADMINSKIN',                     "ADMIN-Area's skin");
+
+define('_LOCALE_BG_CYRL_BG',   'Bulgarian in Bulgaria');
+define('_LOCALE_CA_LATN_ES',   'Catalan in Spain');
+define('_LOCALE_CS_LATN_CZ',   'Czech in Czech Republic');
+define('_LOCALE_DE_LATN_DE',   'German in Germany');
+define('_LOCALE_EL_GREK_GR',   'Greek in Greece (Greek script)');
+define('_LOCALE_EN_LATN_US',   'English in United States');
+define('_LOCALE_ES_LATN_ES',   'Spanish in Spain');
+define('_LOCALE_FA_ARAB_IR',   'Persian in Islamic Republic of Iran');
+define('_LOCALE_FI_LATN_FI',   'Finnish in Finland');
+define('_LOCALE_FR_LATN_FR',   'French in France');
+define('_LOCALE_GL_LATN_ES',   'Galician in Spain');
+define('_LOCALE_HR_LATN_HR',   'Croatian in Croatia');
+define('_LOCALE_HU_LATN_HU',   'Hungarian in Hungary');
+define('_LOCALE_ID_LATN_ID',   'Indonesian in Indonesia (Latin script)');
+define('_LOCALE_IT_LATN_IT',   'Italian in Italy');
+define('_LOCALE_JA_JPAN_JP',   'Japanese in Japan');
+define('_LOCALE_KO_KORE_KR',   'Korean in Korea');
+define('_LOCALE_KU_ARAB_TR',   'Kurdish in Turkey (Arabic script)');
+define('_LOCALE_LV_LATN_LV',   'Latvian in Latvia');
+define('_LOCALE_NL_LATN_NL',   'Dutch in Netherlands');
+define('_LOCALE_PL_LATN_PL',   'Polish in Poland');
+define('_LOCALE_PT_LATN_BR',   'Portuguese in Brazil');
+define('_LOCALE_RO_LATN_RO',   'Romainan in Romania');
+define('_LOCALE_RU_CYRL_RU',   'Russian in Russia');
+define('_LOCALE_SK_LATN_SK',   'Slovak in Slovakia');
+define('_LOCALE_SR_CYRL_RS',   'Serbian in Serbia');
+define('_LOCALE_UR_ARAB_PK',   'Urdu in Pakistan');
+define('_LOCALE_VI_LATN_VN',   'Vietnamese in Vietnam (Latin script)');
+define('_LOCALE_ZH_HANS_CN',   'Chinese in China (simplified script)');
+define('_LOCALE_ZH_HANT_TW',   'Chinese in Taiwan (Traditional script)');
+
+define('_FORGOTPASSWORD_TITLE',                                'Forgot your password?');
+define('_FORGOTPASSWORD_MSG',                          'Enter your username and email address below, and you\'ll be sent an e-mail with a link where you can choose a new password.');
+define('_FORGOTPASSWORD_SUBMIT',                       'Send Activation Link" class="transparent');
+define('_FORGOTPASSWORD_CONTACT',                      'If you don\'t remember your exact username, contact the site administrator.');
+define('_SKINIE_INVALID_NAMES_DETECTED',       'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
+define('_LISTS_AUTHOR',                                                'Author');
+define('_OVERVIEW_OTHER_DRAFTS',                       'Other Drafts');
+define('_ERROR_BADADMINSKINNAME',                      'the name of skin for admin area must start with \'admin/\'.');
+define('_ERROR_BADADMINTEMPLATENAME',          'the name of template for admin area must start with \'admin/\'.');
+define('_SETTINGS_ADMINSKIN',                          'default skin for admin area');
+define('_SETTINGS_BKMKLTSKIN',                         'default skin for bookmarklet');
+define('_MEMBERS_BKMKLTSKIN',                          "bookmarklet skin");
+define('_ADMIN_SYSTEMOVERVIEW_VERSION_LATEST',         'The version which is being used is latest.');
+
 /********************************************
  *        Start New for 3.6x                *
  ********************************************/
@@ -83,15 +168,15 @@ define('_EDITC_EMAIL',                             'E-mail');
 
 define('_MANAGER_PLUGINFILE_NOTFOUND',                         "Plugin %s was not loaded (File not found)");
 /* changed */
-// plugin dependency 
-define('_ERROR_INSREQPLUGIN',          'Plugin installation failed, requires %s');
-define('_ERROR_DELREQPLUGIN',          'Plugin deletion failed, required by %s');
+// plugin dependency
+define('_ERROR_INSREQPLUGIN',          'L\'installation a échoué car le module nécessite ');
+define('_ERROR_DELREQPLUGIN',          'L\'désinstallation a échoué car le module est requis par ');
 
 //define('_ADD_ADDLATER',                                                              'Add Later');
-define('_ADD_ADDLATER',                                                                'Add the dates specified');
+define('_ADD_ADDLATER',                        'Ajouter plus tard');
 
-define('_LOGIN_NAME',                          'Name:');
-define('_LOGIN_PASSWORD',                      'Password:');
+define('_LOGIN_NAME',                  'Nom');
+define('_LOGIN_PASSWORD',              'Mot de passe');
 
 // changed from _BOOKMARLET_BMARKLFOLLOW
 define('_BOOKMARKLET_BMARKFOLLOW',                                     ' (Works with nearly all browsers)');
@@ -189,13 +274,7 @@ define('_PLUGIN_OPTIONS_TITLE',                                                    'Options for %s');
 // Plugin file loda error
 define('_PLUGINFILE_COULDNT_BELOADED',                         'Error: plugin file <strong>%s.php</strong> could not be loaded, or it has been set inactive because it does not support some features (check the <a href="?action=actionlog">actionlog</a> for more info)');
 
-//ITEM add/edit template (for japanese only)
 define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
-define('_ITEM_ADDEDITTEMPLATE_YEAR',                           'Year');
-define('_ITEM_ADDEDITTEMPLATE_MONTH',                          'Month');
-define('_ITEM_ADDEDITTEMPLATE_DAY',                                    'Day');
-define('_ITEM_ADDEDITTEMPLATE_HOUR',                           'Hour');
-define('_ITEM_ADDEDITTEMPLATE_MINUTE',                         'Minute');
 
 // Errors
 define('_ERRORS_INSTALLSQL',                                           'install.sql should be deleted');
@@ -325,7 +404,7 @@ define('_ERROR_PLUGIN_LOAD',                'Plugin could not be loaded, or does not support c
 // START changed/added after 3.22 START
 define('_SEARCHFORM_QUERY',                    'Keywords to search');
 define('_ERROR_EMAIL_REQUIRED',                'Email address is required');
-define('_COMMENTFORM_MAIL',                    'Website:');
+define('_COMMENTFORM_MAIL',            'Website');
 define('_COMMENTFORM_EMAIL',           'E-mail:');
 define('_EBLOG_REQUIREDEMAIL',         'Require E-mail address with comments?');
 define('_ERROR_COMMENTS_SPAM',      'Your comment was rejected because it did not pass the spam test');
@@ -333,18 +412,30 @@ define('_ERROR_COMMENTS_SPAM',      'Your comment was rejected because it did no
 
 // START changed/added after 3.15 START
 
+<<<<<<< HEAD
 define('_LIST_PLUG_SUBS_NEEDUPDATE','Paina \'Päivitä laajennuslista\'-nappulaa päivittääksesi listan kaikista laajennuksista.');
 define('_LIST_PLUGS_DEP',                      'Laajennus vaatii:');
+=======
+define('_LIST_PLUG_SUBS_NEEDUPDATE',   'Veuillez utiliser le bouton \'Mettre à jour la liste des installations\' pour mettre à jour la liste des modules installés.');
+define('_LIST_PLUGS_DEP',              'Ce module nécessite:');
+>>>>>>> skinnable-master
 
 // END changed/added after 3.15
 
 // START changed/added after 3.1 START
 
 // comments list per weblog
+<<<<<<< HEAD
 define('_COMMENTS_BLOG',                       'Kaikki kommentit kohteessa ');
 define('_NOCOMMENTS_BLOG',                     'Ei kommentteja');
 define('_BLOGLIST_COMMENTS',           'Kommentit');
 define('_BLOGLIST_TT_COMMENTS',                'Lista kommenteista');
+=======
+define('_COMMENTS_BLOG',               'Tous les commentaires du blog');
+define('_NOCOMMENTS_BLOG',             'Aucun commentaire n\'a été fait sur les billets de ce blog');
+define('_BLOGLIST_COMMENTS',           'Commentaires');
+define('_BLOGLIST_TT_COMMENTS',                'Liste de tous les commentaires apportés aux billets de blog');
+>>>>>>> skinnable-master
 
 
 // for use in archivetype-skinvar
@@ -352,6 +443,7 @@ define('_ARCHIVETYPE_DAY',                  'p
 define('_ARCHIVETYPE_MONTH',           'kuukausi');
 
 // tickets (prevents malicious users to trick an admin to perform actions he doesn't want)
+<<<<<<< HEAD
 define('_ERROR_BADTICKET',                     'Vanhentunut tai virheellinen tunniste.');
 
 // plugin dependency
@@ -405,11 +497,63 @@ define('_LIST_ITEM_CAT',                  'cat:');
 define('_LIST_ITEM_AUTHOR',                    'author:');
 define('_LIST_ITEM_DATE',                      'date:');
 define('_LIST_ITEM_TIME',                      'time:');
+=======
+define('_ERROR_BADTICKET',             'Ticket invalide ou expiré.');
+
+// cookie prefix
+define('_SETTINGS_COOKIEPREFIX',       'Préfixe du cookie');
+
+// account activation
+define('_ERROR_NOLOGON_NOACTIVATE',    'Impossible d\'envoyer le lien d\'activation. Vous n\'êtes pas autorisé à vous authentifier.');
+define('_ERROR_ACTIVATE',              'La clef d\'activation key n\'existe pas, est invalide, ou a expiré.');
+define('_ACTIONLOG_ACTIVATIONLINK',    'Lien d\'activation envoyé');
+define('_MSG_ACTIVATION_SENT',         'Lien d\'activation a été envoyé par mail.');
+
+// activation link emails
+define('_ACTIVATE_REGISTER_MAIL',      "Bonjour <%memberName%>,\n\nvous devez activer votre compte sur <%siteName%> (<%siteUrl%>).\nVous pouvez le faire en suivant le lien ci-dessous :\n\n\t<%activationUrl%>\n\nPassés 2 jours le lien d\'activation sera invalide.");
+define('_ACTIVATE_REGISTER_MAILTITLE', "Activez votre compte '<%memberName%>'");
+define('_ACTIVATE_REGISTER_TITLE',     'Bienvenue <%memberName%>');
+define('_ACTIVATE_REGISTER_TEXT',      'Une dernière étape : choisissez un mot de passe pour votre compte.');
+define('_ACTIVATE_FORGOT_MAIL',                "Bonjour <%memberName%>,\n\nEn suivant le lien ci-dessous, vous pouvez choisir un nouveau mot de passe pour votre compte sur <%siteName%> (<%siteUrl%>).\n\n\t<%activationUrl%>\n\nPassés 2 jours le lien d\'activation sera invalide.");
+define('_ACTIVATE_FORGOT_MAILTITLE',   "Procédez à la réactivation de votre compte '<%memberName%>'");
+define('_ACTIVATE_FORGOT_TITLE',       'Bienvenue <%memberName%>');
+define('_ACTIVATE_FORGOT_TEXT',                'Vous pouvez choisir un nouveau mot de passe pour votre compte ci-dessous :');
+define('_ACTIVATE_CHANGE_MAIL',                "Bonjour <%memberName%>,\n\nMaintenant que votre adresse email a été changée, vous devez réactivation de votre compte sur <%siteName%> (<%siteUrl%>).\nVous pouvez le faire en suivant le lien ci-dessous :\n\n\t<%activationUrl%>\n\nPassés 2 jours le lien d\'activation sera invalide.");
+define('_ACTIVATE_CHANGE_MAILTITLE',   "Procédez à la réactivation de votre compte '<%memberName%>'");
+define('_ACTIVATE_CHANGE_TITLE',       'Bienvenue <%memberName%>');
+define('_ACTIVATE_CHANGE_TEXT',                'Votre changement d\'adresse email a été validé. Merci !');
+define('_ACTIVATE_SUCCESS_TITLE',      'Activation réussie');
+define('_ACTIVATE_SUCCESS_TEXT',       'Votre compte a été réactivé.');
+define('_MEMBERS_SETPWD',              'Choisissez un mot de passe');
+define('_MEMBERS_SETPWD_BTN',          'Choisissez un mot de passe');
+define('_QMENU_ACTIVATE',              'Activation de compte');
+define('_QMENU_ACTIVATE_TEXT',         '<p>Dès l\'activation de votre compte, vous pouvez commencer à l\'utiliser en <a href="index.php?action=showlogin">vous authentifiant</a>.</p>');
+
+define('_PLUGS_BTN_UPDATE',            'Mettre à jour la liste des installations');
+
+// global settings
+define('_SETTINGS_JSTOOLBAR',          'Type de barre d\'édition');
+define('_SETTINGS_JSTOOLBAR_FULL',     'Barre d\'édition complète (IE)');
+define('_SETTINGS_JSTOOLBAR_SIMPLE',   'Barre d\'édition simplifiée (Non-IE)');
+define('_SETTINGS_JSTOOLBAR_NONE',     'Désactiver la barre d\'édition');
+define('_SETTINGS_URLMODE_HELP',       '(Info: <a href="documentation/tips.html#searchengines-fancyurls">activer l\'utilisation des URLs pour la recherche</a>)');
+
+// extra plugin settings part when editing categories/members/blogs/...
+define('_PLUGINS_EXTRA',               'Autres paramètres du module');
+
+// itemlist info column keys
+define('_LIST_ITEM_BLOG',              'blog:');
+define('_LIST_ITEM_CAT',               'thème:');
+define('_LIST_ITEM_AUTHOR',            'auteur:');
+define('_LIST_ITEM_DATE',              'date:');
+define('_LIST_ITEM_TIME',              'heure:');
+>>>>>>> skinnable-master
 
 // indication of registered members in comments list
 define('_LIST_COMMENTS_MEMBER',        '(jäsen)');
 
 // batch operations
+<<<<<<< HEAD
 define('_BATCH_WITH_SEL',                      'Valituille:');
 define('_BATCH_EXEC',                          'Suorita');
 
@@ -441,17 +585,59 @@ define('_QMENU_INTRO_TEXT',                       '<p>T
 define('_ERROR_PLUGNOHELPFILE',                'Avustustiedostoa laajennukselle ei löytynyt');
 define('_PLUGS_HELP_TITLE',                    'Laajennuksen avustussivu');
 define('_LIST_PLUGS_HELP',                     'apua');
+=======
+define('_BATCH_WITH_SEL',              'Ayant pour sélection:');
+define('_BATCH_EXEC',                  'Executer');
+
+// quickmenu
+define('_QMENU_HOME',                  'Accueil');
+define('_QMENU_ADD',                   'Ajouter un billet');
+define('_QMENU_ADD_SELECT',            '-- sélectionnez --');
+define('_QMENU_USER_SETTINGS',         'Préférences');
+define('_QMENU_USER_ITEMS',            'Billets');
+define('_QMENU_USER_COMMENTS',         'Commentaires');
+define('_QMENU_MANAGE',                        'Paramètres');
+define('_QMENU_MANAGE_LOG',            'Log');
+define('_QMENU_MANAGE_SETTINGS',       'Configuration');
+define('_QMENU_MANAGE_MEMBERS',                'Participants');
+define('_QMENU_MANAGE_NEWBLOG',                'Nouveau blog');
+define('_QMENU_MANAGE_BACKUPS',                'Sauvegardes');
+define('_QMENU_MANAGE_PLUGINS',                'Modules');
+define('_QMENU_LAYOUT',                        'Mise en page');
+define('_QMENU_LAYOUT_SKINS',          'Habillages');
+define('_QMENU_LAYOUT_TEMPL',          'Modèles');
+define('_QMENU_LAYOUT_IEXPORT',                'Importer/Exporter');
+define('_QMENU_PLUGINS',               'Modules');
+
+// quickmenu on logon screen
+define('_QMENU_INTRO',                 'Introduction');
+define('_QMENU_INTRO_TEXT',            '<p>Ceci est la page d\'authentification de Nucleus CMS, le système permettant la mise à jour du contenu de ce site.</p><p>Pour mettre en ligne de nouveaux billets, authentifiez-vous.</p>');
+
+// helppages for plugins
+define('_ERROR_PLUGNOHELPFILE',                'Impossible de trouver le fichier d\'aide correspondant à ce module');
+define('_PLUGS_HELP_TITLE',            'Page d\'aide pour le module');
+define('_LIST_PLUGS_HELP',             'aide');
+
+>>>>>>> skinnable-master
 
 // END changed/started after 3.1
 
 // START changed/added after v2.5beta START
 
 // general settings (security)
+<<<<<<< HEAD
 define('_SETTINGS_EXTAUTH',                    'Salli ulkoinen varmennus');
 define('_WARNING_EXTAUTH',                     'Varoitus: salli vain jos tarvitset tätä.');
 
 // member profile
 define('_MEMBERS_BYPASS',                      'Käytä ulkoista varmennusta');
+=======
+define('_SETTINGS_EXTAUTH',            'Activer le système d\'authentification externe');
+define('_WARNING_EXTAUTH',             'Attention: à n\'activer que si nécessaire.');
+
+// member profile
+define('_MEMBERS_BYPASS',              'Utiliser le système d\'authentification externe');
+>>>>>>> skinnable-master
 
 // 'always include in search' blog setting (yes/no) [in v2.5beta, the 'always' part wasn't clear]
 define('_EBLOG_SEARCH',                                'Sisällytä <em>aina</em> hakuun');
@@ -462,6 +648,7 @@ define('_EBLOG_SEARCH',                             'Sis
 // START introduced after v2.0 START
 
 // media library
+<<<<<<< HEAD
 define('_MEDIA_VIEW',                          'Tarkastele');
 define('_MEDIA_VIEW_TT',                       'Tarkastele tiedostoa (avautuu uuteen ikkunaan)');
 define('_MEDIA_FILTER_APPLY',          'Ota suodatin käyttöön');
@@ -476,12 +663,32 @@ define('_MEDIA_COLLECTION_LABEL', 'Valittu kokoelma: ');
 define('_ADD_ALIGNLEFT_TT',                    'Tasaa vasemmalle');
 define('_ADD_ALIGNRIGHT_TT',           'Tasaa oikealle');
 define('_ADD_ALIGNCENTER_TT',          'Keskitä');
+=======
+define('_MEDIA_VIEW',                  'afficher');
+define('_MEDIA_VIEW_TT',               'Afficher la page (ouvrir une nouvelle fenêtre)');
+define('_MEDIA_FILTER_APPLY',          'Appliquer le filtre');
+define('_MEDIA_FILTER_LABEL',          'Filtre: ');
+define('_MEDIA_UPLOAD_TO',             'Télécharger dans...');
+define('_MEDIA_UPLOAD_NEW',            'Télécharger un nouveau fichier...');
+define('_MEDIA_COLLECTION_SELECT',     'Sélectionner');
+define('_MEDIA_COLLECTION_TT',         'Changer de bibliothèque');
+define('_MEDIA_COLLECTION_LABEL',      'Bibliothèque actuelle: ');
+
+// tooltips on toolbar
+define('_ADD_ALIGNLEFT_TT',            'Aligner à gauche');
+define('_ADD_ALIGNRIGHT_TT',           'Aligner à droite');
+define('_ADD_ALIGNCENTER_TT',          'Centrer');
+>>>>>>> skinnable-master
 
 // searchable blog setting (yes/no)
 define('_EBLOG_SEARCH',                                'Sisällytä hakuun');
 
 // generic upload failure
+<<<<<<< HEAD
 define('_ERROR_UPLOADFAILED',          'Lähetys epäonnistui');
+=======
+define('_ERROR_UPLOADFAILED',          'Echec du téléchargement');
+>>>>>>> skinnable-master
 
 // END introduced after v2.0 END
 
@@ -489,18 +696,31 @@ define('_ERROR_UPLOADFAILED',             'L
 // START introduced after v1.5 START
 
 // posting to the past/edit timestamps
+<<<<<<< HEAD
 define('_EBLOG_ALLOWPASTPOSTING',      'Salli menneille päiville postitus');
 define('_ADD_CHANGEDATE',                      'Päivitä aikaleima');
 define('_BMLET_CHANGEDATE',                    'Päivitä aikaleima');
+=======
+define('_EBLOG_ALLOWPASTPOSTING',      'Permettre d\'antidater');
+define('_ADD_CHANGEDATE',              'Mise à  jour  de la date');
+define('_BMLET_CHANGEDATE',            'Mise à  jour de la date');
+>>>>>>> skinnable-master
 
 // skin import/export
 define('_OVERVIEW_SKINIMPORT',         'Tuominen / vieminen...');
 
 // skin settings
+<<<<<<< HEAD
 define('_PARSER_INCMODE_NORMAL',       'Normaali');
 define('_PARSER_INCMODE_SKINDIR',      'Käytä sivurunkohakemistoa');
 define('_SKIN_INCLUDE_MODE',           'Moodi');
 define('_SKIN_INCLUDE_PREFIX',         'Etuliite');
+=======
+define('_PARSER_INCMODE_NORMAL',       'Normal');
+define('_PARSER_INCMODE_SKINDIR',      'Utiliser un dossier d\'habillage');
+define('_SKIN_INCLUDE_MODE',           'Type d\'inclusion');
+define('_SKIN_INCLUDE_PREFIX',         'Préfixe d\'inclusion');
+>>>>>>> skinnable-master
 
 // global settings
 define('_SETTINGS_BASESKIN',           'Perussivurunko');
@@ -508,10 +728,17 @@ define('_SETTINGS_SKINSURL',              'Perussivurunkojen URL');
 define('_SETTINGS_ACTIONSURL',         'Koko URL action.php:lle');
 
 // category moves (batch)
+<<<<<<< HEAD
 define('_ERROR_MOVEDEFCATEGORY',       'Vakiokategoriaa ei voi siirtää');
 define('_ERROR_MOVETOSELF',                    'Kategoriaa ei voi voida siirtää (kohdeblogi on sama kuin lähdeblogi)');
 define('_MOVECAT_TITLE',                       'Valitse blogi johon kategoria siirretään');
 define('_MOVECAT_BTN',                         'Siirrä kategoria');
+=======
+define('_ERROR_MOVEDEFCATEGORY',       'Impossible de déplacer le thème par défaut');
+define('_ERROR_MOVETOSELF',            'Impossible de déplacer le thème (le blog de destination est identique au blog source)');
+define('_MOVECAT_TITLE',               'Sélectionner le blog dans lequel vous souhaitez déplacer ce thème');
+define('_MOVECAT_BTN',                 'Déplacer le thème');
+>>>>>>> skinnable-master
 
 // URLMode setting
 define('_SETTINGS_URLMODE',                    'URL moodi');
@@ -519,6 +746,7 @@ define('_SETTINGS_URLMODE_NORMAL',  'Normaali');
 define('_SETTINGS_URLMODE_PATHINFO','Tarkka');
 
 // Batch operations
+<<<<<<< HEAD
 define('_BATCH_NOSELECTION',           'Ei valintoja, joihin kohdistuu toimintoja');
 define('_BATCH_ITEMS',                         'Joukkotoiminne blogiartikkeleille');
 define('_BATCH_CATEGORIES',                    'Joukkotoiminne kategorioille');
@@ -559,11 +787,54 @@ define('_ADD_PLUGIN_EXTRAS',              'Laajennuksen lis
 // errors
 define('_ERROR_CATCREATEFAIL',         'Ei pystytty luomaan uutta kategoriaa');
 define('_ERROR_NUCLEUSVERSIONREQ',     'Tämä laajennus vaatii uudemman Nucleuksen version: ');
+=======
+define('_BATCH_NOSELECTION',           'Aucune action sélectionnée');
+define('_BATCH_ITEMS',                 'Action sur les billets');
+define('_BATCH_CATEGORIES',            'Action sur les thèmes');
+define('_BATCH_MEMBERS',               'Action sur les participants');
+define('_BATCH_TEAM',                  'Action sur les participants d\'un blog');
+define('_BATCH_COMMENTS',              'Action sur les commentaires');
+define('_BATCH_UNKNOWN',               'Action inconnue: ');
+define('_BATCH_EXECUTING',             'En cours');
+define('_BATCH_ONCATEGORY',            'sur un thème');
+define('_BATCH_ONITEM',                        'sur un élément');
+define('_BATCH_ONCOMMENT',             'sur un commentaire');
+define('_BATCH_ONMEMBER',              'sur un participant');
+define('_BATCH_ONTEAM',                        'sur le participant du blog');
+define('_BATCH_SUCCESS',               'Action réussie!');
+define('_BATCH_DONE',                  'Terminé!');
+define('_BATCH_DELETE_CONFIRM',                'Confirmer la suppression');
+define('_BATCH_DELETE_CONFIRM_BTN',    'Confirmer');
+define('_BATCH_SELECTALL',             'Tout sélectionner');
+define('_BATCH_DESELECTALL',           'Annuler la sélection');
+
+// batch operations: options in dropdowns
+define('_BATCH_ITEM_DELETE',           'Supprimer');
+define('_BATCH_ITEM_MOVE',             'Déplacer');
+define('_BATCH_MEMBER_DELETE',         'Supprimer');
+define('_BATCH_MEMBER_SET_ADM',                'Donner les droits d\'administrateur');
+define('_BATCH_MEMBER_UNSET_ADM',      'Retirer les droits d\'administrateur');
+define('_BATCH_TEAM_DELETE',           'Retirer de l\'équipe');
+define('_BATCH_TEAM_SET_ADM',          'Donner les droits d\'administrateur');
+define('_BATCH_TEAM_UNSET_ADM',                'Retirer les droits d\'administrateur');
+define('_BATCH_CAT_DELETE',            'Supprimer');
+define('_BATCH_CAT_MOVE',              'Déplacer vers un autre blog');
+define('_BATCH_COMMENT_DELETE',                'Supprimer');
+
+// itemlist: Add new item...
+define('_ITEMLIST_ADDNEW',             'Ajouter un nouveau billet...');
+define('_ADD_PLUGIN_EXTRAS',           'Options supplémentaires des modules');
+
+// errors
+define('_ERROR_CATCREATEFAIL',         'Impossible de créer le nouveau thème');
+define('_ERROR_NUCLEUSVERSIONREQ',     'Ce module requiert une version ultérieure de Nucleus: ');
+>>>>>>> skinnable-master
 
 // backlinks
 define('_BACK_TO_BLOGSETTINGS',                'Takaisin blogiasetuksiin');
 
 // skin import export
+<<<<<<< HEAD
 define('_SKINIE_TITLE_IMPORT',         'Tuo');
 define('_SKINIE_TITLE_EXPORT',         'Vie');
 define('_SKINIE_BTN_IMPORT',           'Tuo valitut sivurungot / asettelut');
@@ -589,11 +860,39 @@ define('_SKINIE_DONE',                            'Tuominen valmis');
 
 define('_AND',                                         'ja');
 define('_OR',                                          'tai');
+=======
+define('_SKINIE_TITLE_IMPORT',         'Importation');
+define('_SKINIE_TITLE_EXPORT',         'Exportation');
+define('_SKINIE_BTN_IMPORT',           'Importer');
+define('_SKINIE_BTN_EXPORT',           'Exporter les habillages/modèles sélectionnés');
+define('_SKINIE_LOCAL',                        'Importer depuis un fichier local:');
+define('_SKINIE_NOCANDIDATES',         'Aucun habillage trouvé dans le répertoire skins');
+define('_SKINIE_FROMURL',              'Importer à partir d\'un lien:');
+define('_SKINIE_EXPORT_INTRO',         'Sélectionnez ci-dessous les habillages et modèles que vous souhaitez exporter:');
+define('_SKINIE_EXPORT_SKINS',         'Habillages');
+define('_SKINIE_EXPORT_TEMPLATES',     'Modèles');
+define('_SKINIE_EXPORT_EXTRA',         'Notes');
+define('_SKINIE_CONFIRM_OVERWRITE',    'Ecraser l\'ancienne version?');
+define('_SKINIE_CONFIRM_IMPORT',       'Oui, je veux importer ceci');
+define('_SKINIE_CONFIRM_TITLE',                'A propos de l\'importation d\'habillage et de modèle');
+define('_SKINIE_INFO_SKINS',           'Habillages dans le fichier:');
+define('_SKINIE_INFO_TEMPLATES',       'Modèles dans le fichier:');
+define('_SKINIE_INFO_GENERAL',         'Notes:');
+define('_SKINIE_INFO_SKINCLASH',       'Nom de l\'habillage:');
+define('_SKINIE_INFO_TEMPLCLASH',      'Nom du modèle:');
+define('_SKINIE_INFO_IMPORTEDSKINS',   'Habillage importé:');
+define('_SKINIE_INFO_IMPORTEDTEMPLS',  'Modèle importé:');
+define('_SKINIE_DONE',                 'Importation réussie');
+
+define('_AND',                         'et');
+define('_OR',                          'ou');
+>>>>>>> skinnable-master
 
 // empty fields on template edit
 define('_EDITTEMPLATE_EMPTY',          'tyhjä kenttä (klikkaa editoidaksesi)');
 
 // skin overview list
+<<<<<<< HEAD
 define('_LIST_SKINS_INCMODE',          'IncludeMode:');
 define('_LIST_SKINS_INCPREFIX',                'IncludePrefix:');
 define('_LIST_SKINS_DEFINED',          'Määritellyt osat:');
@@ -638,6 +937,52 @@ define('_MMAIL_FROMANON',                  'nimet
 define('_MMAIL_FROMNUC',                       'Postitettu Nucleus weblogista osoitteessa');
 define('_MMAIL_TITLE',                         'Viesti jäseneltä');
 define('_MMAIL_MAIL',                          'Viesti:');
+=======
+define('_LIST_SKINS_INCMODE',          'Type d\'inclusion:');
+define('_LIST_SKINS_INCPREFIX',                'Préfixe d\'inclusion:');
+define('_LIST_SKINS_DEFINED',          'Habillages définis:');
+
+// backup
+define('_BACKUPS_TITLE',               'Sauvegarde / Récupération');
+define('_BACKUP_TITLE',                        'Sauvegarde');
+define('_BACKUP_INTRO',                        'Cliquez sur le bouton ci-dessous pour créer une sauvegarde de votre base de données Nucleus. Enregistrez-la dans un fichier. Gardez-le en lieu sûr.');
+define('_BACKUP_ZIP_YES',              'Essayer d\'utiliser la compression');
+define('_BACKUP_ZIP_NO',               'Ne pas utiliser la compression');
+define('_BACKUP_BTN',                  'Sauvegarder!');
+define('_BACKUP_NOTE',                 '<b>NB:</b> Seul le contenu de la base de données est sauvegardé. Les fichiers Media importés et la configuration de config.php <b>NE SONT PAS</b> inclus dans la sauvegarde.');
+define('_RESTORE_TITLE',               'Récupération');
+define('_RESTORE_NOTE',                        '<b>ATTENTION:</b> Restaurer une sauvegarde <b>EFFACERA</b> toutes les données contenues dans la base de données Nucleus! N\'agissez qu\'en connaissance de cause!<br /><b>NB:</b> Vérifiez que la version de Nucleus de votre sauvegarde soit la même que celle que vous utilisez actuellement autrement cela ne fonctionnera pas.');
+define('_RESTORE_INTRO',               'Sélectionnez le fichier de récupération ci-dessous (il sera téléchargé sur le serveur) et cliquez sur le bouton "Récupération" pour procéder.');
+define('_RESTORE_IMSURE',              'Oui, je suis sûr!');
+define('_RESTORE_BTN',                 'Récupération');
+define('_RESTORE_WARNING',             '(Vérifiez que vous restaurez le bon fichier de sauvegarde. Faites une nouvelle sauvegarde avant de commencer si vous n\'êtes pas sûr.)');
+define('_ERROR_BACKUP_NOTSURE',                'Vous devez cliquer sur le bouton \'je suis sûr\'');
+define('_RESTORE_COMPLETE',            'Récupération terminée');
+
+// new item notification
+define('_NOTIFY_NI_MSG',               'Nouveau billet:');
+define('_NOTIFY_NI_TITLE',             'Nouveau!');
+define('_NOTIFY_KV_MSG',               'Votes Karma pour le billet:');
+define('_NOTIFY_KV_TITLE',             'Nucleus karma:');
+define('_NOTIFY_NC_MSG',               'Commentaires sur le billet:');
+define('_NOTIFY_NC_TITLE',             'Commentaire Nucleus:');
+define('_NOTIFY_USERID',               'Utilisateur:');
+define('_NOTIFY_USER',                 'Utilisateur:');
+define('_NOTIFY_COMMENT',              'Commentaire:');
+define('_NOTIFY_VOTE',                 'Vote:');
+define('_NOTIFY_HOST',                 'Hôte:');
+define('_NOTIFY_IP',                   'IP:');
+define('_NOTIFY_MEMBER',               'Participant:');
+define('_NOTIFY_TITLE',                        'Titre:');
+define('_NOTIFY_CONTENTS',             'Contenu:');
+
+// member mail message
+define('_MMAIL_MSG',                   'Vous avez reçu un message de');
+define('_MMAIL_FROMANON',              'un visiteur anonyme');
+define('_MMAIL_FROMNUC',               'Posté depuis un weblog Nucleus à');
+define('_MMAIL_TITLE',                 'Un message de');
+define('_MMAIL_MAIL',                  'Message:');
+>>>>>>> skinnable-master
 
 // END introduced after v1.5 END
 
@@ -645,6 +990,7 @@ define('_MMAIL_MAIL',                               'Viesti:');
 // START introduced after v1.1 START
 
 // bookmarklet buttons
+<<<<<<< HEAD
 define('_BMLET_ADD',                           'Lisää artikkeli');
 define('_BMLET_EDIT',                          'Muokkaa artikkelia');
 define('_BMLET_DELETE',                                'Poista artikkeli');
@@ -672,11 +1018,41 @@ define('_PLUGS_TITLE_NEW',                       'Asenna uusi laajennus');
 define('_PLUGS_ADD_TEXT',                      'Alla on lista kaikista tiedostoista Plugins -hakemistossasi, jotka voivat olla laajennuksia, joita ei vielä ole asennettu. Varmista että olet <strong>aivan varma</strong>, että kyseessä on laajennus, ennen kuin lisäät sen.');
 define('_PLUGS_BTN_INSTALL',           'Asenna laajennus');
 define('_BACKTOOVERVIEW',                      'Takaisin');
+=======
+define('_BMLET_ADD',                   'Ajouter un  billet');
+define('_BMLET_EDIT',                  'Modifier un billet');
+define('_BMLET_DELETE',                        'Effacer un billet');
+define('_BMLET_BODY',                  'Corps');
+define('_BMLET_MORE',                  'Développement');
+define('_BMLET_OPTIONS',               'Options');
+define('_BMLET_PREVIEW',               'Prévisualisation');
+
+// used in bookmarklet
+define('_ITEM_UPDATED',                        'Billet mis à jour');
+define('_ITEM_DELETED',                        'Billet effacé');
+
+// plugins
+define('_CONFIRMTXT_PLUGIN',           'Etes-vous sur de vouloir supprimer ce module?');
+define('_ERROR_NOSUCHPLUGIN',          'Pas de module correspondant');
+define('_ERROR_DUPPLUGIN',             'Désolé, ce module est déjà installé');
+define('_ERROR_PLUGFILEERROR',         'Ce module n\'existe pas, ou les permissions sont mal configurées');
+define('_PLUGS_NOCANDIDATES',          'Pas de module valide trouvé');
+
+define('_PLUGS_TITLE_MANAGE',          'Gérer les modules');
+define('_PLUGS_TITLE_INSTALLED',       'Déjà installés');
+define('_PLUGS_TITLE_UPDATE',          'Mettre à jour la liste des installations');
+define('_PLUGS_TEXT_UPDATE',           'Nucleus garde un cache des inscriptions des modules. Quand vous mettez à jour un module en remplaçant son fichier, vous devez utiliser cette fonction pour mettre à jour le cache.');
+define('_PLUGS_TITLE_NEW',             'Installer un nouveau module');
+define('_PLUGS_ADD_TEXT',              'Vous trouverez ci-dessous la liste de tous les fichiers contenus dans votre répertoire de plugins. Il peut s\'agir de modules non-installés. Soyez <strong>vraiment</strong> sûr qu\'il s\'agit d\'un module avant de l\'ajouter.');
+define('_PLUGS_BTN_INSTALL',           'Installer le module');
+define('_BACKTOOVERVIEW',              'Retour au sommaire');
+>>>>>>> skinnable-master
 
 // editlink
 define('_TEMPLATE_EDITLINK',           'Muokkaa artikkelia -linkki');
 
 // add left / add right tooltips
+<<<<<<< HEAD
 define('_ADD_LEFT_TT',                         'Lisää vasen palsta');
 define('_ADD_RIGHT_TT',                                'Lisää oikea palsta');
 
@@ -691,6 +1067,22 @@ define('_SETTINGS_PROTECTMEMNAMES',       'Suojaa j
 
 // overview screen
 define('_OVERVIEW_PLUGINS',                    'Laajennuksien hallinta');
+=======
+define('_ADD_LEFT_TT',                 'Ajouter un cadre à gauche');
+define('_ADD_RIGHT_TT',                        'Ajouter un cadre à droite');
+
+// add/edit item: new category (in dropdown box)
+define('_ADD_NEWCAT',                  'Nouveau thème...');
+
+// new settings
+define('_SETTINGS_PLUGINURL',          'URL des modules');
+define('_SETTINGS_MAXUPLOADSIZE',      'Taille maxi. du fichier téléchargé (bytes)');
+define('_SETTINGS_NONMEMBERMSGS',      'Autoriser les non-participants à envoyer des messages');
+define('_SETTINGS_PROTECTMEMNAMES',    'Protéger les noms des participants');
+
+// overview screen
+define('_OVERVIEW_PLUGINS',            'Gérer les modules...');
+>>>>>>> skinnable-master
 
 // actionlog
 define('_ACTIONLOG_NEWMEMBER',         'Uuden jäsenen rekisteröinti:');
@@ -699,6 +1091,7 @@ define('_ACTIONLOG_NEWMEMBER',             'Uuden j
 define('_MEMBERMAIL_MAIL',                     'Sähköpostiosoitteesi:');
 
 // file upload
+<<<<<<< HEAD
 define('_ERROR_DISALLOWEDUPLOAD2',     'Sinulla ei ole ylläpitäjän oikeuksia mihinkään blogiin, joilla on kohdejäsen listallaan. Täten, et ole oikeutettu lähettämään tiedostoja tämän jäsenen media -hakemistoon');
 
 // plugin list
@@ -713,11 +1106,28 @@ define('_LIST_PLUGS_DOWN',                       'Siirr
 define('_LIST_PLUGS_UNINSTALL',                'Poista&nbsp;installointi');
 define('_LIST_PLUGS_ADMIN',                    'Ylläpito');
 define('_LIST_PLUGS_OPTIONS',          'Säädä&nbsp;asetuksia');
+=======
+define('_ERROR_DISALLOWEDUPLOAD2',     'Vous n\'avez pas les droits d\'admin sur les blogs de ce participant. Vous n\'êtes donc pas autorisé à télécharger de fichier sur le répertoire media de ce participant.');
+
+// plugin list
+define('_LISTS_INFO',                  'Information');
+define('_LIST_PLUGS_AUTHOR',           'de:');
+define('_LIST_PLUGS_VER',              'Version:');
+define('_LIST_PLUGS_SITE',             'Visiter le site');
+define('_LIST_PLUGS_DESC',             'Description:');
+define('_LIST_PLUGS_SUBS',             'Inscription aux évènements suivants:');
+define('_LIST_PLUGS_UP',               'monter');
+define('_LIST_PLUGS_DOWN',             'descendre');
+define('_LIST_PLUGS_UNINSTALL',                'désinstaller');
+define('_LIST_PLUGS_ADMIN',            'admin');
+define('_LIST_PLUGS_OPTIONS',          'modifier les options');
+>>>>>>> skinnable-master
 
 // plugin option list
 define('_LISTS_VALUE',                         'Arvo');
 
 // plugin options
+<<<<<<< HEAD
 define('_ERROR_NOPLUGOPTIONS',         'Tällä laajennuksella ei ole asetuksia säädettävänä
 ');
 define('_PLUGS_BACK',                          'Takaisin Laajennukset -sivulle');
@@ -729,6 +1139,18 @@ define('_OVERVIEW_MANAGE',                        'Nucleuksen hallinta...');
 define('_MANAGE_GENERAL',                      'Yleinen hallinta');
 define('_MANAGE_SKINS',                                'Sivurungot ja asettelut');
 define('_MANAGE_EXTRA',                                'Lisäominaisuudet');
+=======
+define('_ERROR_NOPLUGOPTIONS',         'ce plugin n\'a pas d\'option');
+define('_PLUGS_BACK',                  'Retour au menu des modules');
+define('_PLUGS_SAVE',                  'Sauvegarder les options');
+define('_PLUGS_OPTIONS_UPDATED',       'Options du module mises à jour');
+
+define('_OVERVIEW_MANAGEMENT',         'Gestion');
+define('_OVERVIEW_MANAGE',             'Gestion de Nucleus...');
+define('_MANAGE_GENERAL',              'Gestion globale');
+define('_MANAGE_SKINS',                        'Habillages et modèles');
+define('_MANAGE_EXTRA',                        'Options supplémentaires');
+>>>>>>> skinnable-master
 
 define('_BACKTOMANAGE',                                'Takaisin Nucleuksen hallintaan');
 
@@ -740,6 +1162,7 @@ define('_BACKTOMANAGE',                            'Takaisin Nucleuksen hallintaan');
 
 
 // global stuff
+<<<<<<< HEAD
 define('_LOGOUT',                                      'Kirjaudu ulos');
 define('_LOGIN',                                       'Kirjaudu sisään');
 define('_YES',                                         'Kyllä');
@@ -776,6 +1199,43 @@ define('_LOGINFORM_NAME',                 'Tunnus');
 define('_LOGINFORM_PWD',                       'Salasana');
 define('_LOGINFORM_YOUARE',                    'Olet kirjautuneena<br />sisään tunnuksella<br />');
 define('_LOGINFORM_SHARED',                    'Usean käyttäjän tietokone');
+=======
+define('_LOGOUT',                      'Déconnexion');
+define('_LOGIN',                       'Connexion');
+define('_YES',                         'Oui');
+define('_NO',                          'Non');
+define('_SUBMIT',                      'Envoyer');
+define('_ERROR',                       'Erreur');
+define('_ERRORMSG',                    'Une erreur est survenue!');
+define('_BACK',                                'Retour');
+define('_NOTLOGGEDIN',                 'Non connecté');
+define('_LOGGEDINAS',                  'Connecté en tant que');
+define('_ADMINHOME',                   'Accueil');
+define('_NAME',                                'Nom');
+define('_BACKHOME',                    'Retour à l\'accueil');
+define('_BADACTION',                   'Action inconnue');
+define('_MESSAGE',                     'Message');
+define('_HELP_TT',                     'Aide!');
+define('_YOURSITE',                    'Votre site');
+
+
+define('_POPUP_CLOSE',                 'Fermer la fenêtre');
+
+define('_LOGIN_PLEASE',                        'Connectez-vous d\'abord, SVP');
+
+// commentform
+define('_COMMENTFORM_YOUARE',          'Vous êtes');
+define('_COMMENTFORM_SUBMIT',          'Ajouter un commentaire');
+define('_COMMENTFORM_COMMENT',         'Votre commentaire');
+define('_COMMENTFORM_NAME',            'Nom');
+define('_COMMENTFORM_REMEMBER',                'Retenir votre nom');
+
+// loginform
+define('_LOGINFORM_NAME',              'Nom d\'utilisateur');
+define('_LOGINFORM_PWD',               'Mot de passe');
+define('_LOGINFORM_YOUARE',            'Connecté en tant que');
+define('_LOGINFORM_SHARED',            'Ordinateur partagé');
+>>>>>>> skinnable-master
 
 // member mailform
 define('_MEMBERMAIL_SUBMIT',           'Lähetä viesti');
@@ -784,6 +1244,7 @@ define('_MEMBERMAIL_SUBMIT',               'L
 define('_SEARCHFORM_SUBMIT',           'Etsi');
 
 // add item form
+<<<<<<< HEAD
 define('_ADD_ADDTO',                           'Uusi artikkeli blogiin ');
 define('_ADD_CREATENEW',                       'Luo uusi artikkeli');
 define('_ADD_BODY',                                    'Sisältö');
@@ -1198,12 +1659,426 @@ define('_OVERVIEW_SETTINGS',           'S
 define('_OVERVIEW_TEMPLATES',          'Muokkaa asetteluja...');
 define('_OVERVIEW_SKINS',                      'Muokkaa sivurunkoja...');
 define('_OVERVIEW_BACKUP',                     'Tee varmuuskopio / palauta varmuuskopio...');
+=======
+define('_ADD_ADDTO',                   'Ajouter un billet à');
+define('_ADD_CREATENEW',               'Créer un nouveau billet');
+define('_ADD_BODY',                    'Corps');
+define('_ADD_TITLE',                   'Titre');
+define('_ADD_MORE',                    'Développement (facultatif)');
+define('_ADD_CATEGORY',                        'Thème');
+define('_ADD_PREVIEW',                 'Prévisualisation');
+define('_ADD_DISABLE_COMMENTS',                'Interdire les commentaires?');
+define('_ADD_DRAFTNFUTURE',            'Brouillons &amp; billets à venir');
+define('_ADD_ADDITEM',                 'Ajouter le billet');
+define('_ADD_ADDNOW',                  'Ajouter maintenant');
+define('_ADD_PLACE_ON',                        'Daté du');
+define('_ADD_ADDDRAFT',                        'Ajouter aux brouillons');
+define('_ADD_NOPASTDATES',             '(Les dates et heures passées ne sont pas valides, la date d\'aujourd\'hui sera utilisée)');
+define('_ADD_BOLD_TT',                 'Gras');
+define('_ADD_ITALIC_TT',               'Italiques');
+define('_ADD_HREF_TT',                 'Faire un lien');
+define('_ADD_MEDIA_TT',                        'Ajouter un document');
+define('_ADD_PREVIEW_TT',              'Montrer/cacher la prévisualisation');
+define('_ADD_CUT_TT',                  'Couper');
+define('_ADD_COPY_TT',                 'Copier');
+define('_ADD_PASTE_TT',                        'Coller');
+
+
+// edit item form
+define('_EDIT_ITEM',                   'Modifier le billet');
+define('_EDIT_SUBMIT',                 'Valider');
+define('_EDIT_ORIG_AUTHOR',            'Auteur');
+define('_EDIT_BACKTODRAFTS',           'Remettre aux brouillons');
+define('_EDIT_COMMENTSNOTE',           '(NB: Désactiver les commentaires ne cachera pas les anciens)');
+
+// used on delete screens
+define('_DELETE_CONFIRM',              'SVP, confirmez la suppression');
+define('_DELETE_CONFIRM_BTN',          'Confirmer');
+define('_CONFIRMTXT_ITEM',             'Vous allez effacer le billet suivant:');
+define('_CONFIRMTXT_COMMENT',          'Vous allez effacer le commentaire suivant:');
+define('_CONFIRMTXT_TEAM1',            'Vous allez effacer ');
+define('_CONFIRMTXT_TEAM2',            ' de l\'équipe pour le blog ');
+define('_CONFIRMTXT_BLOG',             'Le blog que vous allez effacer est: ');
+define('_WARNINGTXT_BLOGDEL',          'Attention! Effacer un blog effarcera TOUS les billets de ce blog et tous les commentaires associés. Soyez certain de ne pas faire erreur. <br />Et n\'interrompez pas le processus.');
+define('_CONFIRMTXT_MEMBER',           'Vous allez effacer le profil du participant suivant: ');
+define('_CONFIRMTXT_TEMPLATE',         'Vous allez effacer le modèle  ');
+define('_CONFIRMTXT_SKIN',             'Vous allez effacer l\'habillage ');
+define('_CONFIRMTXT_BAN',              'Vous allez annuler l\'exclusion de la plage IP');
+define('_CONFIRMTXT_CATEGORY',         'Vous allez effacer le thème ');
+
+// some status messages
+define('_DELETED_ITEM',                        'Billet supprimé');
+define('_DELETED_MEMBER',              'Participant effacé');
+define('_DELETED_COMMENT',             'Commentaire supprimé');
+define('_DELETED_BLOG',                        'Blog effacé');
+define('_DELETED_CATEGORY',            'Categorie supprimée');
+define('_ITEM_MOVED',                  'Billet déplacé');
+define('_ITEM_ADDED',                  'Billet ajouté');
+define('_COMMENT_UPDATED',             'Commentaire mis à jour');
+define('_SKIN_UPDATED',                        'Habillage modifié');
+define('_TEMPLATE_UPDATED',            'Modèle modifié');
+
+// errors
+define('_ERROR_COMMENT_LONGWORD',      'SVP, n\'employez pas de mot de plus de 90 caractères dans votre commentaire');
+define('_ERROR_COMMENT_NOCOMMENT',     'Tapez votre commentaire');
+define('_ERROR_COMMENT_NOUSERNAME',    'Nom invalide');
+define('_ERROR_COMMENT_TOOLONG',       'Votre commentaire est trop long (max. 5000 cars)');
+define('_ERROR_COMMENTS_DISABLED',     'Les commentaires sur ce blog sont actuellement désactivés.');
+define('_ERROR_COMMENTS_NONPUBLIC',    'Vous devez être connecté en tant que participant pour pouvoir commenter ce blog.');
+define('_ERROR_COMMENTS_MEMBERNICK',   'Ce nom est déjà utilisé par un participant du blog. Choisissez autre chose.');
+define('_ERROR_SKIN',                  'Erreur d\'habillage');
+define('_ERROR_ITEMCLOSED',            'Ce billet est protégé. Il n\'est pas possible de le commenter ni de voter pour lui.');
+define('_ERROR_NOSUCHITEM',            'Billet inexistant');
+define('_ERROR_NOSUCHBLOG',            'Blog inexistant');
+define('_ERROR_NOSUCHSKIN',            'Habillage inexistant');
+define('_ERROR_NOSUCHMEMBER',          'Participant inexistant');
+define('_ERROR_NOTONTEAM',             'Vous n\'appartenez pas à l\'équipe de ce blog.');
+define('_ERROR_BADDESTBLOG',           'Le blog de destination n\'existe pas.');
+define('_ERROR_NOTONDESTTEAM',         'Impossible de déplacer le billet car vous ne faites pas partie de l\'équipe du blog de destination.');
+define('_ERROR_NOEMPTYITEMS',          'Impossible d\'ajouter un billet vide!');
+define('_ERROR_BADMAILADDRESS',                'Adresse email incorrecte');
+define('_ERROR_BADNOTIFY',             'Adresse(s) de notification incorrecte(s)');
+define('_ERROR_BADNAME',               'Nom incorrect (seuls les lettres de a à z et les chiffres de 0 à 9 sont autorisés, sans espace au début ni à la fin)');
+define('_ERROR_NICKNAMEINUSE',         'Un autre participant utilise déjà ce nom');
+define('_ERROR_PASSWORDMISMATCH',      'Les mots de passe doivent correspondre');
+define('_ERROR_PASSWORDTOOSHORT',      'Le mot de passe doit commprendre au moins 6 caractères');
+define('_ERROR_PASSWORDMISSING',       'Il FAUT un mot de passe');
+define('_ERROR_REALNAMEMISSING',       'Vous devez inscrire votre nom');
+define('_ERROR_ATLEASTONEADMIN',       'Il doit toujours y avoir un super admin qui puisse se connecter.');
+define('_ERROR_ATLEASTONEBLOGADMIN',   'Cela empêcherait la gestion de votre blog. Assurez-vous qu\'il y ait toujours au-moins un administrateur.');
+define('_ERROR_ALREADYONTEAM',         'Ce participant est déjà dans l\'équipe');
+define('_ERROR_BADSHORTBLOGNAME',      'Le diminutif du blog ne peut contenir que des lettres de a à z et des chiffres de 0 à 9, sans espace.');
+define('_ERROR_DUPSHORTBLOGNAME',      'Un autre blog utilise déjà ce diminutif. Les diminutifs doivent être uniques.');
+define('_ERROR_UPDATEFILE',            'Impossible de mettre à jour le fichier. Vérifiez le réglage de permissions d\'écriture (faites un chmod 666). Remarquez aussi que le chemin est relatif au répertoire de la zone admin ; vous devriez utiliser un chemin absolu (quelque chose comme /votre/chemin/vers/nucleus/)');
+define('_ERROR_DELDEFBLOG',            'Impossible d\'effacer le blog par défaut');
+define('_ERROR_DELETEMEMBER',          'Impossible de supprimer ce participant car il est probablement l\'auteur de billets ou de commentaires.');
+define('_ERROR_BADTEMPLATENAME',       'Nom de modèle incorrect, n\'utilisez que des lettres de a à z et des chiffres de 0 à 9, sans espace.');
+define('_ERROR_DUPTEMPLATENAME',       'Il existe déjà un modèle de ce nom');
+define('_ERROR_BADSKINNAME',           'Nom d\'habillage incorrect, n\'utilisez que des lettres de a à z et des chiffres de 0 à 9, sans espace.');
+define('_ERROR_DUPSKINNAME',           'Il existe déjà un habillage de ce nom');
+define('_ERROR_DEFAULTSKIN',           'Il doit toujours subsister un habillage nommé "default"');
+define('_ERROR_SKINDEFDELETE',         'Impossible de supprimer l\'habillage car il s\'agit de l\'habillage par défaut du blog: ');
+define('_ERROR_DISALLOWED',            'Vous n\'êtes pas autorisé à faire cela');
+define('_ERROR_DELETEBAN',             'Erreur en essayant de supprimer l\'exclusion (elle n\'existe pas)');
+define('_ERROR_ADDBAN',                        'Erreur en essayant d\'ajouter l\'exclusion. L\'exclusion n\'a pas été ajoutée correctement dans tous vos blogs.');
+define('_ERROR_BADACTION',             'L\'action demandée n\'existe pas');
+define('_ERROR_MEMBERMAILDISABLED',    'Messages de participant à participant désactivés');
+define('_ERROR_MEMBERCREATEDISABLED',  'Creation de nouveaux comptes désactivée');
+define('_ERROR_INCORRECTEMAIL',                'Email incorrect');
+define('_ERROR_VOTEDBEFORE',           'Vous avez déjà voté pour ce billet');
+define('_ERROR_BANNED1',               'Action impossible car vous (plage IP ');
+define('_ERROR_BANNED2',                       ') êtes exclu. Le message était: \'');
+define('_ERROR_BANNED3',                       '\'');
+define('_ERROR_LOGINNEEDED',           'Vous devez être connecté pour faire cela');
+define('_ERROR_CONNECT',               'Erreur de connexion');
+define('_ERROR_FILE_TOO_BIG',          'Fichier trop gros!');
+define('_ERROR_BADFILETYPE',           'Désolé, cette extension n\'est pas autorisée');
+define('_ERROR_BADREQUEST',            'Mauvaise demande de téléchargement');
+define('_ERROR_DISALLOWEDUPLOAD',      'Vous ne faites partie d\'aucune équipe. Vous n\'êtes donc pas autorisé à télécharger des fichiers.');
+define('_ERROR_BADPERMISSIONS',                'Les permissions de fichiers/répertoires ne sont pas correctement configurées');
+define('_ERROR_UPLOADMOVEP',           'Erreur de déplacement de fichier');
+define('_ERROR_UPLOADCOPY',            'Erreur de copie de fichier');
+define('_ERROR_UPLOADDUPLICATE',       'Un fichier de ce nom existe déjà. Essayez de le renommer avant de le télécharger.');
+define('_ERROR_LOGINDISALLOWED',       'Désolé, vous n\'êtes pas autorisé à vous connecter à la zone admin. Vous pouvez vous connecter sous un autre nom');
+define('_ERROR_DBCONNECT',             'Impossible de se connecter au serveur mySQL');
+define('_ERROR_DBSELECT',              'Impossible de sélectionner la base Nucleus.');
+define('_ERROR_NOSUCHLOCALE',          'Fichier de langue indisponible');
+define('_ERROR_NOSUCHCATEGORY',                'Thème indisponible');
+define('_ERROR_DELETELASTCATEGORY',    'Il doit y avoir au moins un thème');
+define('_ERROR_DELETEDEFCATEGORY',     'Impossible d\'effacerle thème par défaut');
+define('_ERROR_BADCATEGORYNAME',       'Nom de thème incorrect');
+define('_ERROR_DUPCATEGORYNAME',       'Ce thème existe déjà');
+
+// some warnings (used for mediadir setting)
+define('_WARNING_NOTADIR',             'Attention: ceci n\'est pas un répertoire!');
+define('_WARNING_NOTREADABLE',         'Attention: ceci n\'est pas un répertoire avec droit de lecture!');
+define('_WARNING_NOTWRITABLE',         'Attention: ceci n\'est pas un répertoire avec droit d\'écriture!');
+
+// media and upload
+define('_MEDIA_UPLOADLINK',            'Télécharger un nouveau fichier');
+define('_MEDIA_MODIFIED',              'modifié');
+define('_MEDIA_FILENAME',              'nom de fichier');
+define('_MEDIA_DIMENSIONS',            'dimensions');
+define('_MEDIA_INLINE',                        'Inséré');
+define('_MEDIA_POPUP',                 'Popup');
+define('_UPLOAD_TITLE',                        'Choisir le fichier');
+define('_UPLOAD_MSG',                  'Sélectionnez le fichier à télécharger ci-dessous et pressez le bouton \'Télécharger\'.');
+define('_UPLOAD_BUTTON',               'Télécharger');
+
+// some status messages
+//define('_MSG_ACCOUNTCREATED',                'Compte créé, le mot de passe sera envoyé par email');
+//define('_MSG_PASSWORDSENT',          'Mot de passe envoyé par email');
+define('_MSG_LOGINAGAIN',              'Vous devrez vous reconnecter car vos informations ont changé');
+define('_MSG_SETTINGSCHANGED',         'Réglages modifiés');
+define('_MSG_ADMINCHANGED',            'Admin changé');
+define('_MSG_NEWBLOG',                 'Nouveau blog créé');
+define('_MSG_ACTIONLOGCLEARED',                'Journal effacé');
+
+// actionlog in admin area
+define('_ACTIONLOG_DISALLOWED',                'Action interdite: ');
+define('_ACTIONLOG_PWDREMINDERSENT',   'Nouveau mot de passe envoyé pour ');
+define('_ACTIONLOG_TITLE',             'Journal des événements');
+define('_ACTIONLOG_CLEAR_TITLE',       'Effacer le journal des événements');
+define('_ACTIONLOG_CLEAR_TEXT',                'Effacer le journal des événements maintenant');
+
+// team management
+define('_TEAM_TITLE',                  'Gérer les participants ');
+define('_TEAM_CURRENT',                        'Equipe actuelle');
+define('_TEAM_ADDNEW',                 'Ajouter un participant');
+define('_TEAM_CHOOSEMEMBER',           'Choisir un participant');
+define('_TEAM_ADMIN',                  'Privilèges d\'administrateur? ');
+define('_TEAM_ADD',                    'Ajouter à l\'équipe');
+define('_TEAM_ADD_BTN',                        'Ajouter!');
+
+// blogsettings
+define('_EBLOG_TITLE',                 'Modifier les réglages du blog');
+define('_EBLOG_TEAM_TITLE',            'Modifier l\'équipe');
+define('_EBLOG_TEAM_TEXT',             'Cliquez ici pour modifier votre équipe...');
+define('_EBLOG_SETTINGS_TITLE',                'Réglages du blog');
+define('_EBLOG_NAME',                  'Nom du blog');
+define('_EBLOG_SHORTNAME',             'Diminutif');
+define('_EBLOG_SHORTNAME_EXTRA',       '<br />(seulement de a à z et sans espace)');
+define('_EBLOG_DESC',                  'Description');
+define('_EBLOG_URL',                   'URL');
+define('_EBLOG_DEFSKIN',               'Habillage par défaut');
+define('_EBLOG_DEFCAT',                        'Thème par défaut');
+define('_EBLOG_LINEBREAKS',            'Convertir les sauts de ligne');
+define('_EBLOG_DISABLECOMMENTS',       'Activer les commentaires?<br /><small>(Cela signifie qu\'il sera impossible d\'en ajouter.)</small>');
+define('_EBLOG_ANONYMOUS',             'Autoriser les commentaires par des non-participants?');
+define('_EBLOG_NOTIFY',                        'Adresse(s) de notification (séparées par des ;)');
+define('_EBLOG_NOTIFY_ON',             'Notification activée');
+define('_EBLOG_NOTIFY_COMMENT',                'Nouveaux commentaires');
+define('_EBLOG_NOTIFY_KARMA',          'Nouveaux votes karma');
+define('_EBLOG_NOTIFY_ITEM',           'Nouveau billet');
+define('_EBLOG_PING',                  'Pinger Weblogs.com à la mise à jour?');
+define('_EBLOG_MAXCOMMENTS',           'Nombre maximum de commentaires');
+define('_EBLOG_UPDATE',                        'Fichier de mise-à-jour');
+define('_EBLOG_OFFSET',                        'Décalage horaire');
+define('_EBLOG_STIME',                 'Heure du serveur:');
+define('_EBLOG_BTIME',                 'Heure du blog:');
+define('_EBLOG_CHANGE',                        'Changer les réglages');
+define('_EBLOG_CHANGE_BTN',            'Valider');
+define('_EBLOG_ADMIN',                 'Gérer le blog');
+define('_EBLOG_ADMIN_MSG',             'Les privilèges d\'administrateur vous seront attribués');
+define('_EBLOG_CREATE_TITLE',          'Créer un nouveau blog');
+define('_EBLOG_CREATE_TEXT',           'Remplissez le formulaire ci-dessous pour créer un nouveau blog. <br /><br /> <b>NB:</b> Seules les options nécessaires sont listées. Pour plus d\'options, changez les paramètres après la création.');
+define('_EBLOG_CREATE',                        'Créer le blog');
+define('_EBLOG_CREATE_BTN',            'Créer');
+define('_EBLOG_CAT_TITLE',             'Thèmes');
+define('_EBLOG_CAT_NAME',              'Thèmes');
+define('_EBLOG_CAT_DESC',              'Description du thème');
+define('_EBLOG_CAT_CREATE',            'Créer un nouveau thème');
+define('_EBLOG_CAT_UPDATE',            'Mettre à jour le thème');
+define('_EBLOG_CAT_UPDATE_BTN',                'Mettre à jour le thème');
+
+// templates
+define('_TEMPLATE_TITLE',              'Modifier les modèles');
+define('_TEMPLATE_AVAILABLE_TITLE',    'Modèles disponibles');
+define('_TEMPLATE_NEW_TITLE',          'Nouveau modèle');
+define('_TEMPLATE_NAME',               'Nom du modèle');
+define('_TEMPLATE_DESC',               'Description du modèle');
+define('_TEMPLATE_CREATE',             'Créer le modèle');
+define('_TEMPLATE_CREATE_BTN',         'Créer le modèle');
+define('_TEMPLATE_EDIT_TITLE',         'Modifier le modèle');
+define('_TEMPLATE_BACK',               'Retour au sommaire des modèles');
+define('_TEMPLATE_EDIT_MSG',           'Tous les éléments de modèle ne sont pas nécessaires. Laissez vides ceux dont vous n\'avez pas besoin');
+define('_TEMPLATE_SETTINGS',           'Réglages de modèle');
+define('_TEMPLATE_ITEMS',              'Billet');
+define('_TEMPLATE_ITEMHEADER',         'En-tête du billet');
+define('_TEMPLATE_ITEMBODY',           'Corps du billet');
+define('_TEMPLATE_ITEMFOOTER',         'Pied du billet');
+define('_TEMPLATE_MORELINK',           'Lien vers le développement');
+define('_TEMPLATE_NEW',                        'Indication de nouveau billet');
+define('_TEMPLATE_COMMENTS_ANY',       'Commentaires (si nécessaire)');
+define('_TEMPLATE_CHEADER',            'En-tête des commentaires');
+define('_TEMPLATE_CBODY',              'Corps des commentaires');
+define('_TEMPLATE_CFOOTER',            'Pied des commentaires');
+define('_TEMPLATE_CONE',               'Un seul commentaire');
+define('_TEMPLATE_CMANY',              'Deux (ou plus) commentaires');
+define('_TEMPLATE_CMORE',              'Commentaires: en voir plus');
+define('_TEMPLATE_CMEXTRA',            'Infos participant');
+define('_TEMPLATE_COMMENTS_NONE',      'Commentaire (si aucun)');
+define('_TEMPLATE_CNONE',              'Pas de commentaire');
+define('_TEMPLATE_COMMENTS_TOOMUCH',   'Commentaires (s\'il y en a, mais trop pour les montrer tous)');
+define('_TEMPLATE_CTOOMUCH',           'Trop de commentaires');
+define('_TEMPLATE_ARCHIVELIST',                'Listes d\'archives');
+define('_TEMPLATE_AHEADER',            'En-tête d\'archives');
+define('_TEMPLATE_AITEM',              'Archive (billet)');
+define('_TEMPLATE_AFOOTER',            'Pied de liste d\'archives');
+define('_TEMPLATE_DATETIME',           'Date et heure');
+define('_TEMPLATE_DHEADER',            'En-tête de date');
+define('_TEMPLATE_DFOOTER',            'Pied de date');
+define('_TEMPLATE_DFORMAT',            'Format de la date');
+define('_TEMPLATE_TFORMAT',            'Format de l\'heure');
+define('_TEMPLATE_LOCALE',             'Locale');
+define('_TEMPLATE_IMAGE',              'Fenêtre popup');
+define('_TEMPLATE_PCODE',              'Code de lien popup');
+define('_TEMPLATE_ICODE',              'Code d\'image insérée');
+define('_TEMPLATE_MCODE',              'Code lien objet media');
+define('_TEMPLATE_SEARCH',             'Recherche');
+define('_TEMPLATE_SHIGHLIGHT',         'Surbrillance');
+define('_TEMPLATE_SNOTFOUND',          'Rien trouvé');
+define('_TEMPLATE_UPDATE',             'Mettre à jour');
+define('_TEMPLATE_UPDATE_BTN',         'Mettre à jour le modème');
+define('_TEMPLATE_RESET_BTN',          'Rétablir les données');
+define('_TEMPLATE_CATEGORYLIST',       'Listes de thèmes');
+define('_TEMPLATE_CATHEADER',          'En-tête de liste de thèmes');
+define('_TEMPLATE_CATITEM',            'Liste des thèmes (billet)');
+define('_TEMPLATE_CATFOOTER',          'Pied de liste de thèmes');
+
+// skins
+define('_SKIN_EDIT_TITLE',             'Modification des habillages');
+define('_SKIN_AVAILABLE_TITLE',                'Habillages disponibles');
+define('_SKIN_NEW_TITLE',              'Nouvel habillage');
+define('_SKIN_NAME',                   'Nom');
+define('_SKIN_DESC',                   'Description');
+define('_SKIN_TYPE',                   'Type de contenu');
+define('_SKIN_CREATE',                 'Créer l\'habillage');
+define('_SKIN_CREATE_BTN',             'Créer');
+define('_SKIN_EDITONE_TITLE',          'Modifier l\'habillage');
+define('_SKIN_BACK',                   'Retour au menu habillage');
+define('_SKIN_PARTS_TITLE',            'Elements d\'habillage');
+define('_SKIN_PARTS_MSG',              'Tous les éléments ne sont pas requis. Laissez vides ceux dont vous n\'avez pas esoin. Choisissez ci-dessous l\'élément d\'habillage à modifier:');
+define('_SKIN_PART_MAIN',              'Page index');
+define('_SKIN_PART_ITEM',              'Page billet');
+define('_SKIN_PART_ALIST',             'Liste des archives');
+define('_SKIN_PART_ARCHIVE',           'Archive');
+define('_SKIN_PART_SEARCH',            'Recherche');
+define('_SKIN_PART_ERROR',             'Erreurs');
+define('_SKIN_PART_MEMBER',            'Fiches des participants');
+define('_SKIN_PART_POPUP',             'Fenêtres Popups');
+define('_SKIN_GENSETTINGS_TITLE',      'Réglages d\'ensemble');
+define('_SKIN_CHANGE',                 'Modifier');
+define('_SKIN_CHANGE_BTN',             'Modifier ces réglages');
+define('_SKIN_UPDATE_BTN',             'Mettre à jour');
+define('_SKIN_RESET_BTN',              'Rétablir');
+define('_SKIN_EDITPART_TITLE',         'Modifier l\'habillage');
+define('_SKIN_GOBACK',                 'Retour');
+define('_SKIN_ALLOWEDVARS',            'Variables autorisées (cliquer pour info):');
+
+// global settings
+define('_SETTINGS_TITLE',              'Réglages d\'ensemble');
+define('_SETTINGS_SUB_GENERAL',                'Réglages d\'ensemble');
+define('_SETTINGS_DEFBLOG',            'Blog par défaut');
+define('_SETTINGS_ADMINMAIL',          'Email de l\'administrateur');
+define('_SETTINGS_SITENAME',           'Nom du site');
+define('_SETTINGS_SITEURL',            'URL du site (terminé par un /)');
+define('_SETTINGS_ADMINURL',           'URL de la zone admin (terminé par un /)');
+define('_SETTINGS_DIRS',               'Répertoires Nucleus');
+define('_SETTINGS_MEDIADIR',           'Répertoire media');
+define('_SETTINGS_SEECONFIGPHP',       '(voir config.php)');
+define('_SETTINGS_MEDIAURL',           'URL du repertoire media (terminé par un /)');
+define('_SETTINGS_ALLOWUPLOAD',                'Autoriser le téléchargement ascendant de fichier?');
+define('_SETTINGS_ALLOWUPLOADTYPES',   'Indiquer les extensions de fichier autorisées');
+define('_SETTINGS_CHANGELOGIN',                'Autoriser les participants à changer de login/mot de passe?');
+define('_SETTINGS_COOKIES_TITLE',      'Paramètres des cookies');
+define('_SETTINGS_COOKIELIFE',         'Durée de vie du cookie de connexion');
+define('_SETTINGS_COOKIESESSION',      'Cookies de session');
+define('_SETTINGS_COOKIEMONTH',                'Durée de vie d\'un mois');
+define('_SETTINGS_COOKIEPATH',         'Chemin du cookie (utilisateur averti)');
+define('_SETTINGS_COOKIEDOMAIN',       'Domaine du cookie (utilisateur averti)');
+define('_SETTINGS_COOKIESECURE',       'Cookie de sécurité (utilisateur averti)');
+define('_SETTINGS_LASTVISIT',          'Garder les cookies de la dernière visite');
+define('_SETTINGS_ALLOWCREATE',                'Autoriser les visiteurs à créer un compte');
+define('_SETTINGS_NEWLOGIN',           'Connexion autorisée pour les comptes créés par des utilisateurs');
+define('_SETTINGS_NEWLOGIN2',          '(ne vaut que pour les comptes récemment créés)');
+define('_SETTINGS_MEMBERMSGS',         'Autoriser les services de participant à participant');
+define('_SETTINGS_LOCALE',             'Langue par défaut');
+define('_SETTINGS_DISABLESITE',                'Désactiver le site');
+define('_SETTINGS_DBLOGIN',            'mySQL Login &amp; Database');
+define('_SETTINGS_UPDATE',             'Mettre à jour les réglages');
+define('_SETTINGS_UPDATE_BTN',         'Mettre à jour');
+define('_SETTINGS_DISABLEJS',          'Désactiver la barre d\'outils JavaScript');
+define('_SETTINGS_MEDIA',              'Paramètres de téléchargement de médias');
+define('_SETTINGS_MEDIAPREFIX',                'Préfixer le nom des fichiers avec la date');
+define('_SETTINGS_MEMBERS',            'Réglages des participants');
+
+// bans
+define('_BAN_TITLE',                   'Liste des exclusions pour');
+define('_BAN_NONE',                    'Pas d\'exclusion pour ce blog');
+define('_BAN_NEW_TITLE',               'Ajouter une exclusion');
+define('_BAN_NEW_TEXT',                        'Ajouter une exclusion maintenant');
+define('_BAN_REMOVE_TITLE',            'Retirer une exclusion');
+define('_BAN_IPRANGE',                 'Plage IP');
+define('_BAN_BLOGS',                   'Quels blogs?');
+define('_BAN_DELETE_TITLE',            'Supprimer une exclusion');
+define('_BAN_ALLBLOGS',                        'Tous les blogs dont vous êtes administrateur.');
+define('_BAN_REMOVED_TITLE',           'Exclusion supprimée');
+define('_BAN_REMOVED_TEXT',            'L\'exclusion a été supprimée pour les blogs suivants:');
+define('_BAN_ADD_TITLE',               'Définir des exclusions');
+define('_BAN_IPRANGE_TEXT',            'Choisissez la plage IP que vous voulez bloquer. Moins il y aura de nombres, plus il y aura d\'IP bloquées.');
+define('_BAN_BLOGS_TEXT',              'Vous pouvez choisir d\'exclure une IP pour un blog seulement ou pour tous ceux dont vous êtes admin. Choisissez ici.');
+define('_BAN_REASON_TITLE',            'Motif');
+define('_BAN_REASON_TEXT',             'Vous pouvez motiver l\'exclusion: La raison s\'affichera quand l\'IP concernée essaiera d\'ajouter un commentaire ou un vote. Longueur max. 256 caractères.');
+define('_BAN_ADD_BTN',                 'Exclure');
+
+// LOGIN screen
+define('_LOGIN_MESSAGE',               'Message');
+define('_LOGIN_SHARED',                        _LOGINFORM_SHARED);
+define('_LOGIN_FORGOT',                        'Mot de passe oublié?');
+
+// membermanagement
+define('_MEMBERS_TITLE',               'Gestion des participants');
+define('_MEMBERS_CURRENT',             'Participants actuels');
+define('_MEMBERS_NEW',                 'Nouveau participant');
+define('_MEMBERS_DISPLAY',             'Nom affiché');
+define('_MEMBERS_DISPLAY_INFO',                '(C\'est le nom que vous utilisez pour vous connecter)');
+define('_MEMBERS_REALNAME',            'Nom');
+define('_MEMBERS_PWD',                 'Mot de passe');
+define('_MEMBERS_REPPWD',              'Répéter le mot de passe');
+define('_MEMBERS_EMAIL',               'Adresse email');
+define('_MEMBERS_EMAIL_EDIT',          '(Quand vous changez d\'adresse email, un nouveau mot de passe est envoyé à cette adresse)');
+define('_MEMBERS_URL',                 'Adresse du site (URL)');
+define('_MEMBERS_SUPERADMIN',          'Privilèges de super admin');
+define('_MEMBERS_CANLOGIN',            'Peut ouvrir une session comme admin');
+define('_MEMBERS_NOTES',               'Notes');
+define('_MEMBERS_NEW_BTN',             'Ajouter un participant');
+define('_MEMBERS_EDIT',                        'Modifier les participants');
+define('_MEMBERS_EDIT_BTN',            'Modifier');
+define('_MEMBERS_BACKTOOVERVIEW',      'Retour au sommaire des participants');
+define('_MEMBERS_LOCALE',              'Langue');
+define('_MEMBERS_USESITELANG',         '- utiliser les réglages du site -');
+
+// List of blogs (TT = tooltip)
+define('_BLOGLIST_TT_VISIT',           'Visiter le site');
+define('_BLOGLIST_ADD',                        'Ajouter un billet');
+define('_BLOGLIST_TT_ADD',             'Ajouter un billet à ce blog');
+define('_BLOGLIST_EDIT',               'Modifier/Supprimer les billets');
+define('_BLOGLIST_TT_EDIT',            '');
+define('_BLOGLIST_BMLET',              'Bookmarklet');
+define('_BLOGLIST_TT_BMLET',           '');
+define('_BLOGLIST_SETTINGS',           'Paramètres');
+define('_BLOGLIST_TT_SETTINGS',                'Modifier réglages ou gérer équipe');
+define('_BLOGLIST_BANS',               'Exclusions');
+define('_BLOGLIST_TT_BANS',            'Consulter, ajouter ou supprimer les exclusions IP');
+define('_BLOGLIST_DELETE',             'Tout effacer');
+define('_BLOGLIST_TT_DELETE',          'Effacer ce blog');
+
+// OVERVIEW screen
+define('_OVERVIEW_YRBLOGS',            'Vos blogs');
+define('_OVERVIEW_YRDRAFTS',           'Vos brouillons');
+define('_OVERVIEW_YRSETTINGS',         'Vos réglages');
+define('_OVERVIEW_GSETTINGS',          'Réglages d\'ensemble');
+define('_OVERVIEW_NOBLOGS',            'Vous ne faites partie d\'aucune équipe');
+define('_OVERVIEW_NODRAFTS',           'Pas  de brouillon');
+define('_OVERVIEW_EDITSETTINGS',       'Modifier vos réglages...');
+define('_OVERVIEW_BROWSEITEMS',                'Consulter vos billets...');
+define('_OVERVIEW_BROWSECOMM',         'Consulter vos commentaires...');
+define('_OVERVIEW_VIEWLOG',            'Consulter le journal des événements...');
+define('_OVERVIEW_MEMBERS',            'Gérer les participants...');
+define('_OVERVIEW_NEWLOG',             'Créer un nouveau blog...');
+define('_OVERVIEW_SETTINGS',           'Modifier les réglages...');
+define('_OVERVIEW_TEMPLATES',          'Modifier les modèles...');
+define('_OVERVIEW_SKINS',              'Modifier les habillages...');
+define('_OVERVIEW_BACKUP',             'Sauvegarde/Récupération...');
+>>>>>>> skinnable-master
 
 // ITEMLIST
 define('_ITEMLIST_BLOG',                       'Artikkelit blogiin'); 
 define('_ITEMLIST_YOUR',                       'Artikkelisi');
 
 // Comments
+<<<<<<< HEAD
 define('_COMMENTS',                                    'Kommentteja');
 define('_NOCOMMENTS',                          'Ei kommentteja tähän artikkeliin');
 define('_COMMENTS_YOUR',                       'Kommenttisi');
@@ -1236,6 +2111,40 @@ define('_LIST_MEMBER_RNAME',             'Oikea nimi');
 define('_LIST_MEMBER_ADMIN',           'Ylijärjestelmänvalvoja? ');
 define('_LIST_MEMBER_LOGIN',           'Voi kirjautua sisään? ');
 define('_LIST_MEMBER_URL',                     'Verkkosivut');
+=======
+define('_COMMENTS',                    'Commentaires');
+define('_NOCOMMENTS',                  'Pas de commentaire pour ce billet');
+define('_COMMENTS_YOUR',               'Vos commentaires');
+define('_NOCOMMENTS_YOUR',             'Vous n\'avez pas écrit de commentaire');
+
+// LISTS (general)
+define('_LISTS_NOMORE',                        'Rien de plus ou pas de résultat du tout');
+define('_LISTS_PREV',                  'Précédent');
+define('_LISTS_NEXT',                  'Suivant');
+define('_LISTS_SEARCH',                        'Rechercher');
+define('_LISTS_CHANGE',                        'Changer');
+define('_LISTS_PERPAGE',               'billets/page');
+define('_LISTS_ACTIONS',               'Actions');
+define('_LISTS_DELETE',                        'Supprimer');
+define('_LISTS_EDIT',                  'Modifier');
+define('_LISTS_MOVE',                  'Déplacer');
+define('_LISTS_CLONE',                 'Dupliquer');
+define('_LISTS_TITLE',                 'Titre');
+define('_LISTS_BLOG',                  'Blog');
+define('_LISTS_NAME',                  'Nom');
+define('_LISTS_DESC',                  'Description');
+define('_LISTS_TIME',                  'Heure');
+define('_LISTS_COMMENTS',              'Commentaires');
+define('_LISTS_TYPE',                  'Type');
+
+
+// member list
+define('_LIST_MEMBER_NAME',            'Nom affiché');
+define('_LIST_MEMBER_RNAME',           'Nom');
+define('_LIST_MEMBER_ADMIN',           'Super admin? ');
+define('_LIST_MEMBER_LOGIN',           'Peut se connecter? ');
+define('_LIST_MEMBER_URL',             'Site');
+>>>>>>> skinnable-master
 
 // banlist
 define('_LIST_BAN_IPRANGE',                    'IP-osoite');
@@ -1245,10 +2154,17 @@ define('_LIST_BAN_REASON',                      'Syy');
 define('_LIST_ACTION_MSG',                     'Viesti');
 
 // commentlist
+<<<<<<< HEAD
 define('_LIST_COMMENT_BANIP',          'Estä IP');
 define('_LIST_COMMENT_WHO',                    'Kirjoittaja');
 define('_LIST_COMMENT',                                'Kommentti');
 define('_LIST_COMMENT_HOST',           'Isäntäkone');
+=======
+define('_LIST_COMMENT_BANIP',          'Exclure l\'IP');
+define('_LIST_COMMENT_WHO',            'Auteur');
+define('_LIST_COMMENT',                        'Commentaire');
+define('_LIST_COMMENT_HOST',           'Hôte');
+>>>>>>> skinnable-master
 
 // itemlist
 define('_LIST_ITEM_INFO',                      'Info');
@@ -1260,6 +2176,7 @@ define('_LIST_TEAM_ADMIN',                        'J
 define('_LIST_TEAM_CHADMIN',           'Vaihda järjestelmänvalvoja');
 
 // edit comments
+<<<<<<< HEAD
 define('_EDITC_TITLE',                         'Muokkaa kommentteja');
 define('_EDITC_WHO',                           'Kirjoittaja');
 define('_EDITC_HOST',                          'Mistä?');
@@ -1272,3 +2189,33 @@ define('_EDITC_NONMEMBER',                       'ei-k
 // move item
 define('_MOVE_TITLE',                          'Siirrä mihin blogiin?');
 define('_MOVE_BTN',                                    'Siirrä artikkeli');
+=======
+define('_EDITC_TITLE',                 'Modifier les commentaires');
+define('_EDITC_WHO',                   'Auteur');
+define('_EDITC_HOST',                  'D\'où?');
+define('_EDITC_WHEN',                  'Quand?');
+define('_EDITC_TEXT',                  'Contenu');
+define('_EDITC_EDIT',                  'Modifier le commentaire');
+define('_EDITC_MEMBER',                        'participant');
+define('_EDITC_NONMEMBER',             'non participant');
+
+// move item
+define('_MOVE_TITLE',                  'Déplacer dans quel blog?');
+define('_MOVE_BTN',                    'Déplacer le billet');
+
+// ADMIN-template template types
+include_once('adminskinTypes.php');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_NAVILIST',          'navibar for item/comment list');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is blog ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is super ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin URL');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'API entry');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'eventlist updates');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency to');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency by');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'couldn\'t load file');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin actions');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin admin link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin help link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin option setting link');
+>>>>>>> skinnable-master
index 9901f39..0ad5844 100644 (file)
  * 
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2012 The Nucleus Group
+<<<<<<< HEAD
  * @version $Id: fr_Latn_FR.UTF-8.php 1868 2012-05-22 05:10:53Z sakamocchi $
+=======
+ * @version $Id: fr_Latn_FR.UTF-8.php 1887 2012-06-17 08:30:08Z sakamocchi $
+>>>>>>> skinnable-master
  */
 
 /********************************************
  *        Start New for 4.0                 *
  ********************************************/
-define('_SKINIE_INVALID_NAMES_DETECTED', 'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
-define('_LISTS_AUTHOR', 'Author');
-define('_OVERVIEW_OTHER_DRAFTS', 'Other Drafts');
+/* argument value for setlocale() in Microsoft's windows operating system */
+define('_LOCALE_IN_WINDOWS',   'fra_fra');
+
+/* labels for date and time measurement unit */
+define('_LABEL_YEAR_UNIT',             'year');
+define('_LABEL_MONTH_UNIT',            'month');
+define('_LABEL_DAY_UNIT',              'day');
+define('_LABEL_HOUR_UNIT',             'hour');
+define('_LABEL_MINUTE_UNIT',   'minute');
+
+// SkinableAdminArea vars
+define('_SKINABLEADMIN_DEL_UNINSTALL_DATA',                    'Delete ADMIN skin data table on uninstall?');
+define('_SKINABLEADMIN_DEFAULT_SKIN',                          'Choose a skin of the management area of the default.');
+define('_SKINABLEADMIN_MEMBER_DEFAULT_SKIN',           'Choose a skin of the management area of you use.');
+define('_SKINABLEADMIN_QMENU_LAYOUT',                          'Admin layout');
+define('_SKINABLEADMIN_PAGE_STR',                                      'page');
+define('_SKINABLEADMIN_BATCH_MOVE',                                    'Item move other category/Category move other blog');
+define('_SKINABLEADMIN_BATCH',                                         'batch');
+define('_SKINABLEADMIN_PAGEHEAD',                                      'Admin page head');
+define('_SKINABLEADMIN_PAGEFOOT',                                      'Admin page foot');
+define('_SKINABLEADMIN_TEMPLATEOVERVIEW',                      'Template overview');
+define('_SKINABLEADMIN_ADMINAREAHEADLINK',                     '[Your site]link');
+define('_SKINABLEADMIN_TPLSETTING_INGENERAL',          'In general');
+define('_SKINABLEADMIN_HEAD_STR',                                      ' head');
+define('_SKINABLEADMIN_BODY_STR',                                      ' body');
+define('_SKINABLEADMIN_FOOT_STR',                                      ' foot');
+define('_SKINABLEADMIN_TEXT_STR',                                      ' text');
+define('_SKINABLEADMIN_TITLE_STR',                                     ' title');
+define('_SKINABLEADMIN_ADMINSETTING_STR',                      ' set editmember is \'admin\'');
+define('_SKINABLEADMIN_NORMALSETTING_STR',                     ' normal');
+define('_SKINABLEADMIN_HELPICONURL_STR',                       ' icon URL');
+define('_SKINABLEADMIN_HELPFILEURL_STR',                       ' help file URL');
+define('_SKINABLEADMIN_ADMINSKINVAR_STR',                      ' skinvars');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_SELECT',      'selectbox used in ADMIN area');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE',       'Table for list indication');
+define('_SKINABLEADMIN_PLUGIN_QUICKMENU',                      'Link to admin page of the plugin shown to the quick-menu');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE',         'Template for option-type %s');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTMETA',         'Template for option-meta-data %s');
+define('_SKINABLEADMIN_MEMBERS_ADMINSKIN',                     "ADMIN-Area's skin");
+
+define('_LOCALE_BG_CYRL_BG',   'Bulgarian in Bulgaria');
+define('_LOCALE_CA_LATN_ES',   'Catalan in Spain');
+define('_LOCALE_CS_LATN_CZ',   'Czech in Czech Republic');
+define('_LOCALE_DE_LATN_DE',   'German in Germany');
+define('_LOCALE_EL_GREK_GR',   'Greek in Greece (Greek script)');
+define('_LOCALE_EN_LATN_US',   'English in United States');
+define('_LOCALE_ES_LATN_ES',   'Spanish in Spain');
+define('_LOCALE_FA_ARAB_IR',   'Persian in Islamic Republic of Iran');
+define('_LOCALE_FI_LATN_FI',   'Finnish in Finland');
+define('_LOCALE_FR_LATN_FR',   'French in France');
+define('_LOCALE_GL_LATN_ES',   'Galician in Spain');
+define('_LOCALE_HR_LATN_HR',   'Croatian in Croatia');
+define('_LOCALE_HU_LATN_HU',   'Hungarian in Hungary');
+define('_LOCALE_ID_LATN_ID',   'Indonesian in Indonesia (Latin script)');
+define('_LOCALE_IT_LATN_IT',   'Italian in Italy');
+define('_LOCALE_JA_JPAN_JP',   'Japanese in Japan');
+define('_LOCALE_KO_KORE_KR',   'Korean in Korea');
+define('_LOCALE_KU_ARAB_TR',   'Kurdish in Turkey (Arabic script)');
+define('_LOCALE_LV_LATN_LV',   'Latvian in Latvia');
+define('_LOCALE_NL_LATN_NL',   'Dutch in Netherlands');
+define('_LOCALE_PL_LATN_PL',   'Polish in Poland');
+define('_LOCALE_PT_LATN_BR',   'Portuguese in Brazil');
+define('_LOCALE_RO_LATN_RO',   'Romainan in Romania');
+define('_LOCALE_RU_CYRL_RU',   'Russian in Russia');
+define('_LOCALE_SK_LATN_SK',   'Slovak in Slovakia');
+define('_LOCALE_SR_CYRL_RS',   'Serbian in Serbia');
+define('_LOCALE_UR_ARAB_PK',   'Urdu in Pakistan');
+define('_LOCALE_VI_LATN_VN',   'Vietnamese in Vietnam (Latin script)');
+define('_LOCALE_ZH_HANS_CN',   'Chinese in China (simplified script)');
+define('_LOCALE_ZH_HANT_TW',   'Chinese in Taiwan (Traditional script)');
+
+define('_FORGOTPASSWORD_TITLE',                                'Forgot your password?');
+define('_FORGOTPASSWORD_MSG',                          'Enter your username and email address below, and you\'ll be sent an e-mail with a link where you can choose a new password.');
+define('_FORGOTPASSWORD_SUBMIT',                       'Send Activation Link" class="transparent');
+define('_FORGOTPASSWORD_CONTACT',                      'If you don\'t remember your exact username, contact the site administrator.');
+define('_SKINIE_INVALID_NAMES_DETECTED',       'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
+define('_LISTS_AUTHOR',                                                'Author');
+define('_OVERVIEW_OTHER_DRAFTS',                       'Other Drafts');
+define('_ERROR_BADADMINSKINNAME',                      'the name of skin for admin area must start with \'admin/\'.');
+define('_ERROR_BADADMINTEMPLATENAME',          'the name of template for admin area must start with \'admin/\'.');
+define('_SETTINGS_ADMINSKIN',                          'default skin for admin area');
+define('_SETTINGS_BKMKLTSKIN',                         'default skin for bookmarklet');
+define('_MEMBERS_BKMKLTSKIN',                          "bookmarklet skin");
+define('_ADMIN_SYSTEMOVERVIEW_VERSION_LATEST',         'The version which is being used is latest.');
+
 /********************************************
  *        Start New for 3.6x                *
  ********************************************/
@@ -83,15 +168,15 @@ define('_EDITC_EMAIL',                             'E-mail');
 
 define('_MANAGER_PLUGINFILE_NOTFOUND',                         "Plugin %s was not loaded (File not found)");
 /* changed */
-// plugin dependency 
-define('_ERROR_INSREQPLUGIN',          'Plugin installation failed, requires %s');
-define('_ERROR_DELREQPLUGIN',          'Plugin deletion failed, required by %s');
+// plugin dependency
+define('_ERROR_INSREQPLUGIN',          'L\'installation a échoué car le module nécessite ');
+define('_ERROR_DELREQPLUGIN',          'L\'désinstallation a échoué car le module est requis par ');
 
 //define('_ADD_ADDLATER',                                                              'Add Later');
-define('_ADD_ADDLATER',                                                                'Add the dates specified');
+define('_ADD_ADDLATER',                        'Ajouter plus tard');
 
-define('_LOGIN_NAME',                          'Name:');
-define('_LOGIN_PASSWORD',                      'Password:');
+define('_LOGIN_NAME',                  'Nom');
+define('_LOGIN_PASSWORD',              'Mot de passe');
 
 // changed from _BOOKMARLET_BMARKLFOLLOW
 define('_BOOKMARKLET_BMARKFOLLOW',                                     ' (Works with nearly all browsers)');
@@ -189,13 +274,7 @@ define('_PLUGIN_OPTIONS_TITLE',                                                    'Options for %s');
 // Plugin file loda error
 define('_PLUGINFILE_COULDNT_BELOADED',                         'Error: plugin file <strong>%s.php</strong> could not be loaded, or it has been set inactive because it does not support some features (check the <a href="?action=actionlog">actionlog</a> for more info)');
 
-//ITEM add/edit template (for japanese only)
 define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
-define('_ITEM_ADDEDITTEMPLATE_YEAR',                           'Year');
-define('_ITEM_ADDEDITTEMPLATE_MONTH',                          'Month');
-define('_ITEM_ADDEDITTEMPLATE_DAY',                                    'Day');
-define('_ITEM_ADDEDITTEMPLATE_HOUR',                           'Hour');
-define('_ITEM_ADDEDITTEMPLATE_MINUTE',                         'Minute');
 
 // Errors
 define('_ERRORS_INSTALLSQL',                                           'install.sql should be deleted');
@@ -325,7 +404,7 @@ define('_ERROR_PLUGIN_LOAD',                'Plugin could not be loaded, or does not support c
 // START changed/added after 3.22 START
 define('_SEARCHFORM_QUERY',                    'Keywords to search');
 define('_ERROR_EMAIL_REQUIRED',                'Email address is required');
-define('_COMMENTFORM_MAIL',                    'Website:');
+define('_COMMENTFORM_MAIL',            'Website');
 define('_COMMENTFORM_EMAIL',           'E-mail:');
 define('_EBLOG_REQUIREDEMAIL',         'Require E-mail address with comments?');
 define('_ERROR_COMMENTS_SPAM',      'Your comment was rejected because it did not pass the spam test');
@@ -354,10 +433,6 @@ define('_ARCHIVETYPE_MONTH',               'mois');
 // tickets (prevents malicious users to trick an admin to perform actions he doesn't want)
 define('_ERROR_BADTICKET',             'Ticket invalide ou expiré.');
 
-// plugin dependency
-define('_ERROR_INSREQPLUGIN',          'L\'installation a échoué car le module nécessite ');
-define('_ERROR_DELREQPLUGIN',          'L\'désinstallation a échoué car le module est requis par ');
-
 // cookie prefix
 define('_SETTINGS_COOKIEPREFIX',       'Préfixe du cookie');
 
@@ -764,7 +839,6 @@ define('_COMMENTFORM_YOUARE',               'Vous êtes');
 define('_COMMENTFORM_SUBMIT',          'Ajouter un commentaire');
 define('_COMMENTFORM_COMMENT',         'Votre commentaire');
 define('_COMMENTFORM_NAME',            'Nom');
-define('_COMMENTFORM_MAIL',            'Email/HTTP');
 define('_COMMENTFORM_REMEMBER',                'Retenir votre nom');
 
 // loginform
@@ -791,7 +865,6 @@ define('_ADD_DISABLE_COMMENTS',             'Interdire les commentaires?');
 define('_ADD_DRAFTNFUTURE',            'Brouillons &amp; billets à venir');
 define('_ADD_ADDITEM',                 'Ajouter le billet');
 define('_ADD_ADDNOW',                  'Ajouter maintenant');
-define('_ADD_ADDLATER',                        'Ajouter plus tard');
 define('_ADD_PLACE_ON',                        'Daté du');
 define('_ADD_ADDDRAFT',                        'Ajouter aux brouillons');
 define('_ADD_NOPASTDATES',             '(Les dates et heures passées ne sont pas valides, la date d\'aujourd\'hui sera utilisée)');
@@ -1135,8 +1208,6 @@ define('_BAN_ADD_BTN',                    'Exclure');
 
 // LOGIN screen
 define('_LOGIN_MESSAGE',               'Message');
-define('_LOGIN_NAME',                  'Nom');
-define('_LOGIN_PASSWORD',              'Mot de passe');
 define('_LOGIN_SHARED',                        _LOGINFORM_SHARED);
 define('_LOGIN_FORGOT',                        'Mot de passe oublié?');
 
@@ -1268,3 +1339,19 @@ define('_EDITC_NONMEMBER',               'non participant');
 // move item
 define('_MOVE_TITLE',                  'Déplacer dans quel blog?');
 define('_MOVE_BTN',                    'Déplacer le billet');
+
+// ADMIN-template template types
+include_once('adminskinTypes.php');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_NAVILIST',          'navibar for item/comment list');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is blog ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is super ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin URL');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'API entry');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'eventlist updates');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency to');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency by');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'couldn\'t load file');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin actions');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin admin link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin help link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin option setting link');
index c2bb4dc..bf5512b 100644 (file)
  * 
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2012 The Nucleus Group
+<<<<<<< HEAD
  * @version $Id: gl_Latn_ES.ISO-8859-1.php 1868 2012-05-22 05:10:53Z sakamocchi $
+=======
+ * @version $Id: gl_Latn_ES.ISO-8859-1.php 1887 2012-06-17 08:30:08Z sakamocchi $
+>>>>>>> skinnable-master
  */
 
 /********************************************
  *        Start New for 4.0                 *
  ********************************************/
-define('_SKINIE_INVALID_NAMES_DETECTED', 'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
-define('_LISTS_AUTHOR', 'Author');
-define('_OVERVIEW_OTHER_DRAFTS', 'Other Drafts');
+/* argument value for setlocale() in Microsoft's windows operating system */
+define('_LOCALE_IN_WINDOWS',   'C');
+
+/* labels for date and time measurement unit */
+define('_LABEL_YEAR_UNIT',             'year');
+define('_LABEL_MONTH_UNIT',            'month');
+define('_LABEL_DAY_UNIT',              'day');
+define('_LABEL_HOUR_UNIT',             'hour');
+define('_LABEL_MINUTE_UNIT',   'minute');
+
+// SkinableAdminArea vars
+define('_SKINABLEADMIN_DEL_UNINSTALL_DATA',                    'Delete ADMIN skin data table on uninstall?');
+define('_SKINABLEADMIN_DEFAULT_SKIN',                          'Choose a skin of the management area of the default.');
+define('_SKINABLEADMIN_MEMBER_DEFAULT_SKIN',           'Choose a skin of the management area of you use.');
+define('_SKINABLEADMIN_QMENU_LAYOUT',                          'Admin layout');
+define('_SKINABLEADMIN_PAGE_STR',                                      'page');
+define('_SKINABLEADMIN_BATCH_MOVE',                                    'Item move other category/Category move other blog');
+define('_SKINABLEADMIN_BATCH',                                         'batch');
+define('_SKINABLEADMIN_PAGEHEAD',                                      'Admin page head');
+define('_SKINABLEADMIN_PAGEFOOT',                                      'Admin page foot');
+define('_SKINABLEADMIN_TEMPLATEOVERVIEW',                      'Template overview');
+define('_SKINABLEADMIN_ADMINAREAHEADLINK',                     '[Your site]link');
+define('_SKINABLEADMIN_TPLSETTING_INGENERAL',          'In general');
+define('_SKINABLEADMIN_HEAD_STR',                                      ' head');
+define('_SKINABLEADMIN_BODY_STR',                                      ' body');
+define('_SKINABLEADMIN_FOOT_STR',                                      ' foot');
+define('_SKINABLEADMIN_TEXT_STR',                                      ' text');
+define('_SKINABLEADMIN_TITLE_STR',                                     ' title');
+define('_SKINABLEADMIN_ADMINSETTING_STR',                      ' set editmember is \'admin\'');
+define('_SKINABLEADMIN_NORMALSETTING_STR',                     ' normal');
+define('_SKINABLEADMIN_HELPICONURL_STR',                       ' icon URL');
+define('_SKINABLEADMIN_HELPFILEURL_STR',                       ' help file URL');
+define('_SKINABLEADMIN_ADMINSKINVAR_STR',                      ' skinvars');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_SELECT',      'selectbox used in ADMIN area');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE',       'Table for list indication');
+define('_SKINABLEADMIN_PLUGIN_QUICKMENU',                      'Link to admin page of the plugin shown to the quick-menu');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE',         'Template for option-type %s');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTMETA',         'Template for option-meta-data %s');
+define('_SKINABLEADMIN_MEMBERS_ADMINSKIN',                     "ADMIN-Area's skin");
+
+define('_LOCALE_BG_CYRL_BG',   'Bulgarian in Bulgaria');
+define('_LOCALE_CA_LATN_ES',   'Catalan in Spain');
+define('_LOCALE_CS_LATN_CZ',   'Czech in Czech Republic');
+define('_LOCALE_DE_LATN_DE',   'German in Germany');
+define('_LOCALE_EL_GREK_GR',   'Greek in Greece (Greek script)');
+define('_LOCALE_EN_LATN_US',   'English in United States');
+define('_LOCALE_ES_LATN_ES',   'Spanish in Spain');
+define('_LOCALE_FA_ARAB_IR',   'Persian in Islamic Republic of Iran');
+define('_LOCALE_FI_LATN_FI',   'Finnish in Finland');
+define('_LOCALE_FR_LATN_FR',   'French in France');
+define('_LOCALE_GL_LATN_ES',   'Galician in Spain');
+define('_LOCALE_HR_LATN_HR',   'Croatian in Croatia');
+define('_LOCALE_HU_LATN_HU',   'Hungarian in Hungary');
+define('_LOCALE_ID_LATN_ID',   'Indonesian in Indonesia (Latin script)');
+define('_LOCALE_IT_LATN_IT',   'Italian in Italy');
+define('_LOCALE_JA_JPAN_JP',   'Japanese in Japan');
+define('_LOCALE_KO_KORE_KR',   'Korean in Korea');
+define('_LOCALE_KU_ARAB_TR',   'Kurdish in Turkey (Arabic script)');
+define('_LOCALE_LV_LATN_LV',   'Latvian in Latvia');
+define('_LOCALE_NL_LATN_NL',   'Dutch in Netherlands');
+define('_LOCALE_PL_LATN_PL',   'Polish in Poland');
+define('_LOCALE_PT_LATN_BR',   'Portuguese in Brazil');
+define('_LOCALE_RO_LATN_RO',   'Romainan in Romania');
+define('_LOCALE_RU_CYRL_RU',   'Russian in Russia');
+define('_LOCALE_SK_LATN_SK',   'Slovak in Slovakia');
+define('_LOCALE_SR_CYRL_RS',   'Serbian in Serbia');
+define('_LOCALE_UR_ARAB_PK',   'Urdu in Pakistan');
+define('_LOCALE_VI_LATN_VN',   'Vietnamese in Vietnam (Latin script)');
+define('_LOCALE_ZH_HANS_CN',   'Chinese in China (simplified script)');
+define('_LOCALE_ZH_HANT_TW',   'Chinese in Taiwan (Traditional script)');
+
+define('_FORGOTPASSWORD_TITLE',                                'Forgot your password?');
+define('_FORGOTPASSWORD_MSG',                          'Enter your username and email address below, and you\'ll be sent an e-mail with a link where you can choose a new password.');
+define('_FORGOTPASSWORD_SUBMIT',                       'Send Activation Link" class="transparent');
+define('_FORGOTPASSWORD_CONTACT',                      'If you don\'t remember your exact username, contact the site administrator.');
+define('_SKINIE_INVALID_NAMES_DETECTED',       'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
+define('_LISTS_AUTHOR',                                                'Author');
+define('_OVERVIEW_OTHER_DRAFTS',                       'Other Drafts');
+define('_ERROR_BADADMINSKINNAME',                      'the name of skin for admin area must start with \'admin/\'.');
+define('_ERROR_BADADMINTEMPLATENAME',          'the name of template for admin area must start with \'admin/\'.');
+define('_SETTINGS_ADMINSKIN',                          'default skin for admin area');
+define('_SETTINGS_BKMKLTSKIN',                         'default skin for bookmarklet');
+define('_MEMBERS_BKMKLTSKIN',                          "bookmarklet skin");
+define('_ADMIN_SYSTEMOVERVIEW_VERSION_LATEST',         'The version which is being used is latest.');
+
 /********************************************
  *        Start New for 3.6x                *
  ********************************************/
@@ -86,10 +171,10 @@ define('_ERROR_INSREQPLUGIN',              'Plugin installation failed, requires %s');
 define('_ERROR_DELREQPLUGIN',          'Plugin deletion failed, required by %s');
 
 //define('_ADD_ADDLATER',                                                              'Add Later');
-define('_ADD_ADDLATER',                                                                'Add the dates specified');
+define('_ADD_ADDLATER',                                'Introducir logo');
 
-define('_LOGIN_NAME',                          'Name:');
-define('_LOGIN_PASSWORD',                      'Password:');
+define('_LOGIN_NAME',                          'nome');
+define('_LOGIN_PASSWORD',                      'contrasinal');
 
 // changed from _BOOKMARLET_BMARKLFOLLOW
 define('_BOOKMARKLET_BMARKFOLLOW',                                     ' (Works with nearly all browsers)');
@@ -187,13 +272,7 @@ define('_PLUGIN_OPTIONS_TITLE',                                                    'Options for %s');
 // Plugin file loda error
 define('_PLUGINFILE_COULDNT_BELOADED',                         'Error: plugin file <strong>%s.php</strong> could not be loaded, or it has been set inactive because it does not support some features (check the <a href="?action=actionlog">actionlog</a> for more info)');
 
-//ITEM add/edit template (for japanese only)
 define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
-define('_ITEM_ADDEDITTEMPLATE_YEAR',                           'Year');
-define('_ITEM_ADDEDITTEMPLATE_MONTH',                          'Month');
-define('_ITEM_ADDEDITTEMPLATE_DAY',                                    'Day');
-define('_ITEM_ADDEDITTEMPLATE_HOUR',                           'Hour');
-define('_ITEM_ADDEDITTEMPLATE_MINUTE',                         'Minute');
 
 // Errors
 define('_ERRORS_INSTALLSQL',                                           'install.sql should be deleted');
@@ -323,7 +402,7 @@ define('_ERROR_PLUGIN_LOAD',                'Plugin could not be loaded, or does not support c
 // START changed/added after 3.22 START
 define('_SEARCHFORM_QUERY',                    'Keywords to search');
 define('_ERROR_EMAIL_REQUIRED',                'Email address is required');
-define('_COMMENTFORM_MAIL',                    'Website:');
+define('_COMMENTFORM_MAIL',                    'Website');
 define('_COMMENTFORM_EMAIL',           'E-mail:');
 define('_EBLOG_REQUIREDEMAIL',         'Require E-mail address with comments?');
 define('_ERROR_COMMENTS_SPAM',      'Your comment was rejected because it did not pass the spam test');
@@ -449,7 +528,7 @@ define('_WARNING_EXTAUTH',                  'Warning: Enable only if needed.');
 define('_MEMBERS_BYPASS',                      'Use External Authentication');
 
 // 'always include in search' blog setting (yes/no) [in v2.5beta, the 'always' part wasn't clear]
-define('_EBLOG_SEARCH',                                '<em>Always</em> include in search');
+define('_EBLOG_SEARCH',                                'Incluir en búsquedas');
 
 // END changed/added after v2.5beta
 
@@ -470,9 +549,12 @@ define('_MEDIA_COLLECTION_LABEL',  'Colecci
 define('_ADD_ALIGNLEFT_TT',                    'Alinear á esquerda');
 define('_ADD_ALIGNRIGHT_TT',           'Alinear á derieta');
 define('_ADD_ALIGNCENTER_TT',          'Alinear ó centro');
+<<<<<<< HEAD
 
 // searchable blog setting (yes/no)
 define('_EBLOG_SEARCH',                                'Incluir en búsquedas');
+=======
+>>>>>>> skinnable-master
 
 // generic upload failure
 define('_ERROR_UPLOADFAILED',          'Erro ó subir');
@@ -760,7 +842,6 @@ define('_COMMENTFORM_YOUARE',               'Eres');
 define('_COMMENTFORM_SUBMIT',          'Introducir comentario');
 define('_COMMENTFORM_COMMENT',         'Comentario');
 define('_COMMENTFORM_NAME',                    'Nome');
-define('_COMMENTFORM_MAIL',                    'Email/HTTP');
 define('_COMMENTFORM_REMEMBER',                'Lembrar usuario');
 
 // loginform
@@ -787,7 +868,6 @@ define('_ADD_DISABLE_COMMENTS',             'Deshabilitar comentarios?');
 define('_ADD_DRAFTNFUTURE',                    'Borrador e futuras entradas');
 define('_ADD_ADDITEM',                         'Introducir entrada');
 define('_ADD_ADDNOW',                          'Introducir agora');
-define('_ADD_ADDLATER',                                'Introducir logo');
 define('_ADD_PLACE_ON',                                'Colocar en');
 define('_ADD_ADDDRAFT',                                'Introducir no borrador');
 define('_ADD_NOPASTDATES',                     '(As datas e horas pasadas non son válidas, usarase o momento actual)');
@@ -1131,8 +1211,6 @@ define('_BAN_ADD_BTN',                            'Introducir restricci
 
 // LOGIN screen
 define('_LOGIN_MESSAGE',                       'Mensaxe');
-define('_LOGIN_NAME',                          'nome');
-define('_LOGIN_PASSWORD',                      'contrasinal');
 define('_LOGIN_SHARED',                                _LOGINFORM_SHARED);
 define('_LOGIN_FORGOT',                                '¿Esquencichela contrasinal?');
 
@@ -1264,3 +1342,19 @@ define('_EDITC_NONMEMBER',                       'Non membro');
 // move item
 define('_MOVE_TITLE',                          'Mover a qué bitácora?');
 define('_MOVE_BTN',                                    'Mover entrada');
+
+// ADMIN-template template types
+include_once('adminskinTypes.php');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_NAVILIST',          'navibar for item/comment list');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is blog ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is super ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin URL');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'API entry');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'eventlist updates');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency to');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency by');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'couldn\'t load file');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin actions');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin admin link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin help link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin option setting link');
index 8664750..df67a07 100644 (file)
@@ -1,4 +1,8 @@
+<<<<<<< HEAD
 <?
+=======
+<?php
+>>>>>>> skinnable-master
 /**
  * Nucleus Translation File
  * Galician in Spain (Latin script)
  * 
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2012 The Nucleus Group
+<<<<<<< HEAD
  * @version $Id: gl_Latn_ES.UTF-8.php 1868 2012-05-22 05:10:53Z sakamocchi $
+=======
+ * @version $Id: gl_Latn_ES.UTF-8.php 1887 2012-06-17 08:30:08Z sakamocchi $
+>>>>>>> skinnable-master
  */
 
 /********************************************
  *        Start New for 4.0                 *
  ********************************************/
-define('_SKINIE_INVALID_NAMES_DETECTED', 'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
-define('_LISTS_AUTHOR', 'Author');
-define('_OVERVIEW_OTHER_DRAFTS', 'Other Drafts');
+/* argument value for setlocale() in Microsoft's windows operating system */
+define('_LOCALE_IN_WINDOWS',   'C');
+
+/* labels for date and time measurement unit */
+define('_LABEL_YEAR_UNIT',             'year');
+define('_LABEL_MONTH_UNIT',            'month');
+define('_LABEL_DAY_UNIT',              'day');
+define('_LABEL_HOUR_UNIT',             'hour');
+define('_LABEL_MINUTE_UNIT',   'minute');
+
+// SkinableAdminArea vars
+define('_SKINABLEADMIN_DEL_UNINSTALL_DATA',                    'Delete ADMIN skin data table on uninstall?');
+define('_SKINABLEADMIN_DEFAULT_SKIN',                          'Choose a skin of the management area of the default.');
+define('_SKINABLEADMIN_MEMBER_DEFAULT_SKIN',           'Choose a skin of the management area of you use.');
+define('_SKINABLEADMIN_QMENU_LAYOUT',                          'Admin layout');
+define('_SKINABLEADMIN_PAGE_STR',                                      'page');
+define('_SKINABLEADMIN_BATCH_MOVE',                                    'Item move other category/Category move other blog');
+define('_SKINABLEADMIN_BATCH',                                         'batch');
+define('_SKINABLEADMIN_PAGEHEAD',                                      'Admin page head');
+define('_SKINABLEADMIN_PAGEFOOT',                                      'Admin page foot');
+define('_SKINABLEADMIN_TEMPLATEOVERVIEW',                      'Template overview');
+define('_SKINABLEADMIN_ADMINAREAHEADLINK',                     '[Your site]link');
+define('_SKINABLEADMIN_TPLSETTING_INGENERAL',          'In general');
+define('_SKINABLEADMIN_HEAD_STR',                                      ' head');
+define('_SKINABLEADMIN_BODY_STR',                                      ' body');
+define('_SKINABLEADMIN_FOOT_STR',                                      ' foot');
+define('_SKINABLEADMIN_TEXT_STR',                                      ' text');
+define('_SKINABLEADMIN_TITLE_STR',                                     ' title');
+define('_SKINABLEADMIN_ADMINSETTING_STR',                      ' set editmember is \'admin\'');
+define('_SKINABLEADMIN_NORMALSETTING_STR',                     ' normal');
+define('_SKINABLEADMIN_HELPICONURL_STR',                       ' icon URL');
+define('_SKINABLEADMIN_HELPFILEURL_STR',                       ' help file URL');
+define('_SKINABLEADMIN_ADMINSKINVAR_STR',                      ' skinvars');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_SELECT',      'selectbox used in ADMIN area');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE',       'Table for list indication');
+define('_SKINABLEADMIN_PLUGIN_QUICKMENU',                      'Link to admin page of the plugin shown to the quick-menu');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE',         'Template for option-type %s');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTMETA',         'Template for option-meta-data %s');
+define('_SKINABLEADMIN_MEMBERS_ADMINSKIN',                     "ADMIN-Area's skin");
+
+define('_LOCALE_BG_CYRL_BG',   'Bulgarian in Bulgaria');
+define('_LOCALE_CA_LATN_ES',   'Catalan in Spain');
+define('_LOCALE_CS_LATN_CZ',   'Czech in Czech Republic');
+define('_LOCALE_DE_LATN_DE',   'German in Germany');
+define('_LOCALE_EL_GREK_GR',   'Greek in Greece (Greek script)');
+define('_LOCALE_EN_LATN_US',   'English in United States');
+define('_LOCALE_ES_LATN_ES',   'Spanish in Spain');
+define('_LOCALE_FA_ARAB_IR',   'Persian in Islamic Republic of Iran');
+define('_LOCALE_FI_LATN_FI',   'Finnish in Finland');
+define('_LOCALE_FR_LATN_FR',   'French in France');
+define('_LOCALE_GL_LATN_ES',   'Galician in Spain');
+define('_LOCALE_HR_LATN_HR',   'Croatian in Croatia');
+define('_LOCALE_HU_LATN_HU',   'Hungarian in Hungary');
+define('_LOCALE_ID_LATN_ID',   'Indonesian in Indonesia (Latin script)');
+define('_LOCALE_IT_LATN_IT',   'Italian in Italy');
+define('_LOCALE_JA_JPAN_JP',   'Japanese in Japan');
+define('_LOCALE_KO_KORE_KR',   'Korean in Korea');
+define('_LOCALE_KU_ARAB_TR',   'Kurdish in Turkey (Arabic script)');
+define('_LOCALE_LV_LATN_LV',   'Latvian in Latvia');
+define('_LOCALE_NL_LATN_NL',   'Dutch in Netherlands');
+define('_LOCALE_PL_LATN_PL',   'Polish in Poland');
+define('_LOCALE_PT_LATN_BR',   'Portuguese in Brazil');
+define('_LOCALE_RO_LATN_RO',   'Romainan in Romania');
+define('_LOCALE_RU_CYRL_RU',   'Russian in Russia');
+define('_LOCALE_SK_LATN_SK',   'Slovak in Slovakia');
+define('_LOCALE_SR_CYRL_RS',   'Serbian in Serbia');
+define('_LOCALE_UR_ARAB_PK',   'Urdu in Pakistan');
+define('_LOCALE_VI_LATN_VN',   'Vietnamese in Vietnam (Latin script)');
+define('_LOCALE_ZH_HANS_CN',   'Chinese in China (simplified script)');
+define('_LOCALE_ZH_HANT_TW',   'Chinese in Taiwan (Traditional script)');
+
+define('_FORGOTPASSWORD_TITLE',                                'Forgot your password?');
+define('_FORGOTPASSWORD_MSG',                          'Enter your username and email address below, and you\'ll be sent an e-mail with a link where you can choose a new password.');
+define('_FORGOTPASSWORD_SUBMIT',                       'Send Activation Link" class="transparent');
+define('_FORGOTPASSWORD_CONTACT',                      'If you don\'t remember your exact username, contact the site administrator.');
+define('_SKINIE_INVALID_NAMES_DETECTED',       'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
+define('_LISTS_AUTHOR',                                                'Author');
+define('_OVERVIEW_OTHER_DRAFTS',                       'Other Drafts');
+define('_ERROR_BADADMINSKINNAME',                      'the name of skin for admin area must start with \'admin/\'.');
+define('_ERROR_BADADMINTEMPLATENAME',          'the name of template for admin area must start with \'admin/\'.');
+define('_SETTINGS_ADMINSKIN',                          'default skin for admin area');
+define('_SETTINGS_BKMKLTSKIN',                         'default skin for bookmarklet');
+define('_MEMBERS_BKMKLTSKIN',                          "bookmarklet skin");
+define('_ADMIN_SYSTEMOVERVIEW_VERSION_LATEST',         'The version which is being used is latest.');
+
 /********************************************
  *        Start New for 3.6x                *
  ********************************************/
@@ -86,10 +175,10 @@ define('_ERROR_INSREQPLUGIN',              'Plugin installation failed, requires %s');
 define('_ERROR_DELREQPLUGIN',          'Plugin deletion failed, required by %s');
 
 //define('_ADD_ADDLATER',                                                              'Add Later');
-define('_ADD_ADDLATER',                                                                'Add the dates specified');
+define('_ADD_ADDLATER',                                'Introducir logo');
 
-define('_LOGIN_NAME',                          'Name:');
-define('_LOGIN_PASSWORD',                      'Password:');
+define('_LOGIN_NAME',                          'nome');
+define('_LOGIN_PASSWORD',                      'contrasinal');
 
 // changed from _BOOKMARLET_BMARKLFOLLOW
 define('_BOOKMARKLET_BMARKFOLLOW',                                     ' (Works with nearly all browsers)');
@@ -187,13 +276,7 @@ define('_PLUGIN_OPTIONS_TITLE',                                                    'Options for %s');
 // Plugin file loda error
 define('_PLUGINFILE_COULDNT_BELOADED',                         'Error: plugin file <strong>%s.php</strong> could not be loaded, or it has been set inactive because it does not support some features (check the <a href="?action=actionlog">actionlog</a> for more info)');
 
-//ITEM add/edit template (for japanese only)
 define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
-define('_ITEM_ADDEDITTEMPLATE_YEAR',                           'Year');
-define('_ITEM_ADDEDITTEMPLATE_MONTH',                          'Month');
-define('_ITEM_ADDEDITTEMPLATE_DAY',                                    'Day');
-define('_ITEM_ADDEDITTEMPLATE_HOUR',                           'Hour');
-define('_ITEM_ADDEDITTEMPLATE_MINUTE',                         'Minute');
 
 // Errors
 define('_ERRORS_INSTALLSQL',                                           'install.sql should be deleted');
@@ -323,7 +406,7 @@ define('_ERROR_PLUGIN_LOAD',                'Plugin could not be loaded, or does not support c
 // START changed/added after 3.22 START
 define('_SEARCHFORM_QUERY',                    'Keywords to search');
 define('_ERROR_EMAIL_REQUIRED',                'Email address is required');
-define('_COMMENTFORM_MAIL',                    'Website:');
+define('_COMMENTFORM_MAIL',                    'Website');
 define('_COMMENTFORM_EMAIL',           'E-mail:');
 define('_EBLOG_REQUIREDEMAIL',         'Require E-mail address with comments?');
 define('_ERROR_COMMENTS_SPAM',      'Your comment was rejected because it did not pass the spam test');
@@ -449,7 +532,7 @@ define('_WARNING_EXTAUTH',                  'Warning: Enable only if needed.');
 define('_MEMBERS_BYPASS',                      'Use External Authentication');
 
 // 'always include in search' blog setting (yes/no) [in v2.5beta, the 'always' part wasn't clear]
-define('_EBLOG_SEARCH',                                '<em>Always</em> include in search');
+define('_EBLOG_SEARCH',                                'Incluir en búsquedas');
 
 // END changed/added after v2.5beta
 
@@ -471,9 +554,6 @@ define('_ADD_ALIGNLEFT_TT',                 'Alinear á esquerda');
 define('_ADD_ALIGNRIGHT_TT',           'Alinear á derieta');
 define('_ADD_ALIGNCENTER_TT',          'Alinear ó centro');
 
-// searchable blog setting (yes/no)
-define('_EBLOG_SEARCH',                                'Incluir en búsquedas');
-
 // generic upload failure
 define('_ERROR_UPLOADFAILED',          'Erro ó subir');
 
@@ -760,7 +840,6 @@ define('_COMMENTFORM_YOUARE',               'Eres');
 define('_COMMENTFORM_SUBMIT',          'Introducir comentario');
 define('_COMMENTFORM_COMMENT',         'Comentario');
 define('_COMMENTFORM_NAME',                    'Nome');
-define('_COMMENTFORM_MAIL',                    'Email/HTTP');
 define('_COMMENTFORM_REMEMBER',                'Lembrar usuario');
 
 // loginform
@@ -787,7 +866,6 @@ define('_ADD_DISABLE_COMMENTS',             'Deshabilitar comentarios?');
 define('_ADD_DRAFTNFUTURE',                    'Borrador e futuras entradas');
 define('_ADD_ADDITEM',                         'Introducir entrada');
 define('_ADD_ADDNOW',                          'Introducir agora');
-define('_ADD_ADDLATER',                                'Introducir logo');
 define('_ADD_PLACE_ON',                                'Colocar en');
 define('_ADD_ADDDRAFT',                                'Introducir no borrador');
 define('_ADD_NOPASTDATES',                     '(As datas e horas pasadas non son válidas, usarase o momento actual)');
@@ -1131,8 +1209,6 @@ define('_BAN_ADD_BTN',                            'Introducir restricción');
 
 // LOGIN screen
 define('_LOGIN_MESSAGE',                       'Mensaxe');
-define('_LOGIN_NAME',                          'nome');
-define('_LOGIN_PASSWORD',                      'contrasinal');
 define('_LOGIN_SHARED',                                _LOGINFORM_SHARED);
 define('_LOGIN_FORGOT',                                '¿Esquencichela contrasinal?');
 
@@ -1264,3 +1340,19 @@ define('_EDITC_NONMEMBER',                       'Non membro');
 // move item
 define('_MOVE_TITLE',                          'Mover a qué bitácora?');
 define('_MOVE_BTN',                                    'Mover entrada');
+
+// ADMIN-template template types
+include_once('adminskinTypes.php');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_NAVILIST',          'navibar for item/comment list');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is blog ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is super ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin URL');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'API entry');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'eventlist updates');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency to');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency by');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'couldn\'t load file');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin actions');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin admin link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin help link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin option setting link');
index 442448f..4752532 100644 (file)
 /********************************************
  *        Start New for 4.0                 *
  ********************************************/
+<<<<<<< HEAD
 define('_SKINIE_INVALID_NAMES_DETECTED', 'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
 define('_LISTS_AUTHOR', 'Author');
 define('_OVERVIEW_OTHER_DRAFTS', 'Other Drafts');
  
+=======
+/* argument value for setlocale() in Microsoft's windows operating system */
+define('_LOCALE_IN_WINDOWS',   'C');
+
+/* labels for date and time measurement unit */
+define('_LABEL_YEAR_UNIT',             'year');
+define('_LABEL_MONTH_UNIT',            'month');
+define('_LABEL_DAY_UNIT',              'day');
+define('_LABEL_HOUR_UNIT',             'hour');
+define('_LABEL_MINUTE_UNIT',   'minute');
+
+// SkinableAdminArea vars
+define('_SKINABLEADMIN_DEL_UNINSTALL_DATA',                    'Delete ADMIN skin data table on uninstall?');
+define('_SKINABLEADMIN_DEFAULT_SKIN',                          'Choose a skin of the management area of the default.');
+define('_SKINABLEADMIN_MEMBER_DEFAULT_SKIN',           'Choose a skin of the management area of you use.');
+define('_SKINABLEADMIN_QMENU_LAYOUT',                          'Admin layout');
+define('_SKINABLEADMIN_PAGE_STR',                                      'page');
+define('_SKINABLEADMIN_BATCH_MOVE',                                    'Item move other category/Category move other blog');
+define('_SKINABLEADMIN_BATCH',                                         'batch');
+define('_SKINABLEADMIN_PAGEHEAD',                                      'Admin page head');
+define('_SKINABLEADMIN_PAGEFOOT',                                      'Admin page foot');
+define('_SKINABLEADMIN_TEMPLATEOVERVIEW',                      'Template overview');
+define('_SKINABLEADMIN_ADMINAREAHEADLINK',                     '[Your site]link');
+define('_SKINABLEADMIN_TPLSETTING_INGENERAL',          'In general');
+define('_SKINABLEADMIN_HEAD_STR',                                      ' head');
+define('_SKINABLEADMIN_BODY_STR',                                      ' body');
+define('_SKINABLEADMIN_FOOT_STR',                                      ' foot');
+define('_SKINABLEADMIN_TEXT_STR',                                      ' text');
+define('_SKINABLEADMIN_TITLE_STR',                                     ' title');
+define('_SKINABLEADMIN_ADMINSETTING_STR',                      ' set editmember is \'admin\'');
+define('_SKINABLEADMIN_NORMALSETTING_STR',                     ' normal');
+define('_SKINABLEADMIN_HELPICONURL_STR',                       ' icon URL');
+define('_SKINABLEADMIN_HELPFILEURL_STR',                       ' help file URL');
+define('_SKINABLEADMIN_ADMINSKINVAR_STR',                      ' skinvars');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_SELECT',      'selectbox used in ADMIN area');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE',       'Table for list indication');
+define('_SKINABLEADMIN_PLUGIN_QUICKMENU',                      'Link to admin page of the plugin shown to the quick-menu');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE',         'Template for option-type %s');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTMETA',         'Template for option-meta-data %s');
+define('_SKINABLEADMIN_MEMBERS_ADMINSKIN',                     "ADMIN-Area's skin");
+
+define('_LOCALE_BG_CYRL_BG',   'Bulgarian in Bulgaria');
+define('_LOCALE_CA_LATN_ES',   'Catalan in Spain');
+define('_LOCALE_CS_LATN_CZ',   'Czech in Czech Republic');
+define('_LOCALE_DE_LATN_DE',   'German in Germany');
+define('_LOCALE_EL_GREK_GR',   'Greek in Greece (Greek script) (Greek script)');
+define('_LOCALE_EN_LATN_US',   'English in United States');
+define('_LOCALE_ES_LATN_ES',   'Spanish in Spain');
+define('_LOCALE_FA_ARAB_IR',   'Persian in Islamic Republic of Iran');
+define('_LOCALE_FI_LATN_FI',   'Finnish in Finland');
+define('_LOCALE_FR_LATN_FR',   'French in France');
+define('_LOCALE_GL_LATN_ES',   'Galician in Spain');
+define('_LOCALE_HR_LATN_HR',   'Croatian in Croatia');
+define('_LOCALE_HU_LATN_HU',   'Hungarian in Hungary');
+define('_LOCALE_ID_LATN_ID',   'Indonesian in Indonesia (Latin script)');
+define('_LOCALE_IT_LATN_IT',   'Italian in Italy');
+define('_LOCALE_JA_JPAN_JP',   'Japanese in Japan');
+define('_LOCALE_KO_KORE_KR',   'Korean in Korea');
+define('_LOCALE_KU_ARAB_TR',   'Kurdish in Turkey (Arabic script)');
+define('_LOCALE_LV_LATN_LV',   'Latvian in Latvia');
+define('_LOCALE_NL_LATN_NL',   'Dutch in Netherlands');
+define('_LOCALE_PL_LATN_PL',   'Polish in Poland');
+define('_LOCALE_PT_LATN_BR',   'Portuguese in Brazil');
+define('_LOCALE_RO_LATN_RO',   'Romainan in Romania');
+define('_LOCALE_RU_CYRL_RU',   'Russian in Russia');
+define('_LOCALE_SK_LATN_SK',   'Slovak in Slovakia');
+define('_LOCALE_SR_CYRL_RS',   'Serbian in Serbia');
+define('_LOCALE_UR_ARAB_PK',   'Urdu in Pakistan');
+define('_LOCALE_VI_LATN_VN',   'Vietnamese in Vietnam (Latin script)');
+define('_LOCALE_ZH_HANS_CN',   'Chinese in China (simplified script)');
+define('_LOCALE_ZH_HANT_TW',   'Chinese in Taiwan (Traditional script)');
+
+define('_FORGOTPASSWORD_TITLE',                                'Forgot your password?');
+define('_FORGOTPASSWORD_MSG',                          'Enter your username and email address below, and you\'ll be sent an e-mail with a link where you can choose a new password.');
+define('_FORGOTPASSWORD_SUBMIT',                       'Send Activation Link" class="transparent');
+define('_FORGOTPASSWORD_CONTACT',                      'If you don\'t remember your exact username, contact the site administrator.');
+define('_SKINIE_INVALID_NAMES_DETECTED',       'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
+define('_LISTS_AUTHOR',                                                'Author');
+define('_OVERVIEW_OTHER_DRAFTS',                       'Other Drafts');
+define('_ERROR_BADADMINSKINNAME',                      'the name of skin for admin area must start with \'admin/\'.');
+define('_ERROR_BADADMINTEMPLATENAME',          'the name of template for admin area must start with \'admin/\'.');
+define('_SETTINGS_ADMINSKIN',                          'default skin for admin area');
+define('_SETTINGS_BKMKLTSKIN',                         'default skin for bookmarklet');
+define('_MEMBERS_BKMKLTSKIN',                          "bookmarklet skin");
+define('_ADMIN_SYSTEMOVERVIEW_VERSION_LATEST',         'The version which is being used is latest.');
+
+>>>>>>> skinnable-master
 /********************************************
  *        Start New for 3.6x                *
  ********************************************/
@@ -81,6 +169,7 @@ define('_EDITC_EMAIL',                               'E-mail');
 
 define('_MANAGER_PLUGINFILE_NOTFOUND',                         "Plugin %s was not loaded (File not found)");
 /* changed */
+<<<<<<< HEAD
 // plugin dependency 
 define('_ERROR_INSREQPLUGIN',          'Plugin installation failed, requires %s');
 define('_ERROR_DELREQPLUGIN',          'Plugin deletion failed, required by %s');
@@ -90,6 +179,17 @@ define('_ADD_ADDLATER',                                                             'Add the dates specified');
 
 define('_LOGIN_NAME',                          'Name:');
 define('_LOGIN_PASSWORD',                      'Password:');
+=======
+// plugin dependency
+define('_ERROR_INSREQPLUGIN',                  'Instalacija plugina nije uspjela, potrebno je ');
+define('_ERROR_DELREQPLUGIN',                  'Nije moguće ukloniti plugin, potrebno je ');
+
+//define('_ADD_ADDLATER',                                                              'Add Later');
+define('_ADD_ADDLATER',                                        'Dodaj kasnije');
+
+define('_LOGIN_NAME',                                  'Korisničko ime');
+define('_LOGIN_PASSWORD',                              'Zaporka');
+>>>>>>> skinnable-master
 
 // changed from _BOOKMARLET_BMARKLFOLLOW
 define('_BOOKMARKLET_BMARKFOLLOW',                                     ' (Works with nearly all browsers)');
@@ -186,6 +286,7 @@ define('_PLUGIN_OPTIONS_TITLE',                                                     'Options for %s');
 // Plugin file loda error
 define('_PLUGINFILE_COULDNT_BELOADED',                         'Error: plugin file <strong>%s.php</strong> could not be loaded, or it has been set inactive because it does not support some features (check the <a href="?action=actionlog">actionlog</a> for more info)');
 
+<<<<<<< HEAD
 //ITEM add/edit template (for japanese only)
 define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
 define('_ITEM_ADDEDITTEMPLATE_YEAR',                           'Year');
@@ -193,6 +294,9 @@ define('_ITEM_ADDEDITTEMPLATE_MONTH',                               'Month');
 define('_ITEM_ADDEDITTEMPLATE_DAY',                                    'Day');
 define('_ITEM_ADDEDITTEMPLATE_HOUR',                           'Hour');
 define('_ITEM_ADDEDITTEMPLATE_MINUTE',                         'Minute');
+=======
+define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
+>>>>>>> skinnable-master
 
 // Errors
 define('_ERRORS_INSTALLSQL',                                           'install.sql should be deleted');
@@ -350,10 +454,13 @@ define('_ARCHIVETYPE_MONTH',                      'mjesec');
 // tickets (prevents malicious users to trick an admin to perform actions he doesn't want)
 define('_ERROR_BADTICKET',                             'Neodgovarajući ili već iskorišteni kupon.');
 
+<<<<<<< HEAD
 // plugin dependency
 define('_ERROR_INSREQPLUGIN',                  'Instalacija plugina nije uspjela, potrebno je ');
 define('_ERROR_DELREQPLUGIN',                  'Nije moguće ukloniti plugin, potrebno je ');
 
+=======
+>>>>>>> skinnable-master
 // cookie prefix
 define('_SETTINGS_COOKIEPREFIX',               'Cookie prefiks');
 
@@ -756,7 +863,10 @@ define('_COMMENTFORM_YOUARE',                      'Vi ste');
 define('_COMMENTFORM_SUBMIT',                  'Dodajte komentar');
 define('_COMMENTFORM_COMMENT',         'Vaš komentar');
 define('_COMMENTFORM_NAME',                            'Ime');
+<<<<<<< HEAD
 define('_COMMENTFORM_MAIL',                            'E-mail/http');
+=======
+>>>>>>> skinnable-master
 define('_COMMENTFORM_REMEMBER',                'Zapamti');
 
 // loginform
@@ -783,7 +893,10 @@ define('_ADD_DISABLE_COMMENTS',            'Isključiti komentare?');
 define('_ADD_DRAFTNFUTURE',                            'Draft &amp; za kasnije postove');
 define('_ADD_ADDITEM',                                 'Dodaj post');
 define('_ADD_ADDNOW',                                  'Dodaj sada');
+<<<<<<< HEAD
 define('_ADD_ADDLATER',                                        'Dodaj kasnije');
+=======
+>>>>>>> skinnable-master
 define('_ADD_PLACE_ON',                                        'Kada dodati');
 define('_ADD_ADDDRAFT',                                        'Dodaj u draftove');
 define('_ADD_NOPASTDATES',                             '(raniji datumi i vrijeme ne mogu biti prihvaćeni, u slučaju njihovog odabira bit će uneseni trenutni datum i vrijeme.)');
@@ -1128,8 +1241,11 @@ define('_BAN_ADD_BTN',                                   'Postavi blokadu');
 
 // LOGIN screen
 define('_LOGIN_MESSAGE',                               'Obavijest');
+<<<<<<< HEAD
 define('_LOGIN_NAME',                                  'Korisničko ime');
 define('_LOGIN_PASSWORD',                              'Zaporka');
+=======
+>>>>>>> skinnable-master
 define('_LOGIN_SHARED',                                        _LOGINFORM_SHARED);
 define('_LOGIN_FORGOT',                                        'Zaboravili ste zaporku?');
 
@@ -1260,3 +1376,22 @@ define('_EDITC_NONMEMBER',                               'posjetitelj');
 // move item
 define('_MOVE_TITLE',                                  'U koji blog prenijeti ovaj post?');
 define('_MOVE_BTN',                                            'Prenesi post');
+<<<<<<< HEAD
+=======
+
+// ADMIN-template template types
+include_once('adminskinTypes.php');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_NAVILIST',          'navibar for item/comment list');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is blog ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is super ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin URL');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'API entry');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'eventlist updates');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency to');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency by');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'couldn\'t load file');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin actions');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin admin link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin help link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin option setting link');
+>>>>>>> skinnable-master
index 2f6ebee..2025736 100644 (file)
 /********************************************
  *        Start New for 4.0                 *
  ********************************************/
+<<<<<<< HEAD
 define('_SKINIE_INVALID_NAMES_DETECTED', 'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
 define('_LISTS_AUTHOR', 'Author');
 define('_OVERVIEW_OTHER_DRAFTS', 'Other Drafts');
  
+=======
+/* argument value for setlocale() in Microsoft's windows operating system */
+define('_LOCALE_IN_WINDOWS',   'C');
+
+/* labels for date and time measurement unit */
+define('_LABEL_YEAR_UNIT',             'year');
+define('_LABEL_MONTH_UNIT',            'month');
+define('_LABEL_DAY_UNIT',              'day');
+define('_LABEL_HOUR_UNIT',             'hour');
+define('_LABEL_MINUTE_UNIT',   'minute');
+
+// SkinableAdminArea vars
+define('_SKINABLEADMIN_DEL_UNINSTALL_DATA',                    'Delete ADMIN skin data table on uninstall?');
+define('_SKINABLEADMIN_DEFAULT_SKIN',                          'Choose a skin of the management area of the default.');
+define('_SKINABLEADMIN_MEMBER_DEFAULT_SKIN',           'Choose a skin of the management area of you use.');
+define('_SKINABLEADMIN_QMENU_LAYOUT',                          'Admin layout');
+define('_SKINABLEADMIN_PAGE_STR',                                      'page');
+define('_SKINABLEADMIN_BATCH_MOVE',                                    'Item move other category/Category move other blog');
+define('_SKINABLEADMIN_BATCH',                                         'batch');
+define('_SKINABLEADMIN_PAGEHEAD',                                      'Admin page head');
+define('_SKINABLEADMIN_PAGEFOOT',                                      'Admin page foot');
+define('_SKINABLEADMIN_TEMPLATEOVERVIEW',                      'Template overview');
+define('_SKINABLEADMIN_ADMINAREAHEADLINK',                     '[Your site]link');
+define('_SKINABLEADMIN_TPLSETTING_INGENERAL',          'In general');
+define('_SKINABLEADMIN_HEAD_STR',                                      ' head');
+define('_SKINABLEADMIN_BODY_STR',                                      ' body');
+define('_SKINABLEADMIN_FOOT_STR',                                      ' foot');
+define('_SKINABLEADMIN_TEXT_STR',                                      ' text');
+define('_SKINABLEADMIN_TITLE_STR',                                     ' title');
+define('_SKINABLEADMIN_ADMINSETTING_STR',                      ' set editmember is \'admin\'');
+define('_SKINABLEADMIN_NORMALSETTING_STR',                     ' normal');
+define('_SKINABLEADMIN_HELPICONURL_STR',                       ' icon URL');
+define('_SKINABLEADMIN_HELPFILEURL_STR',                       ' help file URL');
+define('_SKINABLEADMIN_ADMINSKINVAR_STR',                      ' skinvars');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_SELECT',      'selectbox used in ADMIN area');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE',       'Table for list indication');
+define('_SKINABLEADMIN_PLUGIN_QUICKMENU',                      'Link to admin page of the plugin shown to the quick-menu');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE',         'Template for option-type %s');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTMETA',         'Template for option-meta-data %s');
+define('_SKINABLEADMIN_MEMBERS_ADMINSKIN',                     "ADMIN-Area's skin");
+
+define('_LOCALE_BG_CYRL_BG',   'Bulgarian in Bulgaria');
+define('_LOCALE_CA_LATN_ES',   'Catalan in Spain');
+define('_LOCALE_CS_LATN_CZ',   'Czech in Czech Republic');
+define('_LOCALE_DE_LATN_DE',   'German in Germany');
+define('_LOCALE_EL_GREK_GR',   'Greek in Greece (Greek script) (Greek script)');
+define('_LOCALE_EN_LATN_US',   'English in United States');
+define('_LOCALE_ES_LATN_ES',   'Spanish in Spain');
+define('_LOCALE_FA_ARAB_IR',   'Persian in Islamic Republic of Iran');
+define('_LOCALE_FI_LATN_FI',   'Finnish in Finland');
+define('_LOCALE_FR_LATN_FR',   'French in France');
+define('_LOCALE_GL_LATN_ES',   'Galician in Spain');
+define('_LOCALE_HR_LATN_HR',   'Croatian in Croatia');
+define('_LOCALE_HU_LATN_HU',   'Hungarian in Hungary');
+define('_LOCALE_ID_LATN_ID',   'Indonesian in Indonesia (Latin script)');
+define('_LOCALE_IT_LATN_IT',   'Italian in Italy');
+define('_LOCALE_JA_JPAN_JP',   'Japanese in Japan');
+define('_LOCALE_KO_KORE_KR',   'Korean in Korea');
+define('_LOCALE_KU_ARAB_TR',   'Kurdish in Turkey (Arabic script)');
+define('_LOCALE_LV_LATN_LV',   'Latvian in Latvia');
+define('_LOCALE_NL_LATN_NL',   'Dutch in Netherlands');
+define('_LOCALE_PL_LATN_PL',   'Polish in Poland');
+define('_LOCALE_PT_LATN_BR',   'Portuguese in Brazil');
+define('_LOCALE_RO_LATN_RO',   'Romainan in Romania');
+define('_LOCALE_RU_CYRL_RU',   'Russian in Russia');
+define('_LOCALE_SK_LATN_SK',   'Slovak in Slovakia');
+define('_LOCALE_SR_CYRL_RS',   'Serbian in Serbia');
+define('_LOCALE_UR_ARAB_PK',   'Urdu in Pakistan');
+define('_LOCALE_VI_LATN_VN',   'Vietnamese in Vietnam (Latin script)');
+define('_LOCALE_ZH_HANS_CN',   'Chinese in China (simplified script)');
+define('_LOCALE_ZH_HANT_TW',   'Chinese in Taiwan (Traditional script)');
+
+define('_FORGOTPASSWORD_TITLE',                                'Forgot your password?');
+define('_FORGOTPASSWORD_MSG',                          'Enter your username and email address below, and you\'ll be sent an e-mail with a link where you can choose a new password.');
+define('_FORGOTPASSWORD_SUBMIT',                       'Send Activation Link" class="transparent');
+define('_FORGOTPASSWORD_CONTACT',                      'If you don\'t remember your exact username, contact the site administrator.');
+define('_SKINIE_INVALID_NAMES_DETECTED',       'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
+define('_LISTS_AUTHOR',                                                'Author');
+define('_OVERVIEW_OTHER_DRAFTS',                       'Other Drafts');
+define('_ERROR_BADADMINSKINNAME',                      'the name of skin for admin area must start with \'admin/\'.');
+define('_ERROR_BADADMINTEMPLATENAME',          'the name of template for admin area must start with \'admin/\'.');
+define('_SETTINGS_ADMINSKIN',                          'default skin for admin area');
+define('_SETTINGS_BKMKLTSKIN',                         'default skin for bookmarklet');
+define('_MEMBERS_BKMKLTSKIN',                          "bookmarklet skin");
+define('_ADMIN_SYSTEMOVERVIEW_VERSION_LATEST',         'The version which is being used is latest.');
+
+>>>>>>> skinnable-master
 /********************************************
  *        Start New for 3.6x                *
  ********************************************/
@@ -81,6 +169,7 @@ define('_EDITC_EMAIL',                               'E-mail');
 
 define('_MANAGER_PLUGINFILE_NOTFOUND',                         "Plugin %s was not loaded (File not found)");
 /* changed */
+<<<<<<< HEAD
 // plugin dependency 
 define('_ERROR_INSREQPLUGIN',          'Plugin installation failed, requires %s');
 define('_ERROR_DELREQPLUGIN',          'Plugin deletion failed, required by %s');
@@ -90,6 +179,17 @@ define('_ADD_ADDLATER',                                                             'Add the dates specified');
 
 define('_LOGIN_NAME',                          'Name:');
 define('_LOGIN_PASSWORD',                      'Password:');
+=======
+// plugin dependency
+define('_ERROR_INSREQPLUGIN',                  'Instalacija plugina nije uspjela, potrebno je ');
+define('_ERROR_DELREQPLUGIN',                  'Nije moguæe ukloniti plugin, potrebno je ');
+
+//define('_ADD_ADDLATER',                                                              'Add Later');
+define('_ADD_ADDLATER',                                        'Dodaj kasnije');
+
+define('_LOGIN_NAME',                                  'Korisnièko ime');
+define('_LOGIN_PASSWORD',                              'Zaporka');
+>>>>>>> skinnable-master
 
 // changed from _BOOKMARLET_BMARKLFOLLOW
 define('_BOOKMARKLET_BMARKFOLLOW',                                     ' (Works with nearly all browsers)');
@@ -186,6 +286,7 @@ define('_PLUGIN_OPTIONS_TITLE',                                                     'Options for %s');
 // Plugin file loda error
 define('_PLUGINFILE_COULDNT_BELOADED',                         'Error: plugin file <strong>%s.php</strong> could not be loaded, or it has been set inactive because it does not support some features (check the <a href="?action=actionlog">actionlog</a> for more info)');
 
+<<<<<<< HEAD
 //ITEM add/edit template (for japanese only)
 define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
 define('_ITEM_ADDEDITTEMPLATE_YEAR',                           'Year');
@@ -193,6 +294,9 @@ define('_ITEM_ADDEDITTEMPLATE_MONTH',                               'Month');
 define('_ITEM_ADDEDITTEMPLATE_DAY',                                    'Day');
 define('_ITEM_ADDEDITTEMPLATE_HOUR',                           'Hour');
 define('_ITEM_ADDEDITTEMPLATE_MINUTE',                         'Minute');
+=======
+define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
+>>>>>>> skinnable-master
 
 // Errors
 define('_ERRORS_INSTALLSQL',                                           'install.sql should be deleted');
@@ -350,10 +454,13 @@ define('_ARCHIVETYPE_MONTH',                      'mjesec');
 // tickets (prevents malicious users to trick an admin to perform actions he doesn't want)
 define('_ERROR_BADTICKET',                             'Neodgovarajuæi ili veæ iskori\9ateni kupon.');
 
+<<<<<<< HEAD
 // plugin dependency
 define('_ERROR_INSREQPLUGIN',                  'Instalacija plugina nije uspjela, potrebno je ');
 define('_ERROR_DELREQPLUGIN',                  'Nije moguæe ukloniti plugin, potrebno je ');
 
+=======
+>>>>>>> skinnable-master
 // cookie prefix
 define('_SETTINGS_COOKIEPREFIX',               'Cookie prefiks');
 
@@ -756,7 +863,10 @@ define('_COMMENTFORM_YOUARE',                      'Vi ste');
 define('_COMMENTFORM_SUBMIT',                  'Dodajte komentar');
 define('_COMMENTFORM_COMMENT',         'Va\9a komentar');
 define('_COMMENTFORM_NAME',                            'Ime');
+<<<<<<< HEAD
 define('_COMMENTFORM_MAIL',                            'E-mail/http');
+=======
+>>>>>>> skinnable-master
 define('_COMMENTFORM_REMEMBER',                'Zapamti');
 
 // loginform
@@ -783,7 +893,10 @@ define('_ADD_DISABLE_COMMENTS',            'Isklju
 define('_ADD_DRAFTNFUTURE',                            'Draft &amp; za kasnije postove');
 define('_ADD_ADDITEM',                                 'Dodaj post');
 define('_ADD_ADDNOW',                                  'Dodaj sada');
+<<<<<<< HEAD
 define('_ADD_ADDLATER',                                        'Dodaj kasnije');
+=======
+>>>>>>> skinnable-master
 define('_ADD_PLACE_ON',                                        'Kada dodati');
 define('_ADD_ADDDRAFT',                                        'Dodaj u draftove');
 define('_ADD_NOPASTDATES',                             '(raniji datumi i vrijeme ne mogu biti prihvaæeni, u sluèaju njihovog odabira bit æe uneseni trenutni datum i vrijeme.)');
@@ -1128,8 +1241,11 @@ define('_BAN_ADD_BTN',                                   'Postavi blokadu');
 
 // LOGIN screen
 define('_LOGIN_MESSAGE',                               'Obavijest');
+<<<<<<< HEAD
 define('_LOGIN_NAME',                                  'Korisnièko ime');
 define('_LOGIN_PASSWORD',                              'Zaporka');
+=======
+>>>>>>> skinnable-master
 define('_LOGIN_SHARED',                                        _LOGINFORM_SHARED);
 define('_LOGIN_FORGOT',                                        'Zaboravili ste zaporku?');
 
@@ -1260,3 +1376,22 @@ define('_EDITC_NONMEMBER',                               'posjetitelj');
 // move item
 define('_MOVE_TITLE',                                  'U koji blog prenijeti ovaj post?');
 define('_MOVE_BTN',                                            'Prenesi post');
+<<<<<<< HEAD
+=======
+
+// ADMIN-template template types
+include_once('adminskinTypes.php');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_NAVILIST',          'navibar for item/comment list');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is blog ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is super ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin URL');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'API entry');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'eventlist updates');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency to');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency by');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'couldn\'t load file');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin actions');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin admin link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin help link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin option setting link');
+>>>>>>> skinnable-master
index 0cb16a6..10d7242 100644 (file)
  * 
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2012 The Nucleus Group
+<<<<<<< HEAD
  * @version $Id: hu_Latn_HU.ISO-8859-2.php 1868 2012-05-22 05:10:53Z sakamocchi $
+=======
+ * @version $Id: hu_Latn_HU.ISO-8859-2.php 1887 2012-06-17 08:30:08Z sakamocchi $
+>>>>>>> skinnable-master
  */
 
 /********************************************
  *        Start New for 4.0                 *
  ********************************************/
-define('_SKINIE_INVALID_NAMES_DETECTED', 'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
-define('_LISTS_AUTHOR', 'Author');
-define('_OVERVIEW_OTHER_DRAFTS', 'Other Drafts');
+/* argument value for setlocale() in Microsoft's windows operating system */
+define('_LOCALE_IN_WINDOWS',   'hun_hun');
+
+/* labels for date and time measurement unit */
+define('_LABEL_YEAR_UNIT',             'year');
+define('_LABEL_MONTH_UNIT',            'month');
+define('_LABEL_DAY_UNIT',              'day');
+define('_LABEL_HOUR_UNIT',             'hour');
+define('_LABEL_MINUTE_UNIT',   'minute');
+
+// SkinableAdminArea vars
+define('_SKINABLEADMIN_DEL_UNINSTALL_DATA',                    'Delete ADMIN skin data table on uninstall?');
+define('_SKINABLEADMIN_DEFAULT_SKIN',                          'Choose a skin of the management area of the default.');
+define('_SKINABLEADMIN_MEMBER_DEFAULT_SKIN',           'Choose a skin of the management area of you use.');
+define('_SKINABLEADMIN_QMENU_LAYOUT',                          'Admin layout');
+define('_SKINABLEADMIN_PAGE_STR',                                      'page');
+define('_SKINABLEADMIN_BATCH_MOVE',                                    'Item move other category/Category move other blog');
+define('_SKINABLEADMIN_BATCH',                                         'batch');
+define('_SKINABLEADMIN_PAGEHEAD',                                      'Admin page head');
+define('_SKINABLEADMIN_PAGEFOOT',                                      'Admin page foot');
+define('_SKINABLEADMIN_TEMPLATEOVERVIEW',                      'Template overview');
+define('_SKINABLEADMIN_ADMINAREAHEADLINK',                     '[Your site]link');
+define('_SKINABLEADMIN_TPLSETTING_INGENERAL',          'In general');
+define('_SKINABLEADMIN_HEAD_STR',                                      ' head');
+define('_SKINABLEADMIN_BODY_STR',                                      ' body');
+define('_SKINABLEADMIN_FOOT_STR',                                      ' foot');
+define('_SKINABLEADMIN_TEXT_STR',                                      ' text');
+define('_SKINABLEADMIN_TITLE_STR',                                     ' title');
+define('_SKINABLEADMIN_ADMINSETTING_STR',                      ' set editmember is \'admin\'');
+define('_SKINABLEADMIN_NORMALSETTING_STR',                     ' normal');
+define('_SKINABLEADMIN_HELPICONURL_STR',                       ' icon URL');
+define('_SKINABLEADMIN_HELPFILEURL_STR',                       ' help file URL');
+define('_SKINABLEADMIN_ADMINSKINVAR_STR',                      ' skinvars');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_SELECT',      'selectbox used in ADMIN area');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE',       'Table for list indication');
+define('_SKINABLEADMIN_PLUGIN_QUICKMENU',                      'Link to admin page of the plugin shown to the quick-menu');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE',         'Template for option-type %s');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTMETA',         'Template for option-meta-data %s');
+define('_SKINABLEADMIN_MEMBERS_ADMINSKIN',                     "ADMIN-Area's skin");
+
+define('_LOCALE_BG_CYRL_BG',   'Bulgarian in Bulgaria');
+define('_LOCALE_CA_LATN_ES',   'Catalan in Spain');
+define('_LOCALE_CS_LATN_CZ',   'Czech in Czech Republic');
+define('_LOCALE_DE_LATN_DE',   'German in Germany');
+define('_LOCALE_EL_GREK_GR',   'Greek in Greece (Greek script)');
+define('_LOCALE_EN_LATN_US',   'English in United States');
+define('_LOCALE_ES_LATN_ES',   'Spanish in Spain');
+define('_LOCALE_FA_ARAB_IR',   'Persian in Islamic Republic of Iran');
+define('_LOCALE_FI_LATN_FI',   'Finnish in Finland');
+define('_LOCALE_FR_LATN_FR',   'French in France');
+define('_LOCALE_GL_LATN_ES',   'Galician in Spain');
+define('_LOCALE_HR_LATN_HR',   'Croatian in Croatia');
+define('_LOCALE_HU_LATN_HU',   'Hungarian in Hungary');
+define('_LOCALE_ID_LATN_ID',   'Indonesian in Indonesia (Latin script)');
+define('_LOCALE_IT_LATN_IT',   'Italian in Italy');
+define('_LOCALE_JA_JPAN_JP',   'Japanese in Japan');
+define('_LOCALE_KO_KORE_KR',   'Korean in Korea');
+define('_LOCALE_KU_ARAB_TR',   'Kurdish in Turkey (Arabic script)');
+define('_LOCALE_LV_LATN_LV',   'Latvian in Latvia');
+define('_LOCALE_NL_LATN_NL',   'Dutch in Netherlands');
+define('_LOCALE_PL_LATN_PL',   'Polish in Poland');
+define('_LOCALE_PT_LATN_BR',   'Portuguese in Brazil');
+define('_LOCALE_RO_LATN_RO',   'Romainan in Romania');
+define('_LOCALE_RU_CYRL_RU',   'Russian in Russia');
+define('_LOCALE_SK_LATN_SK',   'Slovak in Slovakia');
+define('_LOCALE_SR_CYRL_RS',   'Serbian in Serbia');
+define('_LOCALE_UR_ARAB_PK',   'Urdu in Pakistan');
+define('_LOCALE_VI_LATN_VN',   'Vietnamese in Vietnam (Latin script)');
+define('_LOCALE_ZH_HANS_CN',   'Chinese in China (simplified script)');
+define('_LOCALE_ZH_HANT_TW',   'Chinese in Taiwan (Traditional script)');
+
+define('_FORGOTPASSWORD_TITLE',                                'Forgot your password?');
+define('_FORGOTPASSWORD_MSG',                          'Enter your username and email address below, and you\'ll be sent an e-mail with a link where you can choose a new password.');
+define('_FORGOTPASSWORD_SUBMIT',                       'Send Activation Link" class="transparent');
+define('_FORGOTPASSWORD_CONTACT',                      'If you don\'t remember your exact username, contact the site administrator.');
+define('_SKINIE_INVALID_NAMES_DETECTED',       'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
+define('_LISTS_AUTHOR',                                                'Author');
+define('_OVERVIEW_OTHER_DRAFTS',                       'Other Drafts');
+define('_ERROR_BADADMINSKINNAME',                      'the name of skin for admin area must start with \'admin/\'.');
+define('_ERROR_BADADMINTEMPLATENAME',          'the name of template for admin area must start with \'admin/\'.');
+define('_SETTINGS_ADMINSKIN',                          'default skin for admin area');
+define('_SETTINGS_BKMKLTSKIN',                         'default skin for bookmarklet');
+define('_MEMBERS_BKMKLTSKIN',                          "bookmarklet skin");
+define('_ADMIN_SYSTEMOVERVIEW_VERSION_LATEST',         'The version which is being used is latest.');
+
 /********************************************
  *        Start New for 3.6x                *
  ********************************************/
@@ -187,13 +272,7 @@ define('_PLUGIN_OPTIONS_TITLE',                                                    'Options for %s');
 // Plugin file loda error
 define('_PLUGINFILE_COULDNT_BELOADED',                         'Error: plugin file <strong>%s.php</strong> could not be loaded, or it has been set inactive because it does not support some features (check the <a href="?action=actionlog">actionlog</a> for more info)');
 
-//ITEM add/edit template (for japanese only)
 define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
-define('_ITEM_ADDEDITTEMPLATE_YEAR',                           'Year');
-define('_ITEM_ADDEDITTEMPLATE_MONTH',                          'Month');
-define('_ITEM_ADDEDITTEMPLATE_DAY',                                    'Day');
-define('_ITEM_ADDEDITTEMPLATE_HOUR',                           'Hour');
-define('_ITEM_ADDEDITTEMPLATE_MINUTE',                         'Minute');
 
 // Errors
 define('_ERRORS_INSTALLSQL',                                           'install.sql should be deleted');
@@ -351,10 +430,13 @@ define('_ARCHIVETYPE_MONTH',              'h
 
 // tickets (prevents malicious users to trick an admin to perform actions he doesn't want)
 define('_ERROR_BADTICKET',                     'Hamis vagy lejárt címke.');
+<<<<<<< HEAD
 
 // plugin dependency
 define('_ERROR_INSREQPLUGIN',          'Plugin installáció sikertelen, szükséges: ');
 define('_ERROR_DELREQPLUGIN',          'Plugin törlése sikertelen, szükséges: ');
+=======
+>>>>>>> skinnable-master
 
 // cookie prefix
 define('_SETTINGS_COOKIEPREFIX',       'Süti elõtag');
@@ -762,7 +844,6 @@ define('_COMMENTFORM_YOUARE',               'Te vagy');
 define('_COMMENTFORM_SUBMIT',          'Megjegyzés írása');
 define('_COMMENTFORM_COMMENT',         'Üzeneted');
 define('_COMMENTFORM_NAME',                    'Neved');
-define('_COMMENTFORM_MAIL',                    'E-mail/HTTP');
 define('_COMMENTFORM_REMEMBER',                'Megjegyez');
 
 // loginform
@@ -789,7 +870,10 @@ define('_ADD_DISABLE_COMMENTS',            'Megjegyz
 define('_ADD_DRAFTNFUTURE',                    'Piszkozat &amp; Jövõbeni elemek');
 define('_ADD_ADDITEM',                         'Elem hozzáadása');
 define('_ADD_ADDNOW',                          'Hozzáadás azonnal');
+<<<<<<< HEAD
 define('_ADD_ADDLATER',                                'Hozzáadás késõbb');
+=======
+>>>>>>> skinnable-master
 define('_ADD_PLACE_ON',                                'Place on');
 define('_ADD_ADDDRAFT',                                'Hozzáadás a piszkozathoz');
 define('_ADD_NOPASTDATES',                     '(A régebbi dátum és idõ NEM érvényes, így ebben az esetben a mostani idõ lesz)');
@@ -1133,8 +1217,11 @@ define('_BAN_ADD_BTN',                           'Ban hozz
 
 // LOGIN screen
 define('_LOGIN_MESSAGE',                       'Üzenet');
+<<<<<<< HEAD
 define('_LOGIN_NAME',                          'Név');
 define('_LOGIN_PASSWORD',                      'Jelszó');
+=======
+>>>>>>> skinnable-master
 define('_LOGIN_SHARED',                                _LOGINFORM_SHARED);
 define('_LOGIN_FORGOT',                                'Elfelejetted a jelszavad?');
 
@@ -1266,3 +1353,22 @@ define('_EDITC_NONMEMBER',                       'Nem tag');
 // move item
 define('_MOVE_TITLE',                          'Melyik blogba mozgassam?');
 define('_MOVE_BTN',                                    'Elem áthelyezése');
+<<<<<<< HEAD
+=======
+
+// ADMIN-template template types
+include_once('adminskinTypes.php');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_NAVILIST',          'navibar for item/comment list');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is blog ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is super ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin URL');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'API entry');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'eventlist updates');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency to');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency by');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'couldn\'t load file');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin actions');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin admin link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin help link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin option setting link');
+>>>>>>> skinnable-master
index 10952d5..eda94cf 100644 (file)
  * 
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2012 The Nucleus Group
+<<<<<<< HEAD
  * @version $Id: hu_Latn_HU.UTF-8.php 1868 2012-05-22 05:10:53Z sakamocchi $
+=======
+ * @version $Id: hu_Latn_HU.UTF-8.php 1887 2012-06-17 08:30:08Z sakamocchi $
+>>>>>>> skinnable-master
  */
 
 /********************************************
  *        Start New for 4.0                 *
  ********************************************/
-define('_SKINIE_INVALID_NAMES_DETECTED', 'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
-define('_LISTS_AUTHOR', 'Author');
-define('_OVERVIEW_OTHER_DRAFTS', 'Other Drafts');
+/* argument value for setlocale() in Microsoft's windows operating system */
+define('_LOCALE_IN_WINDOWS',   'hun_hun');
+
+/* labels for date and time measurement unit */
+define('_LABEL_YEAR_UNIT',             'year');
+define('_LABEL_MONTH_UNIT',            'month');
+define('_LABEL_DAY_UNIT',              'day');
+define('_LABEL_HOUR_UNIT',             'hour');
+define('_LABEL_MINUTE_UNIT',   'minute');
+
+// SkinableAdminArea vars
+define('_SKINABLEADMIN_DEL_UNINSTALL_DATA',                    'Delete ADMIN skin data table on uninstall?');
+define('_SKINABLEADMIN_DEFAULT_SKIN',                          'Choose a skin of the management area of the default.');
+define('_SKINABLEADMIN_MEMBER_DEFAULT_SKIN',           'Choose a skin of the management area of you use.');
+define('_SKINABLEADMIN_QMENU_LAYOUT',                          'Admin layout');
+define('_SKINABLEADMIN_PAGE_STR',                                      'page');
+define('_SKINABLEADMIN_BATCH_MOVE',                                    'Item move other category/Category move other blog');
+define('_SKINABLEADMIN_BATCH',                                         'batch');
+define('_SKINABLEADMIN_PAGEHEAD',                                      'Admin page head');
+define('_SKINABLEADMIN_PAGEFOOT',                                      'Admin page foot');
+define('_SKINABLEADMIN_TEMPLATEOVERVIEW',                      'Template overview');
+define('_SKINABLEADMIN_ADMINAREAHEADLINK',                     '[Your site]link');
+define('_SKINABLEADMIN_TPLSETTING_INGENERAL',          'In general');
+define('_SKINABLEADMIN_HEAD_STR',                                      ' head');
+define('_SKINABLEADMIN_BODY_STR',                                      ' body');
+define('_SKINABLEADMIN_FOOT_STR',                                      ' foot');
+define('_SKINABLEADMIN_TEXT_STR',                                      ' text');
+define('_SKINABLEADMIN_TITLE_STR',                                     ' title');
+define('_SKINABLEADMIN_ADMINSETTING_STR',                      ' set editmember is \'admin\'');
+define('_SKINABLEADMIN_NORMALSETTING_STR',                     ' normal');
+define('_SKINABLEADMIN_HELPICONURL_STR',                       ' icon URL');
+define('_SKINABLEADMIN_HELPFILEURL_STR',                       ' help file URL');
+define('_SKINABLEADMIN_ADMINSKINVAR_STR',                      ' skinvars');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_SELECT',      'selectbox used in ADMIN area');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE',       'Table for list indication');
+define('_SKINABLEADMIN_PLUGIN_QUICKMENU',                      'Link to admin page of the plugin shown to the quick-menu');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE',         'Template for option-type %s');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTMETA',         'Template for option-meta-data %s');
+define('_SKINABLEADMIN_MEMBERS_ADMINSKIN',                     "ADMIN-Area's skin");
+
+define('_LOCALE_BG_CYRL_BG',   'Bulgarian in Bulgaria');
+define('_LOCALE_CA_LATN_ES',   'Catalan in Spain');
+define('_LOCALE_CS_LATN_CZ',   'Czech in Czech Republic');
+define('_LOCALE_DE_LATN_DE',   'German in Germany');
+define('_LOCALE_EL_GREK_GR',   'Greek in Greece (Greek script)');
+define('_LOCALE_EN_LATN_US',   'English in United States');
+define('_LOCALE_ES_LATN_ES',   'Spanish in Spain');
+define('_LOCALE_FA_ARAB_IR',   'Persian in Islamic Republic of Iran');
+define('_LOCALE_FI_LATN_FI',   'Finnish in Finland');
+define('_LOCALE_FR_LATN_FR',   'French in France');
+define('_LOCALE_GL_LATN_ES',   'Galician in Spain');
+define('_LOCALE_HR_LATN_HR',   'Croatian in Croatia');
+define('_LOCALE_HU_LATN_HU',   'Hungarian in Hungary');
+define('_LOCALE_ID_LATN_ID',   'Indonesian in Indonesia (Latin script)');
+define('_LOCALE_IT_LATN_IT',   'Italian in Italy');
+define('_LOCALE_JA_JPAN_JP',   'Japanese in Japan');
+define('_LOCALE_KO_KORE_KR',   'Korean in Korea');
+define('_LOCALE_KU_ARAB_TR',   'Kurdish in Turkey (Arabic script)');
+define('_LOCALE_LV_LATN_LV',   'Latvian in Latvia');
+define('_LOCALE_NL_LATN_NL',   'Dutch in Netherlands');
+define('_LOCALE_PL_LATN_PL',   'Polish in Poland');
+define('_LOCALE_PT_LATN_BR',   'Portuguese in Brazil');
+define('_LOCALE_RO_LATN_RO',   'Romainan in Romania');
+define('_LOCALE_RU_CYRL_RU',   'Russian in Russia');
+define('_LOCALE_SK_LATN_SK',   'Slovak in Slovakia');
+define('_LOCALE_SR_CYRL_RS',   'Serbian in Serbia');
+define('_LOCALE_UR_ARAB_PK',   'Urdu in Pakistan');
+define('_LOCALE_VI_LATN_VN',   'Vietnamese in Vietnam (Latin script)');
+define('_LOCALE_ZH_HANS_CN',   'Chinese in China (simplified script)');
+define('_LOCALE_ZH_HANT_TW',   'Chinese in Taiwan (Traditional script)');
+
+define('_FORGOTPASSWORD_TITLE',                                'Forgot your password?');
+define('_FORGOTPASSWORD_MSG',                          'Enter your username and email address below, and you\'ll be sent an e-mail with a link where you can choose a new password.');
+define('_FORGOTPASSWORD_SUBMIT',                       'Send Activation Link" class="transparent');
+define('_FORGOTPASSWORD_CONTACT',                      'If you don\'t remember your exact username, contact the site administrator.');
+define('_SKINIE_INVALID_NAMES_DETECTED',       'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
+define('_LISTS_AUTHOR',                                                'Author');
+define('_OVERVIEW_OTHER_DRAFTS',                       'Other Drafts');
+define('_ERROR_BADADMINSKINNAME',                      'the name of skin for admin area must start with \'admin/\'.');
+define('_ERROR_BADADMINTEMPLATENAME',          'the name of template for admin area must start with \'admin/\'.');
+define('_SETTINGS_ADMINSKIN',                          'default skin for admin area');
+define('_SETTINGS_BKMKLTSKIN',                         'default skin for bookmarklet');
+define('_MEMBERS_BKMKLTSKIN',                          "bookmarklet skin");
+define('_ADMIN_SYSTEMOVERVIEW_VERSION_LATEST',         'The version which is being used is latest.');
+
 /********************************************
  *        Start New for 3.6x                *
  ********************************************/
@@ -187,13 +272,7 @@ define('_PLUGIN_OPTIONS_TITLE',                                                    'Options for %s');
 // Plugin file loda error
 define('_PLUGINFILE_COULDNT_BELOADED',                         'Error: plugin file <strong>%s.php</strong> could not be loaded, or it has been set inactive because it does not support some features (check the <a href="?action=actionlog">actionlog</a> for more info)');
 
-//ITEM add/edit template (for japanese only)
 define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
-define('_ITEM_ADDEDITTEMPLATE_YEAR',                           'Year');
-define('_ITEM_ADDEDITTEMPLATE_MONTH',                          'Month');
-define('_ITEM_ADDEDITTEMPLATE_DAY',                                    'Day');
-define('_ITEM_ADDEDITTEMPLATE_HOUR',                           'Hour');
-define('_ITEM_ADDEDITTEMPLATE_MINUTE',                         'Minute');
 
 // Errors
 define('_ERRORS_INSTALLSQL',                                           'install.sql should be deleted');
@@ -352,10 +431,6 @@ define('_ARCHIVETYPE_MONTH',               'hónap');
 // tickets (prevents malicious users to trick an admin to perform actions he doesn't want)
 define('_ERROR_BADTICKET',                     'Hamis vagy lejárt címke.');
 
-// plugin dependency
-define('_ERROR_INSREQPLUGIN',          'Plugin installáció sikertelen, szükséges: ');
-define('_ERROR_DELREQPLUGIN',          'Plugin törlése sikertelen, szükséges: ');
-
 // cookie prefix
 define('_SETTINGS_COOKIEPREFIX',       'Süti előtag');
 
@@ -762,7 +837,6 @@ define('_COMMENTFORM_YOUARE',               'Te vagy');
 define('_COMMENTFORM_SUBMIT',          'Megjegyzés írása');
 define('_COMMENTFORM_COMMENT',         'Üzeneted');
 define('_COMMENTFORM_NAME',                    'Neved');
-define('_COMMENTFORM_MAIL',                    'E-mail/HTTP');
 define('_COMMENTFORM_REMEMBER',                'Megjegyez');
 
 // loginform
@@ -789,7 +863,6 @@ define('_ADD_DISABLE_COMMENTS',             'Megjegyzések tiltása');
 define('_ADD_DRAFTNFUTURE',                    'Piszkozat &amp; Jövőbeni elemek');
 define('_ADD_ADDITEM',                         'Elem hozzáadása');
 define('_ADD_ADDNOW',                          'Hozzáadás azonnal');
-define('_ADD_ADDLATER',                                'Hozzáadás később');
 define('_ADD_PLACE_ON',                                'Place on');
 define('_ADD_ADDDRAFT',                                'Hozzáadás a piszkozathoz');
 define('_ADD_NOPASTDATES',                     '(A régebbi dátum és idő NEM érvényes, így ebben az esetben a mostani idő lesz)');
@@ -1133,8 +1206,6 @@ define('_BAN_ADD_BTN',                            'Ban hozzáadása');
 
 // LOGIN screen
 define('_LOGIN_MESSAGE',                       'Üzenet');
-define('_LOGIN_NAME',                          'Név');
-define('_LOGIN_PASSWORD',                      'Jelszó');
 define('_LOGIN_SHARED',                                _LOGINFORM_SHARED);
 define('_LOGIN_FORGOT',                                'Elfelejetted a jelszavad?');
 
@@ -1266,3 +1337,19 @@ define('_EDITC_NONMEMBER',                       'Nem tag');
 // move item
 define('_MOVE_TITLE',                          'Melyik blogba mozgassam?');
 define('_MOVE_BTN',                                    'Elem áthelyezése');
+
+// ADMIN-template template types
+include_once('adminskinTypes.php');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_NAVILIST',          'navibar for item/comment list');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is blog ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is super ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin URL');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'API entry');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'eventlist updates');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency to');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency by');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'couldn\'t load file');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin actions');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin admin link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin help link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin option setting link');
index 7e814e3..4e751bc 100644 (file)
 /********************************************
  *        Start New for 4.0                 *
  ********************************************/
+<<<<<<< HEAD
 define('_SKINIE_INVALID_NAMES_DETECTED', 'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
 define('_LISTS_AUTHOR', 'Author');
 define('_OVERVIEW_OTHER_DRAFTS', 'Other Drafts');
  
+=======
+/* argument value for setlocale() in Microsoft's windows operating system */
+define('_LOCALE_IN_WINDOWS',   'C');
+
+/* labels for date and time measurement unit */
+define('_LABEL_YEAR_UNIT',             'year');
+define('_LABEL_MONTH_UNIT',            'month');
+define('_LABEL_DAY_UNIT',              'day');
+define('_LABEL_HOUR_UNIT',             'hour');
+define('_LABEL_MINUTE_UNIT',   'minute');
+
+// SkinableAdminArea vars
+define('_SKINABLEADMIN_DEL_UNINSTALL_DATA',                    'Delete ADMIN skin data table on uninstall?');
+define('_SKINABLEADMIN_DEFAULT_SKIN',                          'Choose a skin of the management area of the default.');
+define('_SKINABLEADMIN_MEMBER_DEFAULT_SKIN',           'Choose a skin of the management area of you use.');
+define('_SKINABLEADMIN_QMENU_LAYOUT',                          'Admin layout');
+define('_SKINABLEADMIN_PAGE_STR',                                      'page');
+define('_SKINABLEADMIN_BATCH_MOVE',                                    'Item move other category/Category move other blog');
+define('_SKINABLEADMIN_BATCH',                                         'batch');
+define('_SKINABLEADMIN_PAGEHEAD',                                      'Admin page head');
+define('_SKINABLEADMIN_PAGEFOOT',                                      'Admin page foot');
+define('_SKINABLEADMIN_TEMPLATEOVERVIEW',                      'Template overview');
+define('_SKINABLEADMIN_ADMINAREAHEADLINK',                     '[Your site]link');
+define('_SKINABLEADMIN_TPLSETTING_INGENERAL',          'In general');
+define('_SKINABLEADMIN_HEAD_STR',                                      ' head');
+define('_SKINABLEADMIN_BODY_STR',                                      ' body');
+define('_SKINABLEADMIN_FOOT_STR',                                      ' foot');
+define('_SKINABLEADMIN_TEXT_STR',                                      ' text');
+define('_SKINABLEADMIN_TITLE_STR',                                     ' title');
+define('_SKINABLEADMIN_ADMINSETTING_STR',                      ' set editmember is \'admin\'');
+define('_SKINABLEADMIN_NORMALSETTING_STR',                     ' normal');
+define('_SKINABLEADMIN_HELPICONURL_STR',                       ' icon URL');
+define('_SKINABLEADMIN_HELPFILEURL_STR',                       ' help file URL');
+define('_SKINABLEADMIN_ADMINSKINVAR_STR',                      ' skinvars');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_SELECT',      'selectbox used in ADMIN area');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE',       'Table for list indication');
+define('_SKINABLEADMIN_PLUGIN_QUICKMENU',                      'Link to admin page of the plugin shown to the quick-menu');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE',         'Template for option-type %s');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTMETA',         'Template for option-meta-data %s');
+define('_SKINABLEADMIN_MEMBERS_ADMINSKIN',                     "ADMIN-Area's skin");
+
+define('_LOCALE_BG_CYRL_BG',   'Bulgarian in Bulgaria');
+define('_LOCALE_CA_LATN_ES',   'Catalan in Spain');
+define('_LOCALE_CS_LATN_CZ',   'Czech in Czech Republic');
+define('_LOCALE_DE_LATN_DE',   'German in Germany');
+define('_LOCALE_EL_GREK_GR',   'Greek in Greece (Greek script) (Greek script)');
+define('_LOCALE_EN_LATN_US',   'English in United States');
+define('_LOCALE_ES_LATN_ES',   'Spanish in Spain');
+define('_LOCALE_FA_ARAB_IR',   'Persian in Islamic Republic of Iran');
+define('_LOCALE_FI_LATN_FI',   'Finnish in Finland');
+define('_LOCALE_FR_LATN_FR',   'French in France');
+define('_LOCALE_GL_LATN_ES',   'Galician in Spain');
+define('_LOCALE_HR_LATN_HR',   'Croatian in Croatia');
+define('_LOCALE_HU_LATN_HU',   'Hungarian in Hungary');
+define('_LOCALE_ID_LATN_ID',   'Indonesian in Indonesia (Latin script)');
+define('_LOCALE_IT_LATN_IT',   'Italian in Italy');
+define('_LOCALE_JA_JPAN_JP',   'Japanese in Japan');
+define('_LOCALE_KO_KORE_KR',   'Korean in Korea');
+define('_LOCALE_KU_ARAB_TR',   'Kurdish in Turkey (Arabic script)');
+define('_LOCALE_LV_LATN_LV',   'Latvian in Latvia');
+define('_LOCALE_NL_LATN_NL',   'Dutch in Netherlands');
+define('_LOCALE_PL_LATN_PL',   'Polish in Poland');
+define('_LOCALE_PT_LATN_BR',   'Portuguese in Brazil');
+define('_LOCALE_RO_LATN_RO',   'Romainan in Romania');
+define('_LOCALE_RU_CYRL_RU',   'Russian in Russia');
+define('_LOCALE_SK_LATN_SK',   'Slovak in Slovakia');
+define('_LOCALE_SR_CYRL_RS',   'Serbian in Serbia');
+define('_LOCALE_UR_ARAB_PK',   'Urdu in Pakistan');
+define('_LOCALE_VI_LATN_VN',   'Vietnamese in Vietnam (Latin script)');
+define('_LOCALE_ZH_HANS_CN',   'Chinese in China (simplified script)');
+define('_LOCALE_ZH_HANT_TW',   'Chinese in Taiwan (Traditional script)');
+
+define('_FORGOTPASSWORD_TITLE',                                'Forgot your password?');
+define('_FORGOTPASSWORD_MSG',                          'Enter your username and email address below, and you\'ll be sent an e-mail with a link where you can choose a new password.');
+define('_FORGOTPASSWORD_SUBMIT',                       'Send Activation Link" class="transparent');
+define('_FORGOTPASSWORD_CONTACT',                      'If you don\'t remember your exact username, contact the site administrator.');
+define('_SKINIE_INVALID_NAMES_DETECTED',       'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
+define('_LISTS_AUTHOR',                                                'Author');
+define('_OVERVIEW_OTHER_DRAFTS',                       'Other Drafts');
+define('_ERROR_BADADMINSKINNAME',                      'the name of skin for admin area must start with \'admin/\'.');
+define('_ERROR_BADADMINTEMPLATENAME',          'the name of template for admin area must start with \'admin/\'.');
+define('_SETTINGS_ADMINSKIN',                          'default skin for admin area');
+define('_SETTINGS_BKMKLTSKIN',                         'default skin for bookmarklet');
+define('_MEMBERS_BKMKLTSKIN',                          "bookmarklet skin");
+define('_ADMIN_SYSTEMOVERVIEW_VERSION_LATEST',         'The version which is being used is latest.');
+
+>>>>>>> skinnable-master
 /********************************************
  *        Start New for 3.6x                *
  ********************************************/
@@ -186,6 +274,7 @@ define('_PLUGIN_OPTIONS_TITLE',                                                     'Options for %s');
 // Plugin file loda error
 define('_PLUGINFILE_COULDNT_BELOADED',                         'Error: plugin file <strong>%s.php</strong> could not be loaded, or it has been set inactive because it does not support some features (check the <a href="?action=actionlog">actionlog</a> for more info)');
 
+<<<<<<< HEAD
 //ITEM add/edit template (for japanese only)
 define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
 define('_ITEM_ADDEDITTEMPLATE_YEAR',                           'Year');
@@ -193,6 +282,9 @@ define('_ITEM_ADDEDITTEMPLATE_MONTH',                               'Month');
 define('_ITEM_ADDEDITTEMPLATE_DAY',                                    'Day');
 define('_ITEM_ADDEDITTEMPLATE_HOUR',                           'Hour');
 define('_ITEM_ADDEDITTEMPLATE_MINUTE',                         'Minute');
+=======
+define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
+>>>>>>> skinnable-master
 
 // Errors
 define('_ERRORS_INSTALLSQL',                                           'install.sql should be deleted');
@@ -352,10 +444,13 @@ define('_ARCHIVETYPE_MONTH',              'bulan');
 // tickets (prevents malicious users to trick an admin to perform actions he doesn't want)
 define('_ERROR_BADTICKET',                     'Tiket tidak sah atau kadaluarsa.');
 
+<<<<<<< HEAD
 // plugin dependency
 define('_ERROR_INSREQPLUGIN',          'Instalasi Plugingagal, harus ada ');
 define('_ERROR_DELREQPLUGIN',          'Menghapus Plugin gagal, dibutuhkan oleh ');
 
+=======
+>>>>>>> skinnable-master
 // cookie prefix
 define('_SETTINGS_COOKIEPREFIX',       'Awalan Cookie');
 
@@ -758,7 +853,10 @@ define('_COMMENTFORM_YOUARE',              'Anda adalah');
 define('_COMMENTFORM_SUBMIT',          'Tambahkan komentar');
 define('_COMMENTFORM_COMMENT',         'Komentar Anda');
 define('_COMMENTFORM_NAME',                    'Nama');
+<<<<<<< HEAD
 define('_COMMENTFORM_MAIL',                    'E-mail/HTTP');
+=======
+>>>>>>> skinnable-master
 define('_COMMENTFORM_REMEMBER',                'Ingat Saya');
 
 // loginform
@@ -785,7 +883,10 @@ define('_ADD_DISABLE_COMMENTS',            'Tidak mengizinkan komentar?');
 define('_ADD_DRAFTNFUTURE',                    'Draft &amp; Isi untuk nanti');
 define('_ADD_ADDITEM',                         'Tambahkan Isi');
 define('_ADD_ADDNOW',                          'Tambahkan Sekarang');
+<<<<<<< HEAD
 define('_ADD_ADDLATER',                                'Tambahkan Nanti');
+=======
+>>>>>>> skinnable-master
 define('_ADD_PLACE_ON',                                'Taruh di');
 define('_ADD_ADDDRAFT',                                'Tambahkan ke draft');
 define('_ADD_NOPASTDATES',                     '(tanggal dan waktu di masa lampau tidak sah, waktu yang sekarang yang akan dipakai)');
@@ -1129,8 +1230,11 @@ define('_BAN_ADD_BTN',                           'Tambah daftar cekal');
 
 // LOGIN screen
 define('_LOGIN_MESSAGE',                       'Pesan');
+<<<<<<< HEAD
 define('_LOGIN_NAME',                          'Nama');
 define('_LOGIN_PASSWORD',                      'Password');
+=======
+>>>>>>> skinnable-master
 define('_LOGIN_SHARED',                                _LOGINFORM_SHARED);
 define('_LOGIN_FORGOT',                                'Lupa password Anda?');
 
@@ -1262,3 +1366,22 @@ define('_EDITC_NONMEMBER',                       'bukan anggota');
 // move item
 define('_MOVE_TITLE',                          'Pindahkan ke blog mana?');
 define('_MOVE_BTN',                                    'Pindahkan Isi');
+<<<<<<< HEAD
+=======
+
+// ADMIN-template template types
+include_once('adminskinTypes.php');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_NAVILIST',          'navibar for item/comment list');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is blog ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is super ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin URL');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'API entry');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'eventlist updates');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency to');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency by');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'couldn\'t load file');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin actions');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin admin link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin help link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin option setting link');
+>>>>>>> skinnable-master
index 6bd4688..e85be38 100644 (file)
 /********************************************
  *        Start New for 4.0                 *
  ********************************************/
+<<<<<<< HEAD
 define('_SKINIE_INVALID_NAMES_DETECTED', 'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
 define('_LISTS_AUTHOR', 'Author');
 define('_OVERVIEW_OTHER_DRAFTS', 'Other Drafts');
  
+=======
+/* argument value for setlocale() in Microsoft's windows operating system */
+define('_LOCALE_IN_WINDOWS',   'C');
+
+/* labels for date and time measurement unit */
+define('_LABEL_YEAR_UNIT',             'year');
+define('_LABEL_MONTH_UNIT',            'month');
+define('_LABEL_DAY_UNIT',              'day');
+define('_LABEL_HOUR_UNIT',             'hour');
+define('_LABEL_MINUTE_UNIT',   'minute');
+
+// SkinableAdminArea vars
+define('_SKINABLEADMIN_DEL_UNINSTALL_DATA',                    'Delete ADMIN skin data table on uninstall?');
+define('_SKINABLEADMIN_DEFAULT_SKIN',                          'Choose a skin of the management area of the default.');
+define('_SKINABLEADMIN_MEMBER_DEFAULT_SKIN',           'Choose a skin of the management area of you use.');
+define('_SKINABLEADMIN_QMENU_LAYOUT',                          'Admin layout');
+define('_SKINABLEADMIN_PAGE_STR',                                      'page');
+define('_SKINABLEADMIN_BATCH_MOVE',                                    'Item move other category/Category move other blog');
+define('_SKINABLEADMIN_BATCH',                                         'batch');
+define('_SKINABLEADMIN_PAGEHEAD',                                      'Admin page head');
+define('_SKINABLEADMIN_PAGEFOOT',                                      'Admin page foot');
+define('_SKINABLEADMIN_TEMPLATEOVERVIEW',                      'Template overview');
+define('_SKINABLEADMIN_ADMINAREAHEADLINK',                     '[Your site]link');
+define('_SKINABLEADMIN_TPLSETTING_INGENERAL',          'In general');
+define('_SKINABLEADMIN_HEAD_STR',                                      ' head');
+define('_SKINABLEADMIN_BODY_STR',                                      ' body');
+define('_SKINABLEADMIN_FOOT_STR',                                      ' foot');
+define('_SKINABLEADMIN_TEXT_STR',                                      ' text');
+define('_SKINABLEADMIN_TITLE_STR',                                     ' title');
+define('_SKINABLEADMIN_ADMINSETTING_STR',                      ' set editmember is \'admin\'');
+define('_SKINABLEADMIN_NORMALSETTING_STR',                     ' normal');
+define('_SKINABLEADMIN_HELPICONURL_STR',                       ' icon URL');
+define('_SKINABLEADMIN_HELPFILEURL_STR',                       ' help file URL');
+define('_SKINABLEADMIN_ADMINSKINVAR_STR',                      ' skinvars');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_SELECT',      'selectbox used in ADMIN area');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE',       'Table for list indication');
+define('_SKINABLEADMIN_PLUGIN_QUICKMENU',                      'Link to admin page of the plugin shown to the quick-menu');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE',         'Template for option-type %s');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTMETA',         'Template for option-meta-data %s');
+define('_SKINABLEADMIN_MEMBERS_ADMINSKIN',                     "ADMIN-Area's skin");
+
+define('_LOCALE_BG_CYRL_BG',   'Bulgarian in Bulgaria');
+define('_LOCALE_CA_LATN_ES',   'Catalan in Spain');
+define('_LOCALE_CS_LATN_CZ',   'Czech in Czech Republic');
+define('_LOCALE_DE_LATN_DE',   'German in Germany');
+define('_LOCALE_EL_GREK_GR',   'Greek in Greece (Greek script) (Greek script)');
+define('_LOCALE_EN_LATN_US',   'English in United States');
+define('_LOCALE_ES_LATN_ES',   'Spanish in Spain');
+define('_LOCALE_FA_ARAB_IR',   'Persian in Islamic Republic of Iran');
+define('_LOCALE_FI_LATN_FI',   'Finnish in Finland');
+define('_LOCALE_FR_LATN_FR',   'French in France');
+define('_LOCALE_GL_LATN_ES',   'Galician in Spain');
+define('_LOCALE_HR_LATN_HR',   'Croatian in Croatia');
+define('_LOCALE_HU_LATN_HU',   'Hungarian in Hungary');
+define('_LOCALE_ID_LATN_ID',   'Indonesian in Indonesia (Latin script)');
+define('_LOCALE_IT_LATN_IT',   'Italian in Italy');
+define('_LOCALE_JA_JPAN_JP',   'Japanese in Japan');
+define('_LOCALE_KO_KORE_KR',   'Korean in Korea');
+define('_LOCALE_KU_ARAB_TR',   'Kurdish in Turkey (Arabic script)');
+define('_LOCALE_LV_LATN_LV',   'Latvian in Latvia');
+define('_LOCALE_NL_LATN_NL',   'Dutch in Netherlands');
+define('_LOCALE_PL_LATN_PL',   'Polish in Poland');
+define('_LOCALE_PT_LATN_BR',   'Portuguese in Brazil');
+define('_LOCALE_RO_LATN_RO',   'Romainan in Romania');
+define('_LOCALE_RU_CYRL_RU',   'Russian in Russia');
+define('_LOCALE_SK_LATN_SK',   'Slovak in Slovakia');
+define('_LOCALE_SR_CYRL_RS',   'Serbian in Serbia');
+define('_LOCALE_UR_ARAB_PK',   'Urdu in Pakistan');
+define('_LOCALE_VI_LATN_VN',   'Vietnamese in Vietnam (Latin script)');
+define('_LOCALE_ZH_HANS_CN',   'Chinese in China (simplified script)');
+define('_LOCALE_ZH_HANT_TW',   'Chinese in Taiwan (Traditional script)');
+
+define('_FORGOTPASSWORD_TITLE',                                'Forgot your password?');
+define('_FORGOTPASSWORD_MSG',                          'Enter your username and email address below, and you\'ll be sent an e-mail with a link where you can choose a new password.');
+define('_FORGOTPASSWORD_SUBMIT',                       'Send Activation Link" class="transparent');
+define('_FORGOTPASSWORD_CONTACT',                      'If you don\'t remember your exact username, contact the site administrator.');
+define('_SKINIE_INVALID_NAMES_DETECTED',       'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
+define('_LISTS_AUTHOR',                                                'Author');
+define('_OVERVIEW_OTHER_DRAFTS',                       'Other Drafts');
+define('_ERROR_BADADMINSKINNAME',                      'the name of skin for admin area must start with \'admin/\'.');
+define('_ERROR_BADADMINTEMPLATENAME',          'the name of template for admin area must start with \'admin/\'.');
+define('_SETTINGS_ADMINSKIN',                          'default skin for admin area');
+define('_SETTINGS_BKMKLTSKIN',                         'default skin for bookmarklet');
+define('_MEMBERS_BKMKLTSKIN',                          "bookmarklet skin");
+define('_ADMIN_SYSTEMOVERVIEW_VERSION_LATEST',         'The version which is being used is latest.');
+
+>>>>>>> skinnable-master
 /********************************************
  *        Start New for 3.6x                *
  ********************************************/
@@ -186,6 +274,7 @@ define('_PLUGIN_OPTIONS_TITLE',                                                     'Options for %s');
 // Plugin file loda error
 define('_PLUGINFILE_COULDNT_BELOADED',                         'Error: plugin file <strong>%s.php</strong> could not be loaded, or it has been set inactive because it does not support some features (check the <a href="?action=actionlog">actionlog</a> for more info)');
 
+<<<<<<< HEAD
 //ITEM add/edit template (for japanese only)
 define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
 define('_ITEM_ADDEDITTEMPLATE_YEAR',                           'Year');
@@ -193,6 +282,9 @@ define('_ITEM_ADDEDITTEMPLATE_MONTH',                               'Month');
 define('_ITEM_ADDEDITTEMPLATE_DAY',                                    'Day');
 define('_ITEM_ADDEDITTEMPLATE_HOUR',                           'Hour');
 define('_ITEM_ADDEDITTEMPLATE_MINUTE',                         'Minute');
+=======
+define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
+>>>>>>> skinnable-master
 
 // Errors
 define('_ERRORS_INSTALLSQL',                                           'install.sql should be deleted');
@@ -352,10 +444,13 @@ define('_ARCHIVETYPE_MONTH',              'bulan');
 // tickets (prevents malicious users to trick an admin to perform actions he doesn't want)
 define('_ERROR_BADTICKET',                     'Tiket tidak sah atau kadaluarsa.');
 
+<<<<<<< HEAD
 // plugin dependency
 define('_ERROR_INSREQPLUGIN',          'Instalasi Plugingagal, harus ada ');
 define('_ERROR_DELREQPLUGIN',          'Menghapus Plugin gagal, dibutuhkan oleh ');
 
+=======
+>>>>>>> skinnable-master
 // cookie prefix
 define('_SETTINGS_COOKIEPREFIX',       'Awalan Cookie');
 
@@ -758,7 +853,10 @@ define('_COMMENTFORM_YOUARE',              'Anda adalah');
 define('_COMMENTFORM_SUBMIT',          'Tambahkan komentar');
 define('_COMMENTFORM_COMMENT',         'Komentar Anda');
 define('_COMMENTFORM_NAME',                    'Nama');
+<<<<<<< HEAD
 define('_COMMENTFORM_MAIL',                    'E-mail/HTTP');
+=======
+>>>>>>> skinnable-master
 define('_COMMENTFORM_REMEMBER',                'Ingat Saya');
 
 // loginform
@@ -785,7 +883,10 @@ define('_ADD_DISABLE_COMMENTS',            'Tidak mengizinkan komentar?');
 define('_ADD_DRAFTNFUTURE',                    'Draft &amp; Isi untuk nanti');
 define('_ADD_ADDITEM',                         'Tambahkan Isi');
 define('_ADD_ADDNOW',                          'Tambahkan Sekarang');
+<<<<<<< HEAD
 define('_ADD_ADDLATER',                                'Tambahkan Nanti');
+=======
+>>>>>>> skinnable-master
 define('_ADD_PLACE_ON',                                'Taruh di');
 define('_ADD_ADDDRAFT',                                'Tambahkan ke draft');
 define('_ADD_NOPASTDATES',                     '(tanggal dan waktu di masa lampau tidak sah, waktu yang sekarang yang akan dipakai)');
@@ -1129,8 +1230,11 @@ define('_BAN_ADD_BTN',                           'Tambah daftar cekal');
 
 // LOGIN screen
 define('_LOGIN_MESSAGE',                       'Pesan');
+<<<<<<< HEAD
 define('_LOGIN_NAME',                          'Nama');
 define('_LOGIN_PASSWORD',                      'Password');
+=======
+>>>>>>> skinnable-master
 define('_LOGIN_SHARED',                                _LOGINFORM_SHARED);
 define('_LOGIN_FORGOT',                                'Lupa password Anda?');
 
@@ -1262,3 +1366,22 @@ define('_EDITC_NONMEMBER',                       'bukan anggota');
 // move item
 define('_MOVE_TITLE',                          'Pindahkan ke blog mana?');
 define('_MOVE_BTN',                                    'Pindahkan Isi');
+<<<<<<< HEAD
+=======
+
+// ADMIN-template template types
+include_once('adminskinTypes.php');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_NAVILIST',          'navibar for item/comment list');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is blog ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is super ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin URL');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'API entry');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'eventlist updates');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency to');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency by');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'couldn\'t load file');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin actions');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin admin link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin help link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin option setting link');
+>>>>>>> skinnable-master
index ce85742..19a370e 100644 (file)
  * 
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2012 The Nucleus Group
+<<<<<<< HEAD
  * @version $Id: it_Latn_IT.ISO-8859-1.php 1868 2012-05-22 05:10:53Z sakamocchi $
+=======
+ * @version $Id: it_Latn_IT.ISO-8859-1.php 1887 2012-06-17 08:30:08Z sakamocchi $
+>>>>>>> skinnable-master
  */
 
 /********************************************
  *        Start New for 4.0                 *
  ********************************************/
-define('_SKINIE_INVALID_NAMES_DETECTED', 'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
-define('_LISTS_AUTHOR', 'Author');
-define('_OVERVIEW_OTHER_DRAFTS', 'Other Drafts');
+/* argument value for setlocale() in Microsoft's windows operating system */
+define('_LOCALE_IN_WINDOWS',   'ita_ita');
+
+/* labels for date and time measurement unit */
+define('_LABEL_YEAR_UNIT',             'year');
+define('_LABEL_MONTH_UNIT',            'month');
+define('_LABEL_DAY_UNIT',              'day');
+define('_LABEL_HOUR_UNIT',             'hour');
+define('_LABEL_MINUTE_UNIT',   'minute');
+
+// SkinableAdminArea vars
+define('_SKINABLEADMIN_DEL_UNINSTALL_DATA',                    'Delete ADMIN skin data table on uninstall?');
+define('_SKINABLEADMIN_DEFAULT_SKIN',                          'Choose a skin of the management area of the default.');
+define('_SKINABLEADMIN_MEMBER_DEFAULT_SKIN',           'Choose a skin of the management area of you use.');
+define('_SKINABLEADMIN_QMENU_LAYOUT',                          'Admin layout');
+define('_SKINABLEADMIN_PAGE_STR',                                      'page');
+define('_SKINABLEADMIN_BATCH_MOVE',                                    'Item move other category/Category move other blog');
+define('_SKINABLEADMIN_BATCH',                                         'batch');
+define('_SKINABLEADMIN_PAGEHEAD',                                      'Admin page head');
+define('_SKINABLEADMIN_PAGEFOOT',                                      'Admin page foot');
+define('_SKINABLEADMIN_TEMPLATEOVERVIEW',                      'Template overview');
+define('_SKINABLEADMIN_ADMINAREAHEADLINK',                     '[Your site]link');
+define('_SKINABLEADMIN_TPLSETTING_INGENERAL',          'In general');
+define('_SKINABLEADMIN_HEAD_STR',                                      ' head');
+define('_SKINABLEADMIN_BODY_STR',                                      ' body');
+define('_SKINABLEADMIN_FOOT_STR',                                      ' foot');
+define('_SKINABLEADMIN_TEXT_STR',                                      ' text');
+define('_SKINABLEADMIN_TITLE_STR',                                     ' title');
+define('_SKINABLEADMIN_ADMINSETTING_STR',                      ' set editmember is \'admin\'');
+define('_SKINABLEADMIN_NORMALSETTING_STR',                     ' normal');
+define('_SKINABLEADMIN_HELPICONURL_STR',                       ' icon URL');
+define('_SKINABLEADMIN_HELPFILEURL_STR',                       ' help file URL');
+define('_SKINABLEADMIN_ADMINSKINVAR_STR',                      ' skinvars');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_SELECT',      'selectbox used in ADMIN area');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE',       'Table for list indication');
+define('_SKINABLEADMIN_PLUGIN_QUICKMENU',                      'Link to admin page of the plugin shown to the quick-menu');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE',         'Template for option-type %s');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTMETA',         'Template for option-meta-data %s');
+define('_SKINABLEADMIN_MEMBERS_ADMINSKIN',                     "ADMIN-Area's skin");
+
+define('_LOCALE_BG_CYRL_BG',   'Bulgarian in Bulgaria');
+define('_LOCALE_CA_LATN_ES',   'Catalan in Spain');
+define('_LOCALE_CS_LATN_CZ',   'Czech in Czech Republic');
+define('_LOCALE_DE_LATN_DE',   'German in Germany');
+define('_LOCALE_EL_GREK_GR',   'Greek in Greece (Greek script)');
+define('_LOCALE_EN_LATN_US',   'English in United States');
+define('_LOCALE_ES_LATN_ES',   'Spanish in Spain');
+define('_LOCALE_FA_ARAB_IR',   'Persian in Islamic Republic of Iran');
+define('_LOCALE_FI_LATN_FI',   'Finnish in Finland');
+define('_LOCALE_FR_LATN_FR',   'French in France');
+define('_LOCALE_GL_LATN_ES',   'Galician in Spain');
+define('_LOCALE_HR_LATN_HR',   'Croatian in Croatia');
+define('_LOCALE_HU_LATN_HU',   'Hungarian in Hungary');
+define('_LOCALE_ID_LATN_ID',   'Indonesian in Indonesia (Latin script)');
+define('_LOCALE_IT_LATN_IT',   'Italian in Italy');
+define('_LOCALE_JA_JPAN_JP',   'Japanese in Japan');
+define('_LOCALE_KO_KORE_KR',   'Korean in Korea');
+define('_LOCALE_KU_ARAB_TR',   'Kurdish in Turkey (Arabic script)');
+define('_LOCALE_LV_LATN_LV',   'Latvian in Latvia');
+define('_LOCALE_NL_LATN_NL',   'Dutch in Netherlands');
+define('_LOCALE_PL_LATN_PL',   'Polish in Poland');
+define('_LOCALE_PT_LATN_BR',   'Portuguese in Brazil');
+define('_LOCALE_RO_LATN_RO',   'Romainan in Romania');
+define('_LOCALE_RU_CYRL_RU',   'Russian in Russia');
+define('_LOCALE_SK_LATN_SK',   'Slovak in Slovakia');
+define('_LOCALE_SR_CYRL_RS',   'Serbian in Serbia');
+define('_LOCALE_UR_ARAB_PK',   'Urdu in Pakistan');
+define('_LOCALE_VI_LATN_VN',   'Vietnamese in Vietnam (Latin script)');
+define('_LOCALE_ZH_HANS_CN',   'Chinese in China (simplified script)');
+define('_LOCALE_ZH_HANT_TW',   'Chinese in Taiwan (Traditional script)');
+
+define('_FORGOTPASSWORD_TITLE',                                'Forgot your password?');
+define('_FORGOTPASSWORD_MSG',                          'Enter your username and email address below, and you\'ll be sent an e-mail with a link where you can choose a new password.');
+define('_FORGOTPASSWORD_SUBMIT',                       'Send Activation Link" class="transparent');
+define('_FORGOTPASSWORD_CONTACT',                      'If you don\'t remember your exact username, contact the site administrator.');
+define('_SKINIE_INVALID_NAMES_DETECTED',       'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
+define('_LISTS_AUTHOR',                                                'Author');
+define('_OVERVIEW_OTHER_DRAFTS',                       'Other Drafts');
+define('_ERROR_BADADMINSKINNAME',                      'the name of skin for admin area must start with \'admin/\'.');
+define('_ERROR_BADADMINTEMPLATENAME',          'the name of template for admin area must start with \'admin/\'.');
+define('_SETTINGS_ADMINSKIN',                          'default skin for admin area');
+define('_SETTINGS_BKMKLTSKIN',                         'default skin for bookmarklet');
+define('_MEMBERS_BKMKLTSKIN',                          "bookmarklet skin");
+define('_ADMIN_SYSTEMOVERVIEW_VERSION_LATEST',         'The version which is being used is latest.');
+
 /********************************************
  *        Start New for 3.6x                *
  ********************************************/
@@ -189,13 +274,7 @@ define('_PLUGIN_OPTIONS_TITLE',                                                    'Options for %s');
 // Plugin file loda error
 define('_PLUGINFILE_COULDNT_BELOADED',                         'Error: plugin file <strong>%s.php</strong> could not be loaded, or it has been set inactive because it does not support some features (check the <a href="?action=actionlog">actionlog</a> for more info)');
 
-//ITEM add/edit template (for japanese only)
 define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
-define('_ITEM_ADDEDITTEMPLATE_YEAR',                           'Year');
-define('_ITEM_ADDEDITTEMPLATE_MONTH',                          'Month');
-define('_ITEM_ADDEDITTEMPLATE_DAY',                                    'Day');
-define('_ITEM_ADDEDITTEMPLATE_HOUR',                           'Hour');
-define('_ITEM_ADDEDITTEMPLATE_MINUTE',                         'Minute');
 
 // Errors
 define('_ERRORS_INSTALLSQL',                                           'install.sql should be deleted');
@@ -354,10 +433,13 @@ define('_ARCHIVETYPE_MONTH',              'mese');
 // tickets (prevents malicious users to trick an admin to perform actions he doesn't want)
 define('_ERROR_BADTICKET',                     'Biglietto non valido o scaduto.');
 
+<<<<<<< HEAD
 // plugin dependency
 define('_ERROR_INSREQPLUGIN',          'Installazione del plugin fallita, richiede ');
 define('_ERROR_DELREQPLUGIN',          'Cancellazione del plugin fallita, è richiesto da ');
 
+=======
+>>>>>>> skinnable-master
 // cookie prefix
 define('_SETTINGS_COOKIEPREFIX',       'Prefisso dei Cookie');
 
@@ -764,7 +846,6 @@ define('_COMMENTFORM_YOUARE',               'Sei collegato come');
 define('_COMMENTFORM_SUBMIT',          'Aggiungi un commento');
 define('_COMMENTFORM_COMMENT',         'Il tuo commento');
 define('_COMMENTFORM_NAME',                    'Nome');
-define('_COMMENTFORM_MAIL',                    'E-mail/HTTP');
 define('_COMMENTFORM_REMEMBER',                'Ricordami');
 
 // loginform
@@ -791,7 +872,6 @@ define('_ADD_DISABLE_COMMENTS',             'Disabilitare i commenti?');
 define('_ADD_DRAFTNFUTURE',                    'Bozza &amp; articoli futuri');
 define('_ADD_ADDITEM',                         'Aggiungi un articolo');
 define('_ADD_ADDNOW',                          'Aggiungi ora');
-define('_ADD_ADDLATER',                                'Aggiungi dopo');
 define('_ADD_PLACE_ON',                                'Place on');
 define('_ADD_ADDDRAFT',                                'Aggiungi alle bozze');
 define('_ADD_NOPASTDATES',                     '(date ed orari passati NON sono validi, in tal caso verr&agrave; automaticamente aggiunta la data attuale)');
@@ -1135,8 +1215,6 @@ define('_BAN_ADD_BTN',                            'Aggiungi ban');
 
 // LOGIN screen
 define('_LOGIN_MESSAGE',                       'Messaggio');
-define('_LOGIN_NAME',                          'Nome');
-define('_LOGIN_PASSWORD',                      'Password');
 define('_LOGIN_SHARED',                                _LOGINFORM_SHARED);
 define('_LOGIN_FORGOT',                                'Hai dimenticato la password?');
 
@@ -1268,3 +1346,19 @@ define('_EDITC_NONMEMBER',                       'utente non registrato');
 // move item
 define('_MOVE_TITLE',                          'Sposta in quale blog?');
 define('_MOVE_BTN',                                    'Sposta articolo');
+
+// ADMIN-template template types
+include_once('adminskinTypes.php');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_NAVILIST',          'navibar for item/comment list');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is blog ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is super ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin URL');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'API entry');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'eventlist updates');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency to');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency by');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'couldn\'t load file');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin actions');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin admin link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin help link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin option setting link');
index efb2c40..7b10313 100644 (file)
  * 
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2012 The Nucleus Group
+<<<<<<< HEAD
  * @version $Id: it_Latn_IT.UTF-8.php 1868 2012-05-22 05:10:53Z sakamocchi $
+=======
+ * @version $Id: it_Latn_IT.UTF-8.php 1887 2012-06-17 08:30:08Z sakamocchi $
+>>>>>>> skinnable-master
  */
 
 /********************************************
  *        Start New for 4.0                 *
  ********************************************/
-define('_SKINIE_INVALID_NAMES_DETECTED', 'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
-define('_LISTS_AUTHOR', 'Author');
-define('_OVERVIEW_OTHER_DRAFTS', 'Other Drafts');
+/* argument value for setlocale() in Microsoft's windows operating system */
+define('_LOCALE_IN_WINDOWS',   'ita_ita');
+
+/* labels for date and time measurement unit */
+define('_LABEL_YEAR_UNIT',             'year');
+define('_LABEL_MONTH_UNIT',            'month');
+define('_LABEL_DAY_UNIT',              'day');
+define('_LABEL_HOUR_UNIT',             'hour');
+define('_LABEL_MINUTE_UNIT',   'minute');
+
+// SkinableAdminArea vars
+define('_SKINABLEADMIN_DEL_UNINSTALL_DATA',                    'Delete ADMIN skin data table on uninstall?');
+define('_SKINABLEADMIN_DEFAULT_SKIN',                          'Choose a skin of the management area of the default.');
+define('_SKINABLEADMIN_MEMBER_DEFAULT_SKIN',           'Choose a skin of the management area of you use.');
+define('_SKINABLEADMIN_QMENU_LAYOUT',                          'Admin layout');
+define('_SKINABLEADMIN_PAGE_STR',                                      'page');
+define('_SKINABLEADMIN_BATCH_MOVE',                                    'Item move other category/Category move other blog');
+define('_SKINABLEADMIN_BATCH',                                         'batch');
+define('_SKINABLEADMIN_PAGEHEAD',                                      'Admin page head');
+define('_SKINABLEADMIN_PAGEFOOT',                                      'Admin page foot');
+define('_SKINABLEADMIN_TEMPLATEOVERVIEW',                      'Template overview');
+define('_SKINABLEADMIN_ADMINAREAHEADLINK',                     '[Your site]link');
+define('_SKINABLEADMIN_TPLSETTING_INGENERAL',          'In general');
+define('_SKINABLEADMIN_HEAD_STR',                                      ' head');
+define('_SKINABLEADMIN_BODY_STR',                                      ' body');
+define('_SKINABLEADMIN_FOOT_STR',                                      ' foot');
+define('_SKINABLEADMIN_TEXT_STR',                                      ' text');
+define('_SKINABLEADMIN_TITLE_STR',                                     ' title');
+define('_SKINABLEADMIN_ADMINSETTING_STR',                      ' set editmember is \'admin\'');
+define('_SKINABLEADMIN_NORMALSETTING_STR',                     ' normal');
+define('_SKINABLEADMIN_HELPICONURL_STR',                       ' icon URL');
+define('_SKINABLEADMIN_HELPFILEURL_STR',                       ' help file URL');
+define('_SKINABLEADMIN_ADMINSKINVAR_STR',                      ' skinvars');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_SELECT',      'selectbox used in ADMIN area');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE',       'Table for list indication');
+define('_SKINABLEADMIN_PLUGIN_QUICKMENU',                      'Link to admin page of the plugin shown to the quick-menu');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE',         'Template for option-type %s');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTMETA',         'Template for option-meta-data %s');
+define('_SKINABLEADMIN_MEMBERS_ADMINSKIN',                     "ADMIN-Area's skin");
+
+define('_LOCALE_BG_CYRL_BG',   'Bulgarian in Bulgaria');
+define('_LOCALE_CA_LATN_ES',   'Catalan in Spain');
+define('_LOCALE_CS_LATN_CZ',   'Czech in Czech Republic');
+define('_LOCALE_DE_LATN_DE',   'German in Germany');
+define('_LOCALE_EL_GREK_GR',   'Greek in Greece (Greek script)');
+define('_LOCALE_EN_LATN_US',   'English in United States');
+define('_LOCALE_ES_LATN_ES',   'Spanish in Spain');
+define('_LOCALE_FA_ARAB_IR',   'Persian in Islamic Republic of Iran');
+define('_LOCALE_FI_LATN_FI',   'Finnish in Finland');
+define('_LOCALE_FR_LATN_FR',   'French in France');
+define('_LOCALE_GL_LATN_ES',   'Galician in Spain');
+define('_LOCALE_HR_LATN_HR',   'Croatian in Croatia');
+define('_LOCALE_HU_LATN_HU',   'Hungarian in Hungary');
+define('_LOCALE_ID_LATN_ID',   'Indonesian in Indonesia (Latin script)');
+define('_LOCALE_IT_LATN_IT',   'Italian in Italy');
+define('_LOCALE_JA_JPAN_JP',   'Japanese in Japan');
+define('_LOCALE_KO_KORE_KR',   'Korean in Korea');
+define('_LOCALE_KU_ARAB_TR',   'Kurdish in Turkey (Arabic script)');
+define('_LOCALE_LV_LATN_LV',   'Latvian in Latvia');
+define('_LOCALE_NL_LATN_NL',   'Dutch in Netherlands');
+define('_LOCALE_PL_LATN_PL',   'Polish in Poland');
+define('_LOCALE_PT_LATN_BR',   'Portuguese in Brazil');
+define('_LOCALE_RO_LATN_RO',   'Romainan in Romania');
+define('_LOCALE_RU_CYRL_RU',   'Russian in Russia');
+define('_LOCALE_SK_LATN_SK',   'Slovak in Slovakia');
+define('_LOCALE_SR_CYRL_RS',   'Serbian in Serbia');
+define('_LOCALE_UR_ARAB_PK',   'Urdu in Pakistan');
+define('_LOCALE_VI_LATN_VN',   'Vietnamese in Vietnam (Latin script)');
+define('_LOCALE_ZH_HANS_CN',   'Chinese in China (simplified script)');
+define('_LOCALE_ZH_HANT_TW',   'Chinese in Taiwan (Traditional script)');
+
+define('_FORGOTPASSWORD_TITLE',                                'Forgot your password?');
+define('_FORGOTPASSWORD_MSG',                          'Enter your username and email address below, and you\'ll be sent an e-mail with a link where you can choose a new password.');
+define('_FORGOTPASSWORD_SUBMIT',                       'Send Activation Link" class="transparent');
+define('_FORGOTPASSWORD_CONTACT',                      'If you don\'t remember your exact username, contact the site administrator.');
+define('_SKINIE_INVALID_NAMES_DETECTED',       'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
+define('_LISTS_AUTHOR',                                                'Author');
+define('_OVERVIEW_OTHER_DRAFTS',                       'Other Drafts');
+define('_ERROR_BADADMINSKINNAME',                      'the name of skin for admin area must start with \'admin/\'.');
+define('_ERROR_BADADMINTEMPLATENAME',          'the name of template for admin area must start with \'admin/\'.');
+define('_SETTINGS_ADMINSKIN',                          'default skin for admin area');
+define('_SETTINGS_BKMKLTSKIN',                         'default skin for bookmarklet');
+define('_MEMBERS_BKMKLTSKIN',                          "bookmarklet skin");
+define('_ADMIN_SYSTEMOVERVIEW_VERSION_LATEST',         'The version which is being used is latest.');
+
 /********************************************
  *        Start New for 3.6x                *
  ********************************************/
@@ -189,13 +274,7 @@ define('_PLUGIN_OPTIONS_TITLE',                                                    'Options for %s');
 // Plugin file loda error
 define('_PLUGINFILE_COULDNT_BELOADED',                         'Error: plugin file <strong>%s.php</strong> could not be loaded, or it has been set inactive because it does not support some features (check the <a href="?action=actionlog">actionlog</a> for more info)');
 
-//ITEM add/edit template (for japanese only)
 define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
-define('_ITEM_ADDEDITTEMPLATE_YEAR',                           'Year');
-define('_ITEM_ADDEDITTEMPLATE_MONTH',                          'Month');
-define('_ITEM_ADDEDITTEMPLATE_DAY',                                    'Day');
-define('_ITEM_ADDEDITTEMPLATE_HOUR',                           'Hour');
-define('_ITEM_ADDEDITTEMPLATE_MINUTE',                         'Minute');
 
 // Errors
 define('_ERRORS_INSTALLSQL',                                           'install.sql should be deleted');
@@ -354,10 +433,6 @@ define('_ARCHIVETYPE_MONTH',               'mese');
 // tickets (prevents malicious users to trick an admin to perform actions he doesn't want)
 define('_ERROR_BADTICKET',                     'Biglietto non valido o scaduto.');
 
-// plugin dependency
-define('_ERROR_INSREQPLUGIN',          'Installazione del plugin fallita, richiede ');
-define('_ERROR_DELREQPLUGIN',          'Cancellazione del plugin fallita, è richiesto da ');
-
 // cookie prefix
 define('_SETTINGS_COOKIEPREFIX',       'Prefisso dei Cookie');
 
@@ -764,7 +839,6 @@ define('_COMMENTFORM_YOUARE',               'Sei collegato come');
 define('_COMMENTFORM_SUBMIT',          'Aggiungi un commento');
 define('_COMMENTFORM_COMMENT',         'Il tuo commento');
 define('_COMMENTFORM_NAME',                    'Nome');
-define('_COMMENTFORM_MAIL',                    'E-mail/HTTP');
 define('_COMMENTFORM_REMEMBER',                'Ricordami');
 
 // loginform
@@ -791,7 +865,6 @@ define('_ADD_DISABLE_COMMENTS',             'Disabilitare i commenti?');
 define('_ADD_DRAFTNFUTURE',                    'Bozza &amp; articoli futuri');
 define('_ADD_ADDITEM',                         'Aggiungi un articolo');
 define('_ADD_ADDNOW',                          'Aggiungi ora');
-define('_ADD_ADDLATER',                                'Aggiungi dopo');
 define('_ADD_PLACE_ON',                                'Place on');
 define('_ADD_ADDDRAFT',                                'Aggiungi alle bozze');
 define('_ADD_NOPASTDATES',                     '(date ed orari passati NON sono validi, in tal caso verr&agrave; automaticamente aggiunta la data attuale)');
@@ -1135,8 +1208,6 @@ define('_BAN_ADD_BTN',                            'Aggiungi ban');
 
 // LOGIN screen
 define('_LOGIN_MESSAGE',                       'Messaggio');
-define('_LOGIN_NAME',                          'Nome');
-define('_LOGIN_PASSWORD',                      'Password');
 define('_LOGIN_SHARED',                                _LOGINFORM_SHARED);
 define('_LOGIN_FORGOT',                                'Hai dimenticato la password?');
 
@@ -1268,3 +1339,19 @@ define('_EDITC_NONMEMBER',                       'utente non registrato');
 // move item
 define('_MOVE_TITLE',                          'Sposta in quale blog?');
 define('_MOVE_BTN',                                    'Sposta articolo');
+
+// ADMIN-template template types
+include_once('adminskinTypes.php');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_NAVILIST',          'navibar for item/comment list');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is blog ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is super ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin URL');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'API entry');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'eventlist updates');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency to');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency by');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'couldn\'t load file');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin actions');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin admin link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin help link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin option setting link');
index 87da4e1..2b0b807 100644 (file)
  * 
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2009 The NucleusCMS Japan¥Á¡¼¥à
+<<<<<<< HEAD
  * @version $Id: ja_Jpan_JP.EUC-JP.php 1868 2012-05-22 05:10:53Z sakamocchi $
  */
 
 /********************************************
  *        Start New for 4.0                *
+=======
+ * @version $Id: ja_Jpan_JP.EUC-JP.php 1887 2012-06-17 08:30:08Z sakamocchi $
+ */
+
+/********************************************
+ *        Start New for 4.0                 *
+>>>>>>> skinnable-master
  ********************************************/
-define('_SKINIE_INVALID_NAMES_DETECTED', 'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
-define('_LISTS_AUTHOR', 'Ãø¼Ô');
-define('_OVERVIEW_OTHER_DRAFTS', '¤½¤Î¾¤Î¥É¥é¥Õ¥È');
+/* argument value for setlocale() in Microsoft's windows operating system */
+define('_LOCALE_IN_WINDOWS',   'jpn_jpn');
+
+/* labels for date and time measurement unit */
+define('_LABEL_YEAR_UNIT',             'ǯ');
+define('_LABEL_MONTH_UNIT',            '·î');
+define('_LABEL_DAY_UNIT',              'Æü');
+define('_LABEL_HOUR_UNIT',             '»þ');
+define('_LABEL_MINUTE_UNIT',   'ʬ');
+
+// SkinableAdminArea vars
+define('_SKINABLEADMIN_DEL_UNINSTALL_DATA',                    '¥×¥é¥°¥¤¥ó¤òºï½ü¤¹¤ë¤È¤­¤Ë´ÉÍý¥¨¥ê¥¢ÍÑ¥¹¥­¥ó¤Î¥Ç¡¼¥¿¤âºï½ü¤·¤Þ¤¹¤«¡©');
+define('_SKINABLEADMIN_DEFAULT_SKIN',                          '´ÉÍýÎΰè¤Î¥Ç¥Õ¥©¥ë¥È¤Î¥¹¥­¥ó');
+define('_SKINABLEADMIN_MEMBER_DEFAULT_SKIN',           '¤¢¤Ê¤¿¤¬»È¤¦´ÉÍýÎΰè¤Î¥¹¥­¥ó');
+define('_SKINABLEADMIN_QMENU_LAYOUT',                          '´ÉÍý¥¨¥ê¥¢ÍÑÀßÄê');
+define('_SKINABLEADMIN_PAGE_STR',                                      '¥Ú¡¼¥¸');
+define('_SKINABLEADMIN_BATCH_MOVE',                                    '¥¢¥¤¥Æ¥à¤Î¥«¥Æ¥´¥ê°ÜÆ°/¥«¥Æ¥´¥ê¤Î¥Ö¥í¥°°ÜÆ°');
+define('_SKINABLEADMIN_BATCH',                                         '¥Ð¥Ã¥Á½èÍý');
+define('_SKINABLEADMIN_PAGEHEAD',                                      '´ÉÍý¥Ú¡¼¥¸¤Î¥Ø¥Ã¥À');
+define('_SKINABLEADMIN_PAGEFOOT',                                      '´ÉÍý¥Ú¡¼¥¸¤Î¥Õ¥Ã¥¿');
+define('_SKINABLEADMIN_TEMPLATEOVERVIEW',                      '¥Æ¥ó¥×¥ì¡¼¥È°ìÍ÷');
+define('_SKINABLEADMIN_ADMINAREAHEADLINK',                     '[¥µ¥¤¥È¤Î³Îǧ]¥ê¥ó¥¯');
+define('_SKINABLEADMIN_TPLSETTING_INGENERAL',          'Á´ÈÌŪ¤Ë»ÈÍÑ');
+define('_SKINABLEADMIN_HEAD_STR',                                      ' ¤Î¥Ø¥Ã¥À');
+define('_SKINABLEADMIN_BODY_STR',                                      ' ¤ÎËÜÂÎ');
+define('_SKINABLEADMIN_FOOT_STR',                                      ' ¤Î¥Õ¥Ã¥¿');
+define('_SKINABLEADMIN_TEXT_STR',                                      ' ¤ÎËÜÂÎ');
+define('_SKINABLEADMIN_TITLE_STR',                                     ' ¤Î¥¿¥¤¥È¥ë');
+define('_SKINABLEADMIN_ADMINSETTING_STR',                      ' ´ÉÍý¼ÔÀßÄêÍÑ');
+define('_SKINABLEADMIN_NORMALSETTING_STR',                     ' Ä̾ï»ÅÍÍ');
+define('_SKINABLEADMIN_HELPICONURL_STR',                       ' ¤Ç»ÈÍѤ¹¤ë¥¢¥¤¥³¥ó¤ÎURL');
+define('_SKINABLEADMIN_HELPFILEURL_STR',                       ' ¤Ç»ÈÍѤ¹¤ë¥Ø¥ë¥×¥Õ¥¡¥¤¥ë¤ÎURL');
+define('_SKINABLEADMIN_ADMINSKINVAR_STR',                      ' ¥¹¥­¥óÊÑ¿ô');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_SELECT',      '´ÉÍý¥¨¥ê¥¢¤Ç»ÈÍѤ¹¤ë¥»¥ì¥¯¥È¥Ü¥Ã¥¯¥¹');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE',       '°ìÍ÷ɽ¼¨Íѥơ¼¥Ö¥ë');
+define('_SKINABLEADMIN_PLUGIN_QUICKMENU',                      '¥¯¥¤¥Ã¥¯¥á¥Ë¥å¡¼¤Ëɽ¼¨¤¹¤ë¥×¥é¥°¥¤¥ó¤Î´ÉÍý¥Ú¡¼¥¸¤Ø¤Î¥ê¥ó¥¯');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE',         '¥ª¥×¥·¥ç¥ó¥¿¥¤¥×%s¤Î¥Æ¥ó¥×¥ì¡¼¥È');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTMETA',         '¥ª¥×¥·¥ç¥ó¡¦¥á¥¿¥Ç¡¼¥¿%s¤Î¥Æ¥ó¥×¥ì¡¼¥È');
+define('_SKINABLEADMIN_MEMBERS_ADMINSKIN',                     '»ÈÍѤ¹¤ë´ÉÍýÎΰè¤Î¥¹¥­¥ó');
+
+define('_LOCALE_BG_CYRL_BG',   '¥Ö¥ë¥¬¥ê¥¢¸ì¡Ê¥Ö¥ë¥¬¥ê¥¢¡Ë');
+define('_LOCALE_CA_LATN_ES',   '¥«¥¿¥ë¡¼¥Ë¥ã¸ì¡Ê¥¹¥Ú¥¤¥ó¡Ë');
+define('_LOCALE_CS_LATN_CZ',   '¥Á¥§¥³¸ì¡Ê¥Á¥§¥³¡Ë');
+define('_LOCALE_DE_LATN_DE',   '¥É¥¤¥Ä¸ì¡Ê¥É¥¤¥Ä¡Ë');
+define('_LOCALE_EL_GREK_GR',   '¥®¥ê¥·¥ã¸ì¡Ê¥®¥ê¥·¥ã¡¢¥®¥ê¥·¥ãʸ»ú¡Ë');
+define('_LOCALE_EN_LATN_US',   '±Ñ¸ì¡Ê¥¢¥á¥ê¥«¡Ë');
+define('_LOCALE_ES_LATN_ES',   '¥¹¥Ú¥¤¥ó¸ì¡Ê¥¹¥Ú¥¤¥ó¡Ë');
+define('_LOCALE_FA_ARAB_IR',   '¥Ú¥ë¥·¥ã¸ì¡Ê¥¤¥é¥ó¡Ë');
+define('_LOCALE_FI_LATN_FI',   '¥Õ¥£¥ó¥é¥ó¥É¸ì¡Ê¥Õ¥£¥ó¥é¥ó¥É¡Ë');
+define('_LOCALE_FR_LATN_FR',   '¥Õ¥é¥ó¥¹¸ì¡Ê¥Õ¥é¥ó¥¹¡Ë');
+define('_LOCALE_GL_LATN_ES',   '¥¬¥ê¥·¥¢¸ì¡Ê¥¹¥Ú¥¤¥ó¡Ë');
+define('_LOCALE_HR_LATN_HR',   '¥¯¥í¥¢¥Á¥¢¸ì¡Ê¥¯¥í¥¢¥Á¥¢¡Ë');
+define('_LOCALE_HU_LATN_HU',   '¥Ï¥ó¥¬¥ê¡¼¸ì¡Ê¥Ï¥ó¥¬¥ê¡¼¡Ë');
+define('_LOCALE_ID_LATN_ID',   '¥¤¥ó¥É¥Í¥·¥¢¸ì¡Ê¥¤¥ó¥É¥Í¥·¥¢¡¢¥é¥Æ¥óʸ»ú¡Ë');
+define('_LOCALE_IT_LATN_IT',   '¥¤¥¿¥ê¥¢¸ì¡Ê¥¤¥¿¥ê¥¢¡Ë');
+define('_LOCALE_JA_JPAN_JP',   'ÆüËܸì¡ÊÆüËÜ¡Ë');
+define('_LOCALE_KO_KORE_KR',   '´Ú¹ñ¸ì¡Ê´Ú¹ñ¡Ë');
+define('_LOCALE_KU_ARAB_TR',   '¥¯¥ë¥É¸ì¡Ê¥È¥ë¥³¡¢¥¢¥é¥Ó¥¢Ê¸»ú¡Ë');
+define('_LOCALE_LV_LATN_LV',   '¥é¥È¥Ó¥¢¸ì¡Ê¥é¥È¥Ó¥¢¡Ë');
+define('_LOCALE_NL_LATN_NL',   '¥ª¥é¥ó¥À¸ì¡Ê¥ª¥é¥ó¥À¡Ë');
+define('_LOCALE_PL_LATN_PL',   '¥Ý¡¼¥é¥ó¥É¸ì¡Ê¥Ý¡¼¥é¥ó¥É¡Ë');
+define('_LOCALE_PT_LATN_BR',   '¥Ý¥ë¥È¥¬¥ë¸ì¡Ê¥Ö¥é¥¸¥ë¡Ë');
+define('_LOCALE_RO_LATN_RO',   '¥ë¡¼¥Þ¥Ë¥¢¸ì¡Ê¥ë¡¼¥Þ¥Ë¥¢¡Ë');
+define('_LOCALE_RU_CYRL_RU',   '¥í¥·¥¢¸ì¡Ê¥í¥·¥¢¡Ë');
+define('_LOCALE_SK_LATN_SK',   '¥¹¥í¥Ð¥­¥¢¸ì¡Ê¥¹¥í¥Ð¥­¥¢¡Ë');
+define('_LOCALE_SR_CYRL_RS',   '¥»¥ë¥Ó¥¢¸ì¡Ê¥»¥ë¥Ó¥¢¡Ë');
+define('_LOCALE_UR_ARAB_PK',   '¥¦¥ë¥É¥¥¡¼¸ì¡Ê¥Ñ¥­¥¹¥¿¥ó¡Ë');
+define('_LOCALE_VI_LATN_VN',   '¥Ù¥È¥Ê¥à¸ì¡Ê¥Ù¥È¥Ê¥à¡¢¥é¥Æ¥óʸ»ú¡Ë');
+define('_LOCALE_ZH_HANS_CN',   'Ãæ¹ñ¸ì¡ÊÃæ¹ñ¡¢´ÊÂλú¡Ë');
+define('_LOCALE_ZH_HANT_TW',   'Ãæ¹ñ¸ì¡ÊÂæÏÑ¡¢ÈËÂλú¡Ë');
+
+define('_FORGOTPASSWORD_TITLE',                                '¥Ñ¥¹¥ï¡¼¥É¤ò˺¤ì¤Þ¤·¤¿¤«¡©');
+define('_FORGOTPASSWORD_MSG',                          '°Ê²¼¤Ë¥æ¡¼¥¶¡¼Ì¾¤È¥á¡¼¥ë¥¢¥É¥ì¥¹¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£¿·¤·¤¤¥Ñ¥¹¥ï¡¼¥É¤òÀßÄꤹ¤ë¥Ú¡¼¥¸¤Ø¤Î¥ê¥ó¥¯¤ÎÆþ¤Ã¤¿¥á¡¼¥ë¤¬Á÷¿®¤µ¤ì¤Þ¤¹¡£');
+define('_FORGOTPASSWORD_SUBMIT',                       'ǧ¾ÚÍÑ¥ê¥ó¥¯¤ÎÁ÷¿®');
+define('_FORGOTPASSWORD_CONTACT',                      '¤â¤·¥æ¡¼¥¶¡¼Ì¾¤ò¤ªËº¤ì¤Ê¤é¡¢¤¢¤Ê¤¿¤ÎNucleus¥µ¥¤¥È´ÉÍý¼Ô¤ËÏ¢Íí¤·¤Æ¤¯¤À¤µ¤¤¡£');
+define('_SKINIE_INVALID_NAMES_DETECTED',       'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
+define('_LISTS_AUTHOR',                                                'Ãø¼Ô');
+define('_OVERVIEW_OTHER_DRAFTS',                       '¤½¤Î¾¤Î¥É¥é¥Õ¥È');
+define('_ERROR_BADADMINSKINNAME',                      '´ÉÍý²èÌÌÍÑ¥¹¥­¥ó̾¤ÏÀèƬ¤¬¡Öadmin/¡×¤Ç»Ï¤Þ¤Ã¤Æ¤¤¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£');
+define('_ERROR_BADADMINTEMPLATENAME',          '´ÉÍý²èÌÌÍÑ¥¹¥­¥ó¤Î¥Æ¥ó¥×¥ì¡¼¥È̾¤ÏÀèƬ¤¬¡Öadmin/¡×¤Ç»Ï¤Þ¤Ã¤Æ¤¤¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£');
+define('_SETTINGS_ADMINSKIN',                          '¥Ç¥Õ¥©¥ë¥È¤Î´ÉÍý²èÌÌÍÑ¥¹¥­¥ó');
+define('_SETTINGS_BKMKLTSKIN',                         '¥Ç¥Õ¥©¥ë¥È¤Î¥Ö¥Ã¥¯¥Þ¡¼¥¯¥ì¥Ã¥ÈÍÑ¥¹¥­¥ó');
+define('_MEMBERS_BKMKLTSKIN',                          '»ÈÍѤ¹¤ë¥Ö¥Ã¥¯¥Þ¡¼¥¯¥ì¥Ã¥ÈÍѤΥ¹¥­¥ó');
+define('_ADMIN_SYSTEMOVERVIEW_VERSION_LATEST',         '»ÈÍÑÃæ¤Î¥Ð¡¼¥¸¥ç¥ó¤ÏºÇ¿·¤Ç¤¹');
+
 /********************************************
  *        Start New for 3.64                *
  ********************************************/
@@ -188,13 +277,7 @@ define('_PLUGIN_OPTIONS_TITLE',                                            '%s 
 // Plugin file loda error
 define('_PLUGINFILE_COULDNT_BELOADED',                         '¥¨¥é¡¼: ¥×¥é¥°¥¤¥ó¥Õ¥¡¥¤¥ë <strong>%s.php</strong> ¤òÆɤ߹þ¤á¤Þ¤»¤ó¤Ç¤·¤¿¡£¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤·¤Ê¤¤¡¢¤â¤¯¤Ï»ÈÍÑÃæ¤Î Nucleus ¾å¤ÇÆ°ºî¤µ¤»¤ë¤¿¤á¤ËɬÍפʵ¡Ç½¤¬¥×¥é¥°¥¤¥ó¤Ç¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£(<a href="?action=actionlog">´ÉÍýÁàºîÍúÎò</a>¤Ë¾ÜºÙ¤¬¤¢¤ê¤Þ¤¹¡£)');
 
-//ITEM add/edit template (for japanese only)
 define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         '¥Õ¥©¡¼¥Þ¥Ã¥È¡§');
-define('_ITEM_ADDEDITTEMPLATE_YEAR',                           'ǯ');
-define('_ITEM_ADDEDITTEMPLATE_MONTH',                          '·î');
-define('_ITEM_ADDEDITTEMPLATE_DAY',                                    'Æü');
-define('_ITEM_ADDEDITTEMPLATE_HOUR',                           '»þ');
-define('_ITEM_ADDEDITTEMPLATE_MINUTE',                         'ʬ');
 
 // Errors
 define('_ERRORS_INSTALLSQL',                                           '\8e¢install.sql\8e£¥Õ¥¡¥¤¥ë¤òºï½ü¤·¤Æ¤¯¤À¤µ¤¤');
@@ -1273,3 +1356,19 @@ define('_EDITC_NONMEMBER',                                                       '
 // move item
 define('_MOVE_TITLE',                                                          '¤É¤ÎBlog¤Ë°ÜÆ°¤·¤Þ¤¹¤«¡©');
 define('_MOVE_BTN',                                                                    '¥¢¥¤¥Æ¥à¤ò°ÜÆ°¤¹¤ë');
+
+// ADMIN-template template types
+include_once('adminskinTypes.php');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_NAVILIST',          '¥¢¥¤¥Æ¥à/¥³¥á¥ó¥È¤Î¥ê¥¹¥È¤Î¥Ê¥Ó¥²¡¼¥·¥ç¥ó');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] ¥á¥ó¥Ð¡¼¤¬¥Ö¥í¥°´ÉÍý¸¢¸Â¤ò»ý¤Ã¤Æ¤¤¤ë»þ¤ÎÄɲùàÌÜ');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] ¥á¥ó¥Ð¡¼¤¬ºÇ¹â´ÉÍý¸¢¸Â¤ò»ý¤Ã¤Æ¤¤¤ë»þ¤ÎÄɲùàÌÜ');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . '¥×¥é¥°¥¤¥ó¤ÎÆþ¼ê¥ê¥ó¥¯');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'ÅÐÏ¿¤µ¤ì¤Æ¤¤¤ë¥¤¥Ù¥ó¥È');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . '¥¤¥Ù¥ó¥È¾ðÊó¤Î¥¢¥Ã¥×¥Ç¡¼¥È¤¬É¬Íפʻþ¤Î¥¢¥é¡¼¥È');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . '°Í¸¤¹¤ë¥×¥é¥°¥¤¥ó');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . '°Í¸¤µ¤ì¤Æ¤¤¤ë¥×¥é¥°¥¤¥ó');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . '¥×¥é¥°¥¤¥ó¤¬Æɤ߹þ¤á¤Ê¤«¤Ã¤¿»þ¤Î¥¢¥é¡¼¥È');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . '¡Ö¥¢¥¯¥·¥ç¥ó¡×Îó¤Î¥Æ¥ó¥×¥ì¡¼¥È');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . '¥×¥é¥°¥¤¥ó¤Î´ÉÍýÎΰè¤Ø¤Î¥ê¥ó¥¯');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . '¥×¥é¥°¥¤¥ó¤Î¥Ø¥ë¥×¤Ø¤Î¥ê¥ó¥¯');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . '¥×¥é¥°¥¤¥ó¤Î¥ª¥×¥·¥ç¥óÀßÄê²èÌ̤ؤΥê¥ó¥¯');
index 9868eaa..a6af85b 100644 (file)
  * 
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2009 The NucleusCMS Japanチーム
+<<<<<<< HEAD
  * @version $Id: ja_Jpan_JP.UTF-8.php 1868 2012-05-22 05:10:53Z sakamocchi $
  */
 
 /********************************************
  *        Start New for 4.0                *
+=======
+ * @version $Id: ja_Jpan_JP.UTF-8.php 1887 2012-06-17 08:30:08Z sakamocchi $
+ */
+
+/********************************************
+ *        Start New for 4.0                 *
+>>>>>>> skinnable-master
  ********************************************/
-define('_SKINIE_INVALID_NAMES_DETECTED', 'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
-define('_LISTS_AUTHOR', '著者');
-define('_OVERVIEW_OTHER_DRAFTS', 'その他のドラフト');
+/* argument value for setlocale() in Microsoft's windows operating system */
+define('_LOCALE_IN_WINDOWS',   'jpn_jpn');
+
+/* labels for date and time measurement unit */
+define('_LABEL_YEAR_UNIT',             '年');
+define('_LABEL_MONTH_UNIT',            '月');
+define('_LABEL_DAY_UNIT',              '日');
+define('_LABEL_HOUR_UNIT',             '時');
+define('_LABEL_MINUTE_UNIT',   '分');
+
+// SkinableAdminArea vars
+define('_SKINABLEADMIN_DEL_UNINSTALL_DATA',                    'プラグインを削除するときに管理エリア用スキンのデータも削除しますか?');
+define('_SKINABLEADMIN_DEFAULT_SKIN',                          '管理領域のデフォルトのスキン');
+define('_SKINABLEADMIN_MEMBER_DEFAULT_SKIN',           'あなたが使う管理領域のスキン');
+define('_SKINABLEADMIN_QMENU_LAYOUT',                          '管理エリア用設定');
+define('_SKINABLEADMIN_PAGE_STR',                                      'ページ');
+define('_SKINABLEADMIN_BATCH_MOVE',                                    'アイテムのカテゴリ移動/カテゴリのブログ移動');
+define('_SKINABLEADMIN_BATCH',                                         'バッチ処理');
+define('_SKINABLEADMIN_PAGEHEAD',                                      '管理ページのヘッダ');
+define('_SKINABLEADMIN_PAGEFOOT',                                      '管理ページのフッタ');
+define('_SKINABLEADMIN_TEMPLATEOVERVIEW',                      'テンプレート一覧');
+define('_SKINABLEADMIN_ADMINAREAHEADLINK',                     '[サイトの確認]リンク');
+define('_SKINABLEADMIN_TPLSETTING_INGENERAL',          '全般的に使用');
+define('_SKINABLEADMIN_HEAD_STR',                                      ' のヘッダ');
+define('_SKINABLEADMIN_BODY_STR',                                      ' の本体');
+define('_SKINABLEADMIN_FOOT_STR',                                      ' のフッタ');
+define('_SKINABLEADMIN_TEXT_STR',                                      ' の本体');
+define('_SKINABLEADMIN_TITLE_STR',                                     ' のタイトル');
+define('_SKINABLEADMIN_ADMINSETTING_STR',                      ' 管理者設定用');
+define('_SKINABLEADMIN_NORMALSETTING_STR',                     ' 通常仕様');
+define('_SKINABLEADMIN_HELPICONURL_STR',                       ' で使用するアイコンのURL');
+define('_SKINABLEADMIN_HELPFILEURL_STR',                       ' で使用するヘルプファイルのURL');
+define('_SKINABLEADMIN_ADMINSKINVAR_STR',                      ' スキン変数');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_SELECT',      '管理エリアで使用するセレクトボックス');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE',       '一覧表示用テーブル');
+define('_SKINABLEADMIN_PLUGIN_QUICKMENU',                      'クイックメニューに表示するプラグインの管理ページへのリンク');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE',         'オプションタイプ%sのテンプレート');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTMETA',         'オプション・メタデータ%sのテンプレート');
+define('_SKINABLEADMIN_MEMBERS_ADMINSKIN',                     '使用する管理領域のスキン');
+
+define('_LOCALE_BG_CYRL_BG',   'ブルガリア語(ブルガリア)');
+define('_LOCALE_CA_LATN_ES',   'カタルーニャ語(スペイン)');
+define('_LOCALE_CS_LATN_CZ',   'チェコ語(チェコ)');
+define('_LOCALE_DE_LATN_DE',   'ドイツ語(ドイツ)');
+define('_LOCALE_EL_GREK_GR',   'ギリシャ語(ギリシャ、ギリシャ文字)');
+define('_LOCALE_EN_LATN_US',   '英語(アメリカ)');
+define('_LOCALE_ES_LATN_ES',   'スペイン語(スペイン)');
+define('_LOCALE_FA_ARAB_IR',   'ペルシャ語(イラン)');
+define('_LOCALE_FI_LATN_FI',   'フィンランド語(フィンランド)');
+define('_LOCALE_FR_LATN_FR',   'フランス語(フランス)');
+define('_LOCALE_GL_LATN_ES',   'ガリシア語(スペイン)');
+define('_LOCALE_HR_LATN_HR',   'クロアチア語(クロアチア)');
+define('_LOCALE_HU_LATN_HU',   'ハンガリー語(ハンガリー)');
+define('_LOCALE_ID_LATN_ID',   'インドネシア語(インドネシア、ラテン文字)');
+define('_LOCALE_IT_LATN_IT',   'イタリア語(イタリア)');
+define('_LOCALE_JA_JPAN_JP',   '日本語(日本)');
+define('_LOCALE_KO_KORE_KR',   '韓国語(韓国)');
+define('_LOCALE_KU_ARAB_TR',   'クルド語(トルコ、アラビア文字)');
+define('_LOCALE_LV_LATN_LV',   'ラトビア語(ラトビア)');
+define('_LOCALE_NL_LATN_NL',   'オランダ語(オランダ)');
+define('_LOCALE_PL_LATN_PL',   'ポーランド語(ポーランド)');
+define('_LOCALE_PT_LATN_BR',   'ポルトガル語(ブラジル)');
+define('_LOCALE_RO_LATN_RO',   'ルーマニア語(ルーマニア)');
+define('_LOCALE_RU_CYRL_RU',   'ロシア語(ロシア)');
+define('_LOCALE_SK_LATN_SK',   'スロバキア語(スロバキア)');
+define('_LOCALE_SR_CYRL_RS',   'セルビア語(セルビア)');
+define('_LOCALE_UR_ARAB_PK',   'ウルドゥー語(パキスタン)');
+define('_LOCALE_VI_LATN_VN',   'ベトナム語(ベトナム、ラテン文字)');
+define('_LOCALE_ZH_HANS_CN',   '中国語(中国、簡体字)');
+define('_LOCALE_ZH_HANT_TW',   '中国語(台湾、繁体字)');
+
+define('_FORGOTPASSWORD_TITLE',                                'パスワードを忘れましたか?');
+define('_FORGOTPASSWORD_MSG',                          '以下にユーザー名とメールアドレスを入力してください。新しいパスワードを設定するページへのリンクの入ったメールが送信されます。');
+define('_FORGOTPASSWORD_SUBMIT',                       '認証用リンクの送信');
+define('_FORGOTPASSWORD_CONTACT',                      'もしユーザー名をお忘れなら、あなたのNucleusサイト管理者に連絡してください。');
+define('_SKINIE_INVALID_NAMES_DETECTED',       'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
+define('_LISTS_AUTHOR',                                                '著者');
+define('_OVERVIEW_OTHER_DRAFTS',                       'その他のドラフト');
+define('_ERROR_BADADMINSKINNAME',                      '管理画面用スキン名は先頭が「admin/」で始まっている必要があります。');
+define('_ERROR_BADADMINTEMPLATENAME',          '管理画面用スキンのテンプレート名は先頭が「admin/」で始まっている必要があります。');
+define('_SETTINGS_ADMINSKIN',                          'デフォルトの管理画面用スキン');
+define('_SETTINGS_BKMKLTSKIN',                         'デフォルトのブックマークレット用スキン');
+define('_MEMBERS_BKMKLTSKIN',                          '使用するブックマークレット用のスキン');
+define('_ADMIN_SYSTEMOVERVIEW_VERSION_LATEST',         '使用中のバージョンは最新です');
+
 /********************************************
  *        Start New for 3.64                *
  ********************************************/
@@ -188,13 +277,7 @@ define('_PLUGIN_OPTIONS_TITLE',                                            '%s のオプション設定');
 // Plugin file loda error
 define('_PLUGINFILE_COULDNT_BELOADED',                         'エラー: プラグインファイル <strong>%s.php</strong> を読み込めませんでした。ファイルが存在しない、もくは使用中の Nucleus 上で動作させるために必要な機能がプラグインでサポートされていません。(<a href="?action=actionlog">管理操作履歴</a>に詳細があります。)');
 
-//ITEM add/edit template (for japanese only)
 define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'フォーマット:');
-define('_ITEM_ADDEDITTEMPLATE_YEAR',                           '年');
-define('_ITEM_ADDEDITTEMPLATE_MONTH',                          '月');
-define('_ITEM_ADDEDITTEMPLATE_DAY',                                    '日');
-define('_ITEM_ADDEDITTEMPLATE_HOUR',                           '時');
-define('_ITEM_ADDEDITTEMPLATE_MINUTE',                         '分');
 
 // Errors
 define('_ERRORS_INSTALLSQL',                                           '「install.sql」ファイルを削除してください');
@@ -1273,3 +1356,20 @@ define('_EDITC_NONMEMBER',                                                       '非メンバー');
 // move item
 define('_MOVE_TITLE',                                                          'どのBlogに移動しますか?');
 define('_MOVE_BTN',                                                                    'アイテムを移動する');
+
+// ADMIN-template template types
+include_once('adminskinTypes.php');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_NAVILIST',          'アイテム/コメントのリストのナビゲーション');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] メンバーがブログ管理権限を持っている時の追加項目');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] メンバーが最高管理権限を持っている時の追加項目');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'プラグインの入手リンク');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . '登録されているイベント');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'イベント情報のアップデートが必要な時のアラート');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . '依存するプラグイン');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . '依存されているプラグイン');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'プラグインが読み込めなかった時のアラート');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . '「アクション」列のテンプレート');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'プラグインの管理領域へのリンク');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'プラグインのヘルプへのリンク');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'プラグインのオプション設定画面へのリンク');
+
index 433e62c..b75dae9 100644 (file)
  * 
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2012 The Nucleus Group
+<<<<<<< HEAD
  * @version $Id: ko_Kore_KR.EUC-KR.php 1868 2012-05-22 05:10:53Z sakamocchi $
+=======
+ * @version $Id: ko_Kore_KR.EUC-KR.php 1887 2012-06-17 08:30:08Z sakamocchi $
+>>>>>>> skinnable-master
  */
 
 /********************************************
  *        Start New for 4.0                 *
  ********************************************/
-define('_SKINIE_INVALID_NAMES_DETECTED', 'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
-define('_LISTS_AUTHOR', 'Author');
-define('_OVERVIEW_OTHER_DRAFTS', 'Other Drafts');
+/* argument value for setlocale() in Microsoft's windows operating system */
+define('_LOCALE_IN_WINDOWS',   'kor_kor');
+
+/* labels for date and time measurement unit */
+define('_LABEL_YEAR_UNIT',             'year');
+define('_LABEL_MONTH_UNIT',            'month');
+define('_LABEL_DAY_UNIT',              'day');
+define('_LABEL_HOUR_UNIT',             'hour');
+define('_LABEL_MINUTE_UNIT',   'minute');
+
+// SkinableAdminArea vars
+define('_SKINABLEADMIN_DEL_UNINSTALL_DATA',                    'Delete ADMIN skin data table on uninstall?');
+define('_SKINABLEADMIN_DEFAULT_SKIN',                          'Choose a skin of the management area of the default.');
+define('_SKINABLEADMIN_MEMBER_DEFAULT_SKIN',           'Choose a skin of the management area of you use.');
+define('_SKINABLEADMIN_QMENU_LAYOUT',                          'Admin layout');
+define('_SKINABLEADMIN_PAGE_STR',                                      'page');
+define('_SKINABLEADMIN_BATCH_MOVE',                                    'Item move other category/Category move other blog');
+define('_SKINABLEADMIN_BATCH',                                         'batch');
+define('_SKINABLEADMIN_PAGEHEAD',                                      'Admin page head');
+define('_SKINABLEADMIN_PAGEFOOT',                                      'Admin page foot');
+define('_SKINABLEADMIN_TEMPLATEOVERVIEW',                      'Template overview');
+define('_SKINABLEADMIN_ADMINAREAHEADLINK',                     '[Your site]link');
+define('_SKINABLEADMIN_TPLSETTING_INGENERAL',          'In general');
+define('_SKINABLEADMIN_HEAD_STR',                                      ' head');
+define('_SKINABLEADMIN_BODY_STR',                                      ' body');
+define('_SKINABLEADMIN_FOOT_STR',                                      ' foot');
+define('_SKINABLEADMIN_TEXT_STR',                                      ' text');
+define('_SKINABLEADMIN_TITLE_STR',                                     ' title');
+define('_SKINABLEADMIN_ADMINSETTING_STR',                      ' set editmember is \'admin\'');
+define('_SKINABLEADMIN_NORMALSETTING_STR',                     ' normal');
+define('_SKINABLEADMIN_HELPICONURL_STR',                       ' icon URL');
+define('_SKINABLEADMIN_HELPFILEURL_STR',                       ' help file URL');
+define('_SKINABLEADMIN_ADMINSKINVAR_STR',                      ' skinvars');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_SELECT',      'selectbox used in ADMIN area');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE',       'Table for list indication');
+define('_SKINABLEADMIN_PLUGIN_QUICKMENU',                      'Link to admin page of the plugin shown to the quick-menu');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE',         'Template for option-type %s');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTMETA',         'Template for option-meta-data %s');
+define('_SKINABLEADMIN_MEMBERS_ADMINSKIN',                     "ADMIN-Area's skin");
+
+define('_LOCALE_BG_CYRL_BG',   'Bulgarian in Bulgaria');
+define('_LOCALE_CA_LATN_ES',   'Catalan in Spain');
+define('_LOCALE_CS_LATN_CZ',   'Czech in Czech Republic');
+define('_LOCALE_DE_LATN_DE',   'German in Germany');
+define('_LOCALE_EL_GREK_GR',   'Greek in Greece (Greek script)');
+define('_LOCALE_EN_LATN_US',   'English in United States');
+define('_LOCALE_ES_LATN_ES',   'Spanish in Spain');
+define('_LOCALE_FA_ARAB_IR',   'Persian in Islamic Republic of Iran');
+define('_LOCALE_FI_LATN_FI',   'Finnish in Finland');
+define('_LOCALE_FR_LATN_FR',   'French in France');
+define('_LOCALE_GL_LATN_ES',   'Galician in Spain');
+define('_LOCALE_HR_LATN_HR',   'Croatian in Croatia');
+define('_LOCALE_HU_LATN_HU',   'Hungarian in Hungary');
+define('_LOCALE_ID_LATN_ID',   'Indonesian in Indonesia (Latin script)');
+define('_LOCALE_IT_LATN_IT',   'Italian in Italy');
+define('_LOCALE_JA_JPAN_JP',   'Japanese in Japan');
+define('_LOCALE_KO_KORE_KR',   'Korean in Korea');
+define('_LOCALE_KU_ARAB_TR',   'Kurdish in Turkey (Arabic script)');
+define('_LOCALE_LV_LATN_LV',   'Latvian in Latvia');
+define('_LOCALE_NL_LATN_NL',   'Dutch in Netherlands');
+define('_LOCALE_PL_LATN_PL',   'Polish in Poland');
+define('_LOCALE_PT_LATN_BR',   'Portuguese in Brazil');
+define('_LOCALE_RO_LATN_RO',   'Romainan in Romania');
+define('_LOCALE_RU_CYRL_RU',   'Russian in Russia');
+define('_LOCALE_SK_LATN_SK',   'Slovak in Slovakia');
+define('_LOCALE_SR_CYRL_RS',   'Serbian in Serbia');
+define('_LOCALE_UR_ARAB_PK',   'Urdu in Pakistan');
+define('_LOCALE_VI_LATN_VN',   'Vietnamese in Vietnam (Latin script)');
+define('_LOCALE_ZH_HANS_CN',   'Chinese in China (simplified script)');
+define('_LOCALE_ZH_HANT_TW',   'Chinese in Taiwan (Traditional script)');
+
+define('_FORGOTPASSWORD_TITLE',                                'Forgot your password?');
+define('_FORGOTPASSWORD_MSG',                          'Enter your username and email address below, and you\'ll be sent an e-mail with a link where you can choose a new password.');
+define('_FORGOTPASSWORD_SUBMIT',                       'Send Activation Link" class="transparent');
+define('_FORGOTPASSWORD_CONTACT',                      'If you don\'t remember your exact username, contact the site administrator.');
+define('_SKINIE_INVALID_NAMES_DETECTED',       'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
+define('_LISTS_AUTHOR',                                                'Author');
+define('_OVERVIEW_OTHER_DRAFTS',                       'Other Drafts');
+define('_ERROR_BADADMINSKINNAME',                      'the name of skin for admin area must start with \'admin/\'.');
+define('_ERROR_BADADMINTEMPLATENAME',          'the name of template for admin area must start with \'admin/\'.');
+define('_SETTINGS_ADMINSKIN',                          'default skin for admin area');
+define('_SETTINGS_BKMKLTSKIN',                         'default skin for bookmarklet');
+define('_MEMBERS_BKMKLTSKIN',                          "bookmarklet skin");
+define('_ADMIN_SYSTEMOVERVIEW_VERSION_LATEST',         'The version which is being used is latest.');
+
 /********************************************
  *        Start New for 3.6x                *
  ********************************************/
@@ -188,13 +273,7 @@ define('_PLUGIN_OPTIONS_TITLE',                                                    'Options for %s');
 // Plugin file loda error
 define('_PLUGINFILE_COULDNT_BELOADED',                         'Error: plugin file <strong>%s.php</strong> could not be loaded, or it has been set inactive because it does not support some features (check the <a href="?action=actionlog">actionlog</a> for more info)');
 
-//ITEM add/edit template (for japanese only)
 define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
-define('_ITEM_ADDEDITTEMPLATE_YEAR',                           'Year');
-define('_ITEM_ADDEDITTEMPLATE_MONTH',                          'Month');
-define('_ITEM_ADDEDITTEMPLATE_DAY',                                    'Day');
-define('_ITEM_ADDEDITTEMPLATE_HOUR',                           'Hour');
-define('_ITEM_ADDEDITTEMPLATE_MINUTE',                         'Minute');
 
 // Errors
 define('_ERRORS_INSTALLSQL',                                           'install.sql should be deleted');
@@ -339,6 +418,23 @@ define('_LIST_PLUGS_DEP',                  'Plugin(s) requires:');
 
 // START changed/added after 3.1 START
 
+// comments list per weblog
+define('_COMMENTS_BLOG',                       'All Comments for blog');
+define('_NOCOMMENTS_BLOG',                     'No comments were made on items of this blog');
+define('_BLOGLIST_COMMENTS',           'Comments');
+define('_BLOGLIST_TT_COMMENTS',                'A list of all comments made on items of this blog');
+
+
+// for use in archivetype-skinvar
+define('_ARCHIVETYPE_DAY',                     'day');
+define('_ARCHIVETYPE_MONTH',           'month');
+
+// tickets (prevents malicious users to trick an admin to perform actions he doesn't want)
+define('_ERROR_BADTICKET',                     'Invalid or expired ticket.');
+
+// cookie prefix
+define('_SETTINGS_COOKIEPREFIX',       'Cookie Prefix');
+
 // account activation
 define('_ERROR_NOLOGON_NOACTIVATE',    'È­¼³È­ ¸µÅ©¸¦ º¸³¾¼ö ¾ø½À´Ï´Ù. ·Î±×ÀΠÇϽǼö ¾ø½À´Ï´Ù.');
 define('_ERROR_ACTIVATE',                      'È°¼ºÈ­ Å°°¡ ¾ø°Å³ª ¸ÂÁö¾Ê°Å³ª Æó±âµÇ¾ú½À´Ï´Ù.');
@@ -346,7 +442,7 @@ define('_ACTIONLOG_ACTIVATIONLINK', 'Ȱ
 define('_MSG_ACTIVATION_SENT',         'È°¼ºÈ­ ¸µÅ©°¡ À̸ÞÀϷΠº¸³»Á³½À´Ï´Ù.');
 
 // activation link emails
-define('_ACTIVATE_REGISTER_MAIL',      "¾È³çÇϼ¼¿ä <%memberName%>´Ô,\n\n<%siteName%> (<%siteUrl%>)ÀÇ °èÁ¤À» È°¼ºÈ­ Çϱâ À§Çؼ­´Â\n´ÙÀ½ÀÇ ¸µÅ©¸¦ Å¬¸¯ÇϽʽÿÀ: \n\n\t<%activationUrl%>\n\nÀÌ ¸ÞÀÏÀ» ¹ÞÀºÁö 2ÀÏÀÌ Áö³¯°æ¿ì È°¼ºÈ­ ¸µÅ©°¡ ¹Ù¸£Áö ¾Ê´Ù°í Ç¥½ÃµË´Ï´Ù.");
+define('_ACTIVATE_REGISTER_MAIL',      "Hi <%memberName%>,\n\nYou need to activate your account at <%siteName%> (<%siteUrl%>).\nYou can do this by visiting the link below: \n\n\t<%activationUrl%>\n\nYou have <%activationDays%> days to do this. After this, the activation link becomes invalid.");
 define('_ACTIVATE_REGISTER_MAILTITLE', "'<%memberName%>'ÀÇ °èÁ¤ È°¼ºÈ­");
 define('_ACTIVATE_REGISTER_TITLE',     'ȯ¿µÇÕ´Ï´Ù <%memberName%>´Ô');
 define('_ACTIVATE_REGISTER_TEXT',      '¾Æ·¡ÀÇ °èÁ¤¿¡ ¸Â´Â ¾ÏÈ£¸¦ ¼±ÅÃÇØ ÁֽʽÿÀ');
@@ -740,7 +836,6 @@ define('_COMMENTFORM_YOUARE',               '
 define('_COMMENTFORM_SUBMIT',          'ÄÚ¸àÆ® Ãß°¡');
 define('_COMMENTFORM_COMMENT',         '´ç½ÅÀÇ ÄÚ¸àÆ®');
 define('_COMMENTFORM_NAME',                    'À̸§');
-define('_COMMENTFORM_MAIL',                    'À̸ÞÀÏ/ȨÆäÀÌÁö');
 define('_COMMENTFORM_REMEMBER',                '³»Á¤º¸ ±â¾ï');
 
 // loginform
@@ -767,7 +862,6 @@ define('_ADD_DISABLE_COMMENTS',             '
 define('_ADD_DRAFTNFUTURE',                    'ÃʾȠ&amp; ¹Ì¸® ½áµÎ±â');
 define('_ADD_ADDITEM',                         '±Û µî·Ï');
 define('_ADD_ADDNOW',                          'Áö±Ý µî·Ï');
-define('_ADD_ADDLATER',                                '³ªÁß¿¡ µî·Ï');
 define('_ADD_PLACE_ON',                                '´ÙÀ½°ú °°ÀÌ µî·Ï:');
 define('_ADD_ADDDRAFT',                                'ÃʾÈÀ¸·Î µî·Ï');
 define('_ADD_NOPASTDATES',                     '(³¯Â¥³ª ½Ã°£À» ÇöÀç ÀÌÀüÀ¸·Î ¼³Á¤ÇÒ ¼ö´Â ¾øÀ¸¸ç, ±×·± °æ¿ì ÇöÀ砽ð£À¸·Î ¼³Á¤µË´Ï´Ù)');
@@ -1111,8 +1205,6 @@ define('_BAN_ADD_BTN',                            '
 
 // LOGIN screen
 define('_LOGIN_MESSAGE',                       '¸Þ½ÃÁö');
-define('_LOGIN_NAME',                          'À̸§');
-define('_LOGIN_PASSWORD',                      '¾ÏÈ£');
 define('_LOGIN_SHARED',                                _LOGINFORM_SHARED);
 define('_LOGIN_FORGOT',                                '¾ÏÈ£¸¦ ÀØÀ¸¼Ì´Ù¸é?');
 
@@ -1244,3 +1336,19 @@ define('_EDITC_NONMEMBER',                       '
 // move item
 define('_MOVE_TITLE',                          '¾î´À ºí·Î±×·Î À̵¿ÇÒ±î¿ä?');
 define('_MOVE_BTN',                                    '¾ÆÀÌÅÛ À̵¿');
+
+// ADMIN-template template types
+include_once('adminskinTypes.php');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_NAVILIST',          'navibar for item/comment list');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is blog ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is super ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin URL');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'API entry');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'eventlist updates');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency to');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency by');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'couldn\'t load file');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin actions');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin admin link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin help link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin option setting link');
index 2ba56db..8b6cbb8 100644 (file)
  * 
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2012 The Nucleus Group
+<<<<<<< HEAD
  * @version $Id: ko_Kore_KR.UTF-8.php 1868 2012-05-22 05:10:53Z sakamocchi $
+=======
+ * @version $Id: ko_Kore_KR.UTF-8.php 1887 2012-06-17 08:30:08Z sakamocchi $
+>>>>>>> skinnable-master
  */
 
 /********************************************
  *        Start New for 4.0                 *
  ********************************************/
-define('_SKINIE_INVALID_NAMES_DETECTED', 'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
-define('_LISTS_AUTHOR', 'Author');
-define('_OVERVIEW_OTHER_DRAFTS', 'Other Drafts');
+/* argument value for setlocale() in Microsoft's windows operating system */
+define('_LOCALE_IN_WINDOWS',   'kor_kor');
+
+/* labels for date and time measurement unit */
+define('_LABEL_YEAR_UNIT',             'year');
+define('_LABEL_MONTH_UNIT',            'month');
+define('_LABEL_DAY_UNIT',              'day');
+define('_LABEL_HOUR_UNIT',             'hour');
+define('_LABEL_MINUTE_UNIT',   'minute');
+
+// SkinableAdminArea vars
+define('_SKINABLEADMIN_DEL_UNINSTALL_DATA',                    'Delete ADMIN skin data table on uninstall?');
+define('_SKINABLEADMIN_DEFAULT_SKIN',                          'Choose a skin of the management area of the default.');
+define('_SKINABLEADMIN_MEMBER_DEFAULT_SKIN',           'Choose a skin of the management area of you use.');
+define('_SKINABLEADMIN_QMENU_LAYOUT',                          'Admin layout');
+define('_SKINABLEADMIN_PAGE_STR',                                      'page');
+define('_SKINABLEADMIN_BATCH_MOVE',                                    'Item move other category/Category move other blog');
+define('_SKINABLEADMIN_BATCH',                                         'batch');
+define('_SKINABLEADMIN_PAGEHEAD',                                      'Admin page head');
+define('_SKINABLEADMIN_PAGEFOOT',                                      'Admin page foot');
+define('_SKINABLEADMIN_TEMPLATEOVERVIEW',                      'Template overview');
+define('_SKINABLEADMIN_ADMINAREAHEADLINK',                     '[Your site]link');
+define('_SKINABLEADMIN_TPLSETTING_INGENERAL',          'In general');
+define('_SKINABLEADMIN_HEAD_STR',                                      ' head');
+define('_SKINABLEADMIN_BODY_STR',                                      ' body');
+define('_SKINABLEADMIN_FOOT_STR',                                      ' foot');
+define('_SKINABLEADMIN_TEXT_STR',                                      ' text');
+define('_SKINABLEADMIN_TITLE_STR',                                     ' title');
+define('_SKINABLEADMIN_ADMINSETTING_STR',                      ' set editmember is \'admin\'');
+define('_SKINABLEADMIN_NORMALSETTING_STR',                     ' normal');
+define('_SKINABLEADMIN_HELPICONURL_STR',                       ' icon URL');
+define('_SKINABLEADMIN_HELPFILEURL_STR',                       ' help file URL');
+define('_SKINABLEADMIN_ADMINSKINVAR_STR',                      ' skinvars');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_SELECT',      'selectbox used in ADMIN area');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE',       'Table for list indication');
+define('_SKINABLEADMIN_PLUGIN_QUICKMENU',                      'Link to admin page of the plugin shown to the quick-menu');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE',         'Template for option-type %s');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTMETA',         'Template for option-meta-data %s');
+define('_SKINABLEADMIN_MEMBERS_ADMINSKIN',                     "ADMIN-Area's skin");
+
+define('_LOCALE_BG_CYRL_BG',   'Bulgarian in Bulgaria');
+define('_LOCALE_CA_LATN_ES',   'Catalan in Spain');
+define('_LOCALE_CS_LATN_CZ',   'Czech in Czech Republic');
+define('_LOCALE_DE_LATN_DE',   'German in Germany');
+define('_LOCALE_EL_GREK_GR',   'Greek in Greece (Greek script)');
+define('_LOCALE_EN_LATN_US',   'English in United States');
+define('_LOCALE_ES_LATN_ES',   'Spanish in Spain');
+define('_LOCALE_FA_ARAB_IR',   'Persian in Islamic Republic of Iran');
+define('_LOCALE_FI_LATN_FI',   'Finnish in Finland');
+define('_LOCALE_FR_LATN_FR',   'French in France');
+define('_LOCALE_GL_LATN_ES',   'Galician in Spain');
+define('_LOCALE_HR_LATN_HR',   'Croatian in Croatia');
+define('_LOCALE_HU_LATN_HU',   'Hungarian in Hungary');
+define('_LOCALE_ID_LATN_ID',   'Indonesian in Indonesia (Latin script)');
+define('_LOCALE_IT_LATN_IT',   'Italian in Italy');
+define('_LOCALE_JA_JPAN_JP',   'Japanese in Japan');
+define('_LOCALE_KO_KORE_KR',   'Korean in Korea');
+define('_LOCALE_KU_ARAB_TR',   'Kurdish in Turkey (Arabic script)');
+define('_LOCALE_LV_LATN_LV',   'Latvian in Latvia');
+define('_LOCALE_NL_LATN_NL',   'Dutch in Netherlands');
+define('_LOCALE_PL_LATN_PL',   'Polish in Poland');
+define('_LOCALE_PT_LATN_BR',   'Portuguese in Brazil');
+define('_LOCALE_RO_LATN_RO',   'Romainan in Romania');
+define('_LOCALE_RU_CYRL_RU',   'Russian in Russia');
+define('_LOCALE_SK_LATN_SK',   'Slovak in Slovakia');
+define('_LOCALE_SR_CYRL_RS',   'Serbian in Serbia');
+define('_LOCALE_UR_ARAB_PK',   'Urdu in Pakistan');
+define('_LOCALE_VI_LATN_VN',   'Vietnamese in Vietnam (Latin script)');
+define('_LOCALE_ZH_HANS_CN',   'Chinese in China (simplified script)');
+define('_LOCALE_ZH_HANT_TW',   'Chinese in Taiwan (Traditional script)');
+
+define('_FORGOTPASSWORD_TITLE',                                'Forgot your password?');
+define('_FORGOTPASSWORD_MSG',                          'Enter your username and email address below, and you\'ll be sent an e-mail with a link where you can choose a new password.');
+define('_FORGOTPASSWORD_SUBMIT',                       'Send Activation Link" class="transparent');
+define('_FORGOTPASSWORD_CONTACT',                      'If you don\'t remember your exact username, contact the site administrator.');
+define('_SKINIE_INVALID_NAMES_DETECTED',       'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
+define('_LISTS_AUTHOR',                                                'Author');
+define('_OVERVIEW_OTHER_DRAFTS',                       'Other Drafts');
+define('_ERROR_BADADMINSKINNAME',                      'the name of skin for admin area must start with \'admin/\'.');
+define('_ERROR_BADADMINTEMPLATENAME',          'the name of template for admin area must start with \'admin/\'.');
+define('_SETTINGS_ADMINSKIN',                          'default skin for admin area');
+define('_SETTINGS_BKMKLTSKIN',                         'default skin for bookmarklet');
+define('_MEMBERS_BKMKLTSKIN',                          "bookmarklet skin");
+define('_ADMIN_SYSTEMOVERVIEW_VERSION_LATEST',         'The version which is being used is latest.');
+
 /********************************************
  *        Start New for 3.6x                *
  ********************************************/
@@ -188,13 +273,7 @@ define('_PLUGIN_OPTIONS_TITLE',                                                    'Options for %s');
 // Plugin file loda error
 define('_PLUGINFILE_COULDNT_BELOADED',                         'Error: plugin file <strong>%s.php</strong> could not be loaded, or it has been set inactive because it does not support some features (check the <a href="?action=actionlog">actionlog</a> for more info)');
 
-//ITEM add/edit template (for japanese only)
 define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
-define('_ITEM_ADDEDITTEMPLATE_YEAR',                           'Year');
-define('_ITEM_ADDEDITTEMPLATE_MONTH',                          'Month');
-define('_ITEM_ADDEDITTEMPLATE_DAY',                                    'Day');
-define('_ITEM_ADDEDITTEMPLATE_HOUR',                           'Hour');
-define('_ITEM_ADDEDITTEMPLATE_MINUTE',                         'Minute');
 
 // Errors
 define('_ERRORS_INSTALLSQL',                                           'install.sql should be deleted');
@@ -339,6 +418,23 @@ define('_LIST_PLUGS_DEP',                  'Plugin(s) requires:');
 
 // START changed/added after 3.1 START
 
+// comments list per weblog
+define('_COMMENTS_BLOG',                       'All Comments for blog');
+define('_NOCOMMENTS_BLOG',                     'No comments were made on items of this blog');
+define('_BLOGLIST_COMMENTS',           'Comments');
+define('_BLOGLIST_TT_COMMENTS',                'A list of all comments made on items of this blog');
+
+
+// for use in archivetype-skinvar
+define('_ARCHIVETYPE_DAY',                     'day');
+define('_ARCHIVETYPE_MONTH',           'month');
+
+// tickets (prevents malicious users to trick an admin to perform actions he doesn't want)
+define('_ERROR_BADTICKET',                     'Invalid or expired ticket.');
+
+// cookie prefix
+define('_SETTINGS_COOKIEPREFIX',       'Cookie Prefix');
+
 // account activation
 define('_ERROR_NOLOGON_NOACTIVATE',    '화설화 링크를 보낼수 없습니다. 로그인 하실수 없습니다.');
 define('_ERROR_ACTIVATE',                      '활성화 키가 없거나 맞지않거나 폐기되었습니다.');
@@ -740,7 +836,6 @@ define('_COMMENTFORM_YOUARE',               '당신은');
 define('_COMMENTFORM_SUBMIT',          '코멘트 추가');
 define('_COMMENTFORM_COMMENT',         '당신의 코멘트');
 define('_COMMENTFORM_NAME',                    '이름');
-define('_COMMENTFORM_MAIL',                    '이메일/홈페이지');
 define('_COMMENTFORM_REMEMBER',                '내정보 기억');
 
 // loginform
@@ -767,7 +862,6 @@ define('_ADD_DISABLE_COMMENTS',             '코멘트 금지?');
 define('_ADD_DRAFTNFUTURE',                    '초안 &amp; 미리 써두기');
 define('_ADD_ADDITEM',                         '글 등록');
 define('_ADD_ADDNOW',                          '지금 등록');
-define('_ADD_ADDLATER',                                '나중에 등록');
 define('_ADD_PLACE_ON',                                '다음과 같이 등록:');
 define('_ADD_ADDDRAFT',                                '초안으로 등록');
 define('_ADD_NOPASTDATES',                     '(날짜나 시간을 현재 이전으로 설정할 수는 없으며, 그런 경우 현재 시간으로 설정됩니다)');
@@ -1111,8 +1205,6 @@ define('_BAN_ADD_BTN',                            '접근금지 설정 추가');
 
 // LOGIN screen
 define('_LOGIN_MESSAGE',                       '메시지');
-define('_LOGIN_NAME',                          '이름');
-define('_LOGIN_PASSWORD',                      '암호');
 define('_LOGIN_SHARED',                                _LOGINFORM_SHARED);
 define('_LOGIN_FORGOT',                                '암호를 잊으셨다면?');
 
@@ -1244,3 +1336,19 @@ define('_EDITC_NONMEMBER',                       '비회원');
 // move item
 define('_MOVE_TITLE',                          '어느 블로그로 이동할까요?');
 define('_MOVE_BTN',                                    '아이템 이동');
+
+// ADMIN-template template types
+include_once('adminskinTypes.php');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_NAVILIST',          'navibar for item/comment list');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is blog ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is super ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin URL');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'API entry');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'eventlist updates');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency to');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency by');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'couldn\'t load file');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin actions');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin admin link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin help link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin option setting link');
index 8d441e4..e1dd678 100644 (file)
 /********************************************
  *        Start New for 4.0                 *
  ********************************************/
+<<<<<<< HEAD
 define('_SKINIE_INVALID_NAMES_DETECTED', 'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
 define('_LISTS_AUTHOR', 'Author');
 define('_OVERVIEW_OTHER_DRAFTS', 'Other Drafts');
  
+=======
+/* argument value for setlocale() in Microsoft's windows operating system */
+define('_LOCALE_IN_WINDOWS',   'C');
+
+/* labels for date and time measurement unit */
+define('_LABEL_YEAR_UNIT',             'year');
+define('_LABEL_MONTH_UNIT',            'month');
+define('_LABEL_DAY_UNIT',              'day');
+define('_LABEL_HOUR_UNIT',             'hour');
+define('_LABEL_MINUTE_UNIT',   'minute');
+
+// SkinableAdminArea vars
+define('_SKINABLEADMIN_DEL_UNINSTALL_DATA',                    'Delete ADMIN skin data table on uninstall?');
+define('_SKINABLEADMIN_DEFAULT_SKIN',                          'Choose a skin of the management area of the default.');
+define('_SKINABLEADMIN_MEMBER_DEFAULT_SKIN',           'Choose a skin of the management area of you use.');
+define('_SKINABLEADMIN_QMENU_LAYOUT',                          'Admin layout');
+define('_SKINABLEADMIN_PAGE_STR',                                      'page');
+define('_SKINABLEADMIN_BATCH_MOVE',                                    'Item move other category/Category move other blog');
+define('_SKINABLEADMIN_BATCH',                                         'batch');
+define('_SKINABLEADMIN_PAGEHEAD',                                      'Admin page head');
+define('_SKINABLEADMIN_PAGEFOOT',                                      'Admin page foot');
+define('_SKINABLEADMIN_TEMPLATEOVERVIEW',                      'Template overview');
+define('_SKINABLEADMIN_ADMINAREAHEADLINK',                     '[Your site]link');
+define('_SKINABLEADMIN_TPLSETTING_INGENERAL',          'In general');
+define('_SKINABLEADMIN_HEAD_STR',                                      ' head');
+define('_SKINABLEADMIN_BODY_STR',                                      ' body');
+define('_SKINABLEADMIN_FOOT_STR',                                      ' foot');
+define('_SKINABLEADMIN_TEXT_STR',                                      ' text');
+define('_SKINABLEADMIN_TITLE_STR',                                     ' title');
+define('_SKINABLEADMIN_ADMINSETTING_STR',                      ' set editmember is \'admin\'');
+define('_SKINABLEADMIN_NORMALSETTING_STR',                     ' normal');
+define('_SKINABLEADMIN_HELPICONURL_STR',                       ' icon URL');
+define('_SKINABLEADMIN_HELPFILEURL_STR',                       ' help file URL');
+define('_SKINABLEADMIN_ADMINSKINVAR_STR',                      ' skinvars');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_SELECT',      'selectbox used in ADMIN area');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE',       'Table for list indication');
+define('_SKINABLEADMIN_PLUGIN_QUICKMENU',                      'Link to admin page of the plugin shown to the quick-menu');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE',         'Template for option-type %s');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTMETA',         'Template for option-meta-data %s');
+define('_SKINABLEADMIN_MEMBERS_ADMINSKIN',                     "ADMIN-Area's skin");
+
+define('_LOCALE_BG_CYRL_BG',   'Bulgarian in Bulgaria');
+define('_LOCALE_CA_LATN_ES',   'Catalan in Spain');
+define('_LOCALE_CS_LATN_CZ',   'Czech in Czech Republic');
+define('_LOCALE_DE_LATN_DE',   'German in Germany');
+define('_LOCALE_EL_GREK_GR',   'Greek in Greece (Greek script) (Greek script)');
+define('_LOCALE_EN_LATN_US',   'English in United States');
+define('_LOCALE_ES_LATN_ES',   'Spanish in Spain');
+define('_LOCALE_FA_ARAB_IR',   'Persian in Islamic Republic of Iran');
+define('_LOCALE_FI_LATN_FI',   'Finnish in Finland');
+define('_LOCALE_FR_LATN_FR',   'French in France');
+define('_LOCALE_GL_LATN_ES',   'Galician in Spain');
+define('_LOCALE_HR_LATN_HR',   'Croatian in Croatia');
+define('_LOCALE_HU_LATN_HU',   'Hungarian in Hungary');
+define('_LOCALE_ID_LATN_ID',   'Indonesian in Indonesia (Latin script)');
+define('_LOCALE_IT_LATN_IT',   'Italian in Italy');
+define('_LOCALE_JA_JPAN_JP',   'Japanese in Japan');
+define('_LOCALE_KO_KORE_KR',   'Korean in Korea');
+define('_LOCALE_KU_ARAB_TR',   'Kurdish in Turkey (Arabic script)');
+define('_LOCALE_LV_LATN_LV',   'Latvian in Latvia');
+define('_LOCALE_NL_LATN_NL',   'Dutch in Netherlands');
+define('_LOCALE_PL_LATN_PL',   'Polish in Poland');
+define('_LOCALE_PT_LATN_BR',   'Portuguese in Brazil');
+define('_LOCALE_RO_LATN_RO',   'Romainan in Romania');
+define('_LOCALE_RU_CYRL_RU',   'Russian in Russia');
+define('_LOCALE_SK_LATN_SK',   'Slovak in Slovakia');
+define('_LOCALE_SR_CYRL_RS',   'Serbian in Serbia');
+define('_LOCALE_UR_ARAB_PK',   'Urdu in Pakistan');
+define('_LOCALE_VI_LATN_VN',   'Vietnamese in Vietnam (Latin script)');
+define('_LOCALE_ZH_HANS_CN',   'Chinese in China (simplified script)');
+define('_LOCALE_ZH_HANT_TW',   'Chinese in Taiwan (Traditional script)');
+
+define('_FORGOTPASSWORD_TITLE',                                'Forgot your password?');
+define('_FORGOTPASSWORD_MSG',                          'Enter your username and email address below, and you\'ll be sent an e-mail with a link where you can choose a new password.');
+define('_FORGOTPASSWORD_SUBMIT',                       'Send Activation Link" class="transparent');
+define('_FORGOTPASSWORD_CONTACT',                      'If you don\'t remember your exact username, contact the site administrator.');
+define('_SKINIE_INVALID_NAMES_DETECTED',       'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
+define('_LISTS_AUTHOR',                                                'Author');
+define('_OVERVIEW_OTHER_DRAFTS',                       'Other Drafts');
+define('_ERROR_BADADMINSKINNAME',                      'the name of skin for admin area must start with \'admin/\'.');
+define('_ERROR_BADADMINTEMPLATENAME',          'the name of template for admin area must start with \'admin/\'.');
+define('_SETTINGS_ADMINSKIN',                          'default skin for admin area');
+define('_SETTINGS_BKMKLTSKIN',                         'default skin for bookmarklet');
+define('_MEMBERS_BKMKLTSKIN',                          "bookmarklet skin");
+define('_ADMIN_SYSTEMOVERVIEW_VERSION_LATEST',         'The version which is being used is latest.');
+
+>>>>>>> skinnable-master
 /********************************************
  *        Start New for 3.6x                *
  ********************************************/
@@ -187,6 +275,7 @@ define('_PLUGIN_OPTIONS_TITLE',                                                     'Options for %s');
 // Plugin file loda error
 define('_PLUGINFILE_COULDNT_BELOADED',                         'Error: plugin file <strong>%s.php</strong> could not be loaded, or it has been set inactive because it does not support some features (check the <a href="?action=actionlog">actionlog</a> for more info)');
 
+<<<<<<< HEAD
 //ITEM add/edit template (for japanese only)
 define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
 define('_ITEM_ADDEDITTEMPLATE_YEAR',                           'Year');
@@ -194,6 +283,9 @@ define('_ITEM_ADDEDITTEMPLATE_MONTH',                               'Month');
 define('_ITEM_ADDEDITTEMPLATE_DAY',                                    'Day');
 define('_ITEM_ADDEDITTEMPLATE_HOUR',                           'Hour');
 define('_ITEM_ADDEDITTEMPLATE_MINUTE',                         'Minute');
+=======
+define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
+>>>>>>> skinnable-master
 
 // Errors
 define('_ERRORS_INSTALLSQL',                                           'install.sql should be deleted');
@@ -352,10 +444,13 @@ define('_ARCHIVETYPE_MONTH',              'مانگ');
 // tickets (prevents malicious users to trick an admin to perform actions he doesn't want)
 define('_ERROR_BADTICKET',                     'كارتێكی ناچالاك یان به‌سه‌رچوو');
 
+<<<<<<< HEAD
 // plugin dependency
 define('_ERROR_INSREQPLUGIN',          'دامه‌زراندنی پێوه‌كراوه‌ی پێویسته‌ ');
 define('_ERROR_DELREQPLUGIN',          'پێوه‌كراوی سڕاوه‌ جێ‌به‌جی نه‌بووه‌');
 
+=======
+>>>>>>> skinnable-master
 // cookie prefix
 define('_SETTINGS_COOKIEPREFIX',       'پرێفیكسی كووكیزه‌كان');
 
@@ -758,7 +853,10 @@ define('_COMMENTFORM_YOUARE',              'تۆ هه‌ته‌');
 define('_COMMENTFORM_SUBMIT',          'زیادكردنی بۆچوون');
 define('_COMMENTFORM_COMMENT',         'بۆچوونه‌كه‌ت');
 define('_COMMENTFORM_NAME',                    'ناو');
+<<<<<<< HEAD
 define('_COMMENTFORM_MAIL',                    'پۆستی ئه‌لیكترۆنی یا وێبگه‌');
+=======
+>>>>>>> skinnable-master
 define('_COMMENTFORM_REMEMBER',                'به‌بیرم بهێنه‌وه‌');
 
 // loginform
@@ -785,7 +883,10 @@ define('_ADD_DISABLE_COMMENTS',            'ناچالاك كردنی بۆچوون؟');
 define('_ADD_DRAFTNFUTURE',                    'هه‌ڵگیراو &amp; بابه‌تی داهاتوو');
 define('_ADD_ADDITEM',                         'زیادكردنی بابه‌ت');
 define('_ADD_ADDNOW',                          'زیادكردن ئێستا');
+<<<<<<< HEAD
 define('_ADD_ADDLATER',                                'پاشان زیادكردن');
+=======
+>>>>>>> skinnable-master
 define('_ADD_PLACE_ON',                                'ڕووبه‌ر بۆ');
 define('_ADD_ADDDRAFT',                                'زیادكردن بۆ هه‌ڵگیراوه‌كان');
 define('_ADD_NOPASTDATES',                     '(dates and times in the past are NOT valid, the current time will be used in that case)');
@@ -1129,8 +1230,11 @@ define('_BAN_ADD_BTN',                           'زیادكردنی قه‌ده‌غه‌كراو');
 
 // LOGIN screen
 define('_LOGIN_MESSAGE',                       'په‌یام');
+<<<<<<< HEAD
 define('_LOGIN_NAME',                          'ناو');
 define('_LOGIN_PASSWORD',                      'وشه‌ی تێپه‌ڕبوون');
+=======
+>>>>>>> skinnable-master
 define('_LOGIN_SHARED',                                _LOGINFORM_SHARED);
 define('_LOGIN_FORGOT',                                'وشه‌ی تێپه‌ڕبوونت له‌بیركردوه‌؟');
 
@@ -1263,4 +1367,22 @@ define('_EDITC_NONMEMBER',                       'ئه‌ندام نی‌یه‌');
 define('_MOVE_TITLE',                          'بۆ كوێ ئه‌یگوازنه‌وه‌؟');
 define('_MOVE_BTN',                                    'گواستنه‌وه‌ی بابه‌ت');
 
+<<<<<<< HEAD
 ?>
+=======
+// ADMIN-template template types
+include_once('adminskinTypes.php');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_NAVILIST',          'navibar for item/comment list');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is blog ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is super ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin URL');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'API entry');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'eventlist updates');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency to');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency by');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'couldn\'t load file');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin actions');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin admin link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin help link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin option setting link');
+>>>>>>> skinnable-master
index 9498471..6e54fff 100644 (file)
  * 
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2012 The Nucleus Group
+<<<<<<< HEAD
  * @version $Id: lv_Latn_LV.ISO-8859-13.php 1868 2012-05-22 05:10:53Z sakamocchi $
+=======
+ * @version $Id: lv_Latn_LV.ISO-8859-13.php 1887 2012-06-17 08:30:08Z sakamocchi $
+>>>>>>> skinnable-master
  */
 
 /********************************************
  *        Start New for 4.0                 *
  ********************************************/
-define('_SKINIE_INVALID_NAMES_DETECTED', 'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
-define('_LISTS_AUTHOR', 'Author');
-define('_OVERVIEW_OTHER_DRAFTS', 'Other Drafts');
+/* argument value for setlocale() in Microsoft's windows operating system */
+define('_LOCALE_IN_WINDOWS',   'C');
+
+/* labels for date and time measurement unit */
+define('_LABEL_YEAR_UNIT',             'year');
+define('_LABEL_MONTH_UNIT',            'month');
+define('_LABEL_DAY_UNIT',              'day');
+define('_LABEL_HOUR_UNIT',             'hour');
+define('_LABEL_MINUTE_UNIT',   'minute');
+
+// SkinableAdminArea vars
+define('_SKINABLEADMIN_DEL_UNINSTALL_DATA',                    'Delete ADMIN skin data table on uninstall?');
+define('_SKINABLEADMIN_DEFAULT_SKIN',                          'Choose a skin of the management area of the default.');
+define('_SKINABLEADMIN_MEMBER_DEFAULT_SKIN',           'Choose a skin of the management area of you use.');
+define('_SKINABLEADMIN_QMENU_LAYOUT',                          'Admin layout');
+define('_SKINABLEADMIN_PAGE_STR',                                      'page');
+define('_SKINABLEADMIN_BATCH_MOVE',                                    'Item move other category/Category move other blog');
+define('_SKINABLEADMIN_BATCH',                                         'batch');
+define('_SKINABLEADMIN_PAGEHEAD',                                      'Admin page head');
+define('_SKINABLEADMIN_PAGEFOOT',                                      'Admin page foot');
+define('_SKINABLEADMIN_TEMPLATEOVERVIEW',                      'Template overview');
+define('_SKINABLEADMIN_ADMINAREAHEADLINK',                     '[Your site]link');
+define('_SKINABLEADMIN_TPLSETTING_INGENERAL',          'In general');
+define('_SKINABLEADMIN_HEAD_STR',                                      ' head');
+define('_SKINABLEADMIN_BODY_STR',                                      ' body');
+define('_SKINABLEADMIN_FOOT_STR',                                      ' foot');
+define('_SKINABLEADMIN_TEXT_STR',                                      ' text');
+define('_SKINABLEADMIN_TITLE_STR',                                     ' title');
+define('_SKINABLEADMIN_ADMINSETTING_STR',                      ' set editmember is \'admin\'');
+define('_SKINABLEADMIN_NORMALSETTING_STR',                     ' normal');
+define('_SKINABLEADMIN_HELPICONURL_STR',                       ' icon URL');
+define('_SKINABLEADMIN_HELPFILEURL_STR',                       ' help file URL');
+define('_SKINABLEADMIN_ADMINSKINVAR_STR',                      ' skinvars');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_SELECT',      'selectbox used in ADMIN area');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE',       'Table for list indication');
+define('_SKINABLEADMIN_PLUGIN_QUICKMENU',                      'Link to admin page of the plugin shown to the quick-menu');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE',         'Template for option-type %s');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTMETA',         'Template for option-meta-data %s');
+define('_SKINABLEADMIN_MEMBERS_ADMINSKIN',                     "ADMIN-Area's skin");
+
+define('_LOCALE_BG_CYRL_BG',   'Bulgarian in Bulgaria');
+define('_LOCALE_CA_LATN_ES',   'Catalan in Spain');
+define('_LOCALE_CS_LATN_CZ',   'Czech in Czech Republic');
+define('_LOCALE_DE_LATN_DE',   'German in Germany');
+define('_LOCALE_EL_GREK_GR',   'Greek in Greece (Greek script)');
+define('_LOCALE_EN_LATN_US',   'English in United States');
+define('_LOCALE_ES_LATN_ES',   'Spanish in Spain');
+define('_LOCALE_FA_ARAB_IR',   'Persian in Islamic Republic of Iran');
+define('_LOCALE_FI_LATN_FI',   'Finnish in Finland');
+define('_LOCALE_FR_LATN_FR',   'French in France');
+define('_LOCALE_GL_LATN_ES',   'Galician in Spain');
+define('_LOCALE_HR_LATN_HR',   'Croatian in Croatia');
+define('_LOCALE_HU_LATN_HU',   'Hungarian in Hungary');
+define('_LOCALE_ID_LATN_ID',   'Indonesian in Indonesia (Latin script)');
+define('_LOCALE_IT_LATN_IT',   'Italian in Italy');
+define('_LOCALE_JA_JPAN_JP',   'Japanese in Japan');
+define('_LOCALE_KO_KORE_KR',   'Korean in Korea');
+define('_LOCALE_KU_ARAB_TR',   'Kurdish in Turkey (Arabic script)');
+define('_LOCALE_LV_LATN_LV',   'Latvian in Latvia');
+define('_LOCALE_NL_LATN_NL',   'Dutch in Netherlands');
+define('_LOCALE_PL_LATN_PL',   'Polish in Poland');
+define('_LOCALE_PT_LATN_BR',   'Portuguese in Brazil');
+define('_LOCALE_RO_LATN_RO',   'Romainan in Romania');
+define('_LOCALE_RU_CYRL_RU',   'Russian in Russia');
+define('_LOCALE_SK_LATN_SK',   'Slovak in Slovakia');
+define('_LOCALE_SR_CYRL_RS',   'Serbian in Serbia');
+define('_LOCALE_UR_ARAB_PK',   'Urdu in Pakistan');
+define('_LOCALE_VI_LATN_VN',   'Vietnamese in Vietnam (Latin script)');
+define('_LOCALE_ZH_HANS_CN',   'Chinese in China (simplified script)');
+define('_LOCALE_ZH_HANT_TW',   'Chinese in Taiwan (Traditional script)');
+
+define('_FORGOTPASSWORD_TITLE',                                'Forgot your password?');
+define('_FORGOTPASSWORD_MSG',                          'Enter your username and email address below, and you\'ll be sent an e-mail with a link where you can choose a new password.');
+define('_FORGOTPASSWORD_SUBMIT',                       'Send Activation Link" class="transparent');
+define('_FORGOTPASSWORD_CONTACT',                      'If you don\'t remember your exact username, contact the site administrator.');
+define('_SKINIE_INVALID_NAMES_DETECTED',       'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
+define('_LISTS_AUTHOR',                                                'Author');
+define('_OVERVIEW_OTHER_DRAFTS',                       'Other Drafts');
+define('_ERROR_BADADMINSKINNAME',                      'the name of skin for admin area must start with \'admin/\'.');
+define('_ERROR_BADADMINTEMPLATENAME',          'the name of template for admin area must start with \'admin/\'.');
+define('_SETTINGS_ADMINSKIN',                          'default skin for admin area');
+define('_SETTINGS_BKMKLTSKIN',                         'default skin for bookmarklet');
+define('_MEMBERS_BKMKLTSKIN',                          "bookmarklet skin");
+define('_ADMIN_SYSTEMOVERVIEW_VERSION_LATEST',         'The version which is being used is latest.');
+
 /********************************************
  *        Start New for 3.6x                *
  ********************************************/
@@ -187,13 +272,7 @@ define('_PLUGIN_OPTIONS_TITLE',                                                    'Options for %s');
 // Plugin file loda error
 define('_PLUGINFILE_COULDNT_BELOADED',                         'Error: plugin file <strong>%s.php</strong> could not be loaded, or it has been set inactive because it does not support some features (check the <a href="?action=actionlog">actionlog</a> for more info)');
 
-//ITEM add/edit template (for japanese only)
 define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
-define('_ITEM_ADDEDITTEMPLATE_YEAR',                           'Year');
-define('_ITEM_ADDEDITTEMPLATE_MONTH',                          'Month');
-define('_ITEM_ADDEDITTEMPLATE_DAY',                                    'Day');
-define('_ITEM_ADDEDITTEMPLATE_HOUR',                           'Hour');
-define('_ITEM_ADDEDITTEMPLATE_MINUTE',                         'Minute');
 
 // Errors
 define('_ERRORS_INSTALLSQL',                                           'install.sql should be deleted');
@@ -470,9 +549,12 @@ define('_MEDIA_COLLECTION_LABEL',  'Pa
 define('_ADD_ALIGNLEFT_TT',                    'Kreisajâ pusç');
 define('_ADD_ALIGNRIGHT_TT',           'Labajâ pusç');
 define('_ADD_ALIGNCENTER_TT',          'Iecentrçts');
+<<<<<<< HEAD
 
 // searchable blog setting (yes/no)
 define('_EBLOG_SEARCH',                                'Pievienot meklçðanas indeksam');
+=======
+>>>>>>> skinnable-master
 
 // generic upload failure
 define('_ERROR_UPLOADFAILED',          'Kïûdas rezultâtâ fails netika pievienots.');
@@ -772,7 +854,10 @@ define('_COMMENTFORM_YOUARE',        'Tu esi');
 define('_COMMENTFORM_SUBMIT',        'Komentçt');
 define('_COMMENTFORM_COMMENT',        'Tavs komentârs');
 define('_COMMENTFORM_NAME',            'Vârds');
+<<<<<<< HEAD
 define('_COMMENTFORM_MAIL',            'Epasts/HTTP');
+=======
+>>>>>>> skinnable-master
 define('_COMMENTFORM_REMEMBER',        'Atcerçties mani turpmâk');
 
 // loginform
@@ -799,7 +884,10 @@ define('_ADD_DISABLE_COMMENTS',        'Atsl
 define('_ADD_DRAFTNFUTURE',            'Sagataves nâkotnei');
 define('_ADD_ADDITEM',                'Pievienot');
 define('_ADD_ADDNOW',                'Pievienot tagad');
+<<<<<<< HEAD
 define('_ADD_ADDLATER',                'Pievienot vçlâk');
+=======
+>>>>>>> skinnable-master
 define('_ADD_PLACE_ON',                'Vieta');
 define('_ADD_ADDDRAFT',                'Pievienot sagatavçm');
 define('_ADD_NOPASTDATES',            '(pagâtnes datumi un laiki nav iespçjami, ðajâ gadîjumâ tiks lietots ðâbrîþa laiks)');
@@ -1147,8 +1235,11 @@ define('_BAN_ADD_BTN',                'Pievienot aizliegumu');
 
 // LOGIN screen
 define('_LOGIN_MESSAGE',            'Ziòojums');
+<<<<<<< HEAD
 define('_LOGIN_NAME',                'Vârds/nosaukums');
 define('_LOGIN_PASSWORD',            'Parole');
+=======
+>>>>>>> skinnable-master
 define('_LOGIN_SHARED',                _LOGINFORM_SHARED);
 define('_LOGIN_FORGOT',                'Aizmirsâs parole?');
 
@@ -1280,3 +1371,22 @@ define('_EDITC_NONMEMBER',            'ciemi
 // move item
 define('_MOVE_TITLE',                'Uz kuru blogu?');
 define('_MOVE_BTN',                    'Pârvietot...');
+<<<<<<< HEAD
+=======
+
+// ADMIN-template template types
+include_once('adminskinTypes.php');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_NAVILIST',          'navibar for item/comment list');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is blog ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is super ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin URL');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'API entry');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'eventlist updates');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency to');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency by');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'couldn\'t load file');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin actions');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin admin link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin help link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin option setting link');
+>>>>>>> skinnable-master
index 860af4f..6ec7fb7 100644 (file)
  * 
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2012 The Nucleus Group
+<<<<<<< HEAD
  * @version $Id: lv_Latn_LV.UTF-8.php 1868 2012-05-22 05:10:53Z sakamocchi $
+=======
+ * @version $Id: lv_Latn_LV.UTF-8.php 1887 2012-06-17 08:30:08Z sakamocchi $
+>>>>>>> skinnable-master
  */
 
 /********************************************
  *        Start New for 4.0                 *
  ********************************************/
-define('_SKINIE_INVALID_NAMES_DETECTED', 'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
-define('_LISTS_AUTHOR', 'Author');
-define('_OVERVIEW_OTHER_DRAFTS', 'Other Drafts');
+/* argument value for setlocale() in Microsoft's windows operating system */
+define('_LOCALE_IN_WINDOWS',   'C');
+
+/* labels for date and time measurement unit */
+define('_LABEL_YEAR_UNIT',             'year');
+define('_LABEL_MONTH_UNIT',            'month');
+define('_LABEL_DAY_UNIT',              'day');
+define('_LABEL_HOUR_UNIT',             'hour');
+define('_LABEL_MINUTE_UNIT',   'minute');
+
+// SkinableAdminArea vars
+define('_SKINABLEADMIN_DEL_UNINSTALL_DATA',                    'Delete ADMIN skin data table on uninstall?');
+define('_SKINABLEADMIN_DEFAULT_SKIN',                          'Choose a skin of the management area of the default.');
+define('_SKINABLEADMIN_MEMBER_DEFAULT_SKIN',           'Choose a skin of the management area of you use.');
+define('_SKINABLEADMIN_QMENU_LAYOUT',                          'Admin layout');
+define('_SKINABLEADMIN_PAGE_STR',                                      'page');
+define('_SKINABLEADMIN_BATCH_MOVE',                                    'Item move other category/Category move other blog');
+define('_SKINABLEADMIN_BATCH',                                         'batch');
+define('_SKINABLEADMIN_PAGEHEAD',                                      'Admin page head');
+define('_SKINABLEADMIN_PAGEFOOT',                                      'Admin page foot');
+define('_SKINABLEADMIN_TEMPLATEOVERVIEW',                      'Template overview');
+define('_SKINABLEADMIN_ADMINAREAHEADLINK',                     '[Your site]link');
+define('_SKINABLEADMIN_TPLSETTING_INGENERAL',          'In general');
+define('_SKINABLEADMIN_HEAD_STR',                                      ' head');
+define('_SKINABLEADMIN_BODY_STR',                                      ' body');
+define('_SKINABLEADMIN_FOOT_STR',                                      ' foot');
+define('_SKINABLEADMIN_TEXT_STR',                                      ' text');
+define('_SKINABLEADMIN_TITLE_STR',                                     ' title');
+define('_SKINABLEADMIN_ADMINSETTING_STR',                      ' set editmember is \'admin\'');
+define('_SKINABLEADMIN_NORMALSETTING_STR',                     ' normal');
+define('_SKINABLEADMIN_HELPICONURL_STR',                       ' icon URL');
+define('_SKINABLEADMIN_HELPFILEURL_STR',                       ' help file URL');
+define('_SKINABLEADMIN_ADMINSKINVAR_STR',                      ' skinvars');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_SELECT',      'selectbox used in ADMIN area');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE',       'Table for list indication');
+define('_SKINABLEADMIN_PLUGIN_QUICKMENU',                      'Link to admin page of the plugin shown to the quick-menu');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE',         'Template for option-type %s');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTMETA',         'Template for option-meta-data %s');
+define('_SKINABLEADMIN_MEMBERS_ADMINSKIN',                     "ADMIN-Area's skin");
+
+define('_LOCALE_BG_CYRL_BG',   'Bulgarian in Bulgaria');
+define('_LOCALE_CA_LATN_ES',   'Catalan in Spain');
+define('_LOCALE_CS_LATN_CZ',   'Czech in Czech Republic');
+define('_LOCALE_DE_LATN_DE',   'German in Germany');
+define('_LOCALE_EL_GREK_GR',   'Greek in Greece (Greek script)');
+define('_LOCALE_EN_LATN_US',   'English in United States');
+define('_LOCALE_ES_LATN_ES',   'Spanish in Spain');
+define('_LOCALE_FA_ARAB_IR',   'Persian in Islamic Republic of Iran');
+define('_LOCALE_FI_LATN_FI',   'Finnish in Finland');
+define('_LOCALE_FR_LATN_FR',   'French in France');
+define('_LOCALE_GL_LATN_ES',   'Galician in Spain');
+define('_LOCALE_HR_LATN_HR',   'Croatian in Croatia');
+define('_LOCALE_HU_LATN_HU',   'Hungarian in Hungary');
+define('_LOCALE_ID_LATN_ID',   'Indonesian in Indonesia (Latin script)');
+define('_LOCALE_IT_LATN_IT',   'Italian in Italy');
+define('_LOCALE_JA_JPAN_JP',   'Japanese in Japan');
+define('_LOCALE_KO_KORE_KR',   'Korean in Korea');
+define('_LOCALE_KU_ARAB_TR',   'Kurdish in Turkey (Arabic script)');
+define('_LOCALE_LV_LATN_LV',   'Latvian in Latvia');
+define('_LOCALE_NL_LATN_NL',   'Dutch in Netherlands');
+define('_LOCALE_PL_LATN_PL',   'Polish in Poland');
+define('_LOCALE_PT_LATN_BR',   'Portuguese in Brazil');
+define('_LOCALE_RO_LATN_RO',   'Romainan in Romania');
+define('_LOCALE_RU_CYRL_RU',   'Russian in Russia');
+define('_LOCALE_SK_LATN_SK',   'Slovak in Slovakia');
+define('_LOCALE_SR_CYRL_RS',   'Serbian in Serbia');
+define('_LOCALE_UR_ARAB_PK',   'Urdu in Pakistan');
+define('_LOCALE_VI_LATN_VN',   'Vietnamese in Vietnam (Latin script)');
+define('_LOCALE_ZH_HANS_CN',   'Chinese in China (simplified script)');
+define('_LOCALE_ZH_HANT_TW',   'Chinese in Taiwan (Traditional script)');
+
+define('_FORGOTPASSWORD_TITLE',                                'Forgot your password?');
+define('_FORGOTPASSWORD_MSG',                          'Enter your username and email address below, and you\'ll be sent an e-mail with a link where you can choose a new password.');
+define('_FORGOTPASSWORD_SUBMIT',                       'Send Activation Link" class="transparent');
+define('_FORGOTPASSWORD_CONTACT',                      'If you don\'t remember your exact username, contact the site administrator.');
+define('_SKINIE_INVALID_NAMES_DETECTED',       'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
+define('_LISTS_AUTHOR',                                                'Author');
+define('_OVERVIEW_OTHER_DRAFTS',                       'Other Drafts');
+define('_ERROR_BADADMINSKINNAME',                      'the name of skin for admin area must start with \'admin/\'.');
+define('_ERROR_BADADMINTEMPLATENAME',          'the name of template for admin area must start with \'admin/\'.');
+define('_SETTINGS_ADMINSKIN',                          'default skin for admin area');
+define('_SETTINGS_BKMKLTSKIN',                         'default skin for bookmarklet');
+define('_MEMBERS_BKMKLTSKIN',                          "bookmarklet skin");
+define('_ADMIN_SYSTEMOVERVIEW_VERSION_LATEST',         'The version which is being used is latest.');
+
 /********************************************
  *        Start New for 3.6x                *
  ********************************************/
@@ -187,13 +272,7 @@ define('_PLUGIN_OPTIONS_TITLE',                                                    'Options for %s');
 // Plugin file loda error
 define('_PLUGINFILE_COULDNT_BELOADED',                         'Error: plugin file <strong>%s.php</strong> could not be loaded, or it has been set inactive because it does not support some features (check the <a href="?action=actionlog">actionlog</a> for more info)');
 
-//ITEM add/edit template (for japanese only)
 define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
-define('_ITEM_ADDEDITTEMPLATE_YEAR',                           'Year');
-define('_ITEM_ADDEDITTEMPLATE_MONTH',                          'Month');
-define('_ITEM_ADDEDITTEMPLATE_DAY',                                    'Day');
-define('_ITEM_ADDEDITTEMPLATE_HOUR',                           'Hour');
-define('_ITEM_ADDEDITTEMPLATE_MINUTE',                         'Minute');
 
 // Errors
 define('_ERRORS_INSTALLSQL',                                           'install.sql should be deleted');
@@ -471,9 +550,6 @@ define('_ADD_ALIGNLEFT_TT',                 'Kreisajā pusē');
 define('_ADD_ALIGNRIGHT_TT',           'Labajā pusē');
 define('_ADD_ALIGNCENTER_TT',          'Iecentrēts');
 
-// searchable blog setting (yes/no)
-define('_EBLOG_SEARCH',                                'Pievienot meklēšanas indeksam');
-
 // generic upload failure
 define('_ERROR_UPLOADFAILED',          'Kļūdas rezultātā fails netika pievienots.');
 
@@ -772,7 +848,6 @@ define('_COMMENTFORM_YOUARE',        'Tu esi');
 define('_COMMENTFORM_SUBMIT',        'Komentēt');
 define('_COMMENTFORM_COMMENT',        'Tavs komentārs');
 define('_COMMENTFORM_NAME',            'Vārds');
-define('_COMMENTFORM_MAIL',            'Epasts/HTTP');
 define('_COMMENTFORM_REMEMBER',        'Atcerēties mani turpmāk');
 
 // loginform
@@ -799,7 +874,6 @@ define('_ADD_DISABLE_COMMENTS',        'Atslēgt komentārus?');
 define('_ADD_DRAFTNFUTURE',            'Sagataves nākotnei');
 define('_ADD_ADDITEM',                'Pievienot');
 define('_ADD_ADDNOW',                'Pievienot tagad');
-define('_ADD_ADDLATER',                'Pievienot vēlāk');
 define('_ADD_PLACE_ON',                'Vieta');
 define('_ADD_ADDDRAFT',                'Pievienot sagatavēm');
 define('_ADD_NOPASTDATES',            '(pagātnes datumi un laiki nav iespējami, šajā gadījumā tiks lietots šābrīža laiks)');
@@ -1147,8 +1221,6 @@ define('_BAN_ADD_BTN',                'Pievienot aizliegumu');
 
 // LOGIN screen
 define('_LOGIN_MESSAGE',            'Ziņojums');
-define('_LOGIN_NAME',                'Vārds/nosaukums');
-define('_LOGIN_PASSWORD',            'Parole');
 define('_LOGIN_SHARED',                _LOGINFORM_SHARED);
 define('_LOGIN_FORGOT',                'Aizmirsās parole?');
 
@@ -1280,3 +1352,19 @@ define('_EDITC_NONMEMBER',            'ciemiņš');
 // move item
 define('_MOVE_TITLE',                'Uz kuru blogu?');
 define('_MOVE_BTN',                    'Pārvietot...');
+
+// ADMIN-template template types
+include_once('adminskinTypes.php');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_NAVILIST',          'navibar for item/comment list');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is blog ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is super ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin URL');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'API entry');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'eventlist updates');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency to');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency by');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'couldn\'t load file');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin actions');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin admin link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin help link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin option setting link');
index 148f7d7..4ef6abf 100644 (file)
@@ -1,10 +1,14 @@
 <?php
 /**
- * Nucleus Language File
+ * Nucleus CMS Translation File
+ * Dutch in Netherlands (Latin script)
  *
+<<<<<<< HEAD
  * Nucleus CMS Translation File
  * Dutch in Netherlands (Latin script)
  *
+=======
+>>>>>>> skinnable-master
  * Updates:
  * Oct 7, 2005 - Translation fine-tuned and spellingcorrection by Errie (http://getverd.errie.com
  * - Nucleus v2.5-3.1 Norbert (beckerswna@yahoo.com)
  * 
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2012 The Nucleus Group
+<<<<<<< HEAD
  * @version $Id: nl_Latn_NL.ISO-8859-15.php 1868 2012-05-22 05:10:53Z sakamocchi $
+=======
+ * @version $Id: nl_Latn_NL.ISO-8859-15.php 1887 2012-06-17 08:30:08Z sakamocchi $
+>>>>>>> skinnable-master
  */
 
 /********************************************
  *        Start New for 4.0                 *
  ********************************************/
-define('_SKINIE_INVALID_NAMES_DETECTED', 'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
-define('_LISTS_AUTHOR', 'Author');
-define('_OVERVIEW_OTHER_DRAFTS', 'Other Drafts');
+/* argument value for setlocale() in Microsoft's windows operating system */
+define('_LOCALE_IN_WINDOWS',   'nld_nld');
+
+/* labels for date and time measurement unit */
+define('_LABEL_YEAR_UNIT',             'year');
+define('_LABEL_MONTH_UNIT',            'month');
+define('_LABEL_DAY_UNIT',              'day');
+define('_LABEL_HOUR_UNIT',             'hour');
+define('_LABEL_MINUTE_UNIT',   'minute');
+
+// SkinableAdminArea vars
+define('_SKINABLEADMIN_DEL_UNINSTALL_DATA',                    'Delete ADMIN skin data table on uninstall?');
+define('_SKINABLEADMIN_DEFAULT_SKIN',                          'Choose a skin of the management area of the default.');
+define('_SKINABLEADMIN_MEMBER_DEFAULT_SKIN',           'Choose a skin of the management area of you use.');
+define('_SKINABLEADMIN_QMENU_LAYOUT',                          'Admin layout');
+define('_SKINABLEADMIN_PAGE_STR',                                      'page');
+define('_SKINABLEADMIN_BATCH_MOVE',                                    'Item move other category/Category move other blog');
+define('_SKINABLEADMIN_BATCH',                                         'batch');
+define('_SKINABLEADMIN_PAGEHEAD',                                      'Admin page head');
+define('_SKINABLEADMIN_PAGEFOOT',                                      'Admin page foot');
+define('_SKINABLEADMIN_TEMPLATEOVERVIEW',                      'Template overview');
+define('_SKINABLEADMIN_ADMINAREAHEADLINK',                     '[Your site]link');
+define('_SKINABLEADMIN_TPLSETTING_INGENERAL',          'In general');
+define('_SKINABLEADMIN_HEAD_STR',                                      ' head');
+define('_SKINABLEADMIN_BODY_STR',                                      ' body');
+define('_SKINABLEADMIN_FOOT_STR',                                      ' foot');
+define('_SKINABLEADMIN_TEXT_STR',                                      ' text');
+define('_SKINABLEADMIN_TITLE_STR',                                     ' title');
+define('_SKINABLEADMIN_ADMINSETTING_STR',                      ' set editmember is \'admin\'');
+define('_SKINABLEADMIN_NORMALSETTING_STR',                     ' normal');
+define('_SKINABLEADMIN_HELPICONURL_STR',                       ' icon URL');
+define('_SKINABLEADMIN_HELPFILEURL_STR',                       ' help file URL');
+define('_SKINABLEADMIN_ADMINSKINVAR_STR',                      ' skinvars');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_SELECT',      'selectbox used in ADMIN area');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE',       'Table for list indication');
+define('_SKINABLEADMIN_PLUGIN_QUICKMENU',                      'Link to admin page of the plugin shown to the quick-menu');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE',         'Template for option-type %s');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTMETA',         'Template for option-meta-data %s');
+define('_SKINABLEADMIN_MEMBERS_ADMINSKIN',                     "ADMIN-Area's skin");
+
+define('_LOCALE_BG_CYRL_BG',   'Bulgarian in Bulgaria');
+define('_LOCALE_CA_LATN_ES',   'Catalan in Spain');
+define('_LOCALE_CS_LATN_CZ',   'Czech in Czech Republic');
+define('_LOCALE_DE_LATN_DE',   'German in Germany');
+define('_LOCALE_EL_GREK_GR',   'Greek in Greece (Greek script)');
+define('_LOCALE_EN_LATN_US',   'English in United States');
+define('_LOCALE_ES_LATN_ES',   'Spanish in Spain');
+define('_LOCALE_FA_ARAB_IR',   'Persian in Islamic Republic of Iran');
+define('_LOCALE_FI_LATN_FI',   'Finnish in Finland');
+define('_LOCALE_FR_LATN_FR',   'French in France');
+define('_LOCALE_GL_LATN_ES',   'Galician in Spain');
+define('_LOCALE_HR_LATN_HR',   'Croatian in Croatia');
+define('_LOCALE_HU_LATN_HU',   'Hungarian in Hungary');
+define('_LOCALE_ID_LATN_ID',   'Indonesian in Indonesia (Latin script)');
+define('_LOCALE_IT_LATN_IT',   'Italian in Italy');
+define('_LOCALE_JA_JPAN_JP',   'Japanese in Japan');
+define('_LOCALE_KO_KORE_KR',   'Korean in Korea');
+define('_LOCALE_KU_ARAB_TR',   'Kurdish in Turkey (Arabic script)');
+define('_LOCALE_LV_LATN_LV',   'Latvian in Latvia');
+define('_LOCALE_NL_LATN_NL',   'Dutch in Netherlands');
+define('_LOCALE_PL_LATN_PL',   'Polish in Poland');
+define('_LOCALE_PT_LATN_BR',   'Portuguese in Brazil');
+define('_LOCALE_RO_LATN_RO',   'Romainan in Romania');
+define('_LOCALE_RU_CYRL_RU',   'Russian in Russia');
+define('_LOCALE_SK_LATN_SK',   'Slovak in Slovakia');
+define('_LOCALE_SR_CYRL_RS',   'Serbian in Serbia');
+define('_LOCALE_UR_ARAB_PK',   'Urdu in Pakistan');
+define('_LOCALE_VI_LATN_VN',   'Vietnamese in Vietnam (Latin script)');
+define('_LOCALE_ZH_HANS_CN',   'Chinese in China (simplified script)');
+define('_LOCALE_ZH_HANT_TW',   'Chinese in Taiwan (Traditional script)');
+
+define('_FORGOTPASSWORD_TITLE',                                'Forgot your password?');
+define('_FORGOTPASSWORD_MSG',                          'Enter your username and email address below, and you\'ll be sent an e-mail with a link where you can choose a new password.');
+define('_FORGOTPASSWORD_SUBMIT',                       'Send Activation Link" class="transparent');
+define('_FORGOTPASSWORD_CONTACT',                      'If you don\'t remember your exact username, contact the site administrator.');
+define('_SKINIE_INVALID_NAMES_DETECTED',       'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
+define('_LISTS_AUTHOR',                                                'Author');
+define('_OVERVIEW_OTHER_DRAFTS',                       'Other Drafts');
+define('_ERROR_BADADMINSKINNAME',                      'the name of skin for admin area must start with \'admin/\'.');
+define('_ERROR_BADADMINTEMPLATENAME',          'the name of template for admin area must start with \'admin/\'.');
+define('_SETTINGS_ADMINSKIN',                          'default skin for admin area');
+define('_SETTINGS_BKMKLTSKIN',                         'default skin for bookmarklet');
+define('_MEMBERS_BKMKLTSKIN',                          "bookmarklet skin");
+define('_ADMIN_SYSTEMOVERVIEW_VERSION_LATEST',         'The version which is being used is latest.');
+
 /********************************************
  *        Start New for 3.6x                *
  ********************************************/
@@ -191,13 +280,7 @@ define('_PLUGIN_OPTIONS_TITLE',                                                    'Options for %s');
 // Plugin file loda error
 define('_PLUGINFILE_COULDNT_BELOADED',                         'Error: plugin file <strong>%s.php</strong> could not be loaded, or it has been set inactive because it does not support some features (check the <a href="?action=actionlog">actionlog</a> for more info)');
 
-//ITEM add/edit template (for japanese only)
 define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
-define('_ITEM_ADDEDITTEMPLATE_YEAR',                           'Year');
-define('_ITEM_ADDEDITTEMPLATE_MONTH',                          'Month');
-define('_ITEM_ADDEDITTEMPLATE_DAY',                                    'Day');
-define('_ITEM_ADDEDITTEMPLATE_HOUR',                           'Hour');
-define('_ITEM_ADDEDITTEMPLATE_MINUTE',                         'Minute');
 
 // Errors
 define('_ERRORS_INSTALLSQL',                                           'install.sql should be deleted');
@@ -353,10 +436,13 @@ define('_ARCHIVETYPE_MONTH',              'maand');
 // tickets (prevents malicious users to trick an admin to perform actions he doesn't want)
 define('_ERROR_BADTICKET',                     'Ongeldig ticket.');
 
+<<<<<<< HEAD
 // plugin dependency
 define('_ERROR_INSREQPLUGIN',          'Plugin kon niet geïnstalleerd worden: vereist ');
 define('_ERROR_DELREQPLUGIN',          'Plugin kon niet verwijderd worden: vereist door ');
 
+=======
+>>>>>>> skinnable-master
 // cookie prefix
 define('_SETTINGS_COOKIEPREFIX',       'Cookie Prefix');
 
@@ -761,7 +847,6 @@ define('_COMMENTFORM_YOUARE',               'U bent');
 define('_COMMENTFORM_SUBMIT',          'Reactie toevoegen');
 define('_COMMENTFORM_COMMENT',         'Uw reactie');
 define('_COMMENTFORM_NAME',                    'Naam');
-define('_COMMENTFORM_MAIL',                    'E-mail/HTTP');
 define('_COMMENTFORM_REMEMBER',                'Onthoud wie ik ben');
 
 // loginform
@@ -788,7 +873,6 @@ define('_ADD_DISABLE_COMMENTS',             'Commentaar uitschakelen?');
 define('_ADD_DRAFTNFUTURE',                    'Kladversies &amp; Future Items');
 define('_ADD_ADDITEM',                         'Toevoegen');
 define('_ADD_ADDNOW',                          'Nu toevoegen');
-define('_ADD_ADDLATER',                                'Later toevoegen');
 define('_ADD_PLACE_ON',                                'Toevoegen op');
 define('_ADD_ADDDRAFT',                                'Als kladversie bewaren');
 define('_ADD_NOPASTDATES',                     '(Data in het verleden gelden niet. In dat geval wordt de huidige datum genomen)');
@@ -1134,8 +1218,6 @@ define('_BAN_ADD_BTN',                            'Ban Toevoegen');
 
 // LOGIN screen
 define('_LOGIN_MESSAGE',                       'Bericht:');
-define('_LOGIN_NAME',                          'Naam');
-define('_LOGIN_PASSWORD',                      'Wachtwoord');
 define('_LOGIN_SHARED',                                _LOGINFORM_SHARED);
 define('_LOGIN_FORGOT',                                'Paswoord vergeten?');
 
@@ -1268,3 +1350,19 @@ define('_EDITC_NONMEMBER',                       'niet geregistreerd');
 // move item
 define('_MOVE_TITLE',                          'Verplaatsen naar welk blog?');
 define('_MOVE_BTN',                                    'Verplaats');
+
+// ADMIN-template template types
+include_once('adminskinTypes.php');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_NAVILIST',          'navibar for item/comment list');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is blog ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is super ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin URL');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'API entry');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'eventlist updates');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency to');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency by');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'couldn\'t load file');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin actions');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin admin link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin help link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin option setting link');
index babed62..167200a 100644 (file)
  * 
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2012 The Nucleus Group
+<<<<<<< HEAD
  * @version $Id: nl_Latn_NL.UTF-8.php 1868 2012-05-22 05:10:53Z sakamocchi $
+=======
+ * @version $Id: nl_Latn_NL.UTF-8.php 1887 2012-06-17 08:30:08Z sakamocchi $
+>>>>>>> skinnable-master
  */
 
 /********************************************
  *        Start New for 4.0                 *
  ********************************************/
-define('_SKINIE_INVALID_NAMES_DETECTED', 'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
-define('_LISTS_AUTHOR', 'Author');
-define('_OVERVIEW_OTHER_DRAFTS', 'Other Drafts');
+/* argument value for setlocale() in Microsoft's windows operating system */
+define('_LOCALE_IN_WINDOWS',   'nld_nld');
+
+/* labels for date and time measurement unit */
+define('_LABEL_YEAR_UNIT',             'year');
+define('_LABEL_MONTH_UNIT',            'month');
+define('_LABEL_DAY_UNIT',              'day');
+define('_LABEL_HOUR_UNIT',             'hour');
+define('_LABEL_MINUTE_UNIT',   'minute');
+
+// SkinableAdminArea vars
+define('_SKINABLEADMIN_DEL_UNINSTALL_DATA',                    'Delete ADMIN skin data table on uninstall?');
+define('_SKINABLEADMIN_DEFAULT_SKIN',                          'Choose a skin of the management area of the default.');
+define('_SKINABLEADMIN_MEMBER_DEFAULT_SKIN',           'Choose a skin of the management area of you use.');
+define('_SKINABLEADMIN_QMENU_LAYOUT',                          'Admin layout');
+define('_SKINABLEADMIN_PAGE_STR',                                      'page');
+define('_SKINABLEADMIN_BATCH_MOVE',                                    'Item move other category/Category move other blog');
+define('_SKINABLEADMIN_BATCH',                                         'batch');
+define('_SKINABLEADMIN_PAGEHEAD',                                      'Admin page head');
+define('_SKINABLEADMIN_PAGEFOOT',                                      'Admin page foot');
+define('_SKINABLEADMIN_TEMPLATEOVERVIEW',                      'Template overview');
+define('_SKINABLEADMIN_ADMINAREAHEADLINK',                     '[Your site]link');
+define('_SKINABLEADMIN_TPLSETTING_INGENERAL',          'In general');
+define('_SKINABLEADMIN_HEAD_STR',                                      ' head');
+define('_SKINABLEADMIN_BODY_STR',                                      ' body');
+define('_SKINABLEADMIN_FOOT_STR',                                      ' foot');
+define('_SKINABLEADMIN_TEXT_STR',                                      ' text');
+define('_SKINABLEADMIN_TITLE_STR',                                     ' title');
+define('_SKINABLEADMIN_ADMINSETTING_STR',                      ' set editmember is \'admin\'');
+define('_SKINABLEADMIN_NORMALSETTING_STR',                     ' normal');
+define('_SKINABLEADMIN_HELPICONURL_STR',                       ' icon URL');
+define('_SKINABLEADMIN_HELPFILEURL_STR',                       ' help file URL');
+define('_SKINABLEADMIN_ADMINSKINVAR_STR',                      ' skinvars');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_SELECT',      'selectbox used in ADMIN area');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE',       'Table for list indication');
+define('_SKINABLEADMIN_PLUGIN_QUICKMENU',                      'Link to admin page of the plugin shown to the quick-menu');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE',         'Template for option-type %s');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTMETA',         'Template for option-meta-data %s');
+define('_SKINABLEADMIN_MEMBERS_ADMINSKIN',                     "ADMIN-Area's skin");
+
+define('_LOCALE_BG_CYRL_BG',   'Bulgarian in Bulgaria');
+define('_LOCALE_CA_LATN_ES',   'Catalan in Spain');
+define('_LOCALE_CS_LATN_CZ',   'Czech in Czech Republic');
+define('_LOCALE_DE_LATN_DE',   'German in Germany');
+define('_LOCALE_EL_GREK_GR',   'Greek in Greece (Greek script)');
+define('_LOCALE_EN_LATN_US',   'English in United States');
+define('_LOCALE_ES_LATN_ES',   'Spanish in Spain');
+define('_LOCALE_FA_ARAB_IR',   'Persian in Islamic Republic of Iran');
+define('_LOCALE_FI_LATN_FI',   'Finnish in Finland');
+define('_LOCALE_FR_LATN_FR',   'French in France');
+define('_LOCALE_GL_LATN_ES',   'Galician in Spain');
+define('_LOCALE_HR_LATN_HR',   'Croatian in Croatia');
+define('_LOCALE_HU_LATN_HU',   'Hungarian in Hungary');
+define('_LOCALE_ID_LATN_ID',   'Indonesian in Indonesia (Latin script)');
+define('_LOCALE_IT_LATN_IT',   'Italian in Italy');
+define('_LOCALE_JA_JPAN_JP',   'Japanese in Japan');
+define('_LOCALE_KO_KORE_KR',   'Korean in Korea');
+define('_LOCALE_KU_ARAB_TR',   'Kurdish in Turkey (Arabic script)');
+define('_LOCALE_LV_LATN_LV',   'Latvian in Latvia');
+define('_LOCALE_NL_LATN_NL',   'Dutch in Netherlands');
+define('_LOCALE_PL_LATN_PL',   'Polish in Poland');
+define('_LOCALE_PT_LATN_BR',   'Portuguese in Brazil');
+define('_LOCALE_RO_LATN_RO',   'Romainan in Romania');
+define('_LOCALE_RU_CYRL_RU',   'Russian in Russia');
+define('_LOCALE_SK_LATN_SK',   'Slovak in Slovakia');
+define('_LOCALE_SR_CYRL_RS',   'Serbian in Serbia');
+define('_LOCALE_UR_ARAB_PK',   'Urdu in Pakistan');
+define('_LOCALE_VI_LATN_VN',   'Vietnamese in Vietnam (Latin script)');
+define('_LOCALE_ZH_HANS_CN',   'Chinese in China (simplified script)');
+define('_LOCALE_ZH_HANT_TW',   'Chinese in Taiwan (Traditional script)');
+
+define('_FORGOTPASSWORD_TITLE',                                'Forgot your password?');
+define('_FORGOTPASSWORD_MSG',                          'Enter your username and email address below, and you\'ll be sent an e-mail with a link where you can choose a new password.');
+define('_FORGOTPASSWORD_SUBMIT',                       'Send Activation Link" class="transparent');
+define('_FORGOTPASSWORD_CONTACT',                      'If you don\'t remember your exact username, contact the site administrator.');
+define('_SKINIE_INVALID_NAMES_DETECTED',       'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
+define('_LISTS_AUTHOR',                                                'Author');
+define('_OVERVIEW_OTHER_DRAFTS',                       'Other Drafts');
+define('_ERROR_BADADMINSKINNAME',                      'the name of skin for admin area must start with \'admin/\'.');
+define('_ERROR_BADADMINTEMPLATENAME',          'the name of template for admin area must start with \'admin/\'.');
+define('_SETTINGS_ADMINSKIN',                          'default skin for admin area');
+define('_SETTINGS_BKMKLTSKIN',                         'default skin for bookmarklet');
+define('_MEMBERS_BKMKLTSKIN',                          "bookmarklet skin");
+define('_ADMIN_SYSTEMOVERVIEW_VERSION_LATEST',         'The version which is being used is latest.');
+
 /********************************************
  *        Start New for 3.6x                *
  ********************************************/
@@ -189,13 +274,7 @@ define('_PLUGIN_OPTIONS_TITLE',                                                    'Options for %s');
 // Plugin file loda error
 define('_PLUGINFILE_COULDNT_BELOADED',                         'Error: plugin file <strong>%s.php</strong> could not be loaded, or it has been set inactive because it does not support some features (check the <a href="?action=actionlog">actionlog</a> for more info)');
 
-//ITEM add/edit template (for japanese only)
 define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
-define('_ITEM_ADDEDITTEMPLATE_YEAR',                           'Year');
-define('_ITEM_ADDEDITTEMPLATE_MONTH',                          'Month');
-define('_ITEM_ADDEDITTEMPLATE_DAY',                                    'Day');
-define('_ITEM_ADDEDITTEMPLATE_HOUR',                           'Hour');
-define('_ITEM_ADDEDITTEMPLATE_MINUTE',                         'Minute');
 
 // Errors
 define('_ERRORS_INSTALLSQL',                                           'install.sql should be deleted');
@@ -351,10 +430,6 @@ define('_ARCHIVETYPE_MONTH',               'maand');
 // tickets (prevents malicious users to trick an admin to perform actions he doesn't want)
 define('_ERROR_BADTICKET',                     'Ongeldig ticket.');
 
-// plugin dependency
-define('_ERROR_INSREQPLUGIN',          'Plugin kon niet geïnstalleerd worden: vereist ');
-define('_ERROR_DELREQPLUGIN',          'Plugin kon niet verwijderd worden: vereist door ');
-
 // cookie prefix
 define('_SETTINGS_COOKIEPREFIX',       'Cookie Prefix');
 
@@ -759,7 +834,6 @@ define('_COMMENTFORM_YOUARE',               'U bent');
 define('_COMMENTFORM_SUBMIT',          'Reactie toevoegen');
 define('_COMMENTFORM_COMMENT',         'Uw reactie');
 define('_COMMENTFORM_NAME',                    'Naam');
-define('_COMMENTFORM_MAIL',                    'E-mail/HTTP');
 define('_COMMENTFORM_REMEMBER',                'Onthoud wie ik ben');
 
 // loginform
@@ -786,7 +860,6 @@ define('_ADD_DISABLE_COMMENTS',             'Commentaar uitschakelen?');
 define('_ADD_DRAFTNFUTURE',                    'Kladversies &amp; Future Items');
 define('_ADD_ADDITEM',                         'Toevoegen');
 define('_ADD_ADDNOW',                          'Nu toevoegen');
-define('_ADD_ADDLATER',                                'Later toevoegen');
 define('_ADD_PLACE_ON',                                'Toevoegen op');
 define('_ADD_ADDDRAFT',                                'Als kladversie bewaren');
 define('_ADD_NOPASTDATES',                     '(Data in het verleden gelden niet. In dat geval wordt de huidige datum genomen)');
@@ -1132,8 +1205,6 @@ define('_BAN_ADD_BTN',                            'Ban Toevoegen');
 
 // LOGIN screen
 define('_LOGIN_MESSAGE',                       'Bericht:');
-define('_LOGIN_NAME',                          'Naam');
-define('_LOGIN_PASSWORD',                      'Wachtwoord');
 define('_LOGIN_SHARED',                                _LOGINFORM_SHARED);
 define('_LOGIN_FORGOT',                                'Paswoord vergeten?');
 
@@ -1266,3 +1337,19 @@ define('_EDITC_NONMEMBER',                       'niet geregistreerd');
 // move item
 define('_MOVE_TITLE',                          'Verplaatsen naar welk blog?');
 define('_MOVE_BTN',                                    'Verplaats');
+
+// ADMIN-template template types
+include_once('adminskinTypes.php');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_NAVILIST',          'navibar for item/comment list');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is blog ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is super ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin URL');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'API entry');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'eventlist updates');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency to');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency by');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'couldn\'t load file');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin actions');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin admin link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin help link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin option setting link');
index ad9449c..29bc0a8 100644 (file)
 /********************************************
  *        Start New for 4.0                 *
  ********************************************/
+<<<<<<< HEAD
 define('_SKINIE_INVALID_NAMES_DETECTED', 'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
 define('_LISTS_AUTHOR', 'Author');
 define('_OVERVIEW_OTHER_DRAFTS', 'Other Drafts');
  
+=======
+/* argument value for setlocale() in Microsoft's windows operating system */
+define('_LOCALE_IN_WINDOWS',   'plk_pol');
+
+/* labels for date and time measurement unit */
+define('_LABEL_YEAR_UNIT',             'Rok');
+define('_LABEL_MONTH_UNIT',            'Miesiąc');
+define('_LABEL_DAY_UNIT',              'Dzień');
+define('_LABEL_HOUR_UNIT',             'Godzina');
+define('_LABEL_MINUTE_UNIT',   'Minuta');
+
+// SkinableAdminArea vars
+define('_SKINABLEADMIN_DEL_UNINSTALL_DATA',                    'Delete ADMIN skin data table on uninstall?');
+define('_SKINABLEADMIN_DEFAULT_SKIN',                          'Choose a skin of the management area of the default.');
+define('_SKINABLEADMIN_MEMBER_DEFAULT_SKIN',           'Choose a skin of the management area of you use.');
+define('_SKINABLEADMIN_QMENU_LAYOUT',                          'Admin layout');
+define('_SKINABLEADMIN_PAGE_STR',                                      'page');
+define('_SKINABLEADMIN_BATCH_MOVE',                                    'Item move other category/Category move other blog');
+define('_SKINABLEADMIN_BATCH',                                         'batch');
+define('_SKINABLEADMIN_PAGEHEAD',                                      'Admin page head');
+define('_SKINABLEADMIN_PAGEFOOT',                                      'Admin page foot');
+define('_SKINABLEADMIN_TEMPLATEOVERVIEW',                      'Template overview');
+define('_SKINABLEADMIN_ADMINAREAHEADLINK',                     '[Your site]link');
+define('_SKINABLEADMIN_TPLSETTING_INGENERAL',          'In general');
+define('_SKINABLEADMIN_HEAD_STR',                                      ' head');
+define('_SKINABLEADMIN_BODY_STR',                                      ' body');
+define('_SKINABLEADMIN_FOOT_STR',                                      ' foot');
+define('_SKINABLEADMIN_TEXT_STR',                                      ' text');
+define('_SKINABLEADMIN_TITLE_STR',                                     ' title');
+define('_SKINABLEADMIN_ADMINSETTING_STR',                      ' set editmember is \'admin\'');
+define('_SKINABLEADMIN_NORMALSETTING_STR',                     ' normal');
+define('_SKINABLEADMIN_HELPICONURL_STR',                       ' icon URL');
+define('_SKINABLEADMIN_HELPFILEURL_STR',                       ' help file URL');
+define('_SKINABLEADMIN_ADMINSKINVAR_STR',                      ' skinvars');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_SELECT',      'selectbox used in ADMIN area');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE',       'Table for list indication');
+define('_SKINABLEADMIN_PLUGIN_QUICKMENU',                      'Link to admin page of the plugin shown to the quick-menu');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE',         'Template for option-type %s');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTMETA',         'Template for option-meta-data %s');
+define('_SKINABLEADMIN_MEMBERS_ADMINSKIN',                     "ADMIN-Area's skin");
+
+define('_LOCALE_BG_CYRL_BG',   'Bulgarian in Bulgaria');
+define('_LOCALE_CA_LATN_ES',   'Catalan in Spain');
+define('_LOCALE_CS_LATN_CZ',   'Czech in Czech Republic');
+define('_LOCALE_DE_LATN_DE',   'German in Germany');
+define('_LOCALE_EL_GREK_GR',   'Greek in Greece (Greek script) (Greek script)');
+define('_LOCALE_EN_LATN_US',   'English in United States');
+define('_LOCALE_ES_LATN_ES',   'Spanish in Spain');
+define('_LOCALE_FA_ARAB_IR',   'Persian in Islamic Republic of Iran');
+define('_LOCALE_FI_LATN_FI',   'Finnish in Finland');
+define('_LOCALE_FR_LATN_FR',   'French in France');
+define('_LOCALE_GL_LATN_ES',   'Galician in Spain');
+define('_LOCALE_HR_LATN_HR',   'Croatian in Croatia');
+define('_LOCALE_HU_LATN_HU',   'Hungarian in Hungary');
+define('_LOCALE_ID_LATN_ID',   'Indonesian in Indonesia (Latin script)');
+define('_LOCALE_IT_LATN_IT',   'Italian in Italy');
+define('_LOCALE_JA_JPAN_JP',   'Japanese in Japan');
+define('_LOCALE_KO_KORE_KR',   'Korean in Korea');
+define('_LOCALE_KU_ARAB_TR',   'Kurdish in Turkey (Arabic script)');
+define('_LOCALE_LV_LATN_LV',   'Latvian in Latvia');
+define('_LOCALE_NL_LATN_NL',   'Dutch in Netherlands');
+define('_LOCALE_PL_LATN_PL',   'Polish in Poland');
+define('_LOCALE_PT_LATN_BR',   'Portuguese in Brazil');
+define('_LOCALE_RO_LATN_RO',   'Romainan in Romania');
+define('_LOCALE_RU_CYRL_RU',   'Russian in Russia');
+define('_LOCALE_SK_LATN_SK',   'Slovak in Slovakia');
+define('_LOCALE_SR_CYRL_RS',   'Serbian in Serbia');
+define('_LOCALE_UR_ARAB_PK',   'Urdu in Pakistan');
+define('_LOCALE_VI_LATN_VN',   'Vietnamese in Vietnam (Latin script)');
+define('_LOCALE_ZH_HANS_CN',   'Chinese in China (simplified script)');
+define('_LOCALE_ZH_HANT_TW',   'Chinese in Taiwan (Traditional script)');
+
+define('_FORGOTPASSWORD_TITLE',                                'Forgot your password?');
+define('_FORGOTPASSWORD_MSG',                          'Enter your username and email address below, and you\'ll be sent an e-mail with a link where you can choose a new password.');
+define('_FORGOTPASSWORD_SUBMIT',                       'Send Activation Link" class="transparent');
+define('_FORGOTPASSWORD_CONTACT',                      'If you don\'t remember your exact username, contact the site administrator.');
+define('_SKINIE_INVALID_NAMES_DETECTED',       'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
+define('_LISTS_AUTHOR',                                                'Author');
+define('_OVERVIEW_OTHER_DRAFTS',                       'Other Drafts');
+define('_ERROR_BADADMINSKINNAME',                      'the name of skin for admin area must start with \'admin/\'.');
+define('_ERROR_BADADMINTEMPLATENAME',          'the name of template for admin area must start with \'admin/\'.');
+define('_SETTINGS_ADMINSKIN',                          'default skin for admin area');
+define('_SETTINGS_BKMKLTSKIN',                         'default skin for bookmarklet');
+define('_MEMBERS_BKMKLTSKIN',                          "bookmarklet skin");
+define('_ADMIN_SYSTEMOVERVIEW_VERSION_LATEST',         'The version which is being used is latest.');
+
+>>>>>>> skinnable-master
 /********************************************
  *        Start New for 3.6x                *
  ********************************************/
@@ -208,6 +296,7 @@ define('_PLUGIN_OPTIONS_TITLE',                                                     'Opcje dla %s');
 // Plugin file loda error
 define('_PLUGINFILE_COULDNT_BELOADED',                         'Błąd: plik wtyczki <strong>%s.php</strong> nie został załadowany, lub jest on nieaktywny ponieważ nie obsługuje niektórych funkcji (sprawdź <a href="?action=actionlog">logi</a>, żeby uzyskać więcej informacji.)');
 
+<<<<<<< HEAD
 //ITEM add/edit template (for japanese only)
 define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
 define('_ITEM_ADDEDITTEMPLATE_YEAR',                           'Rok');
@@ -215,6 +304,9 @@ define('_ITEM_ADDEDITTEMPLATE_MONTH',                               'Miesiąc');
 define('_ITEM_ADDEDITTEMPLATE_DAY',                                    'Dzień');
 define('_ITEM_ADDEDITTEMPLATE_HOUR',                           'Godzina');
 define('_ITEM_ADDEDITTEMPLATE_MINUTE',                         'Minuta');
+=======
+define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
+>>>>>>> skinnable-master
 
 // Errors
 define('_ERRORS_INSTALLSQL',                                           'Plik install.sql powinien zostać usunięty');
@@ -413,10 +505,13 @@ define('_ARCHIVETYPE_MONTH',              'miesiąc');
 // tickets (prevents malicious users to trick an admin to perform actions he doesn't want)
 define('_ERROR_BADTICKET',                     'Niewłaściwa lub przeterminowana sesja.');
 
+<<<<<<< HEAD
 // plugin dependency
 define('_ERROR_INSREQPLUGIN',          'Instalacja pluginu nie powiodła się, wymaga ');
 define('_ERROR_DELREQPLUGIN',          'Nie można usunąć pluginu, wymagany przez ');
 
+=======
+>>>>>>> skinnable-master
 // cookie prefix
 define('_SETTINGS_COOKIEPREFIX',       'prefix Cookie');
 
@@ -822,7 +917,10 @@ define('_COMMENTFORM_YOUARE',              'Jesteś');
 define('_COMMENTFORM_SUBMIT',          'Dodaj komentarz');
 define('_COMMENTFORM_COMMENT',         'Twój komentarz');
 define('_COMMENTFORM_NAME',                    'Nazwa');
+<<<<<<< HEAD
 define('_COMMENTFORM_MAIL',                    'E-mail/HTTP');
+=======
+>>>>>>> skinnable-master
 define('_COMMENTFORM_REMEMBER',                'Zapamiętaj mnie');
 
 // loginform
@@ -849,7 +947,10 @@ define('_ADD_DISABLE_COMMENTS',            'Wyłączyć możliwość komentowania?');
 define('_ADD_DRAFTNFUTURE',                    'Wykorzystuj do późniejszej publikacji');
 define('_ADD_ADDITEM',                         'Dodaj element');
 define('_ADD_ADDNOW',                          'Dodaj teraz');
+<<<<<<< HEAD
 define('_ADD_ADDLATER',                                'Dodaj później');
+=======
+>>>>>>> skinnable-master
 define('_ADD_PLACE_ON',                                'Rozpocznij wyświetlanie');
 define('_ADD_ADDDRAFT',                                'Dodaj do brudnopisu');
 define('_ADD_NOPASTDATES',                     '(minione daty lub godziny nie będą akceptowane zamiast nich wyświetlony będzie czas rzeczywisty.)');
@@ -1193,8 +1294,11 @@ define('_BAN_ADD_BTN',                           'Dodaj blkokadę');
 
 // LOGIN screen
 define('_LOGIN_MESSAGE',                       'Wiadomość');
+<<<<<<< HEAD
 define('_LOGIN_NAME',                          'Login');
 define('_LOGIN_PASSWORD',                      'Hasło');
+=======
+>>>>>>> skinnable-master
 define('_LOGIN_SHARED',                                _LOGINFORM_SHARED);
 define('_LOGIN_FORGOT',                                'Zapomniałeś hasła?');
 
@@ -1327,4 +1431,22 @@ define('_EDITC_NONMEMBER',                       'odwiedzający');
 define('_MOVE_TITLE',                          'Do którego bloga przenieść ten wpis?');
 define('_MOVE_BTN',                                    'Przenieś wpis');
 
+<<<<<<< HEAD
 ?>
+=======
+// ADMIN-template template types
+include_once('adminskinTypes.php');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_NAVILIST',          'navibar for item/comment list');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is blog ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is super ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin URL');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'API entry');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'eventlist updates');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency to');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency by');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'couldn\'t load file');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin actions');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin admin link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin help link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin option setting link');
+>>>>>>> skinnable-master
index f1e5742..1980557 100644 (file)
  * 
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2012 The Nucleus Group
+<<<<<<< HEAD
  * @version $Id: pt_Latn_BR.ISO-8859-1.php 1868 2012-05-22 05:10:53Z sakamocchi $
+=======
+ * @version $Id: pt_Latn_BR.ISO-8859-1.php 1887 2012-06-17 08:30:08Z sakamocchi $
+>>>>>>> skinnable-master
  */
 
 /********************************************
  *        Start New for 4.0                 *
  ********************************************/
-define('_SKINIE_INVALID_NAMES_DETECTED', 'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
-define('_LISTS_AUTHOR', 'Author');
-define('_OVERVIEW_OTHER_DRAFTS', 'Other Drafts');
+/* argument value for setlocale() in Microsoft's windows operating system */
+define('_LOCALE_IN_WINDOWS',   'ptb_prt');
+
+/* labels for date and time measurement unit */
+define('_LABEL_YEAR_UNIT',             'year');
+define('_LABEL_MONTH_UNIT',            'month');
+define('_LABEL_DAY_UNIT',              'day');
+define('_LABEL_HOUR_UNIT',             'hour');
+define('_LABEL_MINUTE_UNIT',   'minute');
+
+// SkinableAdminArea vars
+define('_SKINABLEADMIN_DEL_UNINSTALL_DATA',                    'Delete ADMIN skin data table on uninstall?');
+define('_SKINABLEADMIN_DEFAULT_SKIN',                          'Choose a skin of the management area of the default.');
+define('_SKINABLEADMIN_MEMBER_DEFAULT_SKIN',           'Choose a skin of the management area of you use.');
+define('_SKINABLEADMIN_QMENU_LAYOUT',                          'Admin layout');
+define('_SKINABLEADMIN_PAGE_STR',                                      'page');
+define('_SKINABLEADMIN_BATCH_MOVE',                                    'Item move other category/Category move other blog');
+define('_SKINABLEADMIN_BATCH',                                         'batch');
+define('_SKINABLEADMIN_PAGEHEAD',                                      'Admin page head');
+define('_SKINABLEADMIN_PAGEFOOT',                                      'Admin page foot');
+define('_SKINABLEADMIN_TEMPLATEOVERVIEW',                      'Template overview');
+define('_SKINABLEADMIN_ADMINAREAHEADLINK',                     '[Your site]link');
+define('_SKINABLEADMIN_TPLSETTING_INGENERAL',          'In general');
+define('_SKINABLEADMIN_HEAD_STR',                                      ' head');
+define('_SKINABLEADMIN_BODY_STR',                                      ' body');
+define('_SKINABLEADMIN_FOOT_STR',                                      ' foot');
+define('_SKINABLEADMIN_TEXT_STR',                                      ' text');
+define('_SKINABLEADMIN_TITLE_STR',                                     ' title');
+define('_SKINABLEADMIN_ADMINSETTING_STR',                      ' set editmember is \'admin\'');
+define('_SKINABLEADMIN_NORMALSETTING_STR',                     ' normal');
+define('_SKINABLEADMIN_HELPICONURL_STR',                       ' icon URL');
+define('_SKINABLEADMIN_HELPFILEURL_STR',                       ' help file URL');
+define('_SKINABLEADMIN_ADMINSKINVAR_STR',                      ' skinvars');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_SELECT',      'selectbox used in ADMIN area');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE',       'Table for list indication');
+define('_SKINABLEADMIN_PLUGIN_QUICKMENU',                      'Link to admin page of the plugin shown to the quick-menu');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE',         'Template for option-type %s');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTMETA',         'Template for option-meta-data %s');
+define('_SKINABLEADMIN_MEMBERS_ADMINSKIN',                     "ADMIN-Area's skin");
+
+define('_LOCALE_BG_CYRL_BG',   'Bulgarian in Bulgaria');
+define('_LOCALE_CA_LATN_ES',   'Catalan in Spain');
+define('_LOCALE_CS_LATN_CZ',   'Czech in Czech Republic');
+define('_LOCALE_DE_LATN_DE',   'German in Germany');
+define('_LOCALE_EL_GREK_GR',   'Greek in Greece (Greek script)');
+define('_LOCALE_EN_LATN_US',   'English in United States');
+define('_LOCALE_ES_LATN_ES',   'Spanish in Spain');
+define('_LOCALE_FA_ARAB_IR',   'Persian in Islamic Republic of Iran');
+define('_LOCALE_FI_LATN_FI',   'Finnish in Finland');
+define('_LOCALE_FR_LATN_FR',   'French in France');
+define('_LOCALE_GL_LATN_ES',   'Galician in Spain');
+define('_LOCALE_HR_LATN_HR',   'Croatian in Croatia');
+define('_LOCALE_HU_LATN_HU',   'Hungarian in Hungary');
+define('_LOCALE_ID_LATN_ID',   'Indonesian in Indonesia (Latin script)');
+define('_LOCALE_IT_LATN_IT',   'Italian in Italy');
+define('_LOCALE_JA_JPAN_JP',   'Japanese in Japan');
+define('_LOCALE_KO_KORE_KR',   'Korean in Korea');
+define('_LOCALE_KU_ARAB_TR',   'Kurdish in Turkey (Arabic script)');
+define('_LOCALE_LV_LATN_LV',   'Latvian in Latvia');
+define('_LOCALE_NL_LATN_NL',   'Dutch in Netherlands');
+define('_LOCALE_PL_LATN_PL',   'Polish in Poland');
+define('_LOCALE_PT_LATN_BR',   'Portuguese in Brazil');
+define('_LOCALE_RO_LATN_RO',   'Romainan in Romania');
+define('_LOCALE_RU_CYRL_RU',   'Russian in Russia');
+define('_LOCALE_SK_LATN_SK',   'Slovak in Slovakia');
+define('_LOCALE_SR_CYRL_RS',   'Serbian in Serbia');
+define('_LOCALE_UR_ARAB_PK',   'Urdu in Pakistan');
+define('_LOCALE_VI_LATN_VN',   'Vietnamese in Vietnam (Latin script)');
+define('_LOCALE_ZH_HANS_CN',   'Chinese in China (simplified script)');
+define('_LOCALE_ZH_HANT_TW',   'Chinese in Taiwan (Traditional script)');
+
+define('_FORGOTPASSWORD_TITLE',                                'Forgot your password?');
+define('_FORGOTPASSWORD_MSG',                          'Enter your username and email address below, and you\'ll be sent an e-mail with a link where you can choose a new password.');
+define('_FORGOTPASSWORD_SUBMIT',                       'Send Activation Link" class="transparent');
+define('_FORGOTPASSWORD_CONTACT',                      'If you don\'t remember your exact username, contact the site administrator.');
+define('_SKINIE_INVALID_NAMES_DETECTED',       'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
+define('_LISTS_AUTHOR',                                                'Author');
+define('_OVERVIEW_OTHER_DRAFTS',                       'Other Drafts');
+define('_ERROR_BADADMINSKINNAME',                      'the name of skin for admin area must start with \'admin/\'.');
+define('_ERROR_BADADMINTEMPLATENAME',          'the name of template for admin area must start with \'admin/\'.');
+define('_SETTINGS_ADMINSKIN',                          'default skin for admin area');
+define('_SETTINGS_BKMKLTSKIN',                         'default skin for bookmarklet');
+define('_MEMBERS_BKMKLTSKIN',                          "bookmarklet skin");
+define('_ADMIN_SYSTEMOVERVIEW_VERSION_LATEST',         'The version which is being used is latest.');
+
 /********************************************
  *        Start New for 3.6x                *
  ********************************************/
@@ -187,13 +272,7 @@ define('_PLUGIN_OPTIONS_TITLE',                                                    'Options for %s');
 // Plugin file loda error
 define('_PLUGINFILE_COULDNT_BELOADED',                         'Error: plugin file <strong>%s.php</strong> could not be loaded, or it has been set inactive because it does not support some features (check the <a href="?action=actionlog">actionlog</a> for more info)');
 
-//ITEM add/edit template (for japanese only)
 define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
-define('_ITEM_ADDEDITTEMPLATE_YEAR',                           'Year');
-define('_ITEM_ADDEDITTEMPLATE_MONTH',                          'Month');
-define('_ITEM_ADDEDITTEMPLATE_DAY',                                    'Day');
-define('_ITEM_ADDEDITTEMPLATE_HOUR',                           'Hour');
-define('_ITEM_ADDEDITTEMPLATE_MINUTE',                         'Minute');
 
 // Errors
 define('_ERRORS_INSTALLSQL',                                           'install.sql should be deleted');
@@ -471,9 +550,6 @@ define('_ADD_ALIGNLEFT_TT',                 'Alinhar 
 define('_ADD_ALIGNRIGHT_TT',           'Alinhar à direita');
 define('_ADD_ALIGNCENTER_TT',          'Alinhar ao centro');
 
-// searchable blog setting (yes/no)
-define('_EBLOG_SEARCH',                                'Incluir na busca');
-
 // generic upload failure
 define('_ERROR_UPLOADFAILED',          'Upload failed');
 
@@ -756,7 +832,10 @@ define('_COMMENTFORM_YOUARE',              'Voc
 define('_COMMENTFORM_SUBMIT',          'Envia');
 define('_COMMENTFORM_COMMENT',         'Seu comentário');
 define('_COMMENTFORM_NAME',                    'Nome');
+<<<<<<< HEAD
 define('_COMMENTFORM_MAIL',                    'E-mail ou site');
+=======
+>>>>>>> skinnable-master
 define('_COMMENTFORM_REMEMBER',                'auto-completar na próxima visita');
 
 // loginform
@@ -783,7 +862,6 @@ define('_ADD_DISABLE_COMMENTS',             'Desativar coment
 define('_ADD_DRAFTNFUTURE',                    'Rascunhos &amp; itens futuros');
 define('_ADD_ADDITEM',                         'Novo post');
 define('_ADD_ADDNOW',                          'Publicar agora');
-define('_ADD_ADDLATER',                                'Publicar mais tarde');
 define('_ADD_PLACE_ON',                                'Publicar no dia');
 define('_ADD_ADDDRAFT',                                'Colocar nos rascunhos');
 define('_ADD_NOPASTDATES',                     '');
@@ -1127,8 +1205,6 @@ define('_BAN_ADD_BTN',                            'Banir novo IP');
 
 // LOGIN screen
 define('_LOGIN_MESSAGE',                       'Mensagem');
-define('_LOGIN_NAME',                          'Nome');
-define('_LOGIN_PASSWORD',                      'Senha');
 define('_LOGIN_SHARED',                                _LOGINFORM_SHARED);
 define('_LOGIN_FORGOT',                                'Esqueceu sua senha?');
 
@@ -1260,3 +1336,19 @@ define('_EDITC_NONMEMBER',                       'n
 // move item
 define('_MOVE_TITLE',                          'Mover o post para qual blog?');
 define('_MOVE_BTN',                                    'Mover');
+
+// ADMIN-template template types
+include_once('adminskinTypes.php');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_NAVILIST',          'navibar for item/comment list');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is blog ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is super ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin URL');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'API entry');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'eventlist updates');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency to');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency by');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'couldn\'t load file');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin actions');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin admin link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin help link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin option setting link');
index 123ff01..fedefb1 100644 (file)
  *
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2012 The Nucleus Group
+<<<<<<< HEAD
  * @version $Id: pt_Latn_BR.UTF-8.php 1868 2012-05-22 05:10:53Z sakamocchi $
+=======
+ * @version $Id: pt_Latn_BR.UTF-8.php 1887 2012-06-17 08:30:08Z sakamocchi $
+>>>>>>> skinnable-master
  */
 
 /********************************************
  *        Start New for 4.0                 *
  ********************************************/
-define('_SKINIE_INVALID_NAMES_DETECTED', 'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
-define('_LISTS_AUTHOR', 'Author');
-define('_OVERVIEW_OTHER_DRAFTS', 'Other Drafts');
+/* argument value for setlocale() in Microsoft's windows operating system */
+define('_LOCALE_IN_WINDOWS',   'ptb_prt');
+
+/* labels for date and time measurement unit */
+define('_LABEL_YEAR_UNIT',             'year');
+define('_LABEL_MONTH_UNIT',            'month');
+define('_LABEL_DAY_UNIT',              'day');
+define('_LABEL_HOUR_UNIT',             'hour');
+define('_LABEL_MINUTE_UNIT',   'minute');
+
+// SkinableAdminArea vars
+define('_SKINABLEADMIN_DEL_UNINSTALL_DATA',                    'Delete ADMIN skin data table on uninstall?');
+define('_SKINABLEADMIN_DEFAULT_SKIN',                          'Choose a skin of the management area of the default.');
+define('_SKINABLEADMIN_MEMBER_DEFAULT_SKIN',           'Choose a skin of the management area of you use.');
+define('_SKINABLEADMIN_QMENU_LAYOUT',                          'Admin layout');
+define('_SKINABLEADMIN_PAGE_STR',                                      'page');
+define('_SKINABLEADMIN_BATCH_MOVE',                                    'Item move other category/Category move other blog');
+define('_SKINABLEADMIN_BATCH',                                         'batch');
+define('_SKINABLEADMIN_PAGEHEAD',                                      'Admin page head');
+define('_SKINABLEADMIN_PAGEFOOT',                                      'Admin page foot');
+define('_SKINABLEADMIN_TEMPLATEOVERVIEW',                      'Template overview');
+define('_SKINABLEADMIN_ADMINAREAHEADLINK',                     '[Your site]link');
+define('_SKINABLEADMIN_TPLSETTING_INGENERAL',          'In general');
+define('_SKINABLEADMIN_HEAD_STR',                                      ' head');
+define('_SKINABLEADMIN_BODY_STR',                                      ' body');
+define('_SKINABLEADMIN_FOOT_STR',                                      ' foot');
+define('_SKINABLEADMIN_TEXT_STR',                                      ' text');
+define('_SKINABLEADMIN_TITLE_STR',                                     ' title');
+define('_SKINABLEADMIN_ADMINSETTING_STR',                      ' set editmember is \'admin\'');
+define('_SKINABLEADMIN_NORMALSETTING_STR',                     ' normal');
+define('_SKINABLEADMIN_HELPICONURL_STR',                       ' icon URL');
+define('_SKINABLEADMIN_HELPFILEURL_STR',                       ' help file URL');
+define('_SKINABLEADMIN_ADMINSKINVAR_STR',                      ' skinvars');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_SELECT',      'selectbox used in ADMIN area');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE',       'Table for list indication');
+define('_SKINABLEADMIN_PLUGIN_QUICKMENU',                      'Link to admin page of the plugin shown to the quick-menu');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE',         'Template for option-type %s');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTMETA',         'Template for option-meta-data %s');
+define('_SKINABLEADMIN_MEMBERS_ADMINSKIN',                     "ADMIN-Area's skin");
+
+define('_LOCALE_BG_CYRL_BG',   'Bulgarian in Bulgaria');
+define('_LOCALE_CA_LATN_ES',   'Catalan in Spain');
+define('_LOCALE_CS_LATN_CZ',   'Czech in Czech Republic');
+define('_LOCALE_DE_LATN_DE',   'German in Germany');
+define('_LOCALE_EL_GREK_GR',   'Greek in Greece (Greek script)');
+define('_LOCALE_EN_LATN_US',   'English in United States');
+define('_LOCALE_ES_LATN_ES',   'Spanish in Spain');
+define('_LOCALE_FA_ARAB_IR',   'Persian in Islamic Republic of Iran');
+define('_LOCALE_FI_LATN_FI',   'Finnish in Finland');
+define('_LOCALE_FR_LATN_FR',   'French in France');
+define('_LOCALE_GL_LATN_ES',   'Galician in Spain');
+define('_LOCALE_HR_LATN_HR',   'Croatian in Croatia');
+define('_LOCALE_HU_LATN_HU',   'Hungarian in Hungary');
+define('_LOCALE_ID_LATN_ID',   'Indonesian in Indonesia (Latin script)');
+define('_LOCALE_IT_LATN_IT',   'Italian in Italy');
+define('_LOCALE_JA_JPAN_JP',   'Japanese in Japan');
+define('_LOCALE_KO_KORE_KR',   'Korean in Korea');
+define('_LOCALE_KU_ARAB_TR',   'Kurdish in Turkey (Arabic script)');
+define('_LOCALE_LV_LATN_LV',   'Latvian in Latvia');
+define('_LOCALE_NL_LATN_NL',   'Dutch in Netherlands');
+define('_LOCALE_PL_LATN_PL',   'Polish in Poland');
+define('_LOCALE_PT_LATN_BR',   'Portuguese in Brazil');
+define('_LOCALE_RO_LATN_RO',   'Romainan in Romania');
+define('_LOCALE_RU_CYRL_RU',   'Russian in Russia');
+define('_LOCALE_SK_LATN_SK',   'Slovak in Slovakia');
+define('_LOCALE_SR_CYRL_RS',   'Serbian in Serbia');
+define('_LOCALE_UR_ARAB_PK',   'Urdu in Pakistan');
+define('_LOCALE_VI_LATN_VN',   'Vietnamese in Vietnam (Latin script)');
+define('_LOCALE_ZH_HANS_CN',   'Chinese in China (simplified script)');
+define('_LOCALE_ZH_HANT_TW',   'Chinese in Taiwan (Traditional script)');
+
+define('_FORGOTPASSWORD_TITLE',                                'Forgot your password?');
+define('_FORGOTPASSWORD_MSG',                          'Enter your username and email address below, and you\'ll be sent an e-mail with a link where you can choose a new password.');
+define('_FORGOTPASSWORD_SUBMIT',                       'Send Activation Link" class="transparent');
+define('_FORGOTPASSWORD_CONTACT',                      'If you don\'t remember your exact username, contact the site administrator.');
+define('_SKINIE_INVALID_NAMES_DETECTED',       'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
+define('_LISTS_AUTHOR',                                                'Author');
+define('_OVERVIEW_OTHER_DRAFTS',                       'Other Drafts');
+define('_ERROR_BADADMINSKINNAME',                      'the name of skin for admin area must start with \'admin/\'.');
+define('_ERROR_BADADMINTEMPLATENAME',          'the name of template for admin area must start with \'admin/\'.');
+define('_SETTINGS_ADMINSKIN',                          'default skin for admin area');
+define('_SETTINGS_BKMKLTSKIN',                         'default skin for bookmarklet');
+define('_MEMBERS_BKMKLTSKIN',                          "bookmarklet skin");
+define('_ADMIN_SYSTEMOVERVIEW_VERSION_LATEST',         'The version which is being used is latest.');
+
 /********************************************
  *        Start New for 3.6x                *
  ********************************************/
@@ -187,13 +272,7 @@ define('_PLUGIN_OPTIONS_TITLE',                                                    'Options for %s');
 // Plugin file loda error
 define('_PLUGINFILE_COULDNT_BELOADED',                         'Error: plugin file <strong>%s.php</strong> could not be loaded, or it has been set inactive because it does not support some features (check the <a href="?action=actionlog">actionlog</a> for more info)');
 
-//ITEM add/edit template (for japanese only)
 define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
-define('_ITEM_ADDEDITTEMPLATE_YEAR',                           'Year');
-define('_ITEM_ADDEDITTEMPLATE_MONTH',                          'Month');
-define('_ITEM_ADDEDITTEMPLATE_DAY',                                    'Day');
-define('_ITEM_ADDEDITTEMPLATE_HOUR',                           'Hour');
-define('_ITEM_ADDEDITTEMPLATE_MINUTE',                         'Minute');
 
 // Errors
 define('_ERRORS_INSTALLSQL',                                           'install.sql should be deleted');
@@ -471,9 +550,6 @@ define('_ADD_ALIGNLEFT_TT',                 'Alinhar à esquerda');
 define('_ADD_ALIGNRIGHT_TT',           'Alinhar à direita');
 define('_ADD_ALIGNCENTER_TT',          'Alinhar ao centro');
 
-// searchable blog setting (yes/no)
-define('_EBLOG_SEARCH',                                'Incluir na busca');
-
 // generic upload failure
 define('_ERROR_UPLOADFAILED',          'Upload failed');
 
@@ -756,7 +832,6 @@ define('_COMMENTFORM_YOUARE',               'Você está logado como');
 define('_COMMENTFORM_SUBMIT',          'Envia');
 define('_COMMENTFORM_COMMENT',         'Seu comentário');
 define('_COMMENTFORM_NAME',                    'Nome');
-define('_COMMENTFORM_MAIL',                    'E-mail ou site');
 define('_COMMENTFORM_REMEMBER',                'auto-completar na próxima visita');
 
 // loginform
@@ -783,7 +858,6 @@ define('_ADD_DISABLE_COMMENTS',             'Desativar comentários');
 define('_ADD_DRAFTNFUTURE',                    'Rascunhos &amp; itens futuros');
 define('_ADD_ADDITEM',                         'Novo post');
 define('_ADD_ADDNOW',                          'Publicar agora');
-define('_ADD_ADDLATER',                                'Publicar mais tarde');
 define('_ADD_PLACE_ON',                                'Publicar no dia');
 define('_ADD_ADDDRAFT',                                'Colocar nos rascunhos');
 define('_ADD_NOPASTDATES',                     '');
@@ -1127,8 +1201,6 @@ define('_BAN_ADD_BTN',                            'Banir novo IP');
 
 // LOGIN screen
 define('_LOGIN_MESSAGE',                       'Mensagem');
-define('_LOGIN_NAME',                          'Nome');
-define('_LOGIN_PASSWORD',                      'Senha');
 define('_LOGIN_SHARED',                                _LOGINFORM_SHARED);
 define('_LOGIN_FORGOT',                                'Esqueceu sua senha?');
 
@@ -1260,3 +1332,19 @@ define('_EDITC_NONMEMBER',                       'não membro');
 // move item
 define('_MOVE_TITLE',                          'Mover o post para qual blog?');
 define('_MOVE_BTN',                                    'Mover');
+
+// ADMIN-template template types
+include_once('adminskinTypes.php');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_NAVILIST',          'navibar for item/comment list');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is blog ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is super ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin URL');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'API entry');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'eventlist updates');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency to');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency by');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'couldn\'t load file');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin actions');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin admin link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin help link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin option setting link');
index bd3f09c..1f57a34 100644 (file)
 /********************************************
  *        Start New for 4.0                 *
  ********************************************/
+<<<<<<< HEAD
 define('_SKINIE_INVALID_NAMES_DETECTED', 'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
 define('_LISTS_AUTHOR', 'Author');
 define('_OVERVIEW_OTHER_DRAFTS', 'Other Drafts');
  
+=======
+/* argument value for setlocale() in Microsoft's windows operating system */
+define('_LOCALE_IN_WINDOWS',   'C');
+
+/* labels for date and time measurement unit */
+define('_LABEL_YEAR_UNIT',             'year');
+define('_LABEL_MONTH_UNIT',            'month');
+define('_LABEL_DAY_UNIT',              'day');
+define('_LABEL_HOUR_UNIT',             'hour');
+define('_LABEL_MINUTE_UNIT',   'minute');
+
+// SkinableAdminArea vars
+define('_SKINABLEADMIN_DEL_UNINSTALL_DATA',                    'Delete ADMIN skin data table on uninstall?');
+define('_SKINABLEADMIN_DEFAULT_SKIN',                          'Choose a skin of the management area of the default.');
+define('_SKINABLEADMIN_MEMBER_DEFAULT_SKIN',           'Choose a skin of the management area of you use.');
+define('_SKINABLEADMIN_QMENU_LAYOUT',                          'Admin layout');
+define('_SKINABLEADMIN_PAGE_STR',                                      'page');
+define('_SKINABLEADMIN_BATCH_MOVE',                                    'Item move other category/Category move other blog');
+define('_SKINABLEADMIN_BATCH',                                         'batch');
+define('_SKINABLEADMIN_PAGEHEAD',                                      'Admin page head');
+define('_SKINABLEADMIN_PAGEFOOT',                                      'Admin page foot');
+define('_SKINABLEADMIN_TEMPLATEOVERVIEW',                      'Template overview');
+define('_SKINABLEADMIN_ADMINAREAHEADLINK',                     '[Your site]link');
+define('_SKINABLEADMIN_TPLSETTING_INGENERAL',          'In general');
+define('_SKINABLEADMIN_HEAD_STR',                                      ' head');
+define('_SKINABLEADMIN_BODY_STR',                                      ' body');
+define('_SKINABLEADMIN_FOOT_STR',                                      ' foot');
+define('_SKINABLEADMIN_TEXT_STR',                                      ' text');
+define('_SKINABLEADMIN_TITLE_STR',                                     ' title');
+define('_SKINABLEADMIN_ADMINSETTING_STR',                      ' set editmember is \'admin\'');
+define('_SKINABLEADMIN_NORMALSETTING_STR',                     ' normal');
+define('_SKINABLEADMIN_HELPICONURL_STR',                       ' icon URL');
+define('_SKINABLEADMIN_HELPFILEURL_STR',                       ' help file URL');
+define('_SKINABLEADMIN_ADMINSKINVAR_STR',                      ' skinvars');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_SELECT',      'selectbox used in ADMIN area');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE',       'Table for list indication');
+define('_SKINABLEADMIN_PLUGIN_QUICKMENU',                      'Link to admin page of the plugin shown to the quick-menu');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE',         'Template for option-type %s');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTMETA',         'Template for option-meta-data %s');
+define('_SKINABLEADMIN_MEMBERS_ADMINSKIN',                     "ADMIN-Area's skin");
+
+define('_LOCALE_BG_CYRL_BG',   'Bulgarian in Bulgaria');
+define('_LOCALE_CA_LATN_ES',   'Catalan in Spain');
+define('_LOCALE_CS_LATN_CZ',   'Czech in Czech Republic');
+define('_LOCALE_DE_LATN_DE',   'German in Germany');
+define('_LOCALE_EL_GREK_GR',   'Greek in Greece (Greek script) (Greek script)');
+define('_LOCALE_EN_LATN_US',   'English in United States');
+define('_LOCALE_ES_LATN_ES',   'Spanish in Spain');
+define('_LOCALE_FA_ARAB_IR',   'Persian in Islamic Republic of Iran');
+define('_LOCALE_FI_LATN_FI',   'Finnish in Finland');
+define('_LOCALE_FR_LATN_FR',   'French in France');
+define('_LOCALE_GL_LATN_ES',   'Galician in Spain');
+define('_LOCALE_HR_LATN_HR',   'Croatian in Croatia');
+define('_LOCALE_HU_LATN_HU',   'Hungarian in Hungary');
+define('_LOCALE_ID_LATN_ID',   'Indonesian in Indonesia (Latin script)');
+define('_LOCALE_IT_LATN_IT',   'Italian in Italy');
+define('_LOCALE_JA_JPAN_JP',   'Japanese in Japan');
+define('_LOCALE_KO_KORE_KR',   'Korean in Korea');
+define('_LOCALE_KU_ARAB_TR',   'Kurdish in Turkey (Arabic script)');
+define('_LOCALE_LV_LATN_LV',   'Latvian in Latvia');
+define('_LOCALE_NL_LATN_NL',   'Dutch in Netherlands');
+define('_LOCALE_PL_LATN_PL',   'Polish in Poland');
+define('_LOCALE_PT_LATN_BR',   'Portuguese in Brazil');
+define('_LOCALE_RO_LATN_RO',   'Romainan in Romania');
+define('_LOCALE_RU_CYRL_RU',   'Russian in Russia');
+define('_LOCALE_SK_LATN_SK',   'Slovak in Slovakia');
+define('_LOCALE_SR_CYRL_RS',   'Serbian in Serbia');
+define('_LOCALE_UR_ARAB_PK',   'Urdu in Pakistan');
+define('_LOCALE_VI_LATN_VN',   'Vietnamese in Vietnam (Latin script)');
+define('_LOCALE_ZH_HANS_CN',   'Chinese in China (simplified script)');
+define('_LOCALE_ZH_HANT_TW',   'Chinese in Taiwan (Traditional script)');
+
+define('_FORGOTPASSWORD_TITLE',                                'Forgot your password?');
+define('_FORGOTPASSWORD_MSG',                          'Enter your username and email address below, and you\'ll be sent an e-mail with a link where you can choose a new password.');
+define('_FORGOTPASSWORD_SUBMIT',                       'Send Activation Link" class="transparent');
+define('_FORGOTPASSWORD_CONTACT',                      'If you don\'t remember your exact username, contact the site administrator.');
+define('_SKINIE_INVALID_NAMES_DETECTED',       'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
+define('_LISTS_AUTHOR',                                                'Author');
+define('_OVERVIEW_OTHER_DRAFTS',                       'Other Drafts');
+define('_ERROR_BADADMINSKINNAME',                      'the name of skin for admin area must start with \'admin/\'.');
+define('_ERROR_BADADMINTEMPLATENAME',          'the name of template for admin area must start with \'admin/\'.');
+define('_SETTINGS_ADMINSKIN',                          'default skin for admin area');
+define('_SETTINGS_BKMKLTSKIN',                         'default skin for bookmarklet');
+define('_MEMBERS_BKMKLTSKIN',                          "bookmarklet skin");
+define('_ADMIN_SYSTEMOVERVIEW_VERSION_LATEST',         'The version which is being used is latest.');
+
+>>>>>>> skinnable-master
 /********************************************
  *        Start New for 3.6x                *
  ********************************************/
@@ -94,9 +182,12 @@ define('_ERROR_DELREQPLUGIN',               'Plugin deletion failed, required by %s');
 //define('_ADD_ADDLATER',                                                              'Add Later');
 define('_ADD_ADDLATER',                                                                'Add the dates specified');
 
+<<<<<<< HEAD
 define('_LOGIN_NAME',                          'Name:');
 define('_LOGIN_PASSWORD',                      'Password:');
 
+=======
+>>>>>>> skinnable-master
 // changed from _BOOKMARLET_BMARKLFOLLOW
 define('_BOOKMARKLET_BMARKFOLLOW',                                     ' (Works with nearly all browsers)');
 // END changed/added after 3.33 END
@@ -192,6 +283,7 @@ define('_PLUGIN_OPTIONS_TITLE',                                                     'Options for %s');
 // Plugin file loda error
 define('_PLUGINFILE_COULDNT_BELOADED',                         'Error: plugin file <strong>%s.php</strong> could not be loaded, or it has been set inactive because it does not support some features (check the <a href="?action=actionlog">actionlog</a> for more info)');
 
+<<<<<<< HEAD
 //ITEM add/edit template (for japanese only)
 define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
 define('_ITEM_ADDEDITTEMPLATE_YEAR',                           'Year');
@@ -199,6 +291,9 @@ define('_ITEM_ADDEDITTEMPLATE_MONTH',                               'Month');
 define('_ITEM_ADDEDITTEMPLATE_DAY',                                    'Day');
 define('_ITEM_ADDEDITTEMPLATE_HOUR',                           'Hour');
 define('_ITEM_ADDEDITTEMPLATE_MINUTE',                         'Minute');
+=======
+define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
+>>>>>>> skinnable-master
 
 // Errors
 define('_ERRORS_INSTALLSQL',                                           'install.sql should be deleted');
@@ -357,10 +452,13 @@ define('_ARCHIVETYPE_MONTH',              'luna');
 // tickets (prevents malicious users to trick an admin to perform actions he doesn't want)
 define('_ERROR_BADTICKET',                     'Tichetul nu este valid sau este expirat.');
 
+<<<<<<< HEAD
 // plugin dependency
 define('_ERROR_INSREQPLUGIN',          'Instalarea pluginului a esuat, necesita ');
 define('_ERROR_DELREQPLUGIN',          'Stergerea pluginului a esuat, folosit de ');
 
+=======
+>>>>>>> skinnable-master
 // cookie prefix
 define('_SETTINGS_COOKIEPREFIX',       'Prefixul Cookieului');
 
@@ -482,9 +580,12 @@ define('_ADD_ALIGNLEFT_TT',                'Aliniaza la stanga');
 define('_ADD_ALIGNRIGHT_TT',           'Aliniaza la dreapta');
 define('_ADD_ALIGNCENTER_TT',          'Centreaza');
 
+<<<<<<< HEAD
 // searchable blog setting (yes/no)
 define('_EBLOG_SEARCH',                        'Include in cautare');
 
+=======
+>>>>>>> skinnable-master
 // generic upload failure
 define('_ERROR_UPLOADFAILED',          'Descarcare esuata');
 
@@ -767,7 +868,10 @@ define('_COMMENTFORM_YOUARE',              'Sunteti');
 define('_COMMENTFORM_SUBMIT',          'Adaugati un comentariu');
 define('_COMMENTFORM_COMMENT',         'Comentariul Dvs');
 define('_COMMENTFORM_NAME',            'Nume');
+<<<<<<< HEAD
 define('_COMMENTFORM_MAIL',            'Email/HTTP');
+=======
+>>>>>>> skinnable-master
 define('_COMMENTFORM_REMEMBER',                'Tine minte numele');
 
 // loginform
@@ -794,7 +898,10 @@ define('_ADD_DISABLE_COMMENTS',            'Interziceti comentariile?');
 define('_ADD_DRAFTNFUTURE',            'Ciorne &amp; articole viitoare');
 define('_ADD_ADDITEM',                 'Adauga un articol');
 define('_ADD_ADDNOW',                  'Adauga acum');
+<<<<<<< HEAD
 define('_ADD_ADDLATER',                        'Adauga mai tarziu');
+=======
+>>>>>>> skinnable-master
 define('_ADD_PLACE_ON',                        'Datat: ');
 define('_ADD_ADDDRAFT',                        'Adaugati la ciorne');
 define('_ADD_NOPASTDATES',             '(Datele si orele nu sunt valide, deci va fi utilizata data de azi)');
@@ -1272,4 +1379,22 @@ define('_EDITC_NONMEMBER',               'vizitator');
 define('_MOVE_TITLE',                  'Deplasare in care blog?');
 define('_MOVE_BTN',                    'Deplasare articol');
 
+<<<<<<< HEAD
 ?>
+=======
+// ADMIN-template template types
+include_once('adminskinTypes.php');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_NAVILIST',          'navibar for item/comment list');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is blog ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is super ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin URL');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'API entry');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'eventlist updates');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency to');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency by');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'couldn\'t load file');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin actions');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin admin link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin help link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin option setting link');
+>>>>>>> skinnable-master
index 1aad190..0e88985 100644 (file)
 /********************************************
  *        Start New for 4.0                 *
  ********************************************/
+<<<<<<< HEAD
 define('_SKINIE_INVALID_NAMES_DETECTED', 'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
 define('_LISTS_AUTHOR', 'Author');
 define('_OVERVIEW_OTHER_DRAFTS', 'Other Drafts');
  
+=======
+/* argument value for setlocale() in Microsoft's windows operating system */
+define('_LOCALE_IN_WINDOWS',   'C');
+
+/* labels for date and time measurement unit */
+define('_LABEL_YEAR_UNIT',             'year');
+define('_LABEL_MONTH_UNIT',            'month');
+define('_LABEL_DAY_UNIT',              'day');
+define('_LABEL_HOUR_UNIT',             'hour');
+define('_LABEL_MINUTE_UNIT',   'minute');
+
+// SkinableAdminArea vars
+define('_SKINABLEADMIN_DEL_UNINSTALL_DATA',                    'Delete ADMIN skin data table on uninstall?');
+define('_SKINABLEADMIN_DEFAULT_SKIN',                          'Choose a skin of the management area of the default.');
+define('_SKINABLEADMIN_MEMBER_DEFAULT_SKIN',           'Choose a skin of the management area of you use.');
+define('_SKINABLEADMIN_QMENU_LAYOUT',                          'Admin layout');
+define('_SKINABLEADMIN_PAGE_STR',                                      'page');
+define('_SKINABLEADMIN_BATCH_MOVE',                                    'Item move other category/Category move other blog');
+define('_SKINABLEADMIN_BATCH',                                         'batch');
+define('_SKINABLEADMIN_PAGEHEAD',                                      'Admin page head');
+define('_SKINABLEADMIN_PAGEFOOT',                                      'Admin page foot');
+define('_SKINABLEADMIN_TEMPLATEOVERVIEW',                      'Template overview');
+define('_SKINABLEADMIN_ADMINAREAHEADLINK',                     '[Your site]link');
+define('_SKINABLEADMIN_TPLSETTING_INGENERAL',          'In general');
+define('_SKINABLEADMIN_HEAD_STR',                                      ' head');
+define('_SKINABLEADMIN_BODY_STR',                                      ' body');
+define('_SKINABLEADMIN_FOOT_STR',                                      ' foot');
+define('_SKINABLEADMIN_TEXT_STR',                                      ' text');
+define('_SKINABLEADMIN_TITLE_STR',                                     ' title');
+define('_SKINABLEADMIN_ADMINSETTING_STR',                      ' set editmember is \'admin\'');
+define('_SKINABLEADMIN_NORMALSETTING_STR',                     ' normal');
+define('_SKINABLEADMIN_HELPICONURL_STR',                       ' icon URL');
+define('_SKINABLEADMIN_HELPFILEURL_STR',                       ' help file URL');
+define('_SKINABLEADMIN_ADMINSKINVAR_STR',                      ' skinvars');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_SELECT',      'selectbox used in ADMIN area');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE',       'Table for list indication');
+define('_SKINABLEADMIN_PLUGIN_QUICKMENU',                      'Link to admin page of the plugin shown to the quick-menu');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE',         'Template for option-type %s');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTMETA',         'Template for option-meta-data %s');
+define('_SKINABLEADMIN_MEMBERS_ADMINSKIN',                     "ADMIN-Area's skin");
+
+define('_LOCALE_BG_CYRL_BG',   'Bulgarian in Bulgaria');
+define('_LOCALE_CA_LATN_ES',   'Catalan in Spain');
+define('_LOCALE_CS_LATN_CZ',   'Czech in Czech Republic');
+define('_LOCALE_DE_LATN_DE',   'German in Germany');
+define('_LOCALE_EL_GREK_GR',   'Greek in Greece (Greek script) (Greek script)');
+define('_LOCALE_EN_LATN_US',   'English in United States');
+define('_LOCALE_ES_LATN_ES',   'Spanish in Spain');
+define('_LOCALE_FA_ARAB_IR',   'Persian in Islamic Republic of Iran');
+define('_LOCALE_FI_LATN_FI',   'Finnish in Finland');
+define('_LOCALE_FR_LATN_FR',   'French in France');
+define('_LOCALE_GL_LATN_ES',   'Galician in Spain');
+define('_LOCALE_HR_LATN_HR',   'Croatian in Croatia');
+define('_LOCALE_HU_LATN_HU',   'Hungarian in Hungary');
+define('_LOCALE_ID_LATN_ID',   'Indonesian in Indonesia (Latin script)');
+define('_LOCALE_IT_LATN_IT',   'Italian in Italy');
+define('_LOCALE_JA_JPAN_JP',   'Japanese in Japan');
+define('_LOCALE_KO_KORE_KR',   'Korean in Korea');
+define('_LOCALE_KU_ARAB_TR',   'Kurdish in Turkey (Arabic script)');
+define('_LOCALE_LV_LATN_LV',   'Latvian in Latvia');
+define('_LOCALE_NL_LATN_NL',   'Dutch in Netherlands');
+define('_LOCALE_PL_LATN_PL',   'Polish in Poland');
+define('_LOCALE_PT_LATN_BR',   'Portuguese in Brazil');
+define('_LOCALE_RO_LATN_RO',   'Romainan in Romania');
+define('_LOCALE_RU_CYRL_RU',   'Russian in Russia');
+define('_LOCALE_SK_LATN_SK',   'Slovak in Slovakia');
+define('_LOCALE_SR_CYRL_RS',   'Serbian in Serbia');
+define('_LOCALE_UR_ARAB_PK',   'Urdu in Pakistan');
+define('_LOCALE_VI_LATN_VN',   'Vietnamese in Vietnam (Latin script)');
+define('_LOCALE_ZH_HANS_CN',   'Chinese in China (simplified script)');
+define('_LOCALE_ZH_HANT_TW',   'Chinese in Taiwan (Traditional script)');
+
+define('_FORGOTPASSWORD_TITLE',                                'Forgot your password?');
+define('_FORGOTPASSWORD_MSG',                          'Enter your username and email address below, and you\'ll be sent an e-mail with a link where you can choose a new password.');
+define('_FORGOTPASSWORD_SUBMIT',                       'Send Activation Link" class="transparent');
+define('_FORGOTPASSWORD_CONTACT',                      'If you don\'t remember your exact username, contact the site administrator.');
+define('_SKINIE_INVALID_NAMES_DETECTED',       'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
+define('_LISTS_AUTHOR',                                                'Author');
+define('_OVERVIEW_OTHER_DRAFTS',                       'Other Drafts');
+define('_ERROR_BADADMINSKINNAME',                      'the name of skin for admin area must start with \'admin/\'.');
+define('_ERROR_BADADMINTEMPLATENAME',          'the name of template for admin area must start with \'admin/\'.');
+define('_SETTINGS_ADMINSKIN',                          'default skin for admin area');
+define('_SETTINGS_BKMKLTSKIN',                         'default skin for bookmarklet');
+define('_MEMBERS_BKMKLTSKIN',                          "bookmarklet skin");
+define('_ADMIN_SYSTEMOVERVIEW_VERSION_LATEST',         'The version which is being used is latest.');
+
+>>>>>>> skinnable-master
 /********************************************
  *        Start New for 3.6x                *
  ********************************************/
@@ -94,9 +182,12 @@ define('_ERROR_DELREQPLUGIN',               'Plugin deletion failed, required by %s');
 //define('_ADD_ADDLATER',                                                              'Add Later');
 define('_ADD_ADDLATER',                                                                'Add the dates specified');
 
+<<<<<<< HEAD
 define('_LOGIN_NAME',                          'Name:');
 define('_LOGIN_PASSWORD',                      'Password:');
 
+=======
+>>>>>>> skinnable-master
 // changed from _BOOKMARLET_BMARKLFOLLOW
 define('_BOOKMARKLET_BMARKFOLLOW',                                     ' (Works with nearly all browsers)');
 // END changed/added after 3.33 END
@@ -192,6 +283,7 @@ define('_PLUGIN_OPTIONS_TITLE',                                                     'Options for %s');
 // Plugin file loda error
 define('_PLUGINFILE_COULDNT_BELOADED',                         'Error: plugin file <strong>%s.php</strong> could not be loaded, or it has been set inactive because it does not support some features (check the <a href="?action=actionlog">actionlog</a> for more info)');
 
+<<<<<<< HEAD
 //ITEM add/edit template (for japanese only)
 define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
 define('_ITEM_ADDEDITTEMPLATE_YEAR',                           'Year');
@@ -199,6 +291,9 @@ define('_ITEM_ADDEDITTEMPLATE_MONTH',                               'Month');
 define('_ITEM_ADDEDITTEMPLATE_DAY',                                    'Day');
 define('_ITEM_ADDEDITTEMPLATE_HOUR',                           'Hour');
 define('_ITEM_ADDEDITTEMPLATE_MINUTE',                         'Minute');
+=======
+define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
+>>>>>>> skinnable-master
 
 // Errors
 define('_ERRORS_INSTALLSQL',                                           'install.sql should be deleted');
@@ -357,10 +452,13 @@ define('_ARCHIVETYPE_MONTH',              'luna');
 // tickets (prevents malicious users to trick an admin to perform actions he doesn't want)
 define('_ERROR_BADTICKET',                     'Tichetul nu este valid sau este expirat.');
 
+<<<<<<< HEAD
 // plugin dependency
 define('_ERROR_INSREQPLUGIN',          'Instalarea pluginului a esuat, necesita ');
 define('_ERROR_DELREQPLUGIN',          'Stergerea pluginului a esuat, folosit de ');
 
+=======
+>>>>>>> skinnable-master
 // cookie prefix
 define('_SETTINGS_COOKIEPREFIX',       'Prefixul Cookieului');
 
@@ -482,9 +580,12 @@ define('_ADD_ALIGNLEFT_TT',                'Aliniaza la stanga');
 define('_ADD_ALIGNRIGHT_TT',           'Aliniaza la dreapta');
 define('_ADD_ALIGNCENTER_TT',          'Centreaza');
 
+<<<<<<< HEAD
 // searchable blog setting (yes/no)
 define('_EBLOG_SEARCH',                        'Include in cautare');
 
+=======
+>>>>>>> skinnable-master
 // generic upload failure
 define('_ERROR_UPLOADFAILED',          'Descarcare esuata');
 
@@ -767,7 +868,10 @@ define('_COMMENTFORM_YOUARE',              'Sunteti');
 define('_COMMENTFORM_SUBMIT',          'Adaugati un comentariu');
 define('_COMMENTFORM_COMMENT',         'Comentariul Dvs');
 define('_COMMENTFORM_NAME',            'Nume');
+<<<<<<< HEAD
 define('_COMMENTFORM_MAIL',            'Email/HTTP');
+=======
+>>>>>>> skinnable-master
 define('_COMMENTFORM_REMEMBER',                'Tine minte numele');
 
 // loginform
@@ -794,7 +898,10 @@ define('_ADD_DISABLE_COMMENTS',            'Interziceti comentariile?');
 define('_ADD_DRAFTNFUTURE',            'Ciorne &amp; articole viitoare');
 define('_ADD_ADDITEM',                 'Adauga un articol');
 define('_ADD_ADDNOW',                  'Adauga acum');
+<<<<<<< HEAD
 define('_ADD_ADDLATER',                        'Adauga mai tarziu');
+=======
+>>>>>>> skinnable-master
 define('_ADD_PLACE_ON',                        'Datat: ');
 define('_ADD_ADDDRAFT',                        'Adaugati la ciorne');
 define('_ADD_NOPASTDATES',             '(Datele si orele nu sunt valide, deci va fi utilizata data de azi)');
@@ -1272,4 +1379,22 @@ define('_EDITC_NONMEMBER',               'vizitator');
 define('_MOVE_TITLE',                  'Deplasare in care blog?');
 define('_MOVE_BTN',                    'Deplasare articol');
 
+<<<<<<< HEAD
 ?>
+=======
+// ADMIN-template template types
+include_once('adminskinTypes.php');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_NAVILIST',          'navibar for item/comment list');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is blog ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is super ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin URL');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'API entry');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'eventlist updates');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency to');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency by');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'couldn\'t load file');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin actions');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin admin link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin help link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin option setting link');
+>>>>>>> skinnable-master
index 303efc0..b4bcf9a 100644 (file)
  * 
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2012 The Nucleus Group
+<<<<<<< HEAD
  * @version $Id: ru_Cyrl_RU.UTF-8.php 1868 2012-05-22 05:10:53Z sakamocchi $
+=======
+ * @version $Id: ru_Cyrl_RU.UTF-8.php 1887 2012-06-17 08:30:08Z sakamocchi $
+>>>>>>> skinnable-master
  */
 
 /********************************************
  *        Start New for 4.0                 *
  ********************************************/
-define('_SKINIE_INVALID_NAMES_DETECTED', 'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
-define('_LISTS_AUTHOR', 'Author');
-define('_OVERVIEW_OTHER_DRAFTS', 'Other Drafts');
+/* argument value for setlocale() in Microsoft's windows operating system */
+define('_LOCALE_IN_WINDOWS',   'rus_rus');
+
+/* labels for date and time measurement unit */
+define('_LABEL_YEAR_UNIT',             'year');
+define('_LABEL_MONTH_UNIT',            'month');
+define('_LABEL_DAY_UNIT',              'day');
+define('_LABEL_HOUR_UNIT',             'hour');
+define('_LABEL_MINUTE_UNIT',   'minute');
+
+// SkinableAdminArea vars
+define('_SKINABLEADMIN_DEL_UNINSTALL_DATA',                    'Delete ADMIN skin data table on uninstall?');
+define('_SKINABLEADMIN_DEFAULT_SKIN',                          'Choose a skin of the management area of the default.');
+define('_SKINABLEADMIN_MEMBER_DEFAULT_SKIN',           'Choose a skin of the management area of you use.');
+define('_SKINABLEADMIN_QMENU_LAYOUT',                          'Admin layout');
+define('_SKINABLEADMIN_PAGE_STR',                                      'page');
+define('_SKINABLEADMIN_BATCH_MOVE',                                    'Item move other category/Category move other blog');
+define('_SKINABLEADMIN_BATCH',                                         'batch');
+define('_SKINABLEADMIN_PAGEHEAD',                                      'Admin page head');
+define('_SKINABLEADMIN_PAGEFOOT',                                      'Admin page foot');
+define('_SKINABLEADMIN_TEMPLATEOVERVIEW',                      'Template overview');
+define('_SKINABLEADMIN_ADMINAREAHEADLINK',                     '[Your site]link');
+define('_SKINABLEADMIN_TPLSETTING_INGENERAL',          'In general');
+define('_SKINABLEADMIN_HEAD_STR',                                      ' head');
+define('_SKINABLEADMIN_BODY_STR',                                      ' body');
+define('_SKINABLEADMIN_FOOT_STR',                                      ' foot');
+define('_SKINABLEADMIN_TEXT_STR',                                      ' text');
+define('_SKINABLEADMIN_TITLE_STR',                                     ' title');
+define('_SKINABLEADMIN_ADMINSETTING_STR',                      ' set editmember is \'admin\'');
+define('_SKINABLEADMIN_NORMALSETTING_STR',                     ' normal');
+define('_SKINABLEADMIN_HELPICONURL_STR',                       ' icon URL');
+define('_SKINABLEADMIN_HELPFILEURL_STR',                       ' help file URL');
+define('_SKINABLEADMIN_ADMINSKINVAR_STR',                      ' skinvars');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_SELECT',      'selectbox used in ADMIN area');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE',       'Table for list indication');
+define('_SKINABLEADMIN_PLUGIN_QUICKMENU',                      'Link to admin page of the plugin shown to the quick-menu');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE',         'Template for option-type %s');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTMETA',         'Template for option-meta-data %s');
+define('_SKINABLEADMIN_MEMBERS_ADMINSKIN',                     "ADMIN-Area's skin");
+
+define('_LOCALE_BG_CYRL_BG',   'Bulgarian in Bulgaria');
+define('_LOCALE_CA_LATN_ES',   'Catalan in Spain');
+define('_LOCALE_CS_LATN_CZ',   'Czech in Czech Republic');
+define('_LOCALE_DE_LATN_DE',   'German in Germany');
+define('_LOCALE_EL_GREK_GR',   'Greek in Greece (Greek script)');
+define('_LOCALE_EN_LATN_US',   'English in United States');
+define('_LOCALE_ES_LATN_ES',   'Spanish in Spain');
+define('_LOCALE_FA_ARAB_IR',   'Persian in Islamic Republic of Iran');
+define('_LOCALE_FI_LATN_FI',   'Finnish in Finland');
+define('_LOCALE_FR_LATN_FR',   'French in France');
+define('_LOCALE_GL_LATN_ES',   'Galician in Spain');
+define('_LOCALE_HR_LATN_HR',   'Croatian in Croatia');
+define('_LOCALE_HU_LATN_HU',   'Hungarian in Hungary');
+define('_LOCALE_ID_LATN_ID',   'Indonesian in Indonesia (Latin script)');
+define('_LOCALE_IT_LATN_IT',   'Italian in Italy');
+define('_LOCALE_JA_JPAN_JP',   'Japanese in Japan');
+define('_LOCALE_KO_KORE_KR',   'Korean in Korea');
+define('_LOCALE_KU_ARAB_TR',   'Kurdish in Turkey (Arabic script)');
+define('_LOCALE_LV_LATN_LV',   'Latvian in Latvia');
+define('_LOCALE_NL_LATN_NL',   'Dutch in Netherlands');
+define('_LOCALE_PL_LATN_PL',   'Polish in Poland');
+define('_LOCALE_PT_LATN_BR',   'Portuguese in Brazil');
+define('_LOCALE_RO_LATN_RO',   'Romainan in Romania');
+define('_LOCALE_RU_CYRL_RU',   'Russian in Russia');
+define('_LOCALE_SK_LATN_SK',   'Slovak in Slovakia');
+define('_LOCALE_SR_CYRL_RS',   'Serbian in Serbia');
+define('_LOCALE_UR_ARAB_PK',   'Urdu in Pakistan');
+define('_LOCALE_VI_LATN_VN',   'Vietnamese in Vietnam (Latin script)');
+define('_LOCALE_ZH_HANS_CN',   'Chinese in China (simplified script)');
+define('_LOCALE_ZH_HANT_TW',   'Chinese in Taiwan (Traditional script)');
+
+define('_FORGOTPASSWORD_TITLE',                                'Forgot your password?');
+define('_FORGOTPASSWORD_MSG',                          'Enter your username and email address below, and you\'ll be sent an e-mail with a link where you can choose a new password.');
+define('_FORGOTPASSWORD_SUBMIT',                       'Send Activation Link" class="transparent');
+define('_FORGOTPASSWORD_CONTACT',                      'If you don\'t remember your exact username, contact the site administrator.');
+define('_SKINIE_INVALID_NAMES_DETECTED',       'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
+define('_LISTS_AUTHOR',                                                'Author');
+define('_OVERVIEW_OTHER_DRAFTS',                       'Other Drafts');
+define('_ERROR_BADADMINSKINNAME',                      'the name of skin for admin area must start with \'admin/\'.');
+define('_ERROR_BADADMINTEMPLATENAME',          'the name of template for admin area must start with \'admin/\'.');
+define('_SETTINGS_ADMINSKIN',                          'default skin for admin area');
+define('_SETTINGS_BKMKLTSKIN',                         'default skin for bookmarklet');
+define('_MEMBERS_BKMKLTSKIN',                          "bookmarklet skin");
+define('_ADMIN_SYSTEMOVERVIEW_VERSION_LATEST',         'The version which is being used is latest.');
+
 /********************************************
  *        Start New for 3.6x                *
  ********************************************/
@@ -191,13 +276,7 @@ define('_PLUGIN_OPTIONS_TITLE',                                                    'Options for %s');
 // Plugin file loda error
 define('_PLUGINFILE_COULDNT_BELOADED',                         'Error: plugin file <strong>%s.php</strong> could not be loaded, or it has been set inactive because it does not support some features (check the <a href="?action=actionlog">actionlog</a> for more info)');
 
-//ITEM add/edit template (for japanese only)
 define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
-define('_ITEM_ADDEDITTEMPLATE_YEAR',                           'Year');
-define('_ITEM_ADDEDITTEMPLATE_MONTH',                          'Month');
-define('_ITEM_ADDEDITTEMPLATE_DAY',                                    'Day');
-define('_ITEM_ADDEDITTEMPLATE_HOUR',                           'Hour');
-define('_ITEM_ADDEDITTEMPLATE_MINUTE',                         'Minute');
 
 // Errors
 define('_ERRORS_INSTALLSQL',                                           'install.sql should be deleted');
@@ -356,10 +435,6 @@ define('_ARCHIVETYPE_MONTH',               'месяц');
 // tickets (prevents malicious users to trick an admin to perform actions he doesn't want)
 define('_ERROR_BADTICKET',                     'Неправильная или используемая повторно ссылка.');
 
-// plugin dependency
-define('_ERROR_INSREQPLUGIN',          'Ошибка при установке плагина, требуется ');
-define('_ERROR_DELREQPLUGIN',          'Не удалось выполнить удаление плагина, требуется ');
-
 // cookie prefix
 define('_SETTINGS_COOKIEPREFIX',       'Префикс Cookie');
 
@@ -766,7 +841,6 @@ define('_COMMENTFORM_YOUARE',               'Вы');
 define('_COMMENTFORM_SUBMIT',          'Комментировать!');
 define('_COMMENTFORM_COMMENT',         'Ваш комментарий');
 define('_COMMENTFORM_NAME',                    'Имя');
-define('_COMMENTFORM_MAIL',                    'E-mail/HTTP');
 define('_COMMENTFORM_REMEMBER',                'Запомнить меня');
 
 // loginform
@@ -793,7 +867,6 @@ define('_ADD_DISABLE_COMMENTS',             'Выключить комментарии?');
 define('_ADD_DRAFTNFUTURE',                    'Черновики &amp; Будущие сообшения');
 define('_ADD_ADDITEM',                         'Добавить сообщение');
 define('_ADD_ADDNOW',                          'Добавить сейчас');
-define('_ADD_ADDLATER',                                'Добавить позже');
 define('_ADD_PLACE_ON',                                'Выберите дату');
 define('_ADD_ADDDRAFT',                                'Добавить в черновики');
 define('_ADD_NOPASTDATES',                     '(дата и время в прошлом недействительны, будут использовано текущее время)');
@@ -1137,8 +1210,6 @@ define('_BAN_ADD_BTN',                            'Установить бан');
 
 // LOGIN screen
 define('_LOGIN_MESSAGE',                       'Сообщение');
-define('_LOGIN_NAME',                          'Имя');
-define('_LOGIN_PASSWORD',                      'Пароль');
 define('_LOGIN_SHARED',                                _LOGINFORM_SHARED);
 define('_LOGIN_FORGOT',                                'Вспомнить пароль');
 
@@ -1270,3 +1341,19 @@ define('_EDITC_NONMEMBER',                       'гость');
 // move item
 define('_MOVE_TITLE',                          'Выберите раздел для перемещения');
 define('_MOVE_BTN',                                    'Переместить сообщение');
+
+// ADMIN-template template types
+include_once('adminskinTypes.php');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_NAVILIST',          'navibar for item/comment list');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is blog ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is super ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin URL');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'API entry');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'eventlist updates');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency to');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency by');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'couldn\'t load file');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin actions');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin admin link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin help link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin option setting link');
index a460229..cbd5b1f 100644 (file)
  * 
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2012 The Nucleus Group
+<<<<<<< HEAD
  * @version $Id: ru_Cyrl_RU.WINDOWS-1251.php 1868 2012-05-22 05:10:53Z sakamocchi $
+=======
+ * @version $Id: ru_Cyrl_RU.WINDOWS-1251.php 1887 2012-06-17 08:30:08Z sakamocchi $
+>>>>>>> skinnable-master
  */
 
 /********************************************
  *        Start New for 4.0                 *
  ********************************************/
-define('_SKINIE_INVALID_NAMES_DETECTED', 'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
-define('_LISTS_AUTHOR', 'Author');
-define('_OVERVIEW_OTHER_DRAFTS', 'Other Drafts');
+/* argument value for setlocale() in Microsoft's windows operating system */
+define('_LOCALE_IN_WINDOWS',   'rus_rus');
+
+/* labels for date and time measurement unit */
+define('_LABEL_YEAR_UNIT',             'year');
+define('_LABEL_MONTH_UNIT',            'month');
+define('_LABEL_DAY_UNIT',              'day');
+define('_LABEL_HOUR_UNIT',             'hour');
+define('_LABEL_MINUTE_UNIT',   'minute');
+
+// SkinableAdminArea vars
+define('_SKINABLEADMIN_DEL_UNINSTALL_DATA',                    'Delete ADMIN skin data table on uninstall?');
+define('_SKINABLEADMIN_DEFAULT_SKIN',                          'Choose a skin of the management area of the default.');
+define('_SKINABLEADMIN_MEMBER_DEFAULT_SKIN',           'Choose a skin of the management area of you use.');
+define('_SKINABLEADMIN_QMENU_LAYOUT',                          'Admin layout');
+define('_SKINABLEADMIN_PAGE_STR',                                      'page');
+define('_SKINABLEADMIN_BATCH_MOVE',                                    'Item move other category/Category move other blog');
+define('_SKINABLEADMIN_BATCH',                                         'batch');
+define('_SKINABLEADMIN_PAGEHEAD',                                      'Admin page head');
+define('_SKINABLEADMIN_PAGEFOOT',                                      'Admin page foot');
+define('_SKINABLEADMIN_TEMPLATEOVERVIEW',                      'Template overview');
+define('_SKINABLEADMIN_ADMINAREAHEADLINK',                     '[Your site]link');
+define('_SKINABLEADMIN_TPLSETTING_INGENERAL',          'In general');
+define('_SKINABLEADMIN_HEAD_STR',                                      ' head');
+define('_SKINABLEADMIN_BODY_STR',                                      ' body');
+define('_SKINABLEADMIN_FOOT_STR',                                      ' foot');
+define('_SKINABLEADMIN_TEXT_STR',                                      ' text');
+define('_SKINABLEADMIN_TITLE_STR',                                     ' title');
+define('_SKINABLEADMIN_ADMINSETTING_STR',                      ' set editmember is \'admin\'');
+define('_SKINABLEADMIN_NORMALSETTING_STR',                     ' normal');
+define('_SKINABLEADMIN_HELPICONURL_STR',                       ' icon URL');
+define('_SKINABLEADMIN_HELPFILEURL_STR',                       ' help file URL');
+define('_SKINABLEADMIN_ADMINSKINVAR_STR',                      ' skinvars');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_SELECT',      'selectbox used in ADMIN area');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE',       'Table for list indication');
+define('_SKINABLEADMIN_PLUGIN_QUICKMENU',                      'Link to admin page of the plugin shown to the quick-menu');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE',         'Template for option-type %s');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTMETA',         'Template for option-meta-data %s');
+define('_SKINABLEADMIN_MEMBERS_ADMINSKIN',                     "ADMIN-Area's skin");
+
+define('_LOCALE_BG_CYRL_BG',   'Bulgarian in Bulgaria');
+define('_LOCALE_CA_LATN_ES',   'Catalan in Spain');
+define('_LOCALE_CS_LATN_CZ',   'Czech in Czech Republic');
+define('_LOCALE_DE_LATN_DE',   'German in Germany');
+define('_LOCALE_EL_GREK_GR',   'Greek in Greece (Greek script)');
+define('_LOCALE_EN_LATN_US',   'English in United States');
+define('_LOCALE_ES_LATN_ES',   'Spanish in Spain');
+define('_LOCALE_FA_ARAB_IR',   'Persian in Islamic Republic of Iran');
+define('_LOCALE_FI_LATN_FI',   'Finnish in Finland');
+define('_LOCALE_FR_LATN_FR',   'French in France');
+define('_LOCALE_GL_LATN_ES',   'Galician in Spain');
+define('_LOCALE_HR_LATN_HR',   'Croatian in Croatia');
+define('_LOCALE_HU_LATN_HU',   'Hungarian in Hungary');
+define('_LOCALE_ID_LATN_ID',   'Indonesian in Indonesia (Latin script)');
+define('_LOCALE_IT_LATN_IT',   'Italian in Italy');
+define('_LOCALE_JA_JPAN_JP',   'Japanese in Japan');
+define('_LOCALE_KO_KORE_KR',   'Korean in Korea');
+define('_LOCALE_KU_ARAB_TR',   'Kurdish in Turkey (Arabic script)');
+define('_LOCALE_LV_LATN_LV',   'Latvian in Latvia');
+define('_LOCALE_NL_LATN_NL',   'Dutch in Netherlands');
+define('_LOCALE_PL_LATN_PL',   'Polish in Poland');
+define('_LOCALE_PT_LATN_BR',   'Portuguese in Brazil');
+define('_LOCALE_RO_LATN_RO',   'Romainan in Romania');
+define('_LOCALE_RU_CYRL_RU',   'Russian in Russia');
+define('_LOCALE_SK_LATN_SK',   'Slovak in Slovakia');
+define('_LOCALE_SR_CYRL_RS',   'Serbian in Serbia');
+define('_LOCALE_UR_ARAB_PK',   'Urdu in Pakistan');
+define('_LOCALE_VI_LATN_VN',   'Vietnamese in Vietnam (Latin script)');
+define('_LOCALE_ZH_HANS_CN',   'Chinese in China (simplified script)');
+define('_LOCALE_ZH_HANT_TW',   'Chinese in Taiwan (Traditional script)');
+
+define('_FORGOTPASSWORD_TITLE',                                'Forgot your password?');
+define('_FORGOTPASSWORD_MSG',                          'Enter your username and email address below, and you\'ll be sent an e-mail with a link where you can choose a new password.');
+define('_FORGOTPASSWORD_SUBMIT',                       'Send Activation Link" class="transparent');
+define('_FORGOTPASSWORD_CONTACT',                      'If you don\'t remember your exact username, contact the site administrator.');
+define('_SKINIE_INVALID_NAMES_DETECTED',       'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
+define('_LISTS_AUTHOR',                                                'Author');
+define('_OVERVIEW_OTHER_DRAFTS',                       'Other Drafts');
+define('_ERROR_BADADMINSKINNAME',                      'the name of skin for admin area must start with \'admin/\'.');
+define('_ERROR_BADADMINTEMPLATENAME',          'the name of template for admin area must start with \'admin/\'.');
+define('_SETTINGS_ADMINSKIN',                          'default skin for admin area');
+define('_SETTINGS_BKMKLTSKIN',                         'default skin for bookmarklet');
+define('_MEMBERS_BKMKLTSKIN',                          "bookmarklet skin");
+define('_ADMIN_SYSTEMOVERVIEW_VERSION_LATEST',         'The version which is being used is latest.');
+
 /********************************************
  *        Start New for 3.6x                *
  ********************************************/
@@ -191,13 +276,7 @@ define('_PLUGIN_OPTIONS_TITLE',                                                    'Options for %s');
 // Plugin file loda error
 define('_PLUGINFILE_COULDNT_BELOADED',                         'Error: plugin file <strong>%s.php</strong> could not be loaded, or it has been set inactive because it does not support some features (check the <a href="?action=actionlog">actionlog</a> for more info)');
 
-//ITEM add/edit template (for japanese only)
 define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
-define('_ITEM_ADDEDITTEMPLATE_YEAR',                           'Year');
-define('_ITEM_ADDEDITTEMPLATE_MONTH',                          'Month');
-define('_ITEM_ADDEDITTEMPLATE_DAY',                                    'Day');
-define('_ITEM_ADDEDITTEMPLATE_HOUR',                           'Hour');
-define('_ITEM_ADDEDITTEMPLATE_MINUTE',                         'Minute');
 
 // Errors
 define('_ERRORS_INSTALLSQL',                                           'install.sql should be deleted');
@@ -355,10 +434,13 @@ define('_ARCHIVETYPE_MONTH',              '
 
 // tickets (prevents malicious users to trick an admin to perform actions he doesn't want)
 define('_ERROR_BADTICKET',                     'Íåïðàâèëüíàÿ èëè èñïîëüçóåìàÿ ïîâòîðíî ññûëêà.');
+<<<<<<< HEAD
 
 // plugin dependency
 define('_ERROR_INSREQPLUGIN',          'Îøèáêà ïðè óñòàíîâêå ïëàãèíà, òðåáóåòñÿ ');
 define('_ERROR_DELREQPLUGIN',          'Íå óäàëîñü âûïîëíèòü óäàëåíèå ïëàãèíà, òðåáóåòñÿ ');
+=======
+>>>>>>> skinnable-master
 
 // cookie prefix
 define('_SETTINGS_COOKIEPREFIX',       'Ïðåôèêñ Cookie');
@@ -766,7 +848,10 @@ define('_COMMENTFORM_YOUARE',              '
 define('_COMMENTFORM_SUBMIT',          'Êîììåíòèðîâàòü!');
 define('_COMMENTFORM_COMMENT',         'Âàø êîììåíòàðèé');
 define('_COMMENTFORM_NAME',                    'Èìÿ');
+<<<<<<< HEAD
 define('_COMMENTFORM_MAIL',                    'E-mail/HTTP');
+=======
+>>>>>>> skinnable-master
 define('_COMMENTFORM_REMEMBER',                'Çàïîìíèòü ìåíÿ');
 
 // loginform
@@ -793,7 +878,10 @@ define('_ADD_DISABLE_COMMENTS',            '
 define('_ADD_DRAFTNFUTURE',                    '×åðíîâèêè &amp; Áóäóùèå ñîîáøåíèÿ');
 define('_ADD_ADDITEM',                         'Äîáàâèòü ñîîáùåíèå');
 define('_ADD_ADDNOW',                          'Äîáàâèòü ñåé÷àñ');
+<<<<<<< HEAD
 define('_ADD_ADDLATER',                                'Äîáàâèòü ïîçæå');
+=======
+>>>>>>> skinnable-master
 define('_ADD_PLACE_ON',                                'Âûáåðèòå äàòó');
 define('_ADD_ADDDRAFT',                                'Äîáàâèòü â ÷åðíîâèêè');
 define('_ADD_NOPASTDATES',                     '(äàòà è âðåìÿ â ïðîøëîì íåäåéñòâèòåëüíû, áóäóò èñïîëüçîâàíî òåêóùåå âðåìÿ)');
@@ -1137,8 +1225,11 @@ define('_BAN_ADD_BTN',                           '
 
 // LOGIN screen
 define('_LOGIN_MESSAGE',                       'Ñîîáùåíèå');
+<<<<<<< HEAD
 define('_LOGIN_NAME',                          'Èìÿ');
 define('_LOGIN_PASSWORD',                      'Ïàðîëü');
+=======
+>>>>>>> skinnable-master
 define('_LOGIN_SHARED',                                _LOGINFORM_SHARED);
 define('_LOGIN_FORGOT',                                'Âñïîìíèòü ïàðîëü');
 
@@ -1270,3 +1361,22 @@ define('_EDITC_NONMEMBER',                       '
 // move item
 define('_MOVE_TITLE',                          'Âûáåðèòå ðàçäåë äëÿ ïåðåìåùåíèÿ');
 define('_MOVE_BTN',                                    'Ïåðåìåñòèòü ñîîáùåíèå');
+<<<<<<< HEAD
+=======
+
+// ADMIN-template template types
+include_once('adminskinTypes.php');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_NAVILIST',          'navibar for item/comment list');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is blog ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is super ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin URL');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'API entry');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'eventlist updates');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency to');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency by');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'couldn\'t load file');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin actions');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin admin link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin help link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin option setting link');
+>>>>>>> skinnable-master
index e729643..1b151a3 100644 (file)
  * 
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2012 The Nucleus Group
+<<<<<<< HEAD
  * @version $Id: sk_Latn_SK.ISO-8859-2.php 1868 2012-05-22 05:10:53Z sakamocchi $
+=======
+ * @version $Id: sk_Latn_SK.ISO-8859-2.php 1887 2012-06-17 08:30:08Z sakamocchi $
+>>>>>>> skinnable-master
  */
 
 /********************************************
  *        Start New for 4.0                 *
  ********************************************/
-define('_SKINIE_INVALID_NAMES_DETECTED', 'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
-define('_LISTS_AUTHOR', 'Author');
-define('_OVERVIEW_OTHER_DRAFTS', 'Other Drafts');
+/* argument value for setlocale() in Microsoft's windows operating system */
+define('_LOCALE_IN_WINDOWS',   'sky_svk');
+
+/* labels for date and time measurement unit */
+define('_LABEL_YEAR_UNIT',             'year');
+define('_LABEL_MONTH_UNIT',            'month');
+define('_LABEL_DAY_UNIT',              'day');
+define('_LABEL_HOUR_UNIT',             'hour');
+define('_LABEL_MINUTE_UNIT',   'minute');
+
+// SkinableAdminArea vars
+define('_SKINABLEADMIN_DEL_UNINSTALL_DATA',                    'Delete ADMIN skin data table on uninstall?');
+define('_SKINABLEADMIN_DEFAULT_SKIN',                          'Choose a skin of the management area of the default.');
+define('_SKINABLEADMIN_MEMBER_DEFAULT_SKIN',           'Choose a skin of the management area of you use.');
+define('_SKINABLEADMIN_QMENU_LAYOUT',                          'Admin layout');
+define('_SKINABLEADMIN_PAGE_STR',                                      'page');
+define('_SKINABLEADMIN_BATCH_MOVE',                                    'Item move other category/Category move other blog');
+define('_SKINABLEADMIN_BATCH',                                         'batch');
+define('_SKINABLEADMIN_PAGEHEAD',                                      'Admin page head');
+define('_SKINABLEADMIN_PAGEFOOT',                                      'Admin page foot');
+define('_SKINABLEADMIN_TEMPLATEOVERVIEW',                      'Template overview');
+define('_SKINABLEADMIN_ADMINAREAHEADLINK',                     '[Your site]link');
+define('_SKINABLEADMIN_TPLSETTING_INGENERAL',          'In general');
+define('_SKINABLEADMIN_HEAD_STR',                                      ' head');
+define('_SKINABLEADMIN_BODY_STR',                                      ' body');
+define('_SKINABLEADMIN_FOOT_STR',                                      ' foot');
+define('_SKINABLEADMIN_TEXT_STR',                                      ' text');
+define('_SKINABLEADMIN_TITLE_STR',                                     ' title');
+define('_SKINABLEADMIN_ADMINSETTING_STR',                      ' set editmember is \'admin\'');
+define('_SKINABLEADMIN_NORMALSETTING_STR',                     ' normal');
+define('_SKINABLEADMIN_HELPICONURL_STR',                       ' icon URL');
+define('_SKINABLEADMIN_HELPFILEURL_STR',                       ' help file URL');
+define('_SKINABLEADMIN_ADMINSKINVAR_STR',                      ' skinvars');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_SELECT',      'selectbox used in ADMIN area');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE',       'Table for list indication');
+define('_SKINABLEADMIN_PLUGIN_QUICKMENU',                      'Link to admin page of the plugin shown to the quick-menu');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE',         'Template for option-type %s');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTMETA',         'Template for option-meta-data %s');
+define('_SKINABLEADMIN_MEMBERS_ADMINSKIN',                     "ADMIN-Area's skin");
+
+define('_LOCALE_BG_CYRL_BG',   'Bulgarian in Bulgaria');
+define('_LOCALE_CA_LATN_ES',   'Catalan in Spain');
+define('_LOCALE_CS_LATN_CZ',   'Czech in Czech Republic');
+define('_LOCALE_DE_LATN_DE',   'German in Germany');
+define('_LOCALE_EL_GREK_GR',   'Greek in Greece (Greek script)');
+define('_LOCALE_EN_LATN_US',   'English in United States');
+define('_LOCALE_ES_LATN_ES',   'Spanish in Spain');
+define('_LOCALE_FA_ARAB_IR',   'Persian in Islamic Republic of Iran');
+define('_LOCALE_FI_LATN_FI',   'Finnish in Finland');
+define('_LOCALE_FR_LATN_FR',   'French in France');
+define('_LOCALE_GL_LATN_ES',   'Galician in Spain');
+define('_LOCALE_HR_LATN_HR',   'Croatian in Croatia');
+define('_LOCALE_HU_LATN_HU',   'Hungarian in Hungary');
+define('_LOCALE_ID_LATN_ID',   'Indonesian in Indonesia (Latin script)');
+define('_LOCALE_IT_LATN_IT',   'Italian in Italy');
+define('_LOCALE_JA_JPAN_JP',   'Japanese in Japan');
+define('_LOCALE_KO_KORE_KR',   'Korean in Korea');
+define('_LOCALE_KU_ARAB_TR',   'Kurdish in Turkey (Arabic script)');
+define('_LOCALE_LV_LATN_LV',   'Latvian in Latvia');
+define('_LOCALE_NL_LATN_NL',   'Dutch in Netherlands');
+define('_LOCALE_PL_LATN_PL',   'Polish in Poland');
+define('_LOCALE_PT_LATN_BR',   'Portuguese in Brazil');
+define('_LOCALE_RO_LATN_RO',   'Romainan in Romania');
+define('_LOCALE_RU_CYRL_RU',   'Russian in Russia');
+define('_LOCALE_SK_LATN_SK',   'Slovak in Slovakia');
+define('_LOCALE_SR_CYRL_RS',   'Serbian in Serbia');
+define('_LOCALE_UR_ARAB_PK',   'Urdu in Pakistan');
+define('_LOCALE_VI_LATN_VN',   'Vietnamese in Vietnam (Latin script)');
+define('_LOCALE_ZH_HANS_CN',   'Chinese in China (simplified script)');
+define('_LOCALE_ZH_HANT_TW',   'Chinese in Taiwan (Traditional script)');
+
+define('_FORGOTPASSWORD_TITLE',                                'Forgot your password?');
+define('_FORGOTPASSWORD_MSG',                          'Enter your username and email address below, and you\'ll be sent an e-mail with a link where you can choose a new password.');
+define('_FORGOTPASSWORD_SUBMIT',                       'Send Activation Link" class="transparent');
+define('_FORGOTPASSWORD_CONTACT',                      'If you don\'t remember your exact username, contact the site administrator.');
+define('_SKINIE_INVALID_NAMES_DETECTED',       'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
+define('_LISTS_AUTHOR',                                                'Author');
+define('_OVERVIEW_OTHER_DRAFTS',                       'Other Drafts');
+define('_ERROR_BADADMINSKINNAME',                      'the name of skin for admin area must start with \'admin/\'.');
+define('_ERROR_BADADMINTEMPLATENAME',          'the name of template for admin area must start with \'admin/\'.');
+define('_SETTINGS_ADMINSKIN',                          'default skin for admin area');
+define('_SETTINGS_BKMKLTSKIN',                         'default skin for bookmarklet');
+define('_MEMBERS_BKMKLTSKIN',                          "bookmarklet skin");
+define('_ADMIN_SYSTEMOVERVIEW_VERSION_LATEST',         'The version which is being used is latest.');
+
 /********************************************
  *        Start New for 3.6x                *
  ********************************************/
@@ -187,13 +272,7 @@ define('_PLUGIN_OPTIONS_TITLE',                                                    'Options for %s');
 // Plugin file loda error
 define('_PLUGINFILE_COULDNT_BELOADED',                         'Error: plugin file <strong>%s.php</strong> could not be loaded, or it has been set inactive because it does not support some features (check the <a href="?action=actionlog">actionlog</a> for more info)');
 
-//ITEM add/edit template (for japanese only)
 define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
-define('_ITEM_ADDEDITTEMPLATE_YEAR',                           'Year');
-define('_ITEM_ADDEDITTEMPLATE_MONTH',                          'Month');
-define('_ITEM_ADDEDITTEMPLATE_DAY',                                    'Day');
-define('_ITEM_ADDEDITTEMPLATE_HOUR',                           'Hour');
-define('_ITEM_ADDEDITTEMPLATE_MINUTE',                         'Minute');
 
 // Errors
 define('_ERRORS_INSTALLSQL',                                           'install.sql should be deleted');
@@ -470,9 +549,12 @@ define('_MEDIA_COLLECTION_LABEL',  'Aktu
 define('_ADD_ALIGNLEFT_TT',                    'Zarovna» doµava');
 define('_ADD_ALIGNRIGHT_TT',           'Zarovna» doprava');
 define('_ADD_ALIGNCENTER_TT',          'Zarovna» na stred');
+<<<<<<< HEAD
 
 // searchable blog setting (yes/no)
 define('_EBLOG_SEARCH',                                'Zahrnú» do hµadania');
+=======
+>>>>>>> skinnable-master
 
 // generic upload failure
 define('_ERROR_UPLOADFAILED',          'Nahrávanie zlyhalo');
@@ -760,7 +842,10 @@ define('_COMMENTFORM_YOUARE',              'Ste');
 define('_COMMENTFORM_SUBMIT',          'Prida» komentár');
 define('_COMMENTFORM_COMMENT',         'Vá¹ komentár');
 define('_COMMENTFORM_NAME',                    'Meno');
+<<<<<<< HEAD
 define('_COMMENTFORM_MAIL',                    'E-mail/HTTP');
+=======
+>>>>>>> skinnable-master
 define('_COMMENTFORM_REMEMBER',                'Pamätaj si mna');
 
 // loginform
@@ -787,7 +872,10 @@ define('_ADD_DISABLE_COMMENTS',            'Zak
 define('_ADD_DRAFTNFUTURE',                    'Koncepty a èlánky pre neskor¹ie publikovanie');
 define('_ADD_ADDITEM',                         'Prida» èlánok');
 define('_ADD_ADDNOW',                          'Prida» teraz');
+<<<<<<< HEAD
 define('_ADD_ADDLATER',                                'Prida» neskôr');
+=======
+>>>>>>> skinnable-master
 define('_ADD_PLACE_ON',                                'Umiestni» na');
 define('_ADD_ADDDRAFT',                                'Prida» medzi koncepty');
 define('_ADD_NOPASTDATES',                     '(dátumy a èasy v minulosti NIE SÚ platné, v tom prípade bude pou¾itý aktuálny èas)');
@@ -1131,8 +1219,11 @@ define('_BAN_ADD_BTN',                           'Prida
 
 // LOGIN screen
 define('_LOGIN_MESSAGE',                       'Správa');
+<<<<<<< HEAD
 define('_LOGIN_NAME',                          'Meno');
 define('_LOGIN_PASSWORD',                      'Heslo');
+=======
+>>>>>>> skinnable-master
 define('_LOGIN_SHARED',                                _LOGINFORM_SHARED);
 define('_LOGIN_FORGOT',                                'Zabudli ste heslo?');
 
@@ -1264,3 +1355,22 @@ define('_EDITC_NONMEMBER',                       'nie je 
 // move item
 define('_MOVE_TITLE',                          'Presunú» do akého blogu?');
 define('_MOVE_BTN',                                    'Presunú» èlánok');
+<<<<<<< HEAD
+=======
+
+// ADMIN-template template types
+include_once('adminskinTypes.php');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_NAVILIST',          'navibar for item/comment list');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is blog ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is super ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin URL');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'API entry');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'eventlist updates');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency to');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency by');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'couldn\'t load file');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin actions');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin admin link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin help link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin option setting link');
+>>>>>>> skinnable-master
index e1f564d..6572790 100644 (file)
  * 
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2012 The Nucleus Group
+<<<<<<< HEAD
  * @version $Id: sk_Latn_SK.UTF-8.php 1868 2012-05-22 05:10:53Z sakamocchi $
+=======
+ * @version $Id: sk_Latn_SK.UTF-8.php 1887 2012-06-17 08:30:08Z sakamocchi $
+>>>>>>> skinnable-master
  */
 
 /********************************************
  *        Start New for 4.0                 *
  ********************************************/
-define('_SKINIE_INVALID_NAMES_DETECTED', 'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
-define('_LISTS_AUTHOR', 'Author');
-define('_OVERVIEW_OTHER_DRAFTS', 'Other Drafts');
+/* argument value for setlocale() in Microsoft's windows operating system */
+define('_LOCALE_IN_WINDOWS',   'sky_svk');
+
+/* labels for date and time measurement unit */
+define('_LABEL_YEAR_UNIT',             'year');
+define('_LABEL_MONTH_UNIT',            'month');
+define('_LABEL_DAY_UNIT',              'day');
+define('_LABEL_HOUR_UNIT',             'hour');
+define('_LABEL_MINUTE_UNIT',   'minute');
+
+// SkinableAdminArea vars
+define('_SKINABLEADMIN_DEL_UNINSTALL_DATA',                    'Delete ADMIN skin data table on uninstall?');
+define('_SKINABLEADMIN_DEFAULT_SKIN',                          'Choose a skin of the management area of the default.');
+define('_SKINABLEADMIN_MEMBER_DEFAULT_SKIN',           'Choose a skin of the management area of you use.');
+define('_SKINABLEADMIN_QMENU_LAYOUT',                          'Admin layout');
+define('_SKINABLEADMIN_PAGE_STR',                                      'page');
+define('_SKINABLEADMIN_BATCH_MOVE',                                    'Item move other category/Category move other blog');
+define('_SKINABLEADMIN_BATCH',                                         'batch');
+define('_SKINABLEADMIN_PAGEHEAD',                                      'Admin page head');
+define('_SKINABLEADMIN_PAGEFOOT',                                      'Admin page foot');
+define('_SKINABLEADMIN_TEMPLATEOVERVIEW',                      'Template overview');
+define('_SKINABLEADMIN_ADMINAREAHEADLINK',                     '[Your site]link');
+define('_SKINABLEADMIN_TPLSETTING_INGENERAL',          'In general');
+define('_SKINABLEADMIN_HEAD_STR',                                      ' head');
+define('_SKINABLEADMIN_BODY_STR',                                      ' body');
+define('_SKINABLEADMIN_FOOT_STR',                                      ' foot');
+define('_SKINABLEADMIN_TEXT_STR',                                      ' text');
+define('_SKINABLEADMIN_TITLE_STR',                                     ' title');
+define('_SKINABLEADMIN_ADMINSETTING_STR',                      ' set editmember is \'admin\'');
+define('_SKINABLEADMIN_NORMALSETTING_STR',                     ' normal');
+define('_SKINABLEADMIN_HELPICONURL_STR',                       ' icon URL');
+define('_SKINABLEADMIN_HELPFILEURL_STR',                       ' help file URL');
+define('_SKINABLEADMIN_ADMINSKINVAR_STR',                      ' skinvars');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_SELECT',      'selectbox used in ADMIN area');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE',       'Table for list indication');
+define('_SKINABLEADMIN_PLUGIN_QUICKMENU',                      'Link to admin page of the plugin shown to the quick-menu');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE',         'Template for option-type %s');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTMETA',         'Template for option-meta-data %s');
+define('_SKINABLEADMIN_MEMBERS_ADMINSKIN',                     "ADMIN-Area's skin");
+
+define('_LOCALE_BG_CYRL_BG',   'Bulgarian in Bulgaria');
+define('_LOCALE_CA_LATN_ES',   'Catalan in Spain');
+define('_LOCALE_CS_LATN_CZ',   'Czech in Czech Republic');
+define('_LOCALE_DE_LATN_DE',   'German in Germany');
+define('_LOCALE_EL_GREK_GR',   'Greek in Greece (Greek script)');
+define('_LOCALE_EN_LATN_US',   'English in United States');
+define('_LOCALE_ES_LATN_ES',   'Spanish in Spain');
+define('_LOCALE_FA_ARAB_IR',   'Persian in Islamic Republic of Iran');
+define('_LOCALE_FI_LATN_FI',   'Finnish in Finland');
+define('_LOCALE_FR_LATN_FR',   'French in France');
+define('_LOCALE_GL_LATN_ES',   'Galician in Spain');
+define('_LOCALE_HR_LATN_HR',   'Croatian in Croatia');
+define('_LOCALE_HU_LATN_HU',   'Hungarian in Hungary');
+define('_LOCALE_ID_LATN_ID',   'Indonesian in Indonesia (Latin script)');
+define('_LOCALE_IT_LATN_IT',   'Italian in Italy');
+define('_LOCALE_JA_JPAN_JP',   'Japanese in Japan');
+define('_LOCALE_KO_KORE_KR',   'Korean in Korea');
+define('_LOCALE_KU_ARAB_TR',   'Kurdish in Turkey (Arabic script)');
+define('_LOCALE_LV_LATN_LV',   'Latvian in Latvia');
+define('_LOCALE_NL_LATN_NL',   'Dutch in Netherlands');
+define('_LOCALE_PL_LATN_PL',   'Polish in Poland');
+define('_LOCALE_PT_LATN_BR',   'Portuguese in Brazil');
+define('_LOCALE_RO_LATN_RO',   'Romainan in Romania');
+define('_LOCALE_RU_CYRL_RU',   'Russian in Russia');
+define('_LOCALE_SK_LATN_SK',   'Slovak in Slovakia');
+define('_LOCALE_SR_CYRL_RS',   'Serbian in Serbia');
+define('_LOCALE_UR_ARAB_PK',   'Urdu in Pakistan');
+define('_LOCALE_VI_LATN_VN',   'Vietnamese in Vietnam (Latin script)');
+define('_LOCALE_ZH_HANS_CN',   'Chinese in China (simplified script)');
+define('_LOCALE_ZH_HANT_TW',   'Chinese in Taiwan (Traditional script)');
+
+define('_FORGOTPASSWORD_TITLE',                                'Forgot your password?');
+define('_FORGOTPASSWORD_MSG',                          'Enter your username and email address below, and you\'ll be sent an e-mail with a link where you can choose a new password.');
+define('_FORGOTPASSWORD_SUBMIT',                       'Send Activation Link" class="transparent');
+define('_FORGOTPASSWORD_CONTACT',                      'If you don\'t remember your exact username, contact the site administrator.');
+define('_SKINIE_INVALID_NAMES_DETECTED',       'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
+define('_LISTS_AUTHOR',                                                'Author');
+define('_OVERVIEW_OTHER_DRAFTS',                       'Other Drafts');
+define('_ERROR_BADADMINSKINNAME',                      'the name of skin for admin area must start with \'admin/\'.');
+define('_ERROR_BADADMINTEMPLATENAME',          'the name of template for admin area must start with \'admin/\'.');
+define('_SETTINGS_ADMINSKIN',                          'default skin for admin area');
+define('_SETTINGS_BKMKLTSKIN',                         'default skin for bookmarklet');
+define('_MEMBERS_BKMKLTSKIN',                          "bookmarklet skin");
+define('_ADMIN_SYSTEMOVERVIEW_VERSION_LATEST',         'The version which is being used is latest.');
+
 /********************************************
  *        Start New for 3.6x                *
  ********************************************/
@@ -187,13 +272,7 @@ define('_PLUGIN_OPTIONS_TITLE',                                                    'Options for %s');
 // Plugin file loda error
 define('_PLUGINFILE_COULDNT_BELOADED',                         'Error: plugin file <strong>%s.php</strong> could not be loaded, or it has been set inactive because it does not support some features (check the <a href="?action=actionlog">actionlog</a> for more info)');
 
-//ITEM add/edit template (for japanese only)
 define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
-define('_ITEM_ADDEDITTEMPLATE_YEAR',                           'Year');
-define('_ITEM_ADDEDITTEMPLATE_MONTH',                          'Month');
-define('_ITEM_ADDEDITTEMPLATE_DAY',                                    'Day');
-define('_ITEM_ADDEDITTEMPLATE_HOUR',                           'Hour');
-define('_ITEM_ADDEDITTEMPLATE_MINUTE',                         'Minute');
 
 // Errors
 define('_ERRORS_INSTALLSQL',                                           'install.sql should be deleted');
@@ -471,9 +550,6 @@ define('_ADD_ALIGNLEFT_TT',                 'Zarovnať doľava');
 define('_ADD_ALIGNRIGHT_TT',           'Zarovnať doprava');
 define('_ADD_ALIGNCENTER_TT',          'Zarovnať na stred');
 
-// searchable blog setting (yes/no)
-define('_EBLOG_SEARCH',                                'Zahrnúť do hľadania');
-
 // generic upload failure
 define('_ERROR_UPLOADFAILED',          'Nahrávanie zlyhalo');
 
@@ -760,7 +836,6 @@ define('_COMMENTFORM_YOUARE',               'Ste');
 define('_COMMENTFORM_SUBMIT',          'Pridať komentár');
 define('_COMMENTFORM_COMMENT',         'Váš komentár');
 define('_COMMENTFORM_NAME',                    'Meno');
-define('_COMMENTFORM_MAIL',                    'E-mail/HTTP');
 define('_COMMENTFORM_REMEMBER',                'Pamätaj si mna');
 
 // loginform
@@ -787,7 +862,6 @@ define('_ADD_DISABLE_COMMENTS',             'Zakázať komentáre?');
 define('_ADD_DRAFTNFUTURE',                    'Koncepty a články pre neskoršie publikovanie');
 define('_ADD_ADDITEM',                         'Pridať článok');
 define('_ADD_ADDNOW',                          'Pridať teraz');
-define('_ADD_ADDLATER',                                'Pridať neskôr');
 define('_ADD_PLACE_ON',                                'Umiestniť na');
 define('_ADD_ADDDRAFT',                                'Pridať medzi koncepty');
 define('_ADD_NOPASTDATES',                     '(dátumy a časy v minulosti NIE SÚ platné, v tom prípade bude použitý aktuálny čas)');
@@ -1131,8 +1205,6 @@ define('_BAN_ADD_BTN',                            'Pridať obmedzenie');
 
 // LOGIN screen
 define('_LOGIN_MESSAGE',                       'Správa');
-define('_LOGIN_NAME',                          'Meno');
-define('_LOGIN_PASSWORD',                      'Heslo');
 define('_LOGIN_SHARED',                                _LOGINFORM_SHARED);
 define('_LOGIN_FORGOT',                                'Zabudli ste heslo?');
 
@@ -1264,3 +1336,19 @@ define('_EDITC_NONMEMBER',                       'nie je členom');
 // move item
 define('_MOVE_TITLE',                          'Presunúť do akého blogu?');
 define('_MOVE_BTN',                                    'Presunúť článok');
+
+// ADMIN-template template types
+include_once('adminskinTypes.php');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_NAVILIST',          'navibar for item/comment list');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is blog ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is super ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin URL');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'API entry');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'eventlist updates');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency to');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency by');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'couldn\'t load file');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin actions');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin admin link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin help link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin option setting link');
index ee0f3ec..7ad8355 100644 (file)
 /********************************************
  *        Start New for 4.0                 *
  ********************************************/
+<<<<<<< HEAD
 define('_SKINIE_INVALID_NAMES_DETECTED', 'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
 define('_LISTS_AUTHOR', 'Author');
 define('_OVERVIEW_OTHER_DRAFTS', 'Other Drafts');
  
+=======
+/* argument value for setlocale() in Microsoft's windows operating system */
+define('_LOCALE_IN_WINDOWS',   'C');
+
+/* labels for date and time measurement unit */
+define('_LABEL_YEAR_UNIT',             'year');
+define('_LABEL_MONTH_UNIT',            'month');
+define('_LABEL_DAY_UNIT',              'day');
+define('_LABEL_HOUR_UNIT',             'hour');
+define('_LABEL_MINUTE_UNIT',   'minute');
+
+// SkinableAdminArea vars
+define('_SKINABLEADMIN_DEL_UNINSTALL_DATA',                    'Delete ADMIN skin data table on uninstall?');
+define('_SKINABLEADMIN_DEFAULT_SKIN',                          'Choose a skin of the management area of the default.');
+define('_SKINABLEADMIN_MEMBER_DEFAULT_SKIN',           'Choose a skin of the management area of you use.');
+define('_SKINABLEADMIN_QMENU_LAYOUT',                          'Admin layout');
+define('_SKINABLEADMIN_PAGE_STR',                                      'page');
+define('_SKINABLEADMIN_BATCH_MOVE',                                    'Item move other category/Category move other blog');
+define('_SKINABLEADMIN_BATCH',                                         'batch');
+define('_SKINABLEADMIN_PAGEHEAD',                                      'Admin page head');
+define('_SKINABLEADMIN_PAGEFOOT',                                      'Admin page foot');
+define('_SKINABLEADMIN_TEMPLATEOVERVIEW',                      'Template overview');
+define('_SKINABLEADMIN_ADMINAREAHEADLINK',                     '[Your site]link');
+define('_SKINABLEADMIN_TPLSETTING_INGENERAL',          'In general');
+define('_SKINABLEADMIN_HEAD_STR',                                      ' head');
+define('_SKINABLEADMIN_BODY_STR',                                      ' body');
+define('_SKINABLEADMIN_FOOT_STR',                                      ' foot');
+define('_SKINABLEADMIN_TEXT_STR',                                      ' text');
+define('_SKINABLEADMIN_TITLE_STR',                                     ' title');
+define('_SKINABLEADMIN_ADMINSETTING_STR',                      ' set editmember is \'admin\'');
+define('_SKINABLEADMIN_NORMALSETTING_STR',                     ' normal');
+define('_SKINABLEADMIN_HELPICONURL_STR',                       ' icon URL');
+define('_SKINABLEADMIN_HELPFILEURL_STR',                       ' help file URL');
+define('_SKINABLEADMIN_ADMINSKINVAR_STR',                      ' skinvars');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_SELECT',      'selectbox used in ADMIN area');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE',       'Table for list indication');
+define('_SKINABLEADMIN_PLUGIN_QUICKMENU',                      'Link to admin page of the plugin shown to the quick-menu');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE',         'Template for option-type %s');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTMETA',         'Template for option-meta-data %s');
+define('_SKINABLEADMIN_MEMBERS_ADMINSKIN',                     "ADMIN-Area's skin");
+
+define('_LOCALE_BG_CYRL_BG',   'Bulgarian in Bulgaria');
+define('_LOCALE_CA_LATN_ES',   'Catalan in Spain');
+define('_LOCALE_CS_LATN_CZ',   'Czech in Czech Republic');
+define('_LOCALE_DE_LATN_DE',   'German in Germany');
+define('_LOCALE_EL_GREK_GR',   'Greek in Greece (Greek script) (Greek script)');
+define('_LOCALE_EN_LATN_US',   'English in United States');
+define('_LOCALE_ES_LATN_ES',   'Spanish in Spain');
+define('_LOCALE_FA_ARAB_IR',   'Persian in Islamic Republic of Iran');
+define('_LOCALE_FI_LATN_FI',   'Finnish in Finland');
+define('_LOCALE_FR_LATN_FR',   'French in France');
+define('_LOCALE_GL_LATN_ES',   'Galician in Spain');
+define('_LOCALE_HR_LATN_HR',   'Croatian in Croatia');
+define('_LOCALE_HU_LATN_HU',   'Hungarian in Hungary');
+define('_LOCALE_ID_LATN_ID',   'Indonesian in Indonesia (Latin script)');
+define('_LOCALE_IT_LATN_IT',   'Italian in Italy');
+define('_LOCALE_JA_JPAN_JP',   'Japanese in Japan');
+define('_LOCALE_KO_KORE_KR',   'Korean in Korea');
+define('_LOCALE_KU_ARAB_TR',   'Kurdish in Turkey (Arabic script)');
+define('_LOCALE_LV_LATN_LV',   'Latvian in Latvia');
+define('_LOCALE_NL_LATN_NL',   'Dutch in Netherlands');
+define('_LOCALE_PL_LATN_PL',   'Polish in Poland');
+define('_LOCALE_PT_LATN_BR',   'Portuguese in Brazil');
+define('_LOCALE_RO_LATN_RO',   'Romainan in Romania');
+define('_LOCALE_RU_CYRL_RU',   'Russian in Russia');
+define('_LOCALE_SK_LATN_SK',   'Slovak in Slovakia');
+define('_LOCALE_SR_CYRL_RS',   'Serbian in Serbia');
+define('_LOCALE_UR_ARAB_PK',   'Urdu in Pakistan');
+define('_LOCALE_VI_LATN_VN',   'Vietnamese in Vietnam (Latin script)');
+define('_LOCALE_ZH_HANS_CN',   'Chinese in China (simplified script)');
+define('_LOCALE_ZH_HANT_TW',   'Chinese in Taiwan (Traditional script)');
+
+define('_FORGOTPASSWORD_TITLE',                                'Forgot your password?');
+define('_FORGOTPASSWORD_MSG',                          'Enter your username and email address below, and you\'ll be sent an e-mail with a link where you can choose a new password.');
+define('_FORGOTPASSWORD_SUBMIT',                       'Send Activation Link" class="transparent');
+define('_FORGOTPASSWORD_CONTACT',                      'If you don\'t remember your exact username, contact the site administrator.');
+define('_SKINIE_INVALID_NAMES_DETECTED',       'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
+define('_LISTS_AUTHOR',                                                'Author');
+define('_OVERVIEW_OTHER_DRAFTS',                       'Other Drafts');
+define('_ERROR_BADADMINSKINNAME',                      'the name of skin for admin area must start with \'admin/\'.');
+define('_ERROR_BADADMINTEMPLATENAME',          'the name of template for admin area must start with \'admin/\'.');
+define('_SETTINGS_ADMINSKIN',                          'default skin for admin area');
+define('_SETTINGS_BKMKLTSKIN',                         'default skin for bookmarklet');
+define('_MEMBERS_BKMKLTSKIN',                          "bookmarklet skin");
+define('_ADMIN_SYSTEMOVERVIEW_VERSION_LATEST',         'The version which is being used is latest.');
+
+>>>>>>> skinnable-master
 /********************************************
  *        Start New for 3.6x                *
  ********************************************/
@@ -186,6 +274,7 @@ define('_PLUGIN_OPTIONS_TITLE',                                                     'Options for %s');
 // Plugin file loda error
 define('_PLUGINFILE_COULDNT_BELOADED',                         'Error: plugin file <strong>%s.php</strong> could not be loaded, or it has been set inactive because it does not support some features (check the <a href="?action=actionlog">actionlog</a> for more info)');
 
+<<<<<<< HEAD
 //ITEM add/edit template (for japanese only)
 define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
 define('_ITEM_ADDEDITTEMPLATE_YEAR',                           'Year');
@@ -193,6 +282,9 @@ define('_ITEM_ADDEDITTEMPLATE_MONTH',                               'Month');
 define('_ITEM_ADDEDITTEMPLATE_DAY',                                    'Day');
 define('_ITEM_ADDEDITTEMPLATE_HOUR',                           'Hour');
 define('_ITEM_ADDEDITTEMPLATE_MINUTE',                         'Minute');
+=======
+define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
+>>>>>>> skinnable-master
 
 // Errors
 define('_ERRORS_INSTALLSQL',                                           'install.sql should be deleted');
@@ -350,10 +442,13 @@ define('_ARCHIVETYPE_MONTH',                      'mesec');
 // tickets (prevents malicious users to trick an admin to perform actions he doesn't want)
 define('_ERROR_BADTICKET',                             'Neodgovarajući ili već iskorišćeni kupon.');
 
+<<<<<<< HEAD
 // plugin dependency
 define('_ERROR_INSREQPLUGIN',                  'Instalacija plugina nije uspela, potrebno je ');
 define('_ERROR_DELREQPLUGIN',                  'Nije uspelo brisanje plugina, potrebno je ');
 
+=======
+>>>>>>> skinnable-master
 // cookie prefix
 define('_SETTINGS_COOKIEPREFIX',               'Cookie prefiks');
 
@@ -756,7 +851,10 @@ define('_COMMENTFORM_YOUARE',                      'Vi ste');
 define('_COMMENTFORM_SUBMIT',                  'Dodajte komentar');
 define('_COMMENTFORM_COMMENT',         'Vaš komentar');
 define('_COMMENTFORM_NAME',                            'Ime');
+<<<<<<< HEAD
 define('_COMMENTFORM_MAIL',                            'E-mail/http');
+=======
+>>>>>>> skinnable-master
 define('_COMMENTFORM_REMEMBER',                'Zapamti me');
 
 // loginform
@@ -783,7 +881,10 @@ define('_ADD_DISABLE_COMMENTS',            'Isključiti komentare?');
 define('_ADD_DRAFTNFUTURE',                    'Skica &amp; za kasnije postove');
 define('_ADD_ADDITEM',                                 'Dodaj post');
 define('_ADD_ADDNOW',                                  'Dodaj sada');
+<<<<<<< HEAD
 define('_ADD_ADDLATER',                                        'Dodaj kasnije');
+=======
+>>>>>>> skinnable-master
 define('_ADD_PLACE_ON',                                        'Postavi na');
 define('_ADD_ADDDRAFT',                                        'Dodaj u skice');
 define('_ADD_NOPASTDATES',                             '(raniji datumi i vreme NISU važeći, u slučaju njihovog odabira bit će unešeni trenutni datum i vreme.)');
@@ -1128,8 +1229,11 @@ define('_BAN_ADD_BTN',                                   'Postavi blokadu');
 
 // LOGIN screen
 define('_LOGIN_MESSAGE',                               'Poruka');
+<<<<<<< HEAD
 define('_LOGIN_NAME',                                  'Korisničko ime');
 define('_LOGIN_PASSWORD',                              'Lozinka');
+=======
+>>>>>>> skinnable-master
 define('_LOGIN_SHARED',                                        _LOGINFORM_SHARED);
 define('_LOGIN_FORGOT',                                        'Zaboravili ste lozinku?');
 
@@ -1261,4 +1365,22 @@ define('_EDITC_NONMEMBER',                               'posetilac');
 define('_MOVE_TITLE',                                  'U koji blog preneti ovaj post?');
 define('_MOVE_BTN',                                            'Prenesi post');
 
-?>
\ No newline at end of file
+<<<<<<< HEAD
+?>
+=======
+// ADMIN-template template types
+include_once('adminskinTypes.php');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_NAVILIST',          'navibar for item/comment list');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is blog ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is super ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin URL');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'API entry');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'eventlist updates');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency to');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency by');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'couldn\'t load file');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin actions');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin admin link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin help link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin option setting link');
+>>>>>>> skinnable-master
index 9a00010..ea8bcb8 100644 (file)
 /********************************************
  *        Start New for 4.0                 *
  ********************************************/
+<<<<<<< HEAD
 define('_SKINIE_INVALID_NAMES_DETECTED', 'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
 define('_LISTS_AUTHOR', 'Author');
 define('_OVERVIEW_OTHER_DRAFTS', 'Other Drafts');
  
+=======
+/* argument value for setlocale() in Microsoft's windows operating system */
+define('_LOCALE_IN_WINDOWS',   'C');
+
+/* labels for date and time measurement unit */
+define('_LABEL_YEAR_UNIT',             'year');
+define('_LABEL_MONTH_UNIT',            'month');
+define('_LABEL_DAY_UNIT',              'day');
+define('_LABEL_HOUR_UNIT',             'hour');
+define('_LABEL_MINUTE_UNIT',   'minute');
+
+// SkinableAdminArea vars
+define('_SKINABLEADMIN_DEL_UNINSTALL_DATA',                    'Delete ADMIN skin data table on uninstall?');
+define('_SKINABLEADMIN_DEFAULT_SKIN',                          'Choose a skin of the management area of the default.');
+define('_SKINABLEADMIN_MEMBER_DEFAULT_SKIN',           'Choose a skin of the management area of you use.');
+define('_SKINABLEADMIN_QMENU_LAYOUT',                          'Admin layout');
+define('_SKINABLEADMIN_PAGE_STR',                                      'page');
+define('_SKINABLEADMIN_BATCH_MOVE',                                    'Item move other category/Category move other blog');
+define('_SKINABLEADMIN_BATCH',                                         'batch');
+define('_SKINABLEADMIN_PAGEHEAD',                                      'Admin page head');
+define('_SKINABLEADMIN_PAGEFOOT',                                      'Admin page foot');
+define('_SKINABLEADMIN_TEMPLATEOVERVIEW',                      'Template overview');
+define('_SKINABLEADMIN_ADMINAREAHEADLINK',                     '[Your site]link');
+define('_SKINABLEADMIN_TPLSETTING_INGENERAL',          'In general');
+define('_SKINABLEADMIN_HEAD_STR',                                      ' head');
+define('_SKINABLEADMIN_BODY_STR',                                      ' body');
+define('_SKINABLEADMIN_FOOT_STR',                                      ' foot');
+define('_SKINABLEADMIN_TEXT_STR',                                      ' text');
+define('_SKINABLEADMIN_TITLE_STR',                                     ' title');
+define('_SKINABLEADMIN_ADMINSETTING_STR',                      ' set editmember is \'admin\'');
+define('_SKINABLEADMIN_NORMALSETTING_STR',                     ' normal');
+define('_SKINABLEADMIN_HELPICONURL_STR',                       ' icon URL');
+define('_SKINABLEADMIN_HELPFILEURL_STR',                       ' help file URL');
+define('_SKINABLEADMIN_ADMINSKINVAR_STR',                      ' skinvars');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_SELECT',      'selectbox used in ADMIN area');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE',       'Table for list indication');
+define('_SKINABLEADMIN_PLUGIN_QUICKMENU',                      'Link to admin page of the plugin shown to the quick-menu');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE',         'Template for option-type %s');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTMETA',         'Template for option-meta-data %s');
+define('_SKINABLEADMIN_MEMBERS_ADMINSKIN',                     "ADMIN-Area's skin");
+
+define('_LOCALE_BG_CYRL_BG',   'Bulgarian in Bulgaria');
+define('_LOCALE_CA_LATN_ES',   'Catalan in Spain');
+define('_LOCALE_CS_LATN_CZ',   'Czech in Czech Republic');
+define('_LOCALE_DE_LATN_DE',   'German in Germany');
+define('_LOCALE_EL_GREK_GR',   'Greek in Greece (Greek script) (Greek script)');
+define('_LOCALE_EN_LATN_US',   'English in United States');
+define('_LOCALE_ES_LATN_ES',   'Spanish in Spain');
+define('_LOCALE_FA_ARAB_IR',   'Persian in Islamic Republic of Iran');
+define('_LOCALE_FI_LATN_FI',   'Finnish in Finland');
+define('_LOCALE_FR_LATN_FR',   'French in France');
+define('_LOCALE_GL_LATN_ES',   'Galician in Spain');
+define('_LOCALE_HR_LATN_HR',   'Croatian in Croatia');
+define('_LOCALE_HU_LATN_HU',   'Hungarian in Hungary');
+define('_LOCALE_ID_LATN_ID',   'Indonesian in Indonesia (Latin script)');
+define('_LOCALE_IT_LATN_IT',   'Italian in Italy');
+define('_LOCALE_JA_JPAN_JP',   'Japanese in Japan');
+define('_LOCALE_KO_KORE_KR',   'Korean in Korea');
+define('_LOCALE_KU_ARAB_TR',   'Kurdish in Turkey (Arabic script)');
+define('_LOCALE_LV_LATN_LV',   'Latvian in Latvia');
+define('_LOCALE_NL_LATN_NL',   'Dutch in Netherlands');
+define('_LOCALE_PL_LATN_PL',   'Polish in Poland');
+define('_LOCALE_PT_LATN_BR',   'Portuguese in Brazil');
+define('_LOCALE_RO_LATN_RO',   'Romainan in Romania');
+define('_LOCALE_RU_CYRL_RU',   'Russian in Russia');
+define('_LOCALE_SK_LATN_SK',   'Slovak in Slovakia');
+define('_LOCALE_SR_CYRL_RS',   'Serbian in Serbia');
+define('_LOCALE_UR_ARAB_PK',   'Urdu in Pakistan');
+define('_LOCALE_VI_LATN_VN',   'Vietnamese in Vietnam (Latin script)');
+define('_LOCALE_ZH_HANS_CN',   'Chinese in China (simplified script)');
+define('_LOCALE_ZH_HANT_TW',   'Chinese in Taiwan (Traditional script)');
+
+define('_FORGOTPASSWORD_TITLE',                                'Forgot your password?');
+define('_FORGOTPASSWORD_MSG',                          'Enter your username and email address below, and you\'ll be sent an e-mail with a link where you can choose a new password.');
+define('_FORGOTPASSWORD_SUBMIT',                       'Send Activation Link" class="transparent');
+define('_FORGOTPASSWORD_CONTACT',                      'If you don\'t remember your exact username, contact the site administrator.');
+define('_SKINIE_INVALID_NAMES_DETECTED',       'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
+define('_LISTS_AUTHOR',                                                'Author');
+define('_OVERVIEW_OTHER_DRAFTS',                       'Other Drafts');
+define('_ERROR_BADADMINSKINNAME',                      'the name of skin for admin area must start with \'admin/\'.');
+define('_ERROR_BADADMINTEMPLATENAME',          'the name of template for admin area must start with \'admin/\'.');
+define('_SETTINGS_ADMINSKIN',                          'default skin for admin area');
+define('_SETTINGS_BKMKLTSKIN',                         'default skin for bookmarklet');
+define('_MEMBERS_BKMKLTSKIN',                          "bookmarklet skin");
+define('_ADMIN_SYSTEMOVERVIEW_VERSION_LATEST',         'The version which is being used is latest.');
+
+>>>>>>> skinnable-master
 /********************************************
  *        Start New for 3.6x                *
  ********************************************/
@@ -186,6 +274,7 @@ define('_PLUGIN_OPTIONS_TITLE',                                                     'Options for %s');
 // Plugin file loda error
 define('_PLUGINFILE_COULDNT_BELOADED',                         'Error: plugin file <strong>%s.php</strong> could not be loaded, or it has been set inactive because it does not support some features (check the <a href="?action=actionlog">actionlog</a> for more info)');
 
+<<<<<<< HEAD
 //ITEM add/edit template (for japanese only)
 define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
 define('_ITEM_ADDEDITTEMPLATE_YEAR',                           'Year');
@@ -193,6 +282,9 @@ define('_ITEM_ADDEDITTEMPLATE_MONTH',                               'Month');
 define('_ITEM_ADDEDITTEMPLATE_DAY',                                    'Day');
 define('_ITEM_ADDEDITTEMPLATE_HOUR',                           'Hour');
 define('_ITEM_ADDEDITTEMPLATE_MINUTE',                         'Minute');
+=======
+define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
+>>>>>>> skinnable-master
 
 // Errors
 define('_ERRORS_INSTALLSQL',                                           'install.sql should be deleted');
@@ -351,10 +443,13 @@ define('_ARCHIVETYPE_MONTH',              'مہینہ');
 // tickets (prevents malicious users to trick an admin to perform actions he doesn't want)
 define('_ERROR_BADTICKET',                     'نا موزوں یا ختم شدہ ٹکٹ.');
 
+<<<<<<< HEAD
 // plugin dependency
 define('_ERROR_INSREQPLUGIN',          'پلگ ان کی تنصیب ناکام ہوگئی، درکار ہے ');
 define('_ERROR_DELREQPLUGIN',          'پلگ ان حذف کرنا ناکام ہوگیا، درکار از ');
 
+=======
+>>>>>>> skinnable-master
 // cookie prefix
 define('_SETTINGS_COOKIEPREFIX',       'کوکی پریفکس');
 
@@ -783,7 +878,10 @@ define('_ADD_DISABLE_COMMENTS',            'تبصرہ جات معطل کریں؟');
 define('_ADD_DRAFTNFUTURE',                    'مسودے &amp; مستقبل کے عناصر');
 define('_ADD_ADDITEM',                         'عنصر شامل کریں');
 define('_ADD_ADDNOW',                          'ابھی شامل کریں');
+<<<<<<< HEAD
 define('_ADD_ADDLATER',                                'بعد میں شامل کریں');
+=======
+>>>>>>> skinnable-master
 define('_ADD_PLACE_ON',                                'لگائیں');
 define('_ADD_ADDDRAFT',                                'مسودوں میں شامل کریں');
 define('_ADD_NOPASTDATES',                     '(ماضی کی تاریخیں اور وقت موزوں نہیں، اس صورت میں حالیہ وقت استعمال کی جائے گا)');
@@ -1127,8 +1225,11 @@ define('_BAN_ADD_BTN',                           'بین شامل کریں');
 
 // LOGIN screen
 define('_LOGIN_MESSAGE',                       'پیغام');
+<<<<<<< HEAD
 define('_LOGIN_NAME',                          'نام');
 define('_LOGIN_PASSWORD',                      'پاس ورڈ');
+=======
+>>>>>>> skinnable-master
 define('_LOGIN_SHARED',                                _LOGINFORM_SHARED);
 define('_LOGIN_FORGOT',                                'پاس ورڈ بھول گئے؟');
 
@@ -1261,4 +1362,22 @@ define('_EDITC_NONMEMBER',                       'غیر رکن');
 define('_MOVE_TITLE',                          'کس بلاگ میں منتقل کیا جائے؟');
 define('_MOVE_BTN',                                    'عنصر منتقل کریں');
 
+<<<<<<< HEAD
 ?>
+=======
+// ADMIN-template template types
+include_once('adminskinTypes.php');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_NAVILIST',          'navibar for item/comment list');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is blog ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is super ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin URL');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'API entry');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'eventlist updates');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency to');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency by');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'couldn\'t load file');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin actions');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin admin link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin help link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin option setting link');
+>>>>>>> skinnable-master
index c8a087e..fc6736c 100644 (file)
 /********************************************
  *        Start New for 4.0                 *
  ********************************************/
+<<<<<<< HEAD
 define('_SKINIE_INVALID_NAMES_DETECTED', 'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
 define('_LISTS_AUTHOR', 'Author');
 define('_OVERVIEW_OTHER_DRAFTS', 'Other Drafts');
  
+=======
+/* argument value for setlocale() in Microsoft's windows operating system */
+define('_LOCALE_IN_WINDOWS',   'C');
+
+/* labels for date and time measurement unit */
+define('_LABEL_YEAR_UNIT',             'year');
+define('_LABEL_MONTH_UNIT',            'month');
+define('_LABEL_DAY_UNIT',              'day');
+define('_LABEL_HOUR_UNIT',             'hour');
+define('_LABEL_MINUTE_UNIT',   'minute');
+
+// SkinableAdminArea vars
+define('_SKINABLEADMIN_DEL_UNINSTALL_DATA',                    'Delete ADMIN skin data table on uninstall?');
+define('_SKINABLEADMIN_DEFAULT_SKIN',                          'Choose a skin of the management area of the default.');
+define('_SKINABLEADMIN_MEMBER_DEFAULT_SKIN',           'Choose a skin of the management area of you use.');
+define('_SKINABLEADMIN_QMENU_LAYOUT',                          'Admin layout');
+define('_SKINABLEADMIN_PAGE_STR',                                      'page');
+define('_SKINABLEADMIN_BATCH_MOVE',                                    'Item move other category/Category move other blog');
+define('_SKINABLEADMIN_BATCH',                                         'batch');
+define('_SKINABLEADMIN_PAGEHEAD',                                      'Admin page head');
+define('_SKINABLEADMIN_PAGEFOOT',                                      'Admin page foot');
+define('_SKINABLEADMIN_TEMPLATEOVERVIEW',                      'Template overview');
+define('_SKINABLEADMIN_ADMINAREAHEADLINK',                     '[Your site]link');
+define('_SKINABLEADMIN_TPLSETTING_INGENERAL',          'In general');
+define('_SKINABLEADMIN_HEAD_STR',                                      ' head');
+define('_SKINABLEADMIN_BODY_STR',                                      ' body');
+define('_SKINABLEADMIN_FOOT_STR',                                      ' foot');
+define('_SKINABLEADMIN_TEXT_STR',                                      ' text');
+define('_SKINABLEADMIN_TITLE_STR',                                     ' title');
+define('_SKINABLEADMIN_ADMINSETTING_STR',                      ' set editmember is \'admin\'');
+define('_SKINABLEADMIN_NORMALSETTING_STR',                     ' normal');
+define('_SKINABLEADMIN_HELPICONURL_STR',                       ' icon URL');
+define('_SKINABLEADMIN_HELPFILEURL_STR',                       ' help file URL');
+define('_SKINABLEADMIN_ADMINSKINVAR_STR',                      ' skinvars');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_SELECT',      'selectbox used in ADMIN area');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE',       'Table for list indication');
+define('_SKINABLEADMIN_PLUGIN_QUICKMENU',                      'Link to admin page of the plugin shown to the quick-menu');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE',         'Template for option-type %s');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTMETA',         'Template for option-meta-data %s');
+define('_SKINABLEADMIN_MEMBERS_ADMINSKIN',                     "ADMIN-Area's skin");
+
+define('_LOCALE_BG_CYRL_BG',   'Bulgarian in Bulgaria');
+define('_LOCALE_CA_LATN_ES',   'Catalan in Spain');
+define('_LOCALE_CS_LATN_CZ',   'Czech in Czech Republic');
+define('_LOCALE_DE_LATN_DE',   'German in Germany');
+define('_LOCALE_EL_GREK_GR',   'Greek in Greece (Greek script) (Greek script)');
+define('_LOCALE_EN_LATN_US',   'English in United States');
+define('_LOCALE_ES_LATN_ES',   'Spanish in Spain');
+define('_LOCALE_FA_ARAB_IR',   'Persian in Islamic Republic of Iran');
+define('_LOCALE_FI_LATN_FI',   'Finnish in Finland');
+define('_LOCALE_FR_LATN_FR',   'French in France');
+define('_LOCALE_GL_LATN_ES',   'Galician in Spain');
+define('_LOCALE_HR_LATN_HR',   'Croatian in Croatia');
+define('_LOCALE_HU_LATN_HU',   'Hungarian in Hungary');
+define('_LOCALE_ID_LATN_ID',   'Indonesian in Indonesia (Latin script)');
+define('_LOCALE_IT_LATN_IT',   'Italian in Italy');
+define('_LOCALE_JA_JPAN_JP',   'Japanese in Japan');
+define('_LOCALE_KO_KORE_KR',   'Korean in Korea');
+define('_LOCALE_KU_ARAB_TR',   'Kurdish in Turkey (Arabic script)');
+define('_LOCALE_LV_LATN_LV',   'Latvian in Latvia');
+define('_LOCALE_NL_LATN_NL',   'Dutch in Netherlands');
+define('_LOCALE_PL_LATN_PL',   'Polish in Poland');
+define('_LOCALE_PT_LATN_BR',   'Portuguese in Brazil');
+define('_LOCALE_RO_LATN_RO',   'Romainan in Romania');
+define('_LOCALE_RU_CYRL_RU',   'Russian in Russia');
+define('_LOCALE_SK_LATN_SK',   'Slovak in Slovakia');
+define('_LOCALE_SR_CYRL_RS',   'Serbian in Serbia');
+define('_LOCALE_UR_ARAB_PK',   'Urdu in Pakistan');
+define('_LOCALE_VI_LATN_VN',   'Vietnamese in Vietnam (Latin script)');
+define('_LOCALE_ZH_HANS_CN',   'Chinese in China (simplified script)');
+define('_LOCALE_ZH_HANT_TW',   'Chinese in Taiwan (Traditional script)');
+
+define('_FORGOTPASSWORD_TITLE',                                'Forgot your password?');
+define('_FORGOTPASSWORD_MSG',                          'Enter your username and email address below, and you\'ll be sent an e-mail with a link where you can choose a new password.');
+define('_FORGOTPASSWORD_SUBMIT',                       'Send Activation Link" class="transparent');
+define('_FORGOTPASSWORD_CONTACT',                      'If you don\'t remember your exact username, contact the site administrator.');
+define('_SKINIE_INVALID_NAMES_DETECTED',       'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
+define('_LISTS_AUTHOR',                                                'Author');
+define('_OVERVIEW_OTHER_DRAFTS',                       'Other Drafts');
+define('_ERROR_BADADMINSKINNAME',                      'the name of skin for admin area must start with \'admin/\'.');
+define('_ERROR_BADADMINTEMPLATENAME',          'the name of template for admin area must start with \'admin/\'.');
+define('_SETTINGS_ADMINSKIN',                          'default skin for admin area');
+define('_SETTINGS_BKMKLTSKIN',                         'default skin for bookmarklet');
+define('_MEMBERS_BKMKLTSKIN',                          "bookmarklet skin");
+define('_ADMIN_SYSTEMOVERVIEW_VERSION_LATEST',         'The version which is being used is latest.');
+
+>>>>>>> skinnable-master
 /********************************************
  *        Start New for 3.6x                *
  ********************************************/
@@ -186,6 +274,7 @@ define('_PLUGIN_OPTIONS_TITLE',                                                     'Options for %s');
 // Plugin file loda error
 define('_PLUGINFILE_COULDNT_BELOADED',                         'Error: plugin file <strong>%s.php</strong> could not be loaded, or it has been set inactive because it does not support some features (check the <a href="?action=actionlog">actionlog</a> for more info)');
 
+<<<<<<< HEAD
 //ITEM add/edit template (for japanese only)
 define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
 define('_ITEM_ADDEDITTEMPLATE_YEAR',                           'Year');
@@ -193,6 +282,9 @@ define('_ITEM_ADDEDITTEMPLATE_MONTH',                               'Month');
 define('_ITEM_ADDEDITTEMPLATE_DAY',                                    'Day');
 define('_ITEM_ADDEDITTEMPLATE_HOUR',                           'Hour');
 define('_ITEM_ADDEDITTEMPLATE_MINUTE',                         'Minute');
+=======
+define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
+>>>>>>> skinnable-master
 
 // Errors
 define('_ERRORS_INSTALLSQL',                                           'install.sql should be deleted');
@@ -351,10 +443,13 @@ define('_ARCHIVETYPE_MONTH',                'tháng');
 // tickets (prevents malicious users to trick an admin to perform actions he doesn't want)
 define('_ERROR_BADTICKET',                        'Invalid or expired ticket.');
 
+<<<<<<< HEAD
 // plugin dependency
 define('_ERROR_INSREQPLUGIN',                'Lỗi cài đặt plugin, cần có:');
 define('_ERROR_DELREQPLUGIN',                'Không thể xóa plugin, đang dùng bởi ');
 
+=======
+>>>>>>> skinnable-master
 // cookie prefix
 define('_SETTINGS_COOKIEPREFIX',        'Tiếp đầu ngữ cookie');
 
@@ -757,7 +852,10 @@ define('_COMMENTFORM_YOUARE',                'Tài khoản của bạn là');
 define('_COMMENTFORM_SUBMIT',                'Gởi ý kiến');
 define('_COMMENTFORM_COMMENT',                'Ý kiến của bạn');
 define('_COMMENTFORM_NAME',                        'Tên');
+<<<<<<< HEAD
 define('_COMMENTFORM_MAIL',                        'E-mail/HTTP');
+=======
+>>>>>>> skinnable-master
 define('_COMMENTFORM_REMEMBER',                'Ghi nhớ');
 
 // loginform
@@ -784,7 +882,10 @@ define('_ADD_DISABLE_COMMENTS',                'Khóa việc gởi ý kiến?');
 define('_ADD_DRAFTNFUTURE',                        'Nháp &amp; Các bài viết ở tương lai');
 define('_ADD_ADDITEM',                                'Thêm bài viết');
 define('_ADD_ADDNOW',                                'Thêm lúc này');
+<<<<<<< HEAD
 define('_ADD_ADDLATER',                                'Thêm vào sau');
+=======
+>>>>>>> skinnable-master
 define('_ADD_PLACE_ON',                                'Thời điểm');
 define('_ADD_ADDDRAFT',                                'Lưu nháp');
 define('_ADD_NOPASTDATES',                        '(ngày và giờ trong quá khứ là không được chấp nhận, giờ hiện tại sẽ được thay thế vào các chỗ đó)');
@@ -1128,8 +1229,11 @@ define('_BAN_ADD_BTN',                                'Thêm điều cấm');
 
 // LOGIN screen
 define('_LOGIN_MESSAGE',                        'Tin nhắn');
+<<<<<<< HEAD
 define('_LOGIN_NAME',                                'Tên');
 define('_LOGIN_PASSWORD',                        'Mật khẩu');
+=======
+>>>>>>> skinnable-master
 define('_LOGIN_SHARED',                                _LOGINFORM_SHARED);
 define('_LOGIN_FORGOT',                                'Quên mật khẩu?');
 
@@ -1262,4 +1366,23 @@ define('_EDITC_NONMEMBER',                        'không phải thành viên');
 define('_MOVE_TITLE',                                'Di chuyển đến blog nào?');
 define('_MOVE_BTN',                                        'Di chuyển');
 define('_ADMINTITLE',                                        'Trang Quản Lý');
-?>
\ No newline at end of file
+<<<<<<< HEAD
+?>
+=======
+
+// ADMIN-template template types
+include_once('adminskinTypes.php');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_NAVILIST',          'navibar for item/comment list');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is blog ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is super ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin URL');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'API entry');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'eventlist updates');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency to');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency by');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'couldn\'t load file');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin actions');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin admin link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin help link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin option setting link');
+>>>>>>> skinnable-master
index d64577e..34d92ca 100644 (file)
  * 
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2012 The Nucleus Group
+<<<<<<< HEAD
  * @version $Id: zh_Hans_CN.GB2312.php 1868 2012-05-22 05:10:53Z sakamocchi $
+=======
+ * @version $Id: zh_Hans_CN.GB2312.php 1887 2012-06-17 08:30:08Z sakamocchi $
+>>>>>>> skinnable-master
  */
 
 /********************************************
  *        Start New for 4.0                 *
  ********************************************/
-define('_SKINIE_INVALID_NAMES_DETECTED', 'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
-define('_LISTS_AUTHOR', 'Author');
-define('_OVERVIEW_OTHER_DRAFTS', 'Other Drafts');
+/* argument value for setlocale() in Microsoft's windows operating system */
+define('_LOCALE_IN_WINDOWS',   'chs_chn');
+
+/* labels for date and time measurement unit */
+define('_LABEL_YEAR_UNIT',             'year');
+define('_LABEL_MONTH_UNIT',            'month');
+define('_LABEL_DAY_UNIT',              'day');
+define('_LABEL_HOUR_UNIT',             'hour');
+define('_LABEL_MINUTE_UNIT',   'minute');
+
+// SkinableAdminArea vars
+define('_SKINABLEADMIN_DEL_UNINSTALL_DATA',                    'Delete ADMIN skin data table on uninstall?');
+define('_SKINABLEADMIN_DEFAULT_SKIN',                          'Choose a skin of the management area of the default.');
+define('_SKINABLEADMIN_MEMBER_DEFAULT_SKIN',           'Choose a skin of the management area of you use.');
+define('_SKINABLEADMIN_QMENU_LAYOUT',                          'Admin layout');
+define('_SKINABLEADMIN_PAGE_STR',                                      'page');
+define('_SKINABLEADMIN_BATCH_MOVE',                                    'Item move other category/Category move other blog');
+define('_SKINABLEADMIN_BATCH',                                         'batch');
+define('_SKINABLEADMIN_PAGEHEAD',                                      'Admin page head');
+define('_SKINABLEADMIN_PAGEFOOT',                                      'Admin page foot');
+define('_SKINABLEADMIN_TEMPLATEOVERVIEW',                      'Template overview');
+define('_SKINABLEADMIN_ADMINAREAHEADLINK',                     '[Your site]link');
+define('_SKINABLEADMIN_TPLSETTING_INGENERAL',          'In general');
+define('_SKINABLEADMIN_HEAD_STR',                                      ' head');
+define('_SKINABLEADMIN_BODY_STR',                                      ' body');
+define('_SKINABLEADMIN_FOOT_STR',                                      ' foot');
+define('_SKINABLEADMIN_TEXT_STR',                                      ' text');
+define('_SKINABLEADMIN_TITLE_STR',                                     ' title');
+define('_SKINABLEADMIN_ADMINSETTING_STR',                      ' set editmember is \'admin\'');
+define('_SKINABLEADMIN_NORMALSETTING_STR',                     ' normal');
+define('_SKINABLEADMIN_HELPICONURL_STR',                       ' icon URL');
+define('_SKINABLEADMIN_HELPFILEURL_STR',                       ' help file URL');
+define('_SKINABLEADMIN_ADMINSKINVAR_STR',                      ' skinvars');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_SELECT',      'selectbox used in ADMIN area');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE',       'Table for list indication');
+define('_SKINABLEADMIN_PLUGIN_QUICKMENU',                      'Link to admin page of the plugin shown to the quick-menu');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE',         'Template for option-type %s');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTMETA',         'Template for option-meta-data %s');
+define('_SKINABLEADMIN_MEMBERS_ADMINSKIN',                     "ADMIN-Area's skin");
+
+define('_LOCALE_BG_CYRL_BG',   'Bulgarian in Bulgaria');
+define('_LOCALE_CA_LATN_ES',   'Catalan in Spain');
+define('_LOCALE_CS_LATN_CZ',   'Czech in Czech Republic');
+define('_LOCALE_DE_LATN_DE',   'German in Germany');
+define('_LOCALE_EL_GREK_GR',   'Greek in Greece (Greek script)');
+define('_LOCALE_EN_LATN_US',   'English in United States');
+define('_LOCALE_ES_LATN_ES',   'Spanish in Spain');
+define('_LOCALE_FA_ARAB_IR',   'Persian in Islamic Republic of Iran');
+define('_LOCALE_FI_LATN_FI',   'Finnish in Finland');
+define('_LOCALE_FR_LATN_FR',   'French in France');
+define('_LOCALE_GL_LATN_ES',   'Galician in Spain');
+define('_LOCALE_HR_LATN_HR',   'Croatian in Croatia');
+define('_LOCALE_HU_LATN_HU',   'Hungarian in Hungary');
+define('_LOCALE_ID_LATN_ID',   'Indonesian in Indonesia (Latin script)');
+define('_LOCALE_IT_LATN_IT',   'Italian in Italy');
+define('_LOCALE_JA_JPAN_JP',   'Japanese in Japan');
+define('_LOCALE_KO_KORE_KR',   'Korean in Korea');
+define('_LOCALE_KU_ARAB_TR',   'Kurdish in Turkey (Arabic script)');
+define('_LOCALE_LV_LATN_LV',   'Latvian in Latvia');
+define('_LOCALE_NL_LATN_NL',   'Dutch in Netherlands');
+define('_LOCALE_PL_LATN_PL',   'Polish in Poland');
+define('_LOCALE_PT_LATN_BR',   'Portuguese in Brazil');
+define('_LOCALE_RO_LATN_RO',   'Romainan in Romania');
+define('_LOCALE_RU_CYRL_RU',   'Russian in Russia');
+define('_LOCALE_SK_LATN_SK',   'Slovak in Slovakia');
+define('_LOCALE_SR_CYRL_RS',   'Serbian in Serbia');
+define('_LOCALE_UR_ARAB_PK',   'Urdu in Pakistan');
+define('_LOCALE_VI_LATN_VN',   'Vietnamese in Vietnam (Latin script)');
+define('_LOCALE_ZH_HANS_CN',   'Chinese in China (simplified script)');
+define('_LOCALE_ZH_HANT_TW',   'Chinese in Taiwan (Traditional script)');
+
+define('_FORGOTPASSWORD_TITLE',                                'Forgot your password?');
+define('_FORGOTPASSWORD_MSG',                          'Enter your username and email address below, and you\'ll be sent an e-mail with a link where you can choose a new password.');
+define('_FORGOTPASSWORD_SUBMIT',                       'Send Activation Link" class="transparent');
+define('_FORGOTPASSWORD_CONTACT',                      'If you don\'t remember your exact username, contact the site administrator.');
+define('_SKINIE_INVALID_NAMES_DETECTED',       'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
+define('_LISTS_AUTHOR',                                                'Author');
+define('_OVERVIEW_OTHER_DRAFTS',                       'Other Drafts');
+define('_ERROR_BADADMINSKINNAME',                      'the name of skin for admin area must start with \'admin/\'.');
+define('_ERROR_BADADMINTEMPLATENAME',          'the name of template for admin area must start with \'admin/\'.');
+define('_SETTINGS_ADMINSKIN',                          'default skin for admin area');
+define('_SETTINGS_BKMKLTSKIN',                         'default skin for bookmarklet');
+define('_MEMBERS_BKMKLTSKIN',                          "bookmarklet skin");
+define('_ADMIN_SYSTEMOVERVIEW_VERSION_LATEST',         'The version which is being used is latest.');
+
 /********************************************
  *        Start New for 3.6x                *
  ********************************************/
@@ -187,13 +272,7 @@ define('_PLUGIN_OPTIONS_TITLE',                                                    'Options for %s');
 // Plugin file loda error
 define('_PLUGINFILE_COULDNT_BELOADED',                         'Error: plugin file <strong>%s.php</strong> could not be loaded, or it has been set inactive because it does not support some features (check the <a href="?action=actionlog">actionlog</a> for more info)');
 
-//ITEM add/edit template (for japanese only)
 define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
-define('_ITEM_ADDEDITTEMPLATE_YEAR',                           'Year');
-define('_ITEM_ADDEDITTEMPLATE_MONTH',                          'Month');
-define('_ITEM_ADDEDITTEMPLATE_DAY',                                    'Day');
-define('_ITEM_ADDEDITTEMPLATE_HOUR',                           'Hour');
-define('_ITEM_ADDEDITTEMPLATE_MINUTE',                         'Minute');
 
 // Errors
 define('_ERRORS_INSTALLSQL',                                           'install.sql should be deleted');
@@ -471,9 +550,6 @@ define('_ADD_ALIGNLEFT_TT',                 '
 define('_ADD_ALIGNRIGHT_TT',           'ÓÒ¶ÔÆë');
 define('_ADD_ALIGNCENTER_TT',          '¾ÓÖÐ');
 
-// searchable blog setting (yes/no)
-define('_EBLOG_SEARCH',                                'ËÑË÷ʱ°üÀ¨');
-
 // generic upload failure
 define('_ERROR_UPLOADFAILED',          'ÉÏÔØʧ°Ü');
 
@@ -760,7 +836,6 @@ define('_COMMENTFORM_YOUARE',               '
 define('_COMMENTFORM_SUBMIT',          'Ìí¼ÓÆÀÂÛ');
 define('_COMMENTFORM_COMMENT',         'ÄãµÄÆÀÂÛ');
 define('_COMMENTFORM_NAME',                    'Ãû×Ö');
-define('_COMMENTFORM_MAIL',                    'Óʼþ/ÍøÕ¾');
 define('_COMMENTFORM_REMEMBER',                'ÌáÐÑÎÒ');
 
 // loginform
@@ -787,7 +862,6 @@ define('_ADD_DISABLE_COMMENTS',             '
 define('_ADD_DRAFTNFUTURE',                    '²Ý¸å &amp; Î´À´ÏîÄ¿');
 define('_ADD_ADDITEM',                         'Ìí¼ÓÎÄÕÂ');
 define('_ADD_ADDNOW',                          'ÏÖÔÚÌí¼Ó');
-define('_ADD_ADDLATER',                                'ÒÔºóÌí¼Ó');
 define('_ADD_PLACE_ON',                                '»ýÔÜ');
 define('_ADD_ADDDRAFT',                                'Ìí¼Óµ½²Ý¸å');
 define('_ADD_NOPASTDATES',                     '£¨¹ýÈ¥µÄÈÕÆÚºÍʱ¼äÊÇÎÞЧµÄ£¬ÏµÍ³½«Ê¹Óõ±Ç°Ê±¼ä£©');
@@ -1131,8 +1205,6 @@ define('_BAN_ADD_BTN',                            '
 
 // LOGIN screen
 define('_LOGIN_MESSAGE',                       'ÏûÏ¢');
-define('_LOGIN_NAME',                          'Ãû×Ö');
-define('_LOGIN_PASSWORD',                      'ÃÜÂë');
 define('_LOGIN_SHARED',                                _LOGINFORM_SHARED);
 define('_LOGIN_FORGOT',                                'Íü¼ÇÃÜÂ룿');
 
@@ -1264,3 +1336,19 @@ define('_EDITC_NONMEMBER',                       '
 // move item
 define('_MOVE_TITLE',                          'Òƶ¯µ½ÄĸöÈÕÖ¾£¿');
 define('_MOVE_BTN',                                    'Òƶ¯ÎÄÕÂ');
+
+// ADMIN-template template types
+include_once('adminskinTypes.php');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_NAVILIST',          'navibar for item/comment list');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is blog ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is super ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin URL');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'API entry');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'eventlist updates');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency to');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency by');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'couldn\'t load file');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin actions');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin admin link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin help link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin option setting link');
index 9f3731d..3443848 100644 (file)
  * 
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2012 The Nucleus Group
+<<<<<<< HEAD
  * @version $Id: zh_Hans_CN.UTF-8.php 1868 2012-05-22 05:10:53Z sakamocchi $
+=======
+ * @version $Id: zh_Hans_CN.UTF-8.php 1887 2012-06-17 08:30:08Z sakamocchi $
+>>>>>>> skinnable-master
  */
 
 /********************************************
  *        Start New for 4.0                 *
  ********************************************/
-define('_SKINIE_INVALID_NAMES_DETECTED', 'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
-define('_LISTS_AUTHOR', 'Author');
-define('_OVERVIEW_OTHER_DRAFTS', 'Other Drafts');
+/* argument value for setlocale() in Microsoft's windows operating system */
+define('_LOCALE_IN_WINDOWS',   'chs_chn');
+
+/* labels for date and time measurement unit */
+define('_LABEL_YEAR_UNIT',             'year');
+define('_LABEL_MONTH_UNIT',            'month');
+define('_LABEL_DAY_UNIT',              'day');
+define('_LABEL_HOUR_UNIT',             'hour');
+define('_LABEL_MINUTE_UNIT',   'minute');
+
+// SkinableAdminArea vars
+define('_SKINABLEADMIN_DEL_UNINSTALL_DATA',                    'Delete ADMIN skin data table on uninstall?');
+define('_SKINABLEADMIN_DEFAULT_SKIN',                          'Choose a skin of the management area of the default.');
+define('_SKINABLEADMIN_MEMBER_DEFAULT_SKIN',           'Choose a skin of the management area of you use.');
+define('_SKINABLEADMIN_QMENU_LAYOUT',                          'Admin layout');
+define('_SKINABLEADMIN_PAGE_STR',                                      'page');
+define('_SKINABLEADMIN_BATCH_MOVE',                                    'Item move other category/Category move other blog');
+define('_SKINABLEADMIN_BATCH',                                         'batch');
+define('_SKINABLEADMIN_PAGEHEAD',                                      'Admin page head');
+define('_SKINABLEADMIN_PAGEFOOT',                                      'Admin page foot');
+define('_SKINABLEADMIN_TEMPLATEOVERVIEW',                      'Template overview');
+define('_SKINABLEADMIN_ADMINAREAHEADLINK',                     '[Your site]link');
+define('_SKINABLEADMIN_TPLSETTING_INGENERAL',          'In general');
+define('_SKINABLEADMIN_HEAD_STR',                                      ' head');
+define('_SKINABLEADMIN_BODY_STR',                                      ' body');
+define('_SKINABLEADMIN_FOOT_STR',                                      ' foot');
+define('_SKINABLEADMIN_TEXT_STR',                                      ' text');
+define('_SKINABLEADMIN_TITLE_STR',                                     ' title');
+define('_SKINABLEADMIN_ADMINSETTING_STR',                      ' set editmember is \'admin\'');
+define('_SKINABLEADMIN_NORMALSETTING_STR',                     ' normal');
+define('_SKINABLEADMIN_HELPICONURL_STR',                       ' icon URL');
+define('_SKINABLEADMIN_HELPFILEURL_STR',                       ' help file URL');
+define('_SKINABLEADMIN_ADMINSKINVAR_STR',                      ' skinvars');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_SELECT',      'selectbox used in ADMIN area');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE',       'Table for list indication');
+define('_SKINABLEADMIN_PLUGIN_QUICKMENU',                      'Link to admin page of the plugin shown to the quick-menu');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE',         'Template for option-type %s');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTMETA',         'Template for option-meta-data %s');
+define('_SKINABLEADMIN_MEMBERS_ADMINSKIN',                     "ADMIN-Area's skin");
+
+define('_LOCALE_BG_CYRL_BG',   'Bulgarian in Bulgaria');
+define('_LOCALE_CA_LATN_ES',   'Catalan in Spain');
+define('_LOCALE_CS_LATN_CZ',   'Czech in Czech Republic');
+define('_LOCALE_DE_LATN_DE',   'German in Germany');
+define('_LOCALE_EL_GREK_GR',   'Greek in Greece (Greek script)');
+define('_LOCALE_EN_LATN_US',   'English in United States');
+define('_LOCALE_ES_LATN_ES',   'Spanish in Spain');
+define('_LOCALE_FA_ARAB_IR',   'Persian in Islamic Republic of Iran');
+define('_LOCALE_FI_LATN_FI',   'Finnish in Finland');
+define('_LOCALE_FR_LATN_FR',   'French in France');
+define('_LOCALE_GL_LATN_ES',   'Galician in Spain');
+define('_LOCALE_HR_LATN_HR',   'Croatian in Croatia');
+define('_LOCALE_HU_LATN_HU',   'Hungarian in Hungary');
+define('_LOCALE_ID_LATN_ID',   'Indonesian in Indonesia (Latin script)');
+define('_LOCALE_IT_LATN_IT',   'Italian in Italy');
+define('_LOCALE_JA_JPAN_JP',   'Japanese in Japan');
+define('_LOCALE_KO_KORE_KR',   'Korean in Korea');
+define('_LOCALE_KU_ARAB_TR',   'Kurdish in Turkey (Arabic script)');
+define('_LOCALE_LV_LATN_LV',   'Latvian in Latvia');
+define('_LOCALE_NL_LATN_NL',   'Dutch in Netherlands');
+define('_LOCALE_PL_LATN_PL',   'Polish in Poland');
+define('_LOCALE_PT_LATN_BR',   'Portuguese in Brazil');
+define('_LOCALE_RO_LATN_RO',   'Romainan in Romania');
+define('_LOCALE_RU_CYRL_RU',   'Russian in Russia');
+define('_LOCALE_SK_LATN_SK',   'Slovak in Slovakia');
+define('_LOCALE_SR_CYRL_RS',   'Serbian in Serbia');
+define('_LOCALE_UR_ARAB_PK',   'Urdu in Pakistan');
+define('_LOCALE_VI_LATN_VN',   'Vietnamese in Vietnam (Latin script)');
+define('_LOCALE_ZH_HANS_CN',   'Chinese in China (simplified script)');
+define('_LOCALE_ZH_HANT_TW',   'Chinese in Taiwan (Traditional script)');
+
+define('_FORGOTPASSWORD_TITLE',                                'Forgot your password?');
+define('_FORGOTPASSWORD_MSG',                          'Enter your username and email address below, and you\'ll be sent an e-mail with a link where you can choose a new password.');
+define('_FORGOTPASSWORD_SUBMIT',                       'Send Activation Link" class="transparent');
+define('_FORGOTPASSWORD_CONTACT',                      'If you don\'t remember your exact username, contact the site administrator.');
+define('_SKINIE_INVALID_NAMES_DETECTED',       'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
+define('_LISTS_AUTHOR',                                                'Author');
+define('_OVERVIEW_OTHER_DRAFTS',                       'Other Drafts');
+define('_ERROR_BADADMINSKINNAME',                      'the name of skin for admin area must start with \'admin/\'.');
+define('_ERROR_BADADMINTEMPLATENAME',          'the name of template for admin area must start with \'admin/\'.');
+define('_SETTINGS_ADMINSKIN',                          'default skin for admin area');
+define('_SETTINGS_BKMKLTSKIN',                         'default skin for bookmarklet');
+define('_MEMBERS_BKMKLTSKIN',                          "bookmarklet skin");
+define('_ADMIN_SYSTEMOVERVIEW_VERSION_LATEST',         'The version which is being used is latest.');
+
 /********************************************
  *        Start New for 3.6x                *
  ********************************************/
@@ -187,13 +272,7 @@ define('_PLUGIN_OPTIONS_TITLE',                                                    'Options for %s');
 // Plugin file loda error
 define('_PLUGINFILE_COULDNT_BELOADED',                         'Error: plugin file <strong>%s.php</strong> could not be loaded, or it has been set inactive because it does not support some features (check the <a href="?action=actionlog">actionlog</a> for more info)');
 
-//ITEM add/edit template (for japanese only)
 define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
-define('_ITEM_ADDEDITTEMPLATE_YEAR',                           'Year');
-define('_ITEM_ADDEDITTEMPLATE_MONTH',                          'Month');
-define('_ITEM_ADDEDITTEMPLATE_DAY',                                    'Day');
-define('_ITEM_ADDEDITTEMPLATE_HOUR',                           'Hour');
-define('_ITEM_ADDEDITTEMPLATE_MINUTE',                         'Minute');
 
 // Errors
 define('_ERRORS_INSTALLSQL',                                           'install.sql should be deleted');
@@ -471,9 +550,6 @@ define('_ADD_ALIGNLEFT_TT',                 '左对齐');
 define('_ADD_ALIGNRIGHT_TT',           '右对齐');
 define('_ADD_ALIGNCENTER_TT',          '居中');
 
-// searchable blog setting (yes/no)
-define('_EBLOG_SEARCH',                                '搜索时包括');
-
 // generic upload failure
 define('_ERROR_UPLOADFAILED',          '上载失败');
 
@@ -760,7 +836,6 @@ define('_COMMENTFORM_YOUARE',               '你是');
 define('_COMMENTFORM_SUBMIT',          '添加评论');
 define('_COMMENTFORM_COMMENT',         '你的评论');
 define('_COMMENTFORM_NAME',                    '名字');
-define('_COMMENTFORM_MAIL',                    '邮件/网站');
 define('_COMMENTFORM_REMEMBER',                '提醒我');
 
 // loginform
@@ -787,7 +862,6 @@ define('_ADD_DISABLE_COMMENTS',             '关闭评论?');
 define('_ADD_DRAFTNFUTURE',                    '草稿 &amp; 未来项目');
 define('_ADD_ADDITEM',                         '添加文章');
 define('_ADD_ADDNOW',                          '现在添加');
-define('_ADD_ADDLATER',                                '以后添加');
 define('_ADD_PLACE_ON',                                '积攒');
 define('_ADD_ADDDRAFT',                                '添加到草稿');
 define('_ADD_NOPASTDATES',                     '(过去的日期和时间是无效的,系统将使用当前时间)');
@@ -1131,8 +1205,6 @@ define('_BAN_ADD_BTN',                            '添加封锁');
 
 // LOGIN screen
 define('_LOGIN_MESSAGE',                       '消息');
-define('_LOGIN_NAME',                          '名字');
-define('_LOGIN_PASSWORD',                      '密码');
 define('_LOGIN_SHARED',                                _LOGINFORM_SHARED);
 define('_LOGIN_FORGOT',                                '忘记密码?');
 
@@ -1264,3 +1336,19 @@ define('_EDITC_NONMEMBER',                       '非会员');
 // move item
 define('_MOVE_TITLE',                          '移动到哪个日志?');
 define('_MOVE_BTN',                                    '移动文章');
+
+// ADMIN-template template types
+include_once('adminskinTypes.php');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_NAVILIST',          'navibar for item/comment list');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is blog ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is super ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin URL');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'API entry');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'eventlist updates');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency to');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency by');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'couldn\'t load file');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin actions');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin admin link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin help link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin option setting link');
index af7ec34..a068c26 100644 (file)
  * 
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2012 The Nucleus Group
+<<<<<<< HEAD
  * @version $Id: zh_Hant_TW.UTF-8.php 1868 2012-05-22 05:10:53Z sakamocchi $
+=======
+ * @version $Id: zh_Hant_TW.UTF-8.php 1887 2012-06-17 08:30:08Z sakamocchi $
+>>>>>>> skinnable-master
  */
 
 /********************************************
  *        Start New for 4.0                 *
  ********************************************/
-define('_SKINIE_INVALID_NAMES_DETECTED', 'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
-define('_LISTS_AUTHOR', 'Author');
-define('_OVERVIEW_OTHER_DRAFTS', 'Other Drafts');
+/* argument value for setlocale() in Microsoft's windows operating system */
+define('_LOCALE_IN_WINDOWS',   'cht_twn');
+
+/* labels for date and time measurement unit */
+define('_LABEL_YEAR_UNIT',             'year');
+define('_LABEL_MONTH_UNIT',            'month');
+define('_LABEL_DAY_UNIT',              'day');
+define('_LABEL_HOUR_UNIT',             'hour');
+define('_LABEL_MINUTE_UNIT',   'minute');
+
+// SkinableAdminArea vars
+define('_SKINABLEADMIN_DEL_UNINSTALL_DATA',                    'Delete ADMIN skin data table on uninstall?');
+define('_SKINABLEADMIN_DEFAULT_SKIN',                          'Choose a skin of the management area of the default.');
+define('_SKINABLEADMIN_MEMBER_DEFAULT_SKIN',           'Choose a skin of the management area of you use.');
+define('_SKINABLEADMIN_QMENU_LAYOUT',                          'Admin layout');
+define('_SKINABLEADMIN_PAGE_STR',                                      'page');
+define('_SKINABLEADMIN_BATCH_MOVE',                                    'Item move other category/Category move other blog');
+define('_SKINABLEADMIN_BATCH',                                         'batch');
+define('_SKINABLEADMIN_PAGEHEAD',                                      'Admin page head');
+define('_SKINABLEADMIN_PAGEFOOT',                                      'Admin page foot');
+define('_SKINABLEADMIN_TEMPLATEOVERVIEW',                      'Template overview');
+define('_SKINABLEADMIN_ADMINAREAHEADLINK',                     '[Your site]link');
+define('_SKINABLEADMIN_TPLSETTING_INGENERAL',          'In general');
+define('_SKINABLEADMIN_HEAD_STR',                                      ' head');
+define('_SKINABLEADMIN_BODY_STR',                                      ' body');
+define('_SKINABLEADMIN_FOOT_STR',                                      ' foot');
+define('_SKINABLEADMIN_TEXT_STR',                                      ' text');
+define('_SKINABLEADMIN_TITLE_STR',                                     ' title');
+define('_SKINABLEADMIN_ADMINSETTING_STR',                      ' set editmember is \'admin\'');
+define('_SKINABLEADMIN_NORMALSETTING_STR',                     ' normal');
+define('_SKINABLEADMIN_HELPICONURL_STR',                       ' icon URL');
+define('_SKINABLEADMIN_HELPFILEURL_STR',                       ' help file URL');
+define('_SKINABLEADMIN_ADMINSKINVAR_STR',                      ' skinvars');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_SELECT',      'selectbox used in ADMIN area');
+define('_SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE',       'Table for list indication');
+define('_SKINABLEADMIN_PLUGIN_QUICKMENU',                      'Link to admin page of the plugin shown to the quick-menu');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTTYPE',         'Template for option-type %s');
+define('_SKINABLEADMIN_PLUGIN_PLGOPT_OPTMETA',         'Template for option-meta-data %s');
+define('_SKINABLEADMIN_MEMBERS_ADMINSKIN',                     "ADMIN-Area's skin");
+
+define('_LOCALE_BG_CYRL_BG',   'Bulgarian in Bulgaria');
+define('_LOCALE_CA_LATN_ES',   'Catalan in Spain');
+define('_LOCALE_CS_LATN_CZ',   'Czech in Czech Republic');
+define('_LOCALE_DE_LATN_DE',   'German in Germany');
+define('_LOCALE_EL_GREK_GR',   'Greek in Greece (Greek script)');
+define('_LOCALE_EN_LATN_US',   'English in United States');
+define('_LOCALE_ES_LATN_ES',   'Spanish in Spain');
+define('_LOCALE_FA_ARAB_IR',   'Persian in Islamic Republic of Iran');
+define('_LOCALE_FI_LATN_FI',   'Finnish in Finland');
+define('_LOCALE_FR_LATN_FR',   'French in France');
+define('_LOCALE_GL_LATN_ES',   'Galician in Spain');
+define('_LOCALE_HR_LATN_HR',   'Croatian in Croatia');
+define('_LOCALE_HU_LATN_HU',   'Hungarian in Hungary');
+define('_LOCALE_ID_LATN_ID',   'Indonesian in Indonesia (Latin script)');
+define('_LOCALE_IT_LATN_IT',   'Italian in Italy');
+define('_LOCALE_JA_JPAN_JP',   'Japanese in Japan');
+define('_LOCALE_KO_KORE_KR',   'Korean in Korea');
+define('_LOCALE_KU_ARAB_TR',   'Kurdish in Turkey (Arabic script)');
+define('_LOCALE_LV_LATN_LV',   'Latvian in Latvia');
+define('_LOCALE_NL_LATN_NL',   'Dutch in Netherlands');
+define('_LOCALE_PL_LATN_PL',   'Polish in Poland');
+define('_LOCALE_PT_LATN_BR',   'Portuguese in Brazil');
+define('_LOCALE_RO_LATN_RO',   'Romainan in Romania');
+define('_LOCALE_RU_CYRL_RU',   'Russian in Russia');
+define('_LOCALE_SK_LATN_SK',   'Slovak in Slovakia');
+define('_LOCALE_SR_CYRL_RS',   'Serbian in Serbia');
+define('_LOCALE_UR_ARAB_PK',   'Urdu in Pakistan');
+define('_LOCALE_VI_LATN_VN',   'Vietnamese in Vietnam (Latin script)');
+define('_LOCALE_ZH_HANS_CN',   'Chinese in China (simplified script)');
+define('_LOCALE_ZH_HANT_TW',   'Chinese in Taiwan (Traditional script)');
+
+define('_FORGOTPASSWORD_TITLE',                                'Forgot your password?');
+define('_FORGOTPASSWORD_MSG',                          'Enter your username and email address below, and you\'ll be sent an e-mail with a link where you can choose a new password.');
+define('_FORGOTPASSWORD_SUBMIT',                       'Send Activation Link" class="transparent');
+define('_FORGOTPASSWORD_CONTACT',                      'If you don\'t remember your exact username, contact the site administrator.');
+define('_SKINIE_INVALID_NAMES_DETECTED',       'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
+define('_LISTS_AUTHOR',                                                'Author');
+define('_OVERVIEW_OTHER_DRAFTS',                       'Other Drafts');
+define('_ERROR_BADADMINSKINNAME',                      'the name of skin for admin area must start with \'admin/\'.');
+define('_ERROR_BADADMINTEMPLATENAME',          'the name of template for admin area must start with \'admin/\'.');
+define('_SETTINGS_ADMINSKIN',                          'default skin for admin area');
+define('_SETTINGS_BKMKLTSKIN',                         'default skin for bookmarklet');
+define('_MEMBERS_BKMKLTSKIN',                          "bookmarklet skin");
+define('_ADMIN_SYSTEMOVERVIEW_VERSION_LATEST',         'The version which is being used is latest.');
+
 /********************************************
  *        Start New for 3.6x                *
  ********************************************/
@@ -186,13 +271,7 @@ define('_PLUGIN_OPTIONS_TITLE',                                                    'Options for %s');
 // Plugin file loda error
 define('_PLUGINFILE_COULDNT_BELOADED',                         'Error: plugin file <strong>%s.php</strong> could not be loaded, or it has been set inactive because it does not support some features (check the <a href="?action=actionlog">actionlog</a> for more info)');
 
-//ITEM add/edit template (for japanese only)
 define('_ITEM_ADDEDITTEMPLATE_FORMAT',                         'Format :');
-define('_ITEM_ADDEDITTEMPLATE_YEAR',                           'Year');
-define('_ITEM_ADDEDITTEMPLATE_MONTH',                          'Month');
-define('_ITEM_ADDEDITTEMPLATE_DAY',                                    'Day');
-define('_ITEM_ADDEDITTEMPLATE_HOUR',                           'Hour');
-define('_ITEM_ADDEDITTEMPLATE_MINUTE',                         'Minute');
 
 // Errors
 define('_ERRORS_INSTALLSQL',                                           'install.sql should be deleted');
@@ -470,9 +549,6 @@ define('_ADD_ALIGNLEFT_TT',                 '左對齊');
 define('_ADD_ALIGNRIGHT_TT',           '右對齊');
 define('_ADD_ALIGNCENTER_TT',          '居中');
 
-// searchable blog setting (yes/no)
-define('_EBLOG_SEARCH',                                '搜索時包括');
-
 // generic upload failure
 define('_ERROR_UPLOADFAILED',          '上載失敗');
 
@@ -759,7 +835,6 @@ define('_COMMENTFORM_YOUARE',               '你是');
 define('_COMMENTFORM_SUBMIT',          '添加評論');
 define('_COMMENTFORM_COMMENT',         '你的評論');
 define('_COMMENTFORM_NAME',                    '名字');
-define('_COMMENTFORM_MAIL',                    '郵件/網站');
 define('_COMMENTFORM_REMEMBER',                '提醒我');
 
 // loginform
@@ -786,7 +861,6 @@ define('_ADD_DISABLE_COMMENTS',             '關閉評論?');
 define('_ADD_DRAFTNFUTURE',                    '草稿 &amp; 未來項目');
 define('_ADD_ADDITEM',                         '添加文章');
 define('_ADD_ADDNOW',                          '現在添加');
-define('_ADD_ADDLATER',                                '以後添加');
 define('_ADD_PLACE_ON',                                '設定時間');
 define('_ADD_ADDDRAFT',                                '添加到草稿');
 define('_ADD_NOPASTDATES',                     '(過去的日期和時間是無效的,系統將使用當前時間)');
@@ -1130,8 +1204,6 @@ define('_BAN_ADD_BTN',                            '添加封鎖');
 
 // LOGIN screen
 define('_LOGIN_MESSAGE',                       '消息');
-define('_LOGIN_NAME',                          '名字');
-define('_LOGIN_PASSWORD',                      '密碼');
 define('_LOGIN_SHARED',                                _LOGINFORM_SHARED);
 define('_LOGIN_FORGOT',                                '忘記密碼?');
 
@@ -1263,3 +1335,19 @@ define('_EDITC_NONMEMBER',                       '非會員');
 // move item
 define('_MOVE_TITLE',                          '移動到哪個日誌?');
 define('_MOVE_BTN',                                    '移動文章');
+
+// ADMIN-template template types
+include_once('adminskinTypes.php');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_NAVILIST',          'navibar for item/comment list');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is blog ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM',  _SKINABLEADMIN_ADMINSKINVAR_STR . ' [yrbloglist] member is super ADMIN');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin URL');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'API entry');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'eventlist updates');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency to');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'dependency by');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'couldn\'t load file');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin actions');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin admin link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin help link');
+define('_ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL',  _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY . 'plugin option setting link');
diff --git a/nucleus/plugins/NP_Medium.php b/nucleus/plugins/NP_Medium.php
new file mode 100644 (file)
index 0000000..99e7e57
--- /dev/null
@@ -0,0 +1,428 @@
+<?php
+class NP_Medium extends NucleusPlugin
+{
+       private $skin = '';
+       
+       public $type = '';
+       
+       public $collection = '';
+       public $description = '';
+       public $filter = '';
+       public $message = '';
+       
+       public $amount = 0;
+       public $media = array();
+       public $offset = 0;
+       public $prev = 0;
+       public $next = 0;
+       
+       public function getName()
+       {
+               return 'Medium';
+       }
+       
+       public function getAuthor()
+       {
+               return 'Sakamoto Takashi';
+       }
+       
+       public function getURL()
+       {
+               return '';
+       }
+       
+       public function getVersion()
+       {
+               return '0.9(beta)';
+       }
+       
+       public function getMinNucleusVersion()
+       {
+               return '400';
+       }
+       
+       public function getDescription()
+       {
+               return NP_MEDIUM_DESC;
+       }
+       
+       public function supportsFeature($what)
+       {
+               return ( $what == 'SqlTablePrefix' );
+       }
+       
+       public function getEventList()
+       {
+               return array('AdminPrePageHead', 'AdminTemplateExtraFields');
+       }
+       
+       public function init()
+       {
+               // include translation file for this plugin
+               if ( file_exists($this->getDirectory() . 'locales/' . i18n::get_current_locale() . '.' . i18n::get_current_charset() . '.php') )
+               {
+                       include_once($this->getDirectory() . 'locales/' . i18n::get_current_locale() . '.' . i18n::get_current_charset() . '.php');
+               }
+               else
+               {
+                       include_once($this->getDirectory() . 'locales/en_Latn_US.UTF-8.php');
+               }
+               return;
+       }
+       
+       public function install()
+       {
+               $this->createOption('collectionlist_head', 'NP_MEDIUM_COLLECTIONLIST_HEAD', 'textarea',
+                         "<label for=\"media_collection\">"
+                       . "<%text(_MEDIA_COLLECTION_LABEL)%>"
+                       . "</label>"
+                       . "<select name=\"collection\" id=\"media_collection\">\n");
+               
+               $this->createOption('collectionlist_body', 'NP_MEDIUM_COLLECTIONLIST_BODY', 'textarea',
+                         "<option value=\"<%name%>\" <%selected%>>"
+                       . "<%desc%>"
+                       . "</option>\n");
+                       
+               $this->createOption('collectionlist_foot', 'NP_MEDIUM_COLLECTIONLIST_FOOT', 'textarea',
+                       "</select>\n");
+               
+               $this->createOption('medialist_head', 'NP_MEDIUM_MEDIALIST_HEAD', 'textarea',
+                         "<table frame=\"box\" rules=\"frame\" sumary=\"<%text(Media List)%>\">\n"
+                       . "<caption><%text(_MEDIA_COLLECTION_LABEL)%> <%description%></caption>\n"
+                       . "<thead>\n"
+                       . "<tr>\n"
+                       . "<th><%text(_MEDIA_MODIFIED)%></th>\n"
+                       . "<th><%text(_MEDIA_FILENAME)%></th>\n"
+                       . "<th><%text(_MEDIA_DIMENSIONS)%></th>\n"
+                       . "</tr>\n"
+                       . "</thead>\n"
+                       . "<tbody>\n");
+               
+               $this->createOption('medialist_body_image', 'NP_MEDIUM_MEDIALIST_BODY_IMAGE', 'textarea',
+                         "<tr>\n"
+                       . "<td><%timestamp%></td>\n"
+                       . "<td>\n"
+                       . "<a href=\"<%mediumurl%>\" onclick=\"medium.chooseImage('<%collection%>', '<%filename%>', <%width%>, <%height%>);\" title=\"<%filename%>\">\n"
+                       . "<%shortfilename%>\n"
+                       . "</a>\n"
+                       . "(\n"
+                       . "<a href=\"<%mediumurl%>\" onclick=\"window.open(this.href); return false;\" title=\"<%text(_MEDIA_VIEW_TT%>\">\n"
+                       . "<%text(_MEDIA_VIEW)%>\n"
+                       . "</a>\n"
+                       . ")\n"
+                       . "</td>\n"
+                       . "<td><%width%> x <%height%></td>\n"
+                       . "</tr>\n");
+               
+               $this->createOption('medialist_body_other', 'NP_MEDIUM_MEDIALIST_BODY_OTHER', 'textarea',
+                         "<tr>\n"
+                       . "<td><%timestamp%></td>\n"
+                       . "<td>\n"
+                       . "<a href=\"<%mediumurl%>\" onclick=\"medium.chooseOther('<%collection%>', '<%filename%>');\" title=\"<%filename%>\">\n"
+                       . "<%shortfilename%>\n"
+                       . "</a>\n"
+                       . "</td>\n"
+                       . "<td><%size%> KB</td>\n"
+                       . "</tr>\n");
+               
+               $this->createOption('medialist_foot', 'NP_MEDIUM_MEDIALIST_FOOT', 'textarea',
+                         "</tbody>\n"
+                       . "</table>\n");
+               
+               $this->createOption('medialist_blank', 'NP_MEDIUM_MEDIALIST_BLANK', 'textarea',
+                         "<p>Nothing</p>\n");
+               
+               return;
+       }
+       
+       public function event_AdminPrePageHead(&$data)
+       {
+               global $CONF;
+               
+               if ( !in_array($data['action'], array('createitem', 'itemedit')) )
+               {
+                       return;
+               }
+               
+               $data['extrahead'] .= "<script type=\"text/javascript\" src=\"{$CONF['PluginURL']}/medium/scripts/medium.js\"></script>\n"
+                                   . "<script type=\"text/javascript\">\n"
+                                   . " medium.url = '{$CONF['ActionURL']}?action=plugin&name=medium';\n"
+                                   . '</script>'."\n";
+               
+               return;
+       }
+       
+       public function doAction($type)
+       {
+               global $CONF, $DIR_MEDIA, $manager, $member;
+               
+               /*
+                * defines how much media items will be shown per page. You can override this
+                * in config.php if you like. (changing it in config.php instead of here will
+                * allow your settings to be kept even after a Nucleus upgrade)
+                */
+               $CONF['MediaPerPage'] = 10;
+               
+               /* include all classes */
+               if ( !class_exists('Media', FALSE) )
+               {
+                       include_libs('MEDIA.php', FALSE, FALSE);
+               }
+               
+               /* include all classes */
+               if ( !class_exists('BaseActions', FALSE) )
+               {
+                       include_libs('BaseActions.php', FALSE, FALSE);
+               }
+               
+               if ( !class_exists('MediumActions', FALSE) )
+               {
+                       include($this->getDirectory() . 'MediumActions.php');
+               }
+               
+               /* get skin object */
+               $skinid = $CONF['AdminSkin'];
+               if ( !Skin::existsID($skinid) )
+               {
+                       echo _ERROR_SKIN;
+                       exit;
+               }
+               $this->skin = new Skin($skinid, 'MediumActions', 'MediumSkin');
+               
+               /* user needs to be logged in to use this */
+               if ( !$member->isLoggedIn() )
+               {
+                       $this->login();
+                       exit;
+               }
+               
+               /* check if member is on at least one teamlist */
+               $query = 'SELECT * FROM %s WHERE tmember=%d;';
+               $query = sprintf($query, sql_table('team'), $member->getID());
+               $teams = DB::getResult($query);
+               if ( $teams->rowCount() == 0 && !$member->isAdmin() )
+               {
+                       $this->error(_ERROR_DISALLOWEDUPLOAD);
+                       return;
+               }
+               
+               /* avoid directory travarsal and accessing invalid directory */
+               $this->collection = requestVar('collection');
+               $this->description = $this->collection;
+               if ( !$this->collection || $this->collection == $member->getID()
+                  || !@is_dir("{$DIR_MEDIA}{$this->collection}") )
+               {
+                       $this->collection = $member->getID();
+                       $this->description = PRIVATE_COLLECTION;
+               }
+               else if ( !Media::isValidCollection($this->collection) )
+               {
+                       $this->error(_ERROR_DISALLOWED);
+                       return;
+               }
+               
+               /* check type */
+               if ( !in_array($type, array('select', 'choose', 'upload')) )
+               {
+                       $type = 'select';
+               }
+               
+               /* check ticket */
+               $needless_to_check = array('select', 'choose');
+               if ( !in_array($type, $needless_to_check) )
+               {
+                       if ( !$manager->checkTicket() )
+                       {
+                               $this->error(_ERROR_BADTICKET);
+                       return;
+                       }
+               }
+               
+               /* processing */
+               switch ( $type )
+               {
+               case 'choose':
+                       if ( !$member->isAdmin() && !$CONF['AllowUpload'] )
+                       {
+                               $this->error(_ERROR_DISALLOWED);
+                               return;
+                       }
+                       $this->choose();
+                       break;
+               case 'upload':
+                       if ( !$member->isAdmin() && !$CONF['AllowUpload'] )
+                       {
+                               $this->error(_ERROR_DISALLOWED);
+                               return;
+                       }
+                       $this->upload();
+                       break;
+               case 'select':
+               default:
+                       $this->select();
+                       break;
+               }
+               exit;
+       }
+       
+       private function select()
+       {
+               global $CONF;
+               
+               $this->type = 'select';
+               $this->filter = requestVar('filter');
+               
+               $media = Media::getMediaListByCollection($this->collection, $this->filter);
+               
+               $this->amount = count($media);
+               $this->offset = intRequestVar('offset');
+               
+               if ( $this->amount > 0 )
+               {
+                       if ( ($this->offset + $CONF['MediaPerPage']) >= $this->amount )
+                       {
+                               $this->offset = $this->amount - $CONF['MediaPerPage'];
+                       }
+                       
+                       if ( $this->offset < 0 )
+                       {
+                               $this->offset = 0;
+                       }
+                       
+                       $start = $this->offset;
+                       $end = $this->offset + $CONF['MediaPerPage'];
+                       $next = $end;
+                       $prev = $start - $CONF['MediaPerPage'];
+                       
+                       if ( $prev < 0 )
+                       {
+                               $prev = 0;
+                       }
+                       
+                       if ( $end > $this->amount )
+                       {
+                               $end = $this->amount;
+                       }
+                       
+                       if ( $start > 0 )
+                       {
+                               $this->prev = $prev;
+                       }
+                       
+                       if ( $end < $this->amount )
+                       {
+                               $this->next = $next;
+                       }
+                       
+                       for( $index = $start; $index < $end; $index++ )
+                       {
+                               $this->media[] = $media[$index];
+                       }
+                       
+                       unset($media);
+               }
+               
+               $this->skin->parse('fileparse', $this->getDirectory() . 'skins/select.skn');
+               return;
+       }
+       
+       private function choose()
+       {
+               $this->type = 'choose';
+               $this->skin->parse('fileparse', $this->getDirectory() . 'skins/choose.skn');
+       }
+       
+       private function upload()
+       {
+               global $CONF;
+               
+               $this->type = 'upload';
+               
+               $uploadInfo = postFileInfo('uploadfile');
+               
+               $filename = $uploadInfo['name'];
+               $filetype = $uploadInfo['type'];
+               $filesize = $uploadInfo['size'];
+               $filetempname = $uploadInfo['tmp_name'];
+               $fileerror = (integer) $uploadInfo['error'];
+               
+               switch ( $fileerror )
+               {
+                       // include error code for debugging
+                       // (see http://www.php.net/manual/en/features.file-upload.errors.php)
+                       case 0:         // = UPLOAD_ERR_OK
+                               break;
+                       case 1:         // = UPLOAD_ERR_INI_SIZE
+                       case 2:         // = UPLOAD_ERR_FORM_SIZE
+                               $this->error(_ERROR_FILE_TOO_BIG);
+                               return;
+                       case 3:         // = UPLOAD_ERR_PARTIAL
+                       case 4:         // = UPLOAD_ERR_NO_FILE
+                       case 6:         // = UPLOAD_ERR_NO_TMP_DIR
+                       case 7:         // = UPLOAD_ERR_CANT_WRITE
+                       default:
+                               $this->error(_ERROR_BADREQUEST . ' (' . $fileerror . ')');
+                               return;
+               }
+               
+               if ( $filesize > $CONF['MaxUploadSize'] )
+               {
+                       $this->error(_ERROR_FILE_TOO_BIG);
+                       return;
+               }
+               
+               // check file type against allowed types
+               $ok = 0;
+               $allowedtypes = preg_split('#,#', $CONF['AllowedTypes']);
+               foreach ( $allowedtypes as $type )
+               {
+                       if ( preg_match("#.{$type}$#i", $filename) )
+                       {
+                               $ok = 1;
+                       }
+               }
+               if ( !$ok )
+               {
+                       $this->error(_ERROR_BADFILETYPE);
+                       return;
+               }
+               
+               if ( !is_uploaded_file($filetempname) )
+               {
+                       $this->error(_ERROR_BADREQUEST);
+                       return;
+               }
+               // prefix filename with current date (YYYY-MM-DD-)
+               // this to avoid nameclashes
+               if ( $CONF['MediaPrefix'] )
+               {
+                       $filename = i18n::formatted_datetime("%Y%m%d-", time()) . $filename;
+               }
+               
+               $res = Media::addMediaObject($this->collection, $filetempname, $filename);
+               
+               if ( $res != '' )
+               {
+                       $this->error($res);
+                       return;
+               }
+               
+               $this->select();
+               return;
+       }
+       
+       private function login()
+       {
+               $this->type = 'login';
+               $this->skin->parse('fileparse', $this->getDirectory() . 'skins/login.skn');
+               return;
+       }
+       
+       private function error($msg)
+       {
+               $this->type = 'error';
+               $this->message = $msg;
+               $this->skin->parse('fileparse', $this->getDirectory() . 'skins/error.skn');
+               return;
+       }
+}
index d097cc3..2be8b04 100644 (file)
@@ -111,7 +111,7 @@ class NP_Ping extends NucleusPlugin
                return;
        }
        
-       public function event_JustPosted($data)
+       public function event_JustPosted(&$data)
        {
                global $DIR_PLUGINS, $DIR_NUCLEUS;
                
@@ -138,13 +138,13 @@ class NP_Ping extends NucleusPlugin
                return;
        }
        
-       public function event_PostAddItem($data)
+       public function event_PostAddItem(&$data)
        {
                $this->_sendPingCheck($data['itemid']);
                return ;
        }
        
-       public function event_PostUpdateItem($data)
+       public function event_PostUpdateItem(&$data)
        {
                $this->_sendPingCheck($data['itemid']);
                return;
index 0d18525..ca5017c 100644 (file)
@@ -14,7 +14,11 @@ This program is distributed in the hope that it will be useful, but WITHOUT ANY
 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 PARTICULAR PURPOSE. See the GNU General Public License for more details.
 
+<<<<<<< HEAD
 * @version $Id: NP_SecurityEnforcer.php 1721 2012-03-31 10:18:25Z sakamocchi $
+=======
+* @version $Id: NP_SecurityEnforcer.php 1874 2012-06-17 07:27:38Z sakamocchi $
+>>>>>>> skinnable-master
 */
 class NP_SecurityEnforcer extends NucleusPlugin
 {
@@ -85,7 +89,11 @@ class NP_SecurityEnforcer extends NucleusPlugin
                $this->createOption('login_lockout',            '_SECURITYENFORCER_OPT_LOGIN_LOCKOUT',          'text', '15');
                
                // create needed tables
+<<<<<<< HEAD
                DB::execute("CREATE TABLE IF NOT EXISTS ". sql_table('plug_securityenforcer').
+=======
+               DB::execute('CREATE TABLE IF NOT EXISTS '. sql_table('plug_securityenforcer').
+>>>>>>> skinnable-master
                                        " (login varchar(255),
                                           fails int(11) NOT NULL default '0',
                                           lastfail bigint NOT NULL default '0',
@@ -123,7 +131,7 @@ class NP_SecurityEnforcer extends NucleusPlugin
                return;
        }
        
-       public function event_QuickMenu($data)
+       public function event_QuickMenu(&$data)
        {
                // only show when option enabled
                global $member;
@@ -143,7 +151,7 @@ class NP_SecurityEnforcer extends NucleusPlugin
                return;
        }
        
-       public function event_PrePasswordSet($data)
+       public function event_PrePasswordSet(&$data)
        {
                //password, errormessage, valid
                if ( $this->enable_security == 'no' )
@@ -172,7 +180,7 @@ class NP_SecurityEnforcer extends NucleusPlugin
                return;
        }
        
-       public function event_PostRegister($data)
+       public function event_PostRegister(&$data)
        {
                if ( $this->enable_security != 'yes' )
                {
@@ -192,7 +200,7 @@ class NP_SecurityEnforcer extends NucleusPlugin
                return;
        }
        
-       public function event_CustomLogin($data)
+       public function event_CustomLogin(&$data)
        {
                if ( $this->enable_security != 'yes' || $this->max_failed_login <= 0 )
                {
@@ -203,12 +211,26 @@ class NP_SecurityEnforcer extends NucleusPlugin
                global $_SERVER;
                $login = $data['login'];
                $ip = $_SERVER['REMOTE_ADDR'];
+<<<<<<< HEAD
                DB::execute("DELETE FROM " . sql_table('plug_securityenforcer') . " WHERE lastfail < " . (time() - ($this->login_lockout * 60)));
                $query = "SELECT fails as result FROM " . sql_table('plug_securityenforcer') . " ";
                $query .= 'WHERE login=' . DB::quoteValue($login);
                $flogin = DB::getValue($query); 
                $query = "SELECT fails as result FROM " . sql_table('plug_securityenforcer') . " ";
                $query .= 'WHERE login=' . DB::quoteValue($ip);
+=======
+               
+               $query = "DELETE FROM %s WHERE lastfail < %d;";
+               $query = sprintf($query, sql_table('plug_securityenforcer'), (integer) (time() - ($this->login_lockout * 60)));
+               DB::execute($query);
+               
+               $query = "SELECT fails as result FROM %s WHERE login=%s;";
+               $query = sprintf($query, sql_table('plug_securityenforcer'), DB::quoteValue($login));
+               $flogin = DB::getValue($query); 
+               
+               $query = "SELECT fails as result FROM %s WHERE login=%s;";
+               $query = sprintf($query, sql_table('plug_securityenforcer'), DB::quoteValue($ip));
+>>>>>>> skinnable-master
                $fip = DB::getValue($query); 
                
                if ( $flogin >= $this->max_failed_login || $fip >= $this->max_failed_login )
@@ -221,7 +243,7 @@ class NP_SecurityEnforcer extends NucleusPlugin
                return;
        }
        
-       public function event_LoginSuccess($data)
+       public function event_LoginSuccess(&$data)
        {
                //member(obj),username
                if ( $this->enable_security != 'yes' || $this->max_failed_login <= 0 )
@@ -231,12 +253,17 @@ class NP_SecurityEnforcer extends NucleusPlugin
                global $_SERVER;
                $login = $data['username'];
                $ip = $_SERVER['REMOTE_ADDR'];
+<<<<<<< HEAD
                DB::execute("DELETE FROM " . sql_table('plug_securityenforcer') . " WHERE login=" . DB::quoteValue($login));
                DB::execute("DELETE FROM " . sql_table('plug_securityenforcer') . " WHERE login=" . DB::quoteValue($ip));
+=======
+               DB::execute('DELETE FROM ' . sql_table('plug_securityenforcer') . ' WHERE login=' . DB::quoteValue($login));
+               DB::execute('DELETE FROM ' . sql_table('plug_securityenforcer') . ' WHERE login=' . DB::quoteValue($ip));
+>>>>>>> skinnable-master
                return;
        }
        
-       public function event_LoginFailed($data)
+       public function event_LoginFailed(&$data)
        {
                //username
                if ( $this->enable_security != 'yes' || $this->max_failed_login <= 0 )
@@ -246,6 +273,7 @@ class NP_SecurityEnforcer extends NucleusPlugin
                global $_SERVER;
                $login = $data['username'];
                $ip = $_SERVER['REMOTE_ADDR'];
+<<<<<<< HEAD
                $lres = DB::getValue("SELECT * FROM " . sql_table('plug_securityenforcer') . ' WHERE login=' . DB::quoteValue($login));
                if ( $lres )
                {
@@ -263,6 +291,25 @@ class NP_SecurityEnforcer extends NucleusPlugin
                else
                {
                        DB::execute("INSERT INTO " . sql_table('plug_securityenforcer') . ' (login,fails,lastfail) VALUES (' . DB::quoteValue($ip) . ',1,' . time() . ')');
+=======
+               $lres = DB::getResult('SELECT * FROM ' . sql_table('plug_securityenforcer') . ' WHERE login=' . DB::quoteValue($login));
+               if ( $lres->rowCount() > 0 )
+               {
+                       DB::execute('UPDATE ' . sql_table('plug_securityenforcer') . ' SET fails=fails+1, lastfail=' . time() . ' WHERE login=' . DB::quoteValue($login));
+               }
+               else
+               {
+                       DB::execute('INSERT INTO ' . sql_table('plug_securityenforcer') . ' (login,fails,lastfail) VALUES (' . DB::quoteValue($login) . ',1,' . time() . ')');
+               }
+               $lres = DB::getResult('SELECT * FROM ' . sql_table('plug_securityenforcer') . ' WHERE login=' . DB::quoteValue($ip));
+               if ( $lres->rowCount() > 0 )
+               {
+                       DB::execute('UPDATE ' . sql_table('plug_securityenforcer') . ' SET fails=fails+1, lastfail=' . time() . ' WHERE login=' . DB::quoteValue($ip));
+               }
+               else
+               {
+                       DB::execute('INSERT INTO ' . sql_table('plug_securityenforcer') . ' (login,fails,lastfail) VALUES (' . DB::quoteValue($ip) . ',1,' . time() . ')');
+>>>>>>> skinnable-master
                }
                return;
        }
@@ -271,6 +318,7 @@ class NP_SecurityEnforcer extends NucleusPlugin
        {
                $minlength = intval($minlength);
                $complexity = intval($complexity);
+               $message = '';
                
                if ( $minlength < 6 )
                {
@@ -286,17 +334,24 @@ class NP_SecurityEnforcer extends NucleusPlugin
                        $complexity = 4;
                }
                
+<<<<<<< HEAD
                $ucchars        = "[A-Z]";
                $lcchars        = "[a-z]";
                $numchars       = "[0-9]";
                $ochars         = "[-~!@#$%^&*()_+=,.<>?:;|]";
+=======
+               $ucchars        = '[A-Z]';
+               $lcchars        = '[a-z]';
+               $numchars       = '[0-9]';
+               $ochars         = '[#-~!@\\$%^&*()_+=,.<>?:;|]';
+>>>>>>> skinnable-master
                $chartypes      = array($ucchars, $lcchars, $numchars, $ochars);
                $tot            = array(0,0,0,0);
                $i                      = 0;
                
                foreach ( $chartypes as $value )
                {
-                       $tot[$i] = preg_match("#{$value}#", $passwd);
+                       $tot[$i] = preg_match("/" . $value . "/", $passwd);
                        $i = $i + 1;
                }
                
index d5081d8..ad88a68 100644 (file)
@@ -7,7 +7,11 @@ class NP_SkinFiles extends NucleusPlugin {
        *
        * Copyright 2005-2007 by Jeff MacMichael and Niels Leenheer
        *
+<<<<<<< HEAD
        * @version $Id: NP_SkinFiles.php 1678 2012-02-26 07:31:36Z sakamocchi $
+=======
+       * @version $Id: NP_SkinFiles.php 1749 2012-04-13 14:06:34Z sakamocchi $
+>>>>>>> skinnable-master
        * @version $NucleusJP: NP_SkinFiles.php,v 1.3 2006/07/17 20:03:45 kimitake Exp $
        *
        * ==========================================================================================
@@ -104,7 +108,7 @@ class NP_SkinFiles extends NucleusPlugin {
                return;
        }
        
-       public function event_QuickMenu($data)
+       public function event_QuickMenu(&$data)
        {
                global $member;
                
diff --git a/nucleus/plugins/medium/MediumActions.php b/nucleus/plugins/medium/MediumActions.php
new file mode 100644 (file)
index 0000000..f6febf0
--- /dev/null
@@ -0,0 +1,340 @@
+<?php
+/*
+ * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)
+ * Copyright (C) 2002-2009 The Nucleus Group
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * (see nucleus/documentation/index.html#license for more info)
+ */
+/**
+ * Media popup window for Nucleus
+ *
+ * Purpose:
+ *   - can be openen from an add-item form or bookmarklet popup
+ *   - shows a list of recent files, allowing browsing, search and
+ *     upload of new files
+ *   - close the popup by selecting a file in the list. The file gets
+ *     passed through to the add-item form (linkto, popupimg or inline img)
+ *
+ * @license http://nucleuscms.org/license.txt GNU General Public License
+ * @copyright Copyright (C) 2002-2009 The Nucleus Group
+ * @version $Id: MediumActions.php 1873 2012-06-17 07:23:22Z sakamocchi $
+ *
+ */
+
+class MediumActions extends BaseActions
+{
+       private $type = '';
+       
+       static private $default_actions = array(
+               'actionurl',
+               'adminurl',
+               'collection',
+               'conf',
+               'pagehead',
+               'pagefoot',
+               'collectionlist',
+               'stylesheet',
+               'script'
+               );
+       
+       static public $normal_skin_types = array(
+               'login'         => 'NP_Medium',
+               'choose'        => _UPLOAD_TITLE,
+               'select'        => _SKIN_PART_ALIST,
+               'error'         => _ERROR
+       );
+       
+       static public function getNormalSkinTypes()
+       {
+               return self::$normal_skin_types;
+       }
+       
+       public function getAvailableActions()
+       {
+               global $manager;
+               
+               $extra_actions = array();
+               
+               switch ( $manager->getPlugin('NP_Medium')->type )
+               {
+                       case 'login':
+                               $extra_actions = array(
+                                       'name',
+                               );
+                               break;
+                       case 'select':
+                               $extra_actions = array(
+                                       'amount',
+                                       'filter',
+                                       'medialist',
+                                       'next',
+                                       'prev'
+                               );
+                               break;
+                       case 'choose':
+                               $extra_actions = array(
+                                       'pluginextras',
+                                       'ticket',
+                               );
+                               break;
+                       case 'error':
+                               $extra_actions = array(
+                                       'message',
+                               );
+                               break;
+               }
+               
+               $defined_actions = array_merge(self::$default_actions, $extra_actions);
+               
+               return array_merge($defined_actions, parent::getAvailableActions());
+       }
+       
+       /**
+        * MediumActions::_construct
+        * 
+        * @param       string  $type   always 'fileparse'
+        * @return      void
+        */
+       public function __construct($type)
+       {
+               parent::__construct();
+               return;
+       }
+       
+       public function parse_conf($key)
+       {
+               global $CONF;
+               if ( array_key_exists($key, $CONF) )
+               {
+                       echo $CONF[$key];
+               }
+               return;
+       }
+       
+       public function parse_actionurl()
+       {
+               global $CONF;
+               echo "{$CONF['ActionURL']}?action=plugin&amp;name=medium";
+               return;
+       }
+       
+       public function parse_collection()
+       {
+               global $manager;
+               echo (string) $manager->getPlugin('NP_Medium')->collection;
+               return;
+       }
+       
+       public function parse_pagehead()
+       {
+               global $manager;
+               $path = $manager->getPlugin('NP_Medium')->getDirectory() . 'skins/pagehead.skn';
+               $contents = $this->parser->skin->getContentFromFile($path);
+               $this->parser->parse($contents);
+               return;
+       }
+       
+       public function parse_pagefoot()
+       {
+               global $manager;
+               $path = $manager->getPlugin('NP_Medium')->getDirectory() . 'skins/pagefoot.skn';
+               $contents = $this->parser->skin->getContentFromFile($path);
+               $this->parser->parse($contents);
+               return;
+       }
+       
+       public function parse_stylesheet($name)
+       {
+               global $CONF;
+               echo "{$CONF['PluginURL']}medium/styles/{$name}";
+               return;
+       }
+       
+       public function parse_script($name)
+       {
+               global $CONF;
+               echo "{$CONF['PluginURL']}medium/scripts/{$name}";
+               return;
+       }
+       
+       public function parse_name()
+       {
+               global $member;
+               
+               if ( !$member->isLoggedIn() )
+               {
+                       echo (string) requestVar('login');
+               }
+               else
+               {
+                       echo (string) $member->getDisplayName();
+               }
+               return;
+       }
+       
+       public function parse_filter()
+       {
+               global $manager;
+               echo (string) $manager->getPlugin('NP_Medium')->filter;
+               return;
+       }
+       
+       public function parse_ticket()
+       {
+               global $manager;
+               echo $manager->addTicketHidden();
+               return;
+       }
+       
+       public function parse_message()
+       {
+               global $manager;
+               echo (string) $manager->getPlugin('NP_Medium')->message;
+               return;
+       }
+       
+       public function parse_pluginextras()
+       {
+               global $manager;
+               $data = array();
+               $manager->notify("MediaUploadFormExtras", $data);
+               return;
+       }
+       
+       public function parse_amount()
+       {
+               global $manager;
+               echo (string) $manager->getPlugin('NP_Medium')->amount;
+               return;
+       }
+       
+       public function parseoffset()
+       {
+               global $manager;
+               echo (string) $manager->getPlugin('NP_Medium')->offset;
+               return;
+       }
+       
+       public function parse_prev()
+       {
+               global $manager;
+               echo (string) $manager->getPlugin('NP_Medium')->prev;
+               return;
+       }
+       
+       public function parse_next()
+       {
+               global $manager;
+               echo (string) $manager->getPlugin('NP_Medium')->next;
+               return;
+       }
+       
+       public function parse_collectionlist()
+       {
+               global $CONF, $manager;
+               
+               $plugin = $manager->getPlugin('NP_Medium');
+               
+               $data = array(
+                       'actionurl'     => "{$CONF['ActionURL']}?action=plugin&amp;type=medium"
+               );
+               $this->parser->parse(Template::fill($plugin->getOption('collectionlist_head'), $data));
+               
+               $collections = Media::getCollectionList();
+               foreach ( $collections as $name => $desc )
+               {
+                       $data = array(
+                               'name'  => $name,
+                               'desc'  => $desc
+                       );
+                       
+                       if ( $plugin->collection ==  $name )
+                       {
+                               $data['selected'] = 'selected="selected"';
+                       }
+                       
+                       $this->parser->parse(Template::fill($plugin->getOption('collectionlist_body'), $data));
+               }
+               
+               $data = array(
+                       'actionurl'             => "{$CONF['ActionURL']}?action=plugin&amptype=medium",
+                       'collection'    => $plugin->collection
+               );
+               $this->parser->parse(Template::fill($plugin->getOption('collectionlist_foot'), $data));
+       }
+       
+       public function parse_medialist()
+       {
+               global $CONF, $manager;
+               
+               $plugin = $manager->getPlugin('NP_Medium');
+               
+               $data = array(
+                       'actionurl'             => "{$CONF['ActionURL']}?action=plugin&amp;type=medium",
+                       'collection'    => $plugin->collection,
+                       'description'   => $plugin->description
+               );
+               $this->parser->parse(Template::fill($plugin->getOption('medialist_head'), $data));
+               
+               $image_template = $plugin->getOption('medialist_body_image');
+               $other_template = $plugin->getOption('medialist_body_other');
+               
+               foreach ( $plugin->media as $medium )
+               {
+                       $medium->refine();
+                       $data = array(
+                               'mime'                  => $medium->mime,
+                               'collection'    => $medium->collection,
+                               'filename'              => $medium->filename,
+                               'shortfilename' => Entity::shorten($medium->filename, 24, '...'),
+                               'prefix'                => $medium->prefix,
+                               'name'                  => $medium->name,
+                               'suffix'                => $medium->suffix,
+                               'timestamp'             => date("Y-m-d", $medium->timestamp),
+                               'size'                  => round($medium->size / 1000),
+                               'width'                 => $medium->width,
+                               'height'                => $medium->height,
+                               'mediumurl'             => "{$CONF['MediaURL']}{$medium->collection}/{$medium->filename}"
+                       );
+                       
+                       if ( !array_key_exists($medium->mime, Media::$image_mime) )
+                       {
+                               $this->parser->parse(Template::fill($other_template, $data));
+                       }
+                       else
+                       {
+                               $this->parser->parse(Template::fill($image_template, $data));
+                       }
+               }
+               
+               $data = array();
+               $this->parser->parse(Template::fill($plugin->getOption('medialist_foot'), $data));
+               
+               return;
+       }
+       
+       protected function checkCondition($field, $name='', $value = '')
+       {
+               global $manager;
+               
+               $plugin = $manager->getPlugin('NP_Medium');
+               
+               $condition = 0;
+               switch ( $field )
+               {
+                       case 'prev':
+                               $condition = (boolean) ($plugin->prev != $plugin->offset );
+                               break;
+                       case 'next':
+                               $condition = (boolean) $plugin->next;
+                               break;
+                       default:
+                               break;
+               }
+               return $condition;
+       }
+}
diff --git a/nucleus/plugins/medium/locales/en_Latn_US.UTF-8.php b/nucleus/plugins/medium/locales/en_Latn_US.UTF-8.php
new file mode 100644 (file)
index 0000000..43165da
--- /dev/null
@@ -0,0 +1,10 @@
+<?php
+define('NP_MEDIUM_COLLECTIONLIST_HEAD',                'Collection List Header');
+define('NP_MEDIUM_COLLECTIONLIST_BODY',                'Collection List Body');
+define('NP_MEDIUM_COLLECTIONLIST_FOOT',                'Collection List Footer');
+define('NP_MEDIUM_MEDIALIST_HEAD',                     'Media List Header');
+define('NP_MEDIUM_MEDIALIST_BODY_IMAGE',       'Media List Body for images');
+define('NP_MEDIUM_MEDIALIST_BODY_OTHER',       'Media List Body for others');
+define('NP_MEDIUM_MEDIALIST_FOOT',                     'Media List Footer');
+define('NP_MEDIUM_MEDIALIST_BLANK',                    'No media uploaded');
+define('NP_MEDIUM_DESC',                                       'insert and upload media');
\ No newline at end of file
diff --git a/nucleus/plugins/medium/locales/ja_Jpan_JP.UTF-8.php b/nucleus/plugins/medium/locales/ja_Jpan_JP.UTF-8.php
new file mode 100644 (file)
index 0000000..3f1f248
--- /dev/null
@@ -0,0 +1,10 @@
+<?php
+define('NP_MEDIUM_COLLECTIONLIST_HEAD',                'コレクションリストのヘッダー');
+define('NP_MEDIUM_COLLECTIONLIST_BODY',                'コレクションリストの本体');
+define('NP_MEDIUM_COLLECTIONLIST_FOOT',                'コレクションリストのフッター');
+define('NP_MEDIUM_MEDIALIST_HEAD',                     'メディアリストのヘッダー');
+define('NP_MEDIUM_MEDIALIST_BODY_IMAGE',       'メディアリストの本体(イメージ用)');
+define('NP_MEDIUM_MEDIALIST_BODY_OTHER',       'メディアリストの本体(その他)');
+define('NP_MEDIUM_MEDIALIST_FOOT',                     'メディアリストのフッター');
+define('NP_MEDIUM_MEDIALIST_BLANK',                    'メディアがない場合');
+define('NP_MEDIUM_DESC',                                       'メディアの挿入とアップロードを行います');
\ No newline at end of file
diff --git a/nucleus/plugins/medium/scripts/medium.js b/nucleus/plugins/medium/scripts/medium.js
new file mode 100644 (file)
index 0000000..6d3848e
--- /dev/null
@@ -0,0 +1,184 @@
+/* init */
+if ( !medium )
+{
+       var medium = new Object();
+       medium.type = 'inline';
+       medium.url = '';
+
+}
+
+/* for main window */
+medium.addMedia = function()
+{
+       window.open(this.url,
+        'Nucleus CMS Medium Plugin',
+        'status=yes,toolbar=no,scrollbars=yes,resizable=yes,width=500,height=450,top=0,left=0');
+       return;
+};
+
+medium.isCaretEmpty = function()
+{
+       /* lastSelected object is on main window */
+       if ( lastSelected && lastSelected.createTextRange && lastSelected.caretPos )
+       {
+               return ( lastSelected.caretPos.text == '' );
+       }
+       else if ( !document.all && document.getElementById )
+       {
+               return ( mozSelectedText() == '' );
+       }
+       return true;
+};
+
+medium.getCaretText = function()
+{
+       if ( !document.all && document.getElementById )
+       {
+               return mozSelectedText();
+       }
+       return lastSelected.caretPos.text;
+}
+
+// inserts text at caret (overwriting selection)
+medium.insertAtCaret = function(text)
+{
+       /* lastSelected is on main window */
+       var textEl = lastSelected;
+       if ( textEl && textEl.createTextRange && textEl.caretPos )
+       {
+               var caretPos = textEl.caretPos;
+               
+               if ( caretPos.text.charAt(caretPos.text.length - 1) != ' ' )
+               {
+                       caretPos.text = text;
+               }
+               else
+               {
+                       caretPos.text = text + ' ';
+               }
+       }
+       else if ( !document.all && document.getElementById )
+       {
+               mozReplace(document.getElementById('input' + nonie_FormType), text);
+               if ( scrollTop > -1 )
+               {
+                       document.getElementById('input' + nonie_FormType).scrollTop = scrollTop;
+               }
+       }
+       else if ( textEl )
+       {
+               textEl.value  += text;
+       }
+       else
+       {
+               document.getElementById('input' + nonie_FormType).value += text;
+               if ( scrollTop > -1 )
+               {
+                       document.getElementById('input' + nonie_FormType).scrollTop = scrollTop;
+               }
+       }
+       /* updAllPreviews() is on main window */
+       updAllPreviews();
+       return;
+}
+
+medium.includeImage = function(collection, filename, type, width, height)
+{
+       var fullName;
+       var replaceBy;
+       
+       if ( this.isCaretEmpty() )
+       {
+               text = prompt("Text to display ?", filename);
+       }
+       else
+       {
+               text = this.getCaretText();
+       }
+       
+       /*
+        * add collection name when not private collection
+        * (or editing a message that's not your)
+        */
+       if ( isNaN(collection) || (nucleusAuthorId != collection) )
+       {
+               fullName = collection + '/' + filename;
+       }
+       else
+       {
+               fullName = filename;
+       }
+       
+       switch ( type )
+       {
+               case 'popup':
+                       replaceBy = '<%popup(' +  fullName + '|'+width+'|'+height+'|' + text +')%>';
+                       break;
+               case 'inline':
+               default:
+                       replaceBy = '<%image(' +  fullName + '|'+width+'|'+height+'|' + text +')%>';
+                       break;
+       }
+       
+       this.insertAtCaret(replaceBy);
+       return;
+}
+
+medium.includeOtherMedia = function(collection, filename)
+{
+       var fullName;
+       var replaceBy;
+       
+       if ( this.isCaretEmpty() )
+       {
+               text = prompt("Text to display ?",filename);
+       }
+       else
+       {
+               text = getCaretText();
+       }
+       
+       // add collection name when not private collection (or editing a message that's not your)
+       if ( isNaN(collection) || (nucleusAuthorId != collection) )
+       {
+               fullName = collection + '/' + filename;
+       }
+       else
+       {
+               fullName = filename;
+       }
+       
+       replaceBy = '<%media(' +  fullName + '|' + text +')%>';
+       
+       this.insertAtCaret(replaceBy);
+       return;
+}
+
+/* for sub window */
+medium.setType = function(value)
+{
+       this.type = value;
+};
+
+medium.chooseImage = function(collection, filename, width, height)
+{
+       if ( this.type != 'inline' )
+       {
+               this.type = 'popup';
+       }
+       
+       window.close();
+       window.opener.focus();
+       window.opener.medium.includeImage(collection, filename, this.type, width, height);
+       return;
+}
+
+medium.chooseOther = function(collection, filename)
+{
+       
+       window.close();
+       window.opener.focus();
+       window.opener.medium.type = this.type;
+       window.opener.medium.includeOtherMedia(collection, filename);
+       return;
+}
diff --git a/nucleus/plugins/medium/skins/choose.skn b/nucleus/plugins/medium/skins/choose.skn
new file mode 100644 (file)
index 0000000..3262c0e
--- /dev/null
@@ -0,0 +1,31 @@
+<%pagehead%>
+
+<h1><%text(_UPLOAD_TITLE)%></h1>
+
+<p><%text(_UPLOAD_MSG)%></p>
+
+<form method="post" action="<%actionurl%>" enctype="multipart/form-data">
+
+<p>
+File:
+<input type="file" name="uploadfile" size="40" />
+</p>
+
+<p><%text(_SETTINGS_ALLOWUPLOADTYPES)%>: <%conf(AllowedTypes)%></p>
+
+<p>
+<%collectionlist%>
+</p>
+
+<%pluginextras%>
+
+<p>
+<%ticket%>
+<input type="hidden" name="MAX_FILE_SIZE" value="<%conf(MaxUploadSize)%>" />
+<button type="submit" name ="type" value="upload"><%text(_UPLOAD_BUTTON)%></button>
+<button type="submit" name ="type" value="select"><%text(_BACK)%></button>
+</p>
+
+</form>
+
+<%pagefoot%>
diff --git a/nucleus/plugins/medium/skins/error.skn b/nucleus/plugins/medium/skins/error.skn
new file mode 100644 (file)
index 0000000..2d444ca
--- /dev/null
@@ -0,0 +1,7 @@
+<%pagehead%>
+
+<h1><%text(_ERROR)%></h1>
+<p><%message%></p>
+<p><a href="<%actionurl%>" onclick="history.back()"><%text(_BACK)%></a></p>
+
+<%pagefoot%>
diff --git a/nucleus/plugins/medium/skins/login.skn b/nucleus/plugins/medium/skins/login.skn
new file mode 100644 (file)
index 0000000..4d71604
--- /dev/null
@@ -0,0 +1,25 @@
+<%pagehead%>
+
+<h1><%text(_LOGIN_PLEASE)%></h1>
+
+<form method="post" action="<%conf(AdminURL)%>">
+
+<dl>
+<dt><%text(_LOGINFORM_NAME)%></dt>
+<dd><input type="text" name="login" value="" /></dd>
+<dt><%text(_LOGINFORM_PWD)%></dt>
+<dd><input type="password" name="password" /></dd>
+</dl>
+
+<p>
+<input type="checkbox" value="1" name="shared" tabindex="40" id="shared" />
+<label for="shared"><%text(_LOGIN_SHARED)%></label>
+<input type="hidden" name="collection" value="<%collection%>" />
+<button type="submit" name="action" value="login"><%text(_LOGIN)%></button>
+</p>
+
+</form>
+
+<p><a href="<%actionurl%>" onclick="window.close();"><%text(_POPUP_CLOSE)%></a></p>
+
+<%pagefoot%>
diff --git a/nucleus/plugins/medium/skins/pagefoot.skn b/nucleus/plugins/medium/skins/pagefoot.skn
new file mode 100644 (file)
index 0000000..691287b
--- /dev/null
@@ -0,0 +1,2 @@
+</body>
+</html>
\ No newline at end of file
diff --git a/nucleus/plugins/medium/skins/pagehead.skn b/nucleus/plugins/medium/skins/pagehead.skn
new file mode 100644 (file)
index 0000000..e7d34c9
--- /dev/null
@@ -0,0 +1,8 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>Nucleus Media</title>
+<link rel="stylesheet" type="text/css" href="<%stylesheet(medium.css)%>" />
+<script type="text/javascript" src="<%script(medium.js)%>"></script>
+</head>
+<body>
diff --git a/nucleus/plugins/medium/skins/select.skn b/nucleus/plugins/medium/skins/select.skn
new file mode 100644 (file)
index 0000000..b5c4064
--- /dev/null
@@ -0,0 +1,48 @@
+<%pagehead%>
+
+<form method="post" action="<%actionurl%>">
+<p>
+
+<%collectionlist%>
+
+<button type="submit" name="type" value="select" title="<%text(_MEDIA_COLLECTION_TT)%>">
+<%text(_MEDIA_COLLECTION_SELECT)%>
+</button>
+<button type="submit" name="type" value="choose" title="<%text(_MEDIA_UPLOADLINK)%>" />
+<%text(_MEDIA_UPLOAD_TO)%>
+</button>
+
+</p>
+
+<p>
+<label for="media_filter"><%text(_MEDIA_FILTER_LABEL)%></label>
+<input type="text" id="media_filter" name="filter" value="<%filter%>" />
+<button type="submit" name="type" value="select"><%text(_MEDIA_FILTER_APPLY)%></button>
+<input type="hidden" name="offset" value="<%offset%>" />
+</p>
+
+</form>
+
+<%medialist%>
+
+<p>
+
+<%if(prev)%>
+<a href="<%actionurl%>&amp;type=select&amp;offset=<%prev%>&amp;collection=<%collection%>">
+<%text(_LISTS_PREV)%>
+</a>
+<%endif%>
+<%if(next)%>
+<a href="<%actionurl%>&amp;type=select&amp;offset=<%next%>&amp;collection=<%collection%>">
+<%text(_LISTS_NEXT)%>
+</a>
+<%endif%>
+
+<input type="radio" id="typeradio0" name="typeradio" onclick="medium.setType('inline');" checked="checked" />
+<label for="typeradio0"><%text(_MEDIA_INLINE)%></label>
+<input type="radio" id="typeradio1" name="typeradio" onclick="medium.setType('popup');" />
+<label for="typeradio1"><%text(_MEDIA_POPUP)%></label>
+
+</p>
+
+<%pagefoot%>
diff --git a/nucleus/plugins/medium/styles/medium.css b/nucleus/plugins/medium/styles/medium.css
new file mode 100644 (file)
index 0000000..81bfb20
--- /dev/null
@@ -0,0 +1,59 @@
+body {
+       font-family: verdana, arial;
+       font-size: small;
+       background-color: #FFFFFF;
+       color: #000000;
+}
+
+a:link, a:visited {
+       color: #1D3565; 
+       font-weight: bold;
+       text-decoration: none;
+}
+a:hover {
+       text-decoration: underline;
+}
+
+h1 {
+       border-bottom: 1px dotted gray;
+       font-size: x-large;
+       color: #596d9d;
+}
+
+h2 {
+       color: gray;
+       font-size: large;
+       margin-left: 20px;
+       text-indent: 10px;
+       border-bottom: 1px solid #ddd;
+}
+
+table {
+       border: none;
+       width:  100%;
+}
+
+table th {
+       background-color: linen;
+       font-size: medium;
+}
+
+table th,
+table td {
+       padding: 5px;
+}
+
+table td {
+       background-color: #dddddd;
+       font-size: small;
+       vertical-align: top;
+       text-align: left;
+}
+
+p {
+       margin: 0px 0px 5px 0px
+}
+
+label {
+       cursor: pointer;
+}
\ No newline at end of file
index 607354d..11524b6 100644 (file)
@@ -5,7 +5,7 @@
        *
        * Copyright 2005-2007 by Jeff MacMichael and Niels Leenheer
        *
-       * @version $Id: index.php 1644 2012-01-29 08:34:58Z sakamocchi $
+       * @version $Id: index.php 1796 2012-04-29 03:46:09Z sakamocchi $
        * @version $NucleusJP: index.php,v 1.5.2.1 2005/08/25 07:04:13 kimitake Exp $
        *
        * ==========================================================================================
index 31b4f28..e4b77fd 100644 (file)
@@ -11,7 +11,7 @@
        <meta http-equiv="Refresh" content="0; url=index.php" />
        <style type="text/css">
        <!--
-               @import url(../styles/manual.css);
+               @import url(../styles/documentation/manual.css);
        -->
        </style>
 </head>
index 1d0c5b1..c806652 100644 (file)
        <p> A manual addition needs to be made to <em>config.php</em>, in order to get the media functions to work. Here's what to add: </p>
        <pre>
        // path to media dir
-       $DIR_MEDIA = '<strong><?php echo i18n;;hsc($guess)?></strong>';
+       $DIR_MEDIA = '<strong><?php echo htmlspecialchars($guess)?></strong>';
        </pre>
 
        <p> Also, it will be necessary to create that directory yourself. If you want to make file upload possible, you should set the permissions of the media/ directory to 777 (see the documentation/tips.html in Nucleus 0.96+ for a quick guide on setting permissions). </p>
        <p> A manual addition needs to be made to <i>config.php</i>, in order to get imported skins to work correctly. Here's what to add: </p>
        <pre>
        // extra skin files for imported skins
-       $DIR_SKINS = '<strong><?php echo i18n;;hsc($guess)?></strong>';
+       $DIR_SKINS = '<strong><?php echo htmlspecialchars($guess)?></strong>';
        </pre>
 
        <p> Also, it will be necessary to create this directory yourself. Downloaded skins can then be expanded into that directory and be imported from inside the Nucleus admin area. </p>
index c8a67c0..45b7e14 100644 (file)
@@ -13,7 +13,7 @@
 /**
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2012 The Nucleus Group
- * @version $Id: upgrade.functions.php 1690 2012-03-08 22:45:08Z ftruscot $
+ * @version $Id: upgrade.functions.php 1889 2012-06-17 08:46:45Z sakamocchi $
  */
 
        /**
                        break;
                }
 
+<<<<<<< HEAD
                $result = DB::getResult($query);
                $installed = ( $result !== FALSE ) && ($result->rowCount() >= $minrows);
 
+=======
+               $result = mysql_query($query);
+               $installed = ( $result != 0 ) && (mysql_num_rows($result) >= $minrows);
+               
+>>>>>>> skinnable-master
                return $installed;
        }
 
                echo "<head>\n";
                echo "<title> Nucleus Upgrade </title>\n";
                
-               if ( file_exists('../styles/manual.css') )
+               if ( file_exists('../documentation/styles/manual.css') )
                {
-                       echo "<link rel=\"stylesheet\" href=\"../styles/manual.css\" type=\"text/css\" />\n";
+                       echo "<link rel=\"stylesheet\" href=\"../documentation/styles/manual.css\" type=\"text/css\" />\n";
                }
                else
                {
index d0bf3f1..4d0f269 100644 (file)
@@ -12,7 +12,7 @@
 /**
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2012 The Nucleus Group
- * @version $Id: upgrade0.96.php 1546 2011-06-30 15:36:25Z ftruscot $
+ * @version $Id: upgrade0.96.php 1809 2012-05-01 14:48:30Z sakamocchi $
  */
 
 function upgrade_do96() {
index a8e96d0..50e21e6 100644 (file)
@@ -12,7 +12,7 @@
 /**
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2012 The Nucleus Group
- * @version $Id: upgrade1.0.php 1388 2009-07-18 06:31:28Z shizuki $
+ * @version $Id: upgrade1.0.php 1809 2012-05-01 14:48:30Z sakamocchi $
  */
 
 function upgrade_do100() {
index 6403ab4..7c6cf8a 100644 (file)
@@ -12,7 +12,7 @@
 /**
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2012 The Nucleus Group
- * @version $Id: upgrade1.1.php 1388 2009-07-18 06:31:28Z shizuki $
+ * @version $Id: upgrade1.1.php 1809 2012-05-01 14:48:30Z sakamocchi $
  */
 
 function upgrade_do110() {
index 61e3ede..fc4f885 100644 (file)
@@ -12,7 +12,7 @@
 /**
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2012 The Nucleus Group
- * @version $Id: upgrade1.5.php 1546 2011-06-30 15:36:25Z ftruscot $
+ * @version $Id: upgrade1.5.php 1889 2012-06-17 08:46:45Z sakamocchi $
  */
 
 function upgrade_do150() {
index 78f4813..da5f254 100644 (file)
@@ -12,7 +12,7 @@
 /**
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2012 The Nucleus Group
- * @version $Id: upgrade2.0.php 1388 2009-07-18 06:31:28Z shizuki $
+ * @version $Id: upgrade2.0.php 1889 2012-06-17 08:46:45Z sakamocchi $
  */
 
 function upgrade_do200() {
@@ -55,14 +55,14 @@ function upgrade_do200() {
        // add SkinsURL setting
        if (!upgrade_checkIfCVExists('SkinsURL')) {
                $skinsurl = str_replace('/media/','/skins/',$CONF['MediaURL']);
-               $query = 'INSERT INTO '.sql_table('config')." VALUES ('SkinsURL', '".addslashes($skinsurl)."');";
+               $query = 'INSERT INTO '.sql_table('config')." VALUES ('SkinsURL', ".DB::quoteValue($skinsurl).');';
                upgrade_query("Adding setting SkinsURL",$query);
        }
 
        // add ActionURL setting
        if (!upgrade_checkIfCVExists('ActionURL')) {
                $actionurl = str_replace('/media/','/action.php',$CONF['MediaURL']);
-               $query = 'INSERT INTO '.sql_table('config')." VALUES ('ActionURL', '".addslashes($actionurl)."');";
+               $query = 'INSERT INTO '.sql_table('config')." VALUES ('ActionURL', ".DB::quoteValue($actionurl).');';
                upgrade_query("Adding setting ActionURL",$query);
        }
        
index a602734..0041e40 100644 (file)
@@ -12,7 +12,7 @@
 /**
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2012 The Nucleus Group
- * @version $Id: upgrade2.5.php 1685 2012-03-01 15:28:00Z sakamocchi $
+ * @version $Id: upgrade2.5.php 1889 2012-06-17 08:46:45Z sakamocchi $
  */
 
 function upgrade_do250() {
index 4a99635..b0c224b 100644 (file)
@@ -12,7 +12,7 @@
 /**
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2012 The Nucleus Group
- * @version $Id: upgrade3.2.php 1388 2009-07-18 06:31:28Z shizuki $
+ * @version $Id: upgrade3.2.php 1809 2012-05-01 14:48:30Z sakamocchi $
  */
 
 function upgrade_do320() {
index 64fd207..5cd17b6 100644 (file)
@@ -12,7 +12,7 @@
 /**
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2012 The Nucleus Group
- * @version $Id: upgrade3.3.php 1388 2009-07-18 06:31:28Z shizuki $
+ * @version $Id: upgrade3.3.php 1809 2012-05-01 14:48:30Z sakamocchi $
  */
 
 function upgrade_do330() {
index bfd5929..47b7e85 100644 (file)
@@ -12,7 +12,7 @@
 /**
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2012 The Nucleus Group
- * @version $Id: upgrade3.4.php 1665 2012-02-13 16:50:35Z ftruscot $
+ * @version $Id: upgrade3.4.php 1714 2012-03-31 06:32:09Z sakamocchi $
  */
 
 function upgrade_do340() {
index 7f3d4dc..93c3fb5 100644 (file)
@@ -12,7 +12,7 @@
 /**
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2012 The Nucleus Group
- * @version $Id: upgrade3.5.php 1665 2012-02-13 16:50:35Z ftruscot $
+ * @version $Id: upgrade3.5.php 1714 2012-03-31 06:32:09Z sakamocchi $
  */
 
 function upgrade_do350() {
index bc1b9f1..bb0be06 100644 (file)
@@ -12,7 +12,7 @@
 /**
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2012 The Nucleus Group
- * @version $Id: upgrade3.6.php 1665 2012-02-13 16:50:35Z ftruscot $
+ * @version $Id: upgrade3.6.php 1714 2012-03-31 06:32:09Z sakamocchi $
  */
 
 function upgrade_do360() {
index 8896fbf..ed756b5 100644 (file)
@@ -12,7 +12,7 @@
 /**
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2012 The Nucleus Group
- * @version $Id: upgrade2.0.php 1388 2009-07-18 06:31:28Z shizuki $
+ * @version $Id$
  */
 
 function upgrade_do400()
@@ -22,29 +22,167 @@ function upgrade_do400()
                return "already installed";
        }
        
-       /* config.Language to config.Locale  */
-       if ( !upgrade_checkIfColumnExists('config','Locale') )
+       // Give user warning if they are running old version of PHP
+       if ( phpversion() < '5' )
        {
+<<<<<<< HEAD
                $res = DB::getResult("SELECT * FROM " . sql_table('config') . " WHERE name='Language'");
                foreach ( $res as $row )
                {
                        $locale = $row['Language'];
+=======
+               echo 'WARNING: You are running NucleusCMS on a older version of PHP that is no longer supported by NucleusCMS. Please upgrade to PHP5!';
+       }
+       
+       /* config table */
+       /* change Language setting to Locale */
+       if ( upgrade_checkIfCVExists('Language') )
+       {
+               $res = sql_query("SELECT value FROM " . sql_table('config') . " WHERE name='Language'");
+               if ( $res !== FALSE )
+               {
+                       $row = sql_fetch_assoc($res);
+                       $locale = i18n_upg::convert_old_language_file_name_to_locale($row['value']);
+                       if ( $locale )
+                       {
+                               $query = 'INSERT INTO ' . sql_table('config') . " VALUES ('Locale','{$locale}')";
+                               upgrade_query('Creating Locale config value', $query);
+                               
+                               $query = 'DELETE FROM ' . sql_table('config') . " WHERE name='Language'";
+                               upgrade_query("Removing Language config value", $query);
+                       }
+>>>>>>> skinnable-master
                }
-               $query = 'INSERT INTO ' . sql_table('config') . " (name, value) VALUE('Locale', '{$locale}');";
-               upgrade_query("Renaming Language for configs to Locale", $query);
        }
        
-       if ( !upgrade_checkIfColumnExists('config','Language') )
+       /* change AdminCSS setting */
+       if ( upgrade_checkIfCVExists('AdminCSS') )
+       {
+               $query = 'UPDATE ' . sql_table('config') . " SET value='original' WHERE name='AdminCSS'";
+               upgrade_query('Changing AdminCSS config value', $query);
+       }
+       
+       /* create AdminSkin setting */
+       if ( !upgrade_checkIfCVExists('AdminSkin') )
+       {
+               $query = 'INSERT INTO ' . sql_table('config') . " VALUES ('AdminSkin','0')";
+               upgrade_query('Creating AdminSkin config value', $query);
+       }
+       
+       /* create BookmarkletSkin setting */
+       if ( !upgrade_checkIfCVExists('BookmarkletSkin') )
        {
-               $query = "DELETE * FROM " . sql_table('config') . " WHERE name='Language'";
-               upgrade_query("Renaming Language for configs to Locale", $query);
+               $query = 'INSERT INTO ' . sql_table('config') . " VALUES ('BookmarkletSkin','0')";
+               upgrade_query('Creating BookmarkletSkin config value', $query);
        }
        
-       /* member.deflang to member.mlocale   */
+       
+       /* member table */
+       /* changing the member table to rename deflang to mlocale */
        if ( !upgrade_checkIfColumnExists('member','mlocale') )
        {
-               $query =  'ALTER TABLE '.sql_table('member') . " CHANGE deflang mlocale varchar(10) NOT NULL default ''";
+               $query =  'ALTER TABLE '.sql_table('member') . " CHANGE deflang mlocale varchar(20) NOT NULL default '' AFTER mcookiekey";
                upgrade_query("Renaming deflang column for members to mlocale", $query);
        }
+       
+       /* changing the member table to add madminskin column */
+       if ( !upgrade_checkIfColumnExists('member','madminskin') )
+       {
+               $query =  'ALTER TABLE '.sql_table('member') . " ADD madminskin tinyint(2) NOT NULL default '0'";
+               upgrade_query("Adding a new row for the adminskin member option", $query);
+       }
+       
+       /* changing the member table to add mbkmklt column */
+               if ( !upgrade_checkIfColumnExists('member','mbkmklt') )
+       {
+               $query =  'ALTER TABLE '.sql_table('member') . " ADD mbkmklt tinyint(2) NOT NULL default '0'";
+               upgrade_query("Adding a new row for the bkmklt member option", $query);
+       }
+       
+       // all member default value set
+       $result = sql_query("SELECT * FROM " . sql_table('member'));
+       while ( $row = mysql_fetch_assoc($result) )
+       {
+               $locale = i18n_upg::convert_old_language_file_name_to_locale($row['mlocale']);
+               if ( $locale )
+               {
+                       $query = 'UPDATE $s SET mlocale=$s WHERE mnumber=$d';
+                       $query = sprintf($query, sql_table('member'), addslashes($locale), $row['mnumber']);
+                       upgrade_query('Changing mlocale value', $query);
+               }
+       }
+       
+       // 3.6 -> 4.0
+       // update database version
+       update_version('400');
+       
 }
 
+class i18n_upg
+{
+       /**
+       * i18n::convert_old_language_file_name_to_locale()
+       * NOTE: this should be obsoleted near future.
+       *
+       * @static
+       * @param        string  $target_language        old translation file name
+       * @return       string  locale name as language_script_region
+       */
+       static public function convert_old_language_file_name_to_locale($target_language)
+       {
+               $target_locale = '';
+               foreach ( self::$lang_refs as $language => $locale )
+               {
+                       if ( $target_language == $language )
+                       {
+                               if ( preg_match('#^(.+)\.(.+)$#', $locale, $match) )
+                               {
+                                       $target_locale = $match[1];
+                               }
+                               else
+                               {
+                                       $target_locale = $locale;
+                               }
+                               break;
+                       }
+               }
+               return $target_locale;
+       }
+       
+       /**
+        * i18n::$lang_refs
+        * reference table to convert old and new way to name translation files.
+        * NOTE: this should be obsoleted as soon as possible.
+        *
+        * @static
+        */
+       static private $lang_refs = array(
+                       "english"               => "en_Latn_US",
+                       "english-utf8"  => "en_Latn_US.UTF-8",
+                       "bulgarian"     => "bg_Cyrl_BG",
+                       "finnish"               => "fi_Latn_FI",
+                       "catalan"               => "ca_Latn_ES",
+                       "french"                => "fr_Latn_FR",
+                       "russian"               => "ru_Cyrl_RU",
+                       "chinese"               => "zh_Hans_CN",
+                       "simchinese"    => "zh_Hans_CN",
+                       "chineseb5"     => "zh_Hant_TW",
+                       "traditional_chinese"   =>      "zh_Hant_TW",
+                       "galego"                => "gl_Latn_ES",
+                       "german"                => "de_Latn_DE",
+                       "korean-utf"    => "ko_Kore_KR.UTF-8",
+                       "korean-euc-kr" => "ko_Kore_KR.EUC-KR",
+                       "slovak"                => "sk_Latn_SK",
+                       "czech"         => "cs_Latn_CZ",
+                       "hungarian"     => "hu_Latn_HU",
+                       "latvian"               => "lv_Latn_LV",
+                       "nederlands"    => "nl_Latn_NL",
+                       "italiano"              => "it_Latn_IT",
+                       "persian"               => "fa_Arab_IR",
+                       "spanish"               => "es_Latn_ES",
+                       "spanish-utf8"  => "es_Latn_ES.UTF-8",
+                       "japanese-euc"  => "ja_Jpan_JP.EUC-JP",
+                       "japanese-utf8" => "ja_Jpan_JP.UTF-8",
+                       "portuguese_brazil"     => "pt_Latn_BR"
+                       );
+}
index 769d911..a1d2060 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 /*
  * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)
- * Copyright (C) 2002-2012 The Nucleus Group
+ * Copyright (C) 2002-2009 The Nucleus Group
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
@@ -14,8 +14,8 @@
  * This file contains definitions for the methods in the Blogger API
  *
  * @license http://nucleuscms.org/license.txt GNU General Public License
- * @copyright Copyright (C) 2002-2012 The Nucleus Group
- * @version $Id: api_blogger.inc.php 1388 2009-07-18 06:31:28Z shizuki $
+ * @copyright Copyright (C) 2002-2009 The Nucleus Group
+ * @version $Id: api_blogger.inc.php 1860 2012-05-19 03:47:59Z sakamocchi $
  */
 
 
index 2cadc11..ee580cb 100644 (file)
@@ -2,7 +2,7 @@
 
 /*
  * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)
- * Copyright (C) 2002-2012 The Nucleus Group
+ * Copyright (C) 2002-2009 The Nucleus Group
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
@@ -15,8 +15,8 @@
  *     This file contains definitions for the methods of the metaWeblog API
  *
  * @license http://nucleuscms.org/license.txt GNU General Public License
- * @copyright Copyright (C) 2002-2012 The Nucleus Group
- * @version $Id: api_metaweblog.inc.php 1534 2011-06-22 06:13:23Z sakamocchi $
+ * @copyright Copyright (C) 2002-2009 The Nucleus Group
+ * @version $Id: api_metaweblog.inc.php 1860 2012-05-19 03:47:59Z sakamocchi $
  */
 
 
@@ -75,7 +75,8 @@
                                $trackbacks[] = _getArrayVal($tblist, $i);
                        }
                        
-                       $manager->notify('SendTrackback', array ('tb_id' => $itemid, 'urls' => & $trackbacks));
+                       $data = array('tb_id' => $itemid, 'urls' => &$trackbacks);
+                       $manager->notify('SendTrackback', $data);
                }
 
                return $res;
                                $trackbacks[] = _getArrayVal($tblist, $i);
                        }
                        
-                       $manager->notify('SendTrackback', array ('tb_id' => $itemid, 'urls' => & $trackbacks));
+                       $data = array('tb_id' => $itemid, 'urls' => &$trackbacks);
+                       $manager->notify('SendTrackback', $data);
                }
 
                return $res;
 
                )
        );
-?>
\ No newline at end of file
+?>
index 07f8b57..81cfdf0 100644 (file)
@@ -2,7 +2,7 @@
 
 /*
  * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)
- * Copyright (C) 2002-2012 The Nucleus Group
+ * Copyright (C) 2002-2009 The Nucleus Group
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
@@ -16,8 +16,8 @@
  * Wouter Demuynck 2003-08-31
  *
  * @license http://nucleuscms.org/license.txt GNU General Public License
- * @copyright Copyright (C) 2002-2012 The Nucleus Group
- * @version $Id: api_mt.inc.php 1388 2009-07-18 06:31:28Z shizuki $
+ * @copyright Copyright (C) 2002-2009 The Nucleus Group
+ * @version $Id: api_mt.inc.php 1860 2012-05-19 03:47:59Z sakamocchi $
  */
 
        // mt.supportedMethods
 
                $trackbacks = array ();
                $tbstruct   = array ();
-                       
-               $manager->notify('RetrieveTrackback', array ('tb_id' => $itemid, 'trackbacks' => & $trackbacks));
+               
+               $data = array('tb_id' => $itemid, 'trackbacks' => &$trackbacks);
+               $manager->notify('RetrieveTrackback', $data);
                                
                while (list(,$v) = each ($trackbacks)) {
                        $tbstruct[] = new xmlrpcval(
 
 
 
-?>
\ No newline at end of file
+?>
index c2c28ad..c6d57b9 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 /*
  * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)
- * Copyright (C) 2002-2012 The Nucleus Group
+ * Copyright (C) 2002-2009 The Nucleus Group
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
@@ -16,8 +16,8 @@
  * NOTE: These functions are deprecated and will most likely be removed!
  *
  * @license http://nucleuscms.org/license.txt GNU General Public License
- * @copyright Copyright (C) 2002-2012 The Nucleus Group
- * @version $Id: api_nucleus.inc.php 1418 2009-10-30 06:25:28Z ehui $
+ * @copyright Copyright (C) 2002-2009 The Nucleus Group
+ * @version $Id: api_nucleus.inc.php 1860 2012-05-19 03:47:59Z sakamocchi $
  */
 
        // nucleus.addItem
index 462e340..2a03069 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 /*
  * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)
- * Copyright (C) 2002-2012 The Nucleus Group
+ * Copyright (C) 2002-2009 The Nucleus Group
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
@@ -61,8 +61,8 @@
  * mt.supportedMethods
  *
  * @license http://nucleuscms.org/license.txt GNU General Public License
- * @copyright Copyright (C) 2002-2012 The Nucleus Group
- * @version $Id: server.php 1622 2012-01-09 03:18:59Z sakamocchi $
+ * @copyright Copyright (C) 2002-2009 The Nucleus Group
+ * @version $Id: server.php 1889 2012-06-17 08:46:45Z sakamocchi $
  */
 $CONF = array();
 $DIR_LIBS = '';
@@ -282,7 +282,11 @@ function _getSkinPart($blogid, $username, $password, $type) {
 
        // 3. return skin part
        $blog =& $manager->getBlog($blogid);
+<<<<<<< HEAD
        $skin = new SKIN($blog->getDefaultSkin());
+=======
+       $skin =& $manager->getSkin($blog->getDefaultSkin());
+>>>>>>> skinnable-master
        return new xmlrpcresp(new xmlrpcval($skin->getContentFromDB($type),"string"));
 
 }
@@ -303,7 +307,11 @@ function _setSkinPart($blogid, $username, $password, $content, $type) {
 
        // 3. update skin part
        $blog =& $manager->getBlog($blogid);
+<<<<<<< HEAD
        $skin = new SKIN($blog->getDefaultSkin());
+=======
+       $skin =& $manager->getSkin($blog->getDefaultSkin());
+>>>>>>> skinnable-master
        $skin->update($type, $content);
 
        return new xmlrpcresp(new xmlrpcval(1,'boolean'));
index 4b5de77..000d9fe 100644 (file)
@@ -1,18 +1,18 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
-<html xmlns="http://www.w3.org/1999/xhtml">\r
-<head>\r
-       <title>Nucleus - Readme</title>\r
-       <style type="text/css">\r
-       <!--\r
-               @import url(nucleus/styles/manual.css);\r
-       -->\r
-       </style>\r
-</head>\r
-<body>\r
-<h1>Readme</h1>\r
-\r
-<p>\r
-The only purpose of this file is to guide you to <a href="nucleus/documentation/index.html">the Nucleus manual</a>.\r
-</p>\r
-</body>\r
-</html>\r
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+       <title>Nucleus - Readme</title>
+       <style type="text/css">
+       <!--
+               @import url(nucleus/styles/manual.css);
+       -->
+       </style>
+</head>
+<body>
+<h1>Readme</h1>
+
+<p>
+The only purpose of this file is to guide you to <a href="nucleus/documentation/index.html">the Nucleus manual</a>.
+</p>
+</body>
+</html>
\ No newline at end of file
index b202b8d..032b921 100644 (file)
@@ -1,2 +1,2 @@
-User-agent: *\r
-Disallow: action.php?\r
+User-agent: *
+Disallow: action.php?
diff --git a/rsd.php b/rsd.php
index 78631b7..74c6af2 100644 (file)
--- a/rsd.php
+++ b/rsd.php
@@ -1,6 +1,6 @@
-<?php\r
-// RSD file (http://archipelago.phrasewise.com/rsd)\r
-$CONF = array();\r
-include('./config.php');\r
-selectSkin('xml/rsd');\r
-selector();\r
+<?php
+// RSD file (http://archipelago.phrasewise.com/rsd)
+$CONF = array();
+include('./config.php');
+selectSkin('xml/rsd');
+selector();
similarity index 97%
rename from nucleus/javascript/edit.js
rename to skins/admin/bookmarklet/javascripts/edit.js
index c1cc3c0..266790f 100644 (file)
@@ -137,16 +137,14 @@ var nonie_FormType = 'body';
 
 // Add media to new item
 function addMedia() {
-
-       var mediapopup = window.open(nucleusMediaPopupURL + 'media.php','name',
-               'status=yes,toolbar=no,scrollbars=yes,resizable=yes,width=500,height=450,top=0,left=0');
-
-       return;
-}
-
-
-function setMediaPopupURL(url) {
-       nucleusMediaPopupURL = url;
+       if ( typeof(medium) != 'undefined' )
+       {
+               medium.addMedia();
+       }
+       else
+       {
+               alert('Media Plugin Not Found');
+       }
 }
 
 function includeImage(collection, filename, type, width, height) {
diff --git a/skins/admin/bookmarklet/skinbackup.xml b/skins/admin/bookmarklet/skinbackup.xml
new file mode 100644 (file)
index 0000000..1331c0a
--- /dev/null
@@ -0,0 +1,628 @@
+<?xml version="1.0"?>
+<nucleusskin>
+<meta>
+<skin name="admin/bookmarklet"/>
+<template name="admin/bookmarklet"/>
+<info><![CDATA[20120430]]></info>
+</meta>
+<skin name="admin/bookmarklet" type="text/html" includeMode="skindir" includePrefix="admin/bookmarklet">
+<description>
+<![CDATA[ADMIN Area Default Bookmarklet Skin]]>
+</description>
+
+<part name="createitem">
+<![CDATA[<%pagehead%>
+<h1><%text(_ADD_ADDTO)%> '<%bloglink%>'</h1>
+
+<form id="addform" method="post" action="<%adminurl%>bookmarklet.php" >
+
+<div>
+<input type="hidden" name="action" value="additem" />
+<input type="hidden" name="blogid" value="<%blogid%>" />
+<input type="hidden" name="draftid" value="0" />
+
+<%ticket%>
+
+<div id="submit" class="buttonbar">
+<div id="switchbuttons">
+<input type="button" onclick="flipBlock('body');" value="<%text(_BMLET_BODY)%> &gt;&gt;" />
+<input type="button" onclick="flipBlock('more');" value="<%text(_BMLET_MORE)%> &gt;&gt;" />
+<input type="button" onclick="flipBlock('options');" value="<%text(_BMLET_OPTIONS)%> &gt;&gt;" />
+<input type="button" onclick="updAllPreviews(); flipBlock('preview');" value="<%text(_BMLET_PREVIEW)%> &gt;&gt;" />
+</div>
+<input type="submit" value="<%text(_BMLET_ADD)%>" onclick="return checkSubmit();" />
+<input type="button" value="<%text(_BMLET_CANCEL)%>" onclick="window.close();" />
+</div>
+
+<div id="body" class="contentblock">
+<table frame="box" rules="all" summary="<%text(_BMLET_BODY)%>">
+<%if(autosave)%>
+<tr>
+<td><%text(_AUTOSAVEDRAFT)%></td>
+<td><span id="info"><%text(_AUTOSAVEDRAFT_NOTYETSAVED)%></span></td>
+</tr>
+<%endif%>
+<tr>
+<td><%text(_ADD_TITLE)%></td>
+<td><input type="text" id="inputtitle" name="title" value="<%contents(title)%>" size="60" maxlength="160" /></td>
+</tr>
+<tr>
+<td>
+<%text(_ADD_BODY)%> <%helplink(additem)%></td>
+<td>
+
+<div class="jsbuttonbar">
+<!--[if IE]>
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="cutThis()">
+<img src="<%skinfile(/images/button-cut.gif)%>" title="<%text(_ADD_CUT_TT)%>(Ctrl + X)" alt="<%text(_ADD_CUT_TT)%>(Ctrl + X)" width="16" height="16" />
+</span>
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="copyThis()">
+<img src="<%skinfile(/images/button-copy.gif)%>" title="<%text(_ADD_COPY_TT)%>(Ctrl + C)" alt="<%text(_ADD_COPY_TT)%>(Ctrl + C)" width="16" height="16" />
+</span>
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="pasteThis()">
+<img src="<%skinfile(/images/button-paste.gif)%>" title="<%text(_ADD_PASTE_TT)%>(Ctrl + V)" alt="<%text(_ADD_PASTE_TT)%>(Ctrl + V)" width="16" height="16" />
+</span>
+<span class="jsbuttonspacer">&nbsp;</span>
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="boldThis()">
+<img src="<%skinfile(/images/button-bold.gif)%>" title="<%text(_ADD_BOLD_TT)%>(Ctrl + Shift + B)" alt="<%text(_ADD_BOLD_TT)%>(Ctrl + Shift + B)" width="16" height="16" />
+</span>
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="italicThis()">
+<img src="<%skinfile(/images/button-italic.gif)%>" title="<%text(_ADD_ITALIC_TT)%>(Ctrl + Shift + I)" alt="<%text(_ADD_ITALIC_TT)%>(Ctrl + Shift + I)" width="16" height="16" />
+</span>
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="ahrefThis()">
+<img src="<%skinfile(/images/button-link.gif)%>" title="<%text(_ADD_HREF_TT)%>(Ctrl + Shift + A)" alt="<%text(_ADD_HREF_TT)%>(Ctrl + Shift + A)" width="16" height="16" />
+</span>
+<![endif]-->
+<!--[if ! IE]>-->
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="boldThis()">
+<img src="<%skinfile(/images/button-bold.gif)%>" title="<%text(_ADD_BOLD_TT)%>" alt="<%text(_ADD_BOLD_TT)%>" width="16" height="16" />
+</span>
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="italicThis()">
+<img src="<%skinfile(/images/button-italic.gif)%>" title="<%text(_ADD_ITALIC_TT)%>" alt="<%text(_ADD_ITALIC_TT)%>" width="16" height="16" />
+</span>
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="ahrefThis()">
+<img src="<%skinfile(/images/button-link.gif)%>" title="<%text(_ADD_HREF_TT)%>" alt="<%text(_ADD_HREF_TT)%>" width="16" height="16" />
+</span>
+<!--<![endif]-->
+<span class="jsbuttonspacer">&nbsp;</span>
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="alignleftThis()">
+<img src="<%skinfile(/images/button-alignleft.gif)%>" title="<%text(_ADD_ALIGNLEFT_TT)%>" alt="<%text(_ADD_ALIGNLEFT_TT)%>" width="16" height="16" />
+</span>
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="alignrightThis()">
+<img src="<%skinfile(/images/button-alignright.gif)%>" title="<%text(_ADD_ALIGNRIGHT_TT)%>" alt="<%text(_ADD_ALIGNRIGHT_TT)%>" width="16" height="16" />
+</span>
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="aligncenterThis()">
+<img src="<%skinfile(/images/button-aligncenter.gif)%>" title="<%text(_ADD_ALIGNCENTER_TT)%>" alt="<%text(_ADD_ALIGNCENTER_TT)%>" width="16" height="16" />
+</span>
+<span class="jsbuttonspacer">&nbsp;</span>
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="leftThis()">
+<img src="<%skinfile(/images/button-left.gif)%>" title="<%text(_ADD_LEFT_TT)%>" alt="<%text(_ADD_LEFT_TT)%>" width="16" height="16" />
+</span>
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="rightThis()">
+<img src="<%skinfile(/images/button-right.gif)%>" title="<%text(_ADD_RIGHT_TT)%>" alt="<%text(_ADD_RIGHT_TT)%>" width="16" height="16" />
+</span>
+<span class="jsbuttonspacer">&nbsp;</span>
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="addMedia()">
+<img src="<%skinfile(/images/button-media.gif)%>" title="<%text(_ADD_MEDIA_TT)%>" alt="<%text(_ADD_MEDIA_TT)%>" width="16" height="16" />
+</span>
+<!--[if IE]>
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="showedit()">
+<img src="<%skinfile(/images/button-preview.gif)%>" title="<%text(_ADD_PREVIEW_TT)%>" alt="<%text(_ADD_PREVIEW_TT)%>" width="16" height="16" />
+</span>
+<![endif]-->
+<div class="jsbuttonend"></div>
+</div>
+
+<textarea id="inputbody" name="body" cols="58" rows="12"><%contents(body)%></textarea></td>
+</tr>
+<tr>
+<td><%text(_ADD_CATEGORY)%></td>
+<td><%categories%></td>
+</tr>
+<tr>
+<%if(autosave)%>
+<td><%text(_AUTOSAVEDRAFT_NOW)%></td>
+<td><input type="button" name="autosavenow" value="<%text(_AUTOSAVEDRAFT_NOW)%>" tabindex="80" onclick="autoSaveDraft();" /></td>
+<%endif%>
+</tr>
+</table>
+</div>
+
+<div id="more" class="contentblock">
+<table frame="box" rules="all" summary="<%text(_BMLET_MORE)%>">
+<tr>
+<td><%text(_ADD_MORE)%> <%helplink(extended)%></td>
+<td>
+
+<div class="jsbuttonbar">
+<!--[if IE]>
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="cutThis()">
+<img src="<%skinfile(/images/button-cut.gif)%>" title="<%text(_ADD_CUT_TT)%>(Ctrl + X)" alt="<%text(_ADD_CUT_TT)%>(Ctrl + X)" width="16" height="16" />
+</span>
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="copyThis()">
+<img src="<%skinfile(/images/button-copy.gif)%>" title="<%text(_ADD_COPY_TT)%>(Ctrl + C)" alt="<%text(_ADD_COPY_TT)%>(Ctrl + C)" width="16" height="16" />
+</span>
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="pasteThis()">
+<img src="<%skinfile(/images/button-paste.gif)%>" title="<%text(_ADD_PASTE_TT)%>(Ctrl + V)" alt="<%text(_ADD_PASTE_TT)%>(Ctrl + V)" width="16" height="16" />
+</span>
+<span class="jsbuttonspacer">&nbsp;</span>
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="boldThis()">
+<img src="<%skinfile(/images/button-bold.gif)%>" title="<%text(_ADD_BOLD_TT)%>(Ctrl + Shift + B)" alt="<%text(_ADD_BOLD_TT)%>(Ctrl + Shift + B)" width="16" height="16" />
+</span>
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="italicThis()">
+<img src="<%skinfile(/images/button-italic.gif)%>" title="<%text(_ADD_ITALIC_TT)%>(Ctrl + Shift + I)" alt="<%text(_ADD_ITALIC_TT)%>(Ctrl + Shift + I)" width="16" height="16" />
+</span>
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="ahrefThis()">
+<img src="<%skinfile(/images/button-link.gif)%>" title="<%text(_ADD_HREF_TT)%>(Ctrl + Shift + A)" alt="<%text(_ADD_HREF_TT)%>(Ctrl + Shift + A)" width="16" height="16" />
+</span>
+<![endif]-->
+<!--[if ! IE]>-->
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="boldThis()">
+<img src="<%skinfile(/images/button-bold.gif)%>" title="<%text(_ADD_BOLD_TT)%>" alt="<%text(_ADD_BOLD_TT)%>" width="16" height="16" />
+</span>
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="italicThis()">
+<img src="<%skinfile(/images/button-italic.gif)%>" title="<%text(_ADD_ITALIC_TT)%>" alt="<%text(_ADD_ITALIC_TT)%>" width="16" height="16" />
+</span>
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="ahrefThis()">
+<img src="<%skinfile(/images/button-link.gif)%>" title="<%text(_ADD_HREF_TT)%>" alt="<%text(_ADD_HREF_TT)%>" width="16" height="16" />
+</span>
+<!--<![endif]-->
+<span class="jsbuttonspacer">&nbsp;</span>
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="alignleftThis()">
+<img src="<%skinfile(/images/button-alignleft.gif)%>" title="<%text(_ADD_ALIGNLEFT_TT)%>" alt="<%text(_ADD_ALIGNLEFT_TT)%>" width="16" height="16" />
+</span>
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="alignrightThis()">
+<img src="<%skinfile(/images/button-alignright.gif)%>" title="<%text(_ADD_ALIGNRIGHT_TT)%>" alt="<%text(_ADD_ALIGNRIGHT_TT)%>" width="16" height="16" />
+</span>
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="aligncenterThis()">
+<img src="<%skinfile(/images/button-aligncenter.gif)%>" title="<%text(_ADD_ALIGNCENTER_TT)%>" alt="<%text(_ADD_ALIGNCENTER_TT)%>" width="16" height="16" />
+</span>
+<span class="jsbuttonspacer">&nbsp;</span>
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="leftThis()">
+<img src="<%skinfile(/images/button-left.gif)%>" title="<%text(_ADD_LEFT_TT)%>" alt="<%text(_ADD_LEFT_TT)%>" width="16" height="16" />
+</span>
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="rightThis()">
+<img src="<%skinfile(/images/button-right.gif)%>" title="<%text(_ADD_RIGHT_TT)%>" alt="<%text(_ADD_RIGHT_TT)%>" width="16" height="16" />
+</span>
+<span class="jsbuttonspacer">&nbsp;</span>
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="addMedia()">
+<img src="<%skinfile(/images/button-media.gif)%>" title="<%text(_ADD_MEDIA_TT)%>" alt="<%text(_ADD_MEDIA_TT)%>" width="16" height="16" />
+</span>
+<!--[if IE]>
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="showedit()">
+<img src="<%skinfile(/images/button-preview.gif)%>" title="<%text(_ADD_PREVIEW_TT)%>" alt="<%text(_ADD_PREVIEW_TT)%>" width="16" height="16" />
+</span>
+<![endif]-->
+<div class="jsbuttonend"></div>
+</div>
+
+<textarea id="inputmore" name="more" cols="58" rows="17"><%contents(more)%></textarea>
+</td>
+</tr>
+</table>
+</div>
+
+<div id="options" class="contentblock">
+<table frame="box" rules="all" summary="<%text(_BMLET_OPTIONS)%>">
+
+<%if(blogsetting, bcomments)%>
+<tr>
+<td><%text(_ADD_DISABLE_COMMENTS)%></td>
+<td>
+<input type='radio' id="closed_yes" name='closed' value='1' />
+<label for="closed_yes"><%text(_YES)%></label>
+<input type='radio' id="closed_no" name='closed' value='0' checked='checked' />
+<label for="closed_no"><%text(_NO)%></label>
+</td>
+</tr>
+<%endif%>
+
+<tr>
+<td><%text(_ADD_DRAFTNFUTURE)%></td>
+<td>
+<input type="radio" name="actiontype" value="addnow" checked='checked' id="act_now" />
+<label for="act_now"><%text(_ADD_ADDNOW)%></label><br />
+<input type="radio" id="act_future" name="actiontype" value="addfuture" />
+<label for="act_future"><%text(_ADD_ADDLATER)%></label> <%helplink(future)%>
+<div class="indent">
+<%text(_ADD_PLACE_ON)%>
+<input id="inputday" name="day" value="<%currenttime(mday)%>" size="2" onchange="document.forms[0].act_future.checked=true;" />/
+<input id="inputmonth" name="month" value="<%currenttime(mon)%>" size="2" onchange="document.forms[0].act_future.checked=true;" />/
+<input id="inputyear" name="year" value="<%currenttime(year)%>" size="4" onchange="document.forms[0].act_future.checked=true;" />
+at
+<input id="inputhour" name="hour" value="<%currenttime(hours)%>" size="2" onchange="document.forms[0].act_future.checked=true;" />:
+<input id="inputminutes" name="minutes" value="<%currenttime(minutes)%>" size="2" onchange="document.forms[0].act_future.checked=true;" />
+(dd/mm/yyyy hh:mm)
+
+<%if(blogsetting, ballowpast,0)%>
+<br />
+<%text(_ADD_NOPASTDATES)%>
+<%endif%>
+
+</div>
+<input type="radio" name="actiontype" value="adddraft" id="act_draft" />
+<label for="act_draft"><%text(_ADD_ADDDRAFT)%></label> <%helplink(draft)%>
+</td>
+</tr>
+
+<tr>
+<td><%text(_ADD_PLUGIN_EXTRAS)%></td>
+<td><%pluginextras%></td>
+</tr>
+<%itemoptions%>
+</table>
+
+</div>
+
+<div id="preview" class="contentblock">
+<h2><%text(_ADD_PREVIEW)%></h2>
+<b><span id="prevtitle">&#160;</span></b><br />
+<span id="prevbody">&#160;</span><br />
+<span id="prevmore">&#160;</span>
+</div>
+
+<%if(autosave)%>
+<script type="text/javascript">
+       var xmlhttprequest = new Array();
+       xmlhttprequest[0] = createHTTPHandler(); // AutoDraft handler
+       xmlhttprequest[1] = createHTTPHandler(); // UpdateTicket handler
+       var seconds = now(); // Last AutoDraft time
+       var checks = 0; // Number of checks since last AutoDraft
+       var addform = document.getElementById('addform');
+       var goal = document.getElementById('info'); // The html div id where 'Last saved: date time' must come
+       var goalurl = '../action.php'; // The PHP file where the content must be posted to
+       var lastsavedtext = '<%text(_AUTOSAVEDRAFT_LASTSAVED)%>'; // The language variable for 'Last saved'
+       var formtype = 'add';
+</script>
+<%endif%>
+
+</div>
+
+</form>
+<%pagefoot%>]]>
+</part>
+
+<part name="itemedit">
+<![CDATA[<%pagehead%>
+<h1><%text(_EDIT_ITEM)%> (<%contents(itemid)%>)</h1>
+<form id="editform" method="post" action="<%adminurl%>bookmarklet.php" ><div>
+<input type="hidden" name="action" value="edititem" />
+<input type="hidden" name="itemid" value="<%contents(itemid)%>" />
+<input type="hidden" name="draftid" value="0" />
+<%ticket%>
+
+<div id="submit" class="buttonbar">
+<div id="switchbuttons">
+<input type="button" value="<%text(_BMLET_BODY)%> &gt;&gt;" onclick="flipBlock('body');" />
+<input type="button" value="<%text(_BMLET_MORE)%> &gt;&gt;" onclick="flipBlock('more');" />
+<input type="button" value="<%text(_BMLET_OPTIONS)%> &gt;&gt;" onclick="flipBlock('options');" />
+<input type="button" value="<%text(_BMLET_PREVIEW)%> &gt;&gt;" onclick="updAllPreviews(); flipBlock('preview');" />
+</div>
+<input type="submit" value="<%text(_BMLET_EDIT)%>" onclick="return checkSubmit();" />
+<input type="button" value="<%text(_BMLET_CANCEL)%>" onclick="window.close();" />
+</div>
+
+<div id="body" class="contentblock">
+<table frame="box" rules="all" summary="<%text(_BMLET_BODY)%>">
+
+<%if(autosave)%>
+<tr>
+<td><%text(_AUTOSAVEDRAFT)%></td>
+<td><span id="info"><%text(_AUTOSAVEDRAFT_NOTYETSAVED)%></span></td>
+</tr>
+<%endif%>
+
+<tr>
+<td><%text(_ADD_TITLE)%></td>
+<td><input type="text" id="inputtitle" name="title" value="<%contents(title)%>" size="60" maxlength="160" /></td>
+</tr>
+<tr>
+<td><%text(_ADD_BODY)%></td>
+<td>
+
+<div class="jsbuttonbar">
+<!--[if IE]>
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="cutThis()">
+<img src="<%skinfile(/images/button-cut.gif)%>" title="<%text(_ADD_CUT_TT)%>(Ctrl + X)" alt="<%text(_ADD_CUT_TT)%>(Ctrl + X)" width="16" height="16" />
+</span>
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="copyThis()">
+<img src="<%skinfile(/images/button-copy.gif)%>" title="<%text(_ADD_COPY_TT)%>(Ctrl + C)" alt="<%text(_ADD_COPY_TT)%>(Ctrl + C)" width="16" height="16" />
+</span>
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="pasteThis()">
+<img src="<%skinfile(/images/button-paste.gif)%>" title="<%text(_ADD_PASTE_TT)%>(Ctrl + V)" alt="<%text(_ADD_PASTE_TT)%>(Ctrl + V)" width="16" height="16" />
+</span>
+<span class="jsbuttonspacer">&nbsp;</span>
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="boldThis()">
+<img src="<%skinfile(/images/button-bold.gif)%>" title="<%text(_ADD_BOLD_TT)%>(Ctrl + Shift + B)" alt="<%text(_ADD_BOLD_TT)%>(Ctrl + Shift + B)" width="16" height="16" />
+</span>
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="italicThis()">
+<img src="<%skinfile(/images/button-italic.gif)%>" title="<%text(_ADD_ITALIC_TT)%>(Ctrl + Shift + I)" alt="<%text(_ADD_ITALIC_TT)%>(Ctrl + Shift + I)" width="16" height="16" />
+</span>
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="ahrefThis()">
+<img src="<%skinfile(/images/button-link.gif)%>" title="<%text(_ADD_HREF_TT)%>(Ctrl + Shift + A)" alt="<%text(_ADD_HREF_TT)%>(Ctrl + Shift + A)" width="16" height="16" />
+</span>
+<![endif]-->
+<!--[if ! IE]>-->
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="boldThis()">
+<img src="<%skinfile(/images/button-bold.gif)%>" title="<%text(_ADD_BOLD_TT)%>" alt="<%text(_ADD_BOLD_TT)%>" width="16" height="16" />
+</span>
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="italicThis()">
+<img src="<%skinfile(/images/button-italic.gif)%>" title="<%text(_ADD_ITALIC_TT)%>" alt="<%text(_ADD_ITALIC_TT)%>" width="16" height="16" />
+</span>
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="ahrefThis()">
+<img src="<%skinfile(/images/button-link.gif)%>" title="<%text(_ADD_HREF_TT)%>" alt="<%text(_ADD_HREF_TT)%>" width="16" height="16" />
+</span>
+<!--<![endif]-->
+<span class="jsbuttonspacer">&nbsp;</span>
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="alignleftThis()">
+<img src="<%skinfile(/images/button-alignleft.gif)%>" title="<%text(_ADD_ALIGNLEFT_TT)%>" alt="<%text(_ADD_ALIGNLEFT_TT)%>" width="16" height="16" />
+</span>
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="alignrightThis()">
+<img src="<%skinfile(/images/button-alignright.gif)%>" title="<%text(_ADD_ALIGNRIGHT_TT)%>" alt="<%text(_ADD_ALIGNRIGHT_TT)%>" width="16" height="16" />
+</span>
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="aligncenterThis()">
+<img src="<%skinfile(/images/button-aligncenter.gif)%>" title="<%text(_ADD_ALIGNCENTER_TT)%>" alt="<%text(_ADD_ALIGNCENTER_TT)%>" width="16" height="16" />
+</span>
+<span class="jsbuttonspacer">&nbsp;</span>
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="leftThis()">
+<img src="<%skinfile(/images/button-left.gif)%>" title="<%text(_ADD_LEFT_TT)%>" alt="<%text(_ADD_LEFT_TT)%>" width="16" height="16" />
+</span>
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="rightThis()">
+<img src="<%skinfile(/images/button-right.gif)%>" title="<%text(_ADD_RIGHT_TT)%>" alt="<%text(_ADD_RIGHT_TT)%>" width="16" height="16" />
+</span>
+<span class="jsbuttonspacer">&nbsp;</span>
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="addMedia()">
+<img src="<%skinfile(/images/button-media.gif)%>" title="<%text(_ADD_MEDIA_TT)%>" alt="<%text(_ADD_MEDIA_TT)%>" width="16" height="16" />
+</span>
+<!--[if IE]>
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="showedit()">
+<img src="<%skinfile(/images/button-preview.gif)%>" title="<%text(_ADD_PREVIEW_TT)%>" alt="<%text(_ADD_PREVIEW_TT)%>" width="16" height="16" />
+</span>
+<![endif]-->
+<div class="jsbuttonend"></div>
+</div>
+
+<textarea id="inputbody" name="body" cols="58" rows="12"><%contents(body)%></textarea>
+</td>
+</tr>
+<tr>
+<td><%text(_ADD_CATEGORY)%></td>
+<td><%categories%></td>
+</tr>
+<%if(autosave)%>
+<tr>
+<td><%text(_AUTOSAVEDRAFT_NOW)%></td>
+<td><input type="button" name="autosavenow" value="<%text(_AUTOSAVEDRAFT_NOW)%>" tabindex="80" onclick="autoSaveDraft();" /></td>
+</tr>
+<%endif%>
+</table>
+</div>
+
+<div id="more" class="contentblock">
+<table frame="box" rules="all" summary="<%text(_BMLET_MORE)%>">
+<tr>
+<td><%text(_ADD_MORE)%> <%helplink(extended)%></td>
+<td>
+
+<div class="jsbuttonbar">
+<!--[if IE]>
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="cutThis()">
+<img src="<%skinfile(/images/button-cut.gif)%>" title="<%text(_ADD_CUT_TT)%>(Ctrl + X)" alt="<%text(_ADD_CUT_TT)%>(Ctrl + X)" width="16" height="16" />
+</span>
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="copyThis()">
+<img src="<%skinfile(/images/button-copy.gif)%>" title="<%text(_ADD_COPY_TT)%>(Ctrl + C)" alt="<%text(_ADD_COPY_TT)%>(Ctrl + C)" width="16" height="16" />
+</span>
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="pasteThis()">
+<img src="<%skinfile(/images/button-paste.gif)%>" title="<%text(_ADD_PASTE_TT)%>(Ctrl + V)" alt="<%text(_ADD_PASTE_TT)%>(Ctrl + V)" width="16" height="16" />
+</span>
+<span class="jsbuttonspacer">&nbsp;</span>
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="boldThis()">
+<img src="<%skinfile(/images/button-bold.gif)%>" title="<%text(_ADD_BOLD_TT)%>(Ctrl + Shift + B)" alt="<%text(_ADD_BOLD_TT)%>(Ctrl + Shift + B)" width="16" height="16" />
+</span>
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="italicThis()">
+<img src="<%skinfile(/images/button-italic.gif)%>" title="<%text(_ADD_ITALIC_TT)%>(Ctrl + Shift + I)" alt="<%text(_ADD_ITALIC_TT)%>(Ctrl + Shift + I)" width="16" height="16" />
+</span>
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="ahrefThis()">
+<img src="<%skinfile(/images/button-link.gif)%>" title="<%text(_ADD_HREF_TT)%>(Ctrl + Shift + A)" alt="<%text(_ADD_HREF_TT)%>(Ctrl + Shift + A)" width="16" height="16" />
+</span>
+<![endif]-->
+<!--[if ! IE]>-->
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="boldThis()">
+<img src="<%skinfile(/images/button-bold.gif)%>" title="<%text(_ADD_BOLD_TT)%>" alt="<%text(_ADD_BOLD_TT)%>" width="16" height="16" />
+</span>
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="italicThis()">
+<img src="<%skinfile(/images/button-italic.gif)%>" title="<%text(_ADD_ITALIC_TT)%>" alt="<%text(_ADD_ITALIC_TT)%>" width="16" height="16" />
+</span>
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="ahrefThis()">
+<img src="<%skinfile(/images/button-link.gif)%>" title="<%text(_ADD_HREF_TT)%>" alt="<%text(_ADD_HREF_TT)%>" width="16" height="16" />
+</span>
+<!--<![endif]-->
+<span class="jsbuttonspacer">&nbsp;</span>
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="alignleftThis()">
+<img src="<%skinfile(/images/button-alignleft.gif)%>" title="<%text(_ADD_ALIGNLEFT_TT)%>" alt="<%text(_ADD_ALIGNLEFT_TT)%>" width="16" height="16" />
+</span>
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="alignrightThis()">
+<img src="<%skinfile(/images/button-alignright.gif)%>" title="<%text(_ADD_ALIGNRIGHT_TT)%>" alt="<%text(_ADD_ALIGNRIGHT_TT)%>" width="16" height="16" />
+</span>
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="aligncenterThis()">
+<img src="<%skinfile(/images/button-aligncenter.gif)%>" title="<%text(_ADD_ALIGNCENTER_TT)%>" alt="<%text(_ADD_ALIGNCENTER_TT)%>" width="16" height="16" />
+</span>
+<span class="jsbuttonspacer">&nbsp;</span>
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="leftThis()">
+<img src="<%skinfile(/images/button-left.gif)%>" title="<%text(_ADD_LEFT_TT)%>" alt="<%text(_ADD_LEFT_TT)%>" width="16" height="16" />
+</span>
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="rightThis()">
+<img src="<%skinfile(/images/button-right.gif)%>" title="<%text(_ADD_RIGHT_TT)%>" alt="<%text(_ADD_RIGHT_TT)%>" width="16" height="16" />
+</span>
+<span class="jsbuttonspacer">&nbsp;</span>
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="addMedia()">
+<img src="<%skinfile(/images/button-media.gif)%>" title="<%text(_ADD_MEDIA_TT)%>" alt="<%text(_ADD_MEDIA_TT)%>" width="16" height="16" />
+</span>
+<!--[if IE]>
+<span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="showedit()">
+<img src="<%skinfile(/images/button-preview.gif)%>" title="<%text(_ADD_PREVIEW_TT)%>" alt="<%text(_ADD_PREVIEW_TT)%>" width="16" height="16" />
+</span>
+<![endif]-->
+<div class="jsbuttonend"></div>
+</div>
+
+<textarea id="inputmore" name="more" cols="58" rows="17"><%contents(more)%></textarea>
+</td>
+</tr>
+</table>
+</div>
+
+<div id="options" class="contentblock">
+<table frame="box" rules="all" summary="<%text(_BMLET_OPTIONS)%>">
+<%if(blogsetting, bcomments)%>
+<tr>
+<td><%text(_ADD_DISABLE_COMMENTS)%></td>
+<td>
+<input type="radio" name="closed" value="1" id="closed_yes" <%checkedonval(1,closed)%> /><label for="closed_yes"><%text(_YES)%></label>
+<input type="radio" name="closed" value="0" id="closed_no" <%checkedonval(0,closed)%> /><label for="closed_no"><%text(_NO)%></label>
+</td>
+</tr>
+<%endif%>
+<tr>
+<td><%text(_SUBMIT)%></td>
+<td>
+<input id="act_edit" type="radio" name="actiontype" value="edit" checked="checked" />
+<label for="act_edit"><%text(_BMLET_EDIT)%></label><br />
+<input id="act_delete" type="radio" name="actiontype" value="delete" />
+<label for="act_delete"><%text(_BMLET_DELETE)%></label><br />
+
+<%if(blogsetting, ballowpast)%>
+<input id="act_changedate" name="actiontype" value="changedate" type="radio" tabindex="70" />
+<label for="act_changedate"><%text(_BMLET_CHANGEDATE)%></label> <%helplink(changedate)%>
+
+<div class="indent">
+<input id="inputday" name="day" value="<%itemtime(mday)%>" size="2" tabindex="71" onchange="document.forms[0].act_changedate.checked=true;" />/
+<input id="inputmonth" name="month" value="<%itemtime(mon)%>" tabindex="72" size="2" onchange="document.forms[0].act_changedate.checked=true;" />/
+<input id="inputyear" name="year" tabindex="73" size="4" value="<%itemtime(year)%>" onchange="document.forms[0].act_changedate.checked=true;" />
+at
+<input id="inputhour" name="hour" value="<%itemtime(hours)%>" size="2" tabindex="74" onchange="document.forms[0].act_changedate.checked=true;" />:
+<input id="inputminutes" name="minutes" value="<%itemtime(minutes)%>" size="2" tabindex="75" onchange="document.forms[0].act_changedate.checked=true;" />
+(dd/mm/yyyy hh:mm)
+</div>
+<input type="radio" id="act_backtodrafts" name="actiontype" value="backtodrafts" tabindex="71" />
+<label for="act_backtodrafts">
+<%text(_BMLET_BACKTODRAFTS)%></label> <%helplink(draft)%>
+<%endif%>
+
+</td>
+</tr>
+
+<tr>
+<td><%text(_ADD_PLUGIN_EXTRAS)%></td>
+<td><%pluginextras%></td>
+</tr>
+
+<%itemoptions%>
+</table>
+</div>
+
+<div id="preview" class="contentblock">
+<h2><%text(_ADD_PREVIEW)%></h2>
+<b><span id="prevtitle">&#160;</span></b><br />
+<span id="prevbody">&#160;</span><br />
+<span id="prevmore">&#160;</span>
+</div>
+</div>
+</form>
+<%if(autosave)%>
+<script type="text/javascript">
+       var xmlhttprequest = new Array();
+       xmlhttprequest[0] = createHTTPHandler(); // AutoDraft handler
+       xmlhttprequest[1] = createHTTPHandler(); // UpdateTicket handler
+       var seconds = now(); // Last AutoDraft time
+       var checks = 0; // Number of checks since last AutoDraft
+       var addform = document.getElementById('editform');
+       var goal = document.getElementById('info'); // The html div id where 'Last saved: date time' must come
+       var goalurl = '../action.php'; // The PHP file where the content must be posted to
+       var lastsavedtext = '<%text(_AUTOSAVEDRAFT_LASTSAVED)%>'; // The language variable for 'Last saved'
+       var formtype = 'edit';
+</script>
+<%endif%>
+<%pagefoot%>]]>
+</part>
+
+<part name="pagefoot">
+<![CDATA[
+       </body>
+       </html>
+]]></part>
+
+<part name="pagehead">
+<![CDATA[<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+       <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<%locale%>" lang="<%locale%>">
+       <head>
+       <title><%title%></title>
+       <link rel="stylesheet" type="text/css" href="<%skinfile(/styles/bookmarklet.css)%>" /> 
+       <link rel="stylesheet" type="text/css" href="<%skinfile(/styles/addedit.css)%>" />
+       <script type="text/javascript" src="<%skinfile(/javascripts/bookmarklet.js)%>"></script>
+       <script type="text/javascript" src="<%skinfile(/javascripts/edit.js)%>"></script>
+       <script type="text/javascript" src="<%skinfile(/javascripts/numbercheck.js)%>"></script>
+       
+       <%if(autosave)%>
+       <script type="text/javascript" src="<%skinfile(/javascripts/xmlhttprequest.js)%>"></script>
+       <%endif%>
+       
+       <%init%>
+       
+       <%extrahead%>
+       
+       <script type="text/javascript">
+       var nucleus_initbm_oldonload = window.onload;
+       function nucleus_initbm()
+       {
+               initStyles();
+               updAllPreviews();
+               
+               if ( nucleus_initbm_oldonload )
+               {
+                       nucleus_initbm_oldonload();
+               }
+       }
+       window.onload = nucleus_initbm;
+       </script>
+       </head>
+       <body>
+]]></part>
+
+<part name="showlogin">
+<![CDATA[<%pagehead%><h2><%text(_LOGIN)%></h2>
+       <%headmessage%>
+       <form method="post" action="<%adminurl%>bookmarklet.php">
+       <p>
+       <%text(_LOGIN_NAME)%> <br /><input name="login" tabindex="10" /><br />
+       <%text(_LOGIN_PASSWORD)%> <br /><input name="password"  tabindex="20" type="password" /><br />
+       <input type="checkbox" value="1" name="shared" tabindex="40" id="shared" />
+       <label for="shared"><%text(_LOGIN_SHARED)%></label><br />
+       <a href="forgotpassword.php"><%text(_LOGIN_FORGOT)%></a>
+       
+       <%passrequestvars%>
+       
+       <input type="hidden" name="blogid" value="<%blogid%>" />
+       <input type="hidden" name="itemid" value="<%itemid%>" />
+       <input type="hidden" name="logtext" value="<%log_text%>" />
+       <input type="hidden" name="loglink" value="<%log_link%>" />
+       <input type="hidden" name="loglinktitle" value="<%log_linktitle%>" />
+       
+       <input type="hidden" name="nextaction" value="<%action%>" />
+       <button type="submit" name="action" value="login"><%text(_LOGIN)%></button>
+       </p>
+       </form>
+<%pagefoot%>]]></part>
+
+<part name="adminerrorpage"><![CDATA[
+<%pagehead%>
+<%headmessage%>
+<p><a href="<%adminurl%>bookmarklet.php" onclick="window.close();window.opener.location.reload();"><%text(_POPUP_CLOSE)%></a></p>
+<%pagefoot%>
+]]></part>
+
+</skin>
+<template name="admin/bookmarklet">
+<description><![CDATA[ADMIN Area Default bookmarklet template]]></description>
+</template>
+</nucleusskin>
diff --git a/skins/admin/bookmarklet/styles/addedit.css b/skins/admin/bookmarklet/styles/addedit.css
new file mode 100644 (file)
index 0000000..29a7d99
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+       This stylesheet serves to make item previews look nicer, and to markup the 
+       buttonbar
+       
+       $Id: addedit.css 757 2005-08-12 07:29:40Z dekarma $
+*/
+
+.leftbox, .rightbox {
+       margin: 3px;
+       padding: 3px;
+       font-size: larger;
+       width: 20%;
+}
+.leftbox {
+       float: left;
+       border-right: 2px solid #888;   
+}
+.rightbox {
+       float: right;
+       border-left: 2px solid #888;    
+}
+
+/* markup buttons */
+.jsbuttonbar {
+<<<<<<< HEAD:nucleus/styles/addedit.css
+       height: 30px;
+=======
+       padding: 3px;
+>>>>>>> skinnable-master:skins/admin/bookmarklet/styles/addedit.css
+       cursor: default;
+}
+
+.jsbutton {
+       float: left;
+       padding: 3px;
+       margin-right: 4px;
+       height: 16px;
+       width: 16px;
+       border: 1px solid #dddddd;
+       background-color: white;
+}
+
+.jsbuttonspacer {
+       float: left;
+       width: 10px;
+<<<<<<< HEAD:nucleus/styles/addedit.css
+=======
+}
+
+.jsbuttonend {
+       clear: both;
+>>>>>>> skinnable-master:skins/admin/bookmarklet/styles/addedit.css
+}
diff --git a/skins/admin/bookmarklet/styles/bookmarklet.css b/skins/admin/bookmarklet/styles/bookmarklet.css
new file mode 100644 (file)
index 0000000..351a159
--- /dev/null
@@ -0,0 +1,144 @@
+/* 
+       style definitions for the bookmarklet 
+       
+       $Id: bookmarklet.css 1277 2008-10-22 08:43:59Z shizuki $
+*/
+
+body {
+       font-size: small;
+       background: #fff;
+       color: #000;
+    font-family: "Trebuchet MS",Trebuchet,"Bitstream Vera Sans",verdana,lucida,arial,helvetica,sans-serif
+}              
+
+h1 {
+       border-bottom: 1px dotted gray;
+       font-size: medium;
+       color: #596d9d;
+}
+
+/* 
+       Hide switch buttons initially, we'll enable them again if we are sure
+       the browser supports DOM
+*/
+#switchbuttons {
+       display: none;
+}
+/*
+       Hide preview also when no DOM is supported
+*/
+#preview {
+       display: none;
+}
+
+.buttonbar {
+   margin-bottom: 5px;
+   background: rgb(187, 187, 204);
+   padding: 3px;
+}
+
+.buttonbar input {
+   background: #C5C5D3;
+    border: 1px solid #CACAD7;
+    border-right: 2px solid #8E8EAB;
+    border-bottom: 2px solid #8E8EAB;
+    color: #000000;
+    font-family: "Trebuchet MS",Trebuchet,"Bitstream Vera Sans",verdana,lucida,arial,helvetica,sans-serif;
+    font-weight: bold;   
+}
+
+.contentblock {
+       /*background: #ddd;*/
+/*     height: 400px;*/
+       height: 450px;
+       overflow: auto; /* temporary removed, to make the select box work in Mozilla */
+       padding: 1px;
+    margin: 0px;
+       vertical-align: top;
+}
+
+.shortcuts {
+       float: right; 
+       text-align: right;
+       font-size: x-small;
+}
+
+h2 {
+   font-size: 1.5em;
+   color: gray;
+    margin-top: 0px;
+    padding-top: 0px;
+    padding-bottom: 0px;
+    margin-top: 0px;
+}
+
+a:link, a:visited {
+       color: #1D3565; 
+       font-weight: bold;
+       text-decoration: none;
+}
+
+a:hover {
+       text-decoration: underline;
+}                      
+
+img { 
+       border: none;
+}
+
+.indent {
+       margin-left: 40px;
+}
+
+label          { cursor: pointer; }
+
+table {
+       border: none;
+       width: 95%;
+       border-collapse: collapse;
+       margin-bottom: 10px;
+       margin-top: 10px;       
+}
+
+th {
+       background: #bbc;
+       color: #000;
+       font-size: small;
+}
+
+th, td {
+       padding: 4px;
+       empty-cells: show;      
+}
+
+td {
+       background: #fff;
+       border: 1px solid #ddd;
+       font-size: small;
+       vertical-align: top;
+       text-align: left;
+}
+
+td a:link, td a:visited { 
+       text-decoration: underline;
+       color: black;
+       font-weight: normal;
+}
+td a:hover {
+       color: #1D3565;
+       text-decoration: underline;
+}
+
+td.draft, td.future {
+       background: #ffe;
+}
+
+tr.highlighted td {
+       background: green;
+}
+
+ul.nobullets {
+       list-style-type: none;
+       padding: 0;
+       margin: 0;
+}
\ No newline at end of file
diff --git a/skins/admin/default/images/button-aligncenter.gif b/skins/admin/default/images/button-aligncenter.gif
new file mode 100644 (file)
index 0000000..2ce38e7
Binary files /dev/null and b/skins/admin/default/images/button-aligncenter.gif differ
diff --git a/skins/admin/default/images/button-alignleft.gif b/skins/admin/default/images/button-alignleft.gif
new file mode 100644 (file)
index 0000000..53522cb
Binary files /dev/null and b/skins/admin/default/images/button-alignleft.gif differ
diff --git a/skins/admin/default/images/button-alignright.gif b/skins/admin/default/images/button-alignright.gif
new file mode 100644 (file)
index 0000000..a27a944
Binary files /dev/null and b/skins/admin/default/images/button-alignright.gif differ
diff --git a/skins/admin/default/images/button-bold.gif b/skins/admin/default/images/button-bold.gif
new file mode 100644 (file)
index 0000000..207c859
Binary files /dev/null and b/skins/admin/default/images/button-bold.gif differ
diff --git a/skins/admin/default/images/button-copy.gif b/skins/admin/default/images/button-copy.gif
new file mode 100644 (file)
index 0000000..4cb12cf
Binary files /dev/null and b/skins/admin/default/images/button-copy.gif differ
diff --git a/skins/admin/default/images/button-cut.gif b/skins/admin/default/images/button-cut.gif
new file mode 100644 (file)
index 0000000..d00c0e6
Binary files /dev/null and b/skins/admin/default/images/button-cut.gif differ
diff --git a/skins/admin/default/images/button-italic.gif b/skins/admin/default/images/button-italic.gif
new file mode 100644 (file)
index 0000000..bcef033
Binary files /dev/null and b/skins/admin/default/images/button-italic.gif differ
diff --git a/skins/admin/default/images/button-left.gif b/skins/admin/default/images/button-left.gif
new file mode 100644 (file)
index 0000000..9158414
Binary files /dev/null and b/skins/admin/default/images/button-left.gif differ
diff --git a/skins/admin/default/images/button-link.gif b/skins/admin/default/images/button-link.gif
new file mode 100644 (file)
index 0000000..c1a41e2
Binary files /dev/null and b/skins/admin/default/images/button-link.gif differ
diff --git a/skins/admin/default/images/button-media.gif b/skins/admin/default/images/button-media.gif
new file mode 100644 (file)
index 0000000..ce65641
Binary files /dev/null and b/skins/admin/default/images/button-media.gif differ
diff --git a/skins/admin/default/images/button-paste.gif b/skins/admin/default/images/button-paste.gif
new file mode 100644 (file)
index 0000000..ef0d0eb
Binary files /dev/null and b/skins/admin/default/images/button-paste.gif differ
diff --git a/skins/admin/default/images/button-preview.gif b/skins/admin/default/images/button-preview.gif
new file mode 100644 (file)
index 0000000..71d2d92
Binary files /dev/null and b/skins/admin/default/images/button-preview.gif differ
diff --git a/skins/admin/default/images/button-right.gif b/skins/admin/default/images/button-right.gif
new file mode 100644 (file)
index 0000000..124772b
Binary files /dev/null and b/skins/admin/default/images/button-right.gif differ
similarity index 94%
rename from nucleus/javascript/admin.js
rename to skins/admin/default/javascripts/admin.js
index 7f637b1..d1e4642 100644 (file)
@@ -1,6 +1,6 @@
 /**
   * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/) 
-  * Copyright (C) 2002-2012 The Nucleus Group
+  * Copyright (C) 2002-2009 The Nucleus Group
   *
   * This program is free software; you can redistribute it and/or
   * modify it under the terms of the GNU General Public License
@@ -10,7 +10,7 @@
   *  
   * Some JavaScript code for the admin area
   *
-  * $Id: admin.js 1388 2009-07-18 06:31:28Z shizuki $
+  * $Id: admin.js 1888 2012-06-17 08:38:54Z sakamocchi $
   */
 
 function help(url) {
diff --git a/skins/admin/default/javascripts/bookmarklet.js b/skins/admin/default/javascripts/bookmarklet.js
new file mode 100644 (file)
index 0000000..12822a2
--- /dev/null
@@ -0,0 +1,70 @@
+/**
+  * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/) 
+  * Copyright (C) 2002-2009 The Nucleus Group
+  *
+  * This program is free software; you can redistribute it and/or
+  * modify it under the terms of the GNU General Public License
+  * as published by the Free Software Foundation; either version 2
+  * of the License, or (at your option) any later version.
+  * (see nucleus/documentation/index.html#license for more info)
+  *  
+  * Some JavaScript code for the bookmarklets
+  *
+  * $Id: bookmarklet.js 1888 2012-06-17 08:38:54Z sakamocchi $
+  */
+
+/**
+ * On browsers that have DOM support, the non-visible tabs of the bookmarklet are 
+ * initially hidden. This is not defined in the CSS stylesheet since this causes 
+ * problems with Opera (which does not seem to be sending form data for input
+ * fields which are in a hidden block)
+ */
+function initStyles() {
+       hideBlock('more');
+       hideBlock('options');
+       hideBlock('preview');
+       
+       // in browsers that do not support DOM (like opera), the buttons used
+       // to switch tabs are useless and can be hidden
+       document.getElementById('switchbuttons').style.display = 'inline';
+}
+
+/**
+ * To be called with id='body','more','options' or 'preview'
+ * Hides all other tabs and makes the chosen one visible
+ */
+function flipBlock(id) {
+
+       showBlock(id);
+       
+       if (id != 'body')
+               hideBlock('body');
+       if (id != 'more')
+               hideBlock('more');
+       if (id != 'options')
+               hideBlock('options');
+       if (id != 'preview')
+               hideBlock('preview');           
+       
+}
+
+/**
+ * Hides one element (tab)
+ */
+function hideBlock(id) {
+       document.getElementById(id).style.display = "none";
+}
+
+/**
+ * Makes an element (tab) visible
+ */
+function showBlock(id) {
+       document.getElementById(id).style.display = "block";
+}
+
+function help(url) {
+       popup = window.open(url,'helpwindow','status=no,toolbar=yes,scrollbars=yes,resizable=yes,width=500,height=500,top=0,left=0');
+       if (popup.focus) popup.focus();
+       if (popup.GetAttention) popup.GetAttention();
+       return false;
+}
similarity index 90%
rename from nucleus/javascript/compatibility.js
rename to skins/admin/default/javascripts/compatibility.js
index 5feeb5a..8a771b8 100644 (file)
@@ -1,6 +1,6 @@
 /**
   * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/) 
-  * Copyright (C) 2002-2012 The Nucleus Group
+  * Copyright (C) 2002-2009 The Nucleus Group
   *
   * This program is free software; you can redistribute it and/or
   * modify it under the terms of the GNU General Public License
@@ -18,7 +18,7 @@
   *
   * That's basically it :)
   *
-  * $Id: compatibility.js 1388 2009-07-18 06:31:28Z shizuki $
+  * $Id: compatibility.js 1888 2012-06-17 08:38:54Z sakamocchi $
   */
 
 // to get the script working when page is sent as application/xhtml+xml
diff --git a/skins/admin/default/javascripts/edit.js b/skins/admin/default/javascripts/edit.js
new file mode 100644 (file)
index 0000000..e505df9
--- /dev/null
@@ -0,0 +1,345 @@
+/**
+  * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)
+  * Copyright (C) 2002-2009 The Nucleus Group
+  *
+  * This program is free software; you can redistribute it and/or
+  * modify it under the terms of the GNU General Public License
+  * as published by the Free Software Foundation; either version 2
+  * of the License, or (at your option) any later version.
+  * (see nucleus/documentation/index.html#license for more info)
+  *
+  * This file contains functions to allow adding items from inside the weblog.
+  * Also contains code to avoid submitting form data twice.
+  *
+  * $Id: edit.js 1888 2012-06-17 08:38:54Z sakamocchi $
+  */
+
+var nucleusConvertBreaks = true;
+var nucleusMediaPopupURL = '';
+var nucleusMediaURL = 'media/';
+var nucleusAuthorId = 0;
+var scrollTop = -1;
+
+function setConvertBreaks(newval) {    nucleusConvertBreaks = newval; }
+function setMediaUrl(url) { nucleusMediaURL = url; }
+function setAuthorId(id) { nucleusAuthorId = id; }
+
+function preview(id, value) {
+       elem = document.getElementById(id);
+       if (!elem) return;
+
+       var preview = nucleusConvertBreaks ? str_replace("\n","<br />",value)+"&#160;" : value+"&#160;";
+
+       // expand the media commands (without explicit collection)
+       preview = preview.replace(/\<\%image\(([^\/\|]*)\|([^\|]*)\|([^\|]*)\|([^)]*)\)\%\>/g,"<img src='"+nucleusMediaURL+nucleusAuthorId+"/$1' width='$2' height='$3' alt=\"$4\" />");
+
+       // expand the media commands (with collection)
+       preview = preview.replace(/\<\%image\(([^\|]*)\|([^\|]*)\|([^\|]*)\|([^)]*)\)\%\>/g,"<img src='"+nucleusMediaURL+"$1' width='$2' height='$3' alt=\"$4\" />");
+       preview = preview.replace(/\<\%popup\(([^\|]*)\|([^\|]*)\|([^\|]*)\|([^)]*)\)\%\>/g,"<a href='' onclick='if (event &amp;&amp; event.preventDefault) event.preventDefault(); alert(\"popup image\"); return false;' title='popup'>$4</a>");
+       preview = preview.replace(/\<\%media\(([^\|]*)\|([^)]*)\)\%\>/g,"<a href='' title='media link'>$2</a>");
+
+       elem.innerHTML = preview;
+}
+
+function showedit() {
+       prevval = document.getElementById('edit').style.display;
+       if (prevval == "block")
+               newval = "none";
+       else
+               newval = "block";
+       document.getElementById('edit').style.display = newval;
+
+       if (newval == "block")
+               updAllPreviews();
+}
+
+function updAllPreviews() {
+       updPreview('title');
+       updPreview('body');
+       updPreview('more');
+}
+
+function isEditVisible() {
+       var editform = document.getElementById('edit');
+       if (!editform) return true;
+       var prevval = editform.style.display;
+       return (prevval == "none") ? false : true;
+}
+
+function updPreview(id) {
+       // don't update when preview is hidden
+       if (!isEditVisible()) return;
+
+       var inputField = document.getElementById('input' + id);
+       if (!inputField) return;
+       preview('prev' + id, inputField.value);
+}
+
+// replace a in s by b (taken from milov.nl)
+function str_replace(a, b, s)
+{
+       if (a == b || !s.length || !a.length) return s;
+       if ((p=s.indexOf(a)) == -1) { return s; }
+       else { ns = s.substring(0,p) + b + s.substring(p+a.length,s.length); }
+       return (s.indexOf(a) != -1) ? str_replace(a, b, ns) : ns;
+}
+
+function shortCuts() {
+       if (!event || (event.ctrlKey != true)) return;
+
+       switch (event.keyCode) {
+               case 1:
+                       ahrefThis(); break; // ctrl-shift-a
+               case 2:
+                       boldThis(); break; // ctrl-shift-b
+               case 9:
+                       italicThis(); break; // ctrl-shift-i
+               case 13:
+                       addMedia(); break; // ctrl-shift-m
+               default:
+                       return;
+       }
+       return;
+}
+
+function cutThis() { execAndUpdate('cut'); }
+function copyThis() { execAndUpdate('copy'); }
+function pasteThis() { execAndUpdate('paste'); }
+function boldThis() { insertAroundCaret('<b>','</b>'); }
+function italicThis() { insertAroundCaret('<i>','</i>'); }
+function leftThis() { insertAroundCaret('<div class="leftbox">','</div>'); }
+function rightThis() { insertAroundCaret('<div class="rightbox">','</div>'); }
+function alignleftThis() { insertAroundCaret('<div style="text-align: left">','</div>'); }
+function alignrightThis() { insertAroundCaret('<div style="text-align: right">','</div>'); }
+function aligncenterThis() { insertAroundCaret('<div style="text-align: center">','</div>'); }
+
+
+function ahrefThis() {
+       if (document.selection)
+               strSelection = document.selection.createRange().text;
+       else
+               strSelection = '';
+
+       strHref = prompt("Create a link to:","http://");
+       if (strHref == null) return;
+
+       var textpre = "<a href=\"" + strHref.replace(/&/g,'&amp;') + "\">";
+       insertAroundCaret(textpre, "</a>");
+}
+
+function execAndUpdate(action) {
+       lastSelected.caretPos.execCommand(action);
+       updAllPreviews();
+}
+
+
+var nonie_FormType = 'body';
+
+// Add media to new item
+function addMedia()
+{
+       if ( typeof(medium) != 'undefined' )
+       {
+               medium.addMedia();
+       }
+       else
+       {
+               alert('Media Plugin Not Found');
+       }
+       return;
+}
+
+function includeImage(collection, filename, type, width, height) {
+       if (isCaretEmpty()) {
+               text = prompt("Text to display ?",filename);
+       } else {
+               text = getCaretText();
+       }
+
+       // add collection name when not private collection (or editing a message that's not your)
+       var fullName;
+       if (isNaN(collection) || (nucleusAuthorId != collection)) {
+               fullName = collection + '/' + filename;
+       } else {
+               fullName = filename;
+       }
+
+
+       var replaceBy;
+       switch(type) {
+               case 'popup':
+                       replaceBy = '<%popup(' +  fullName + '|'+width+'|'+height+'|' + text +')%>';
+                       break;
+               case 'inline':
+               default:
+                       replaceBy = '<%image(' +  fullName + '|'+width+'|'+height+'|' + text +')%>';
+       }
+
+       insertAtCaret(replaceBy);
+       updAllPreviews();
+
+}
+
+
+function includeOtherMedia(collection, filename) {
+       if (isCaretEmpty()) {
+               text = prompt("Text to display ?",filename);
+       } else {
+               text = getCaretText();
+       }
+
+       // add collection name when not private collection (or editing a message that's not your)
+       var fullName;
+       if (isNaN(collection) || (nucleusAuthorId != collection)) {
+               fullName = collection + '/' + filename;
+       } else {
+               fullName = filename;
+       }
+
+       var replaceBy = '<%media(' +  fullName + '|' + text +')%>';
+
+       insertAtCaret(replaceBy);
+       updAllPreviews();
+}
+
+
+
+// function to prevent submitting form data twice
+var submitcount=0;
+function checkSubmit() {
+       if (submitcount == 0) {
+               submitcount++;
+               return true;
+       } else {
+               return false;
+       }
+}
+
+
+// code to store the caret (cursor) position of a text field/text area
+// taken from javascript.faqts and modified
+// http://www.faqts.com/knowledge_base/view.phtml/aid/1052/fid/130
+
+// stores the caret
+function storeCaret (textEl) {
+
+       // store caret
+       if (textEl.createTextRange)
+               textEl.caretPos = document.selection.createRange().duplicate();
+
+       // also store lastselectedelement
+       lastSelected = textEl;
+
+       nonie_FormType = textEl.name;
+
+       scrollTop = textEl.scrollTop;
+}
+
+var lastSelected;
+
+ // inserts text at caret (overwriting selection)
+function insertAtCaret (text) {
+       var textEl = lastSelected;
+       if (textEl && textEl.createTextRange && textEl.caretPos) {
+               var caretPos = textEl.caretPos;
+               caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text + ' ' : text;
+       } else if (!document.all && document.getElementById) {
+               mozReplace(document.getElementById('input' + nonie_FormType), text);
+               if(scrollTop>-1) {
+                       document.getElementById('input' + nonie_FormType).scrollTop = scrollTop;
+               }
+       } else if (textEl) {
+               textEl.value  += text;
+       } else {
+               document.getElementById('input' + nonie_FormType).value += text;
+               if(scrollTop>-1) {
+                       document.getElementById('input' + nonie_FormType).scrollTop = scrollTop;
+               }
+       }
+       updAllPreviews();
+}
+
+ // inserts a tag around the selected text
+function insertAroundCaret (textpre, textpost) {
+       var textEl = lastSelected;
+
+       if (textEl && textEl.createTextRange && textEl.caretPos) {
+               var caretPos = textEl.caretPos;
+               caretPos.text = textpre + caretPos.text + textpost;
+       } else if (!document.all && document.getElementById) {
+               mozWrap(document.getElementById('input' + nonie_FormType), textpre, textpost);
+               if(scrollTop>-1) {
+                       document.getElementById('input' + nonie_FormType).scrollTop = scrollTop;
+               }
+       } else {
+               document.getElementById('input' + nonie_FormType).value += textpre + textpost;
+               if(scrollTop>-1) {
+                       document.getElementById('input' + nonie_FormType).scrollTop = scrollTop;
+               }
+       }
+
+       updAllPreviews();
+}
+
+/* some methods to get things working in Mozilla as well */
+function mozWrap(txtarea, lft, rgt) {
+       var selLength = txtarea.textLength;
+       var selStart = txtarea.selectionStart;
+       var selEnd = txtarea.selectionEnd;
+       if (selEnd==1 || selEnd==2) selEnd=selLength;
+       var s1 = (txtarea.value).substring(0,selStart);
+       var s2 = (txtarea.value).substring(selStart, selEnd)
+       var s3 = (txtarea.value).substring(selEnd, selLength);
+       txtarea.value = s1 + lft + s2 + rgt + s3;
+}
+function mozReplace(txtarea, newText) {
+       var selLength = txtarea.textLength;
+       var selStart = txtarea.selectionStart;
+       var selEnd = txtarea.selectionEnd;
+       if (selEnd==1 || selEnd==2) selEnd=selLength;
+       var s1 = (txtarea.value).substring(0,selStart);
+       var s2 = (txtarea.value).substring(selStart, selEnd)
+       var s3 = (txtarea.value).substring(selEnd, selLength);
+       txtarea.value = s1 + newText + s3;
+}
+function mozSelectedText() {
+       var txtarea = document.getElementById('input' + nonie_FormType);
+       var selLength = txtarea.textLength;
+       var selStart = txtarea.selectionStart;
+       var selEnd = txtarea.selectionEnd;
+       if (selEnd==1 || selEnd==2) selEnd=selLength;
+       return (txtarea.value).substring(selStart, selEnd);
+}
+
+function getCaretText() {
+       if (!document.all && document.getElementById)
+               return mozSelectedText();
+       else
+               return lastSelected.caretPos.text;
+}
+
+function isCaretEmpty() {
+       if (lastSelected && lastSelected.createTextRange && lastSelected.caretPos)
+               return (lastSelected.caretPos.text == '');
+       else if (!document.all && document.getElementById)
+               return (mozSelectedText() == '');
+       else
+               return true;
+}
+
+function BtnHighlight(el) {
+       with(el.style){
+               borderLeft="1px solid #e9e9e9";
+               borderRight="1px solid gray";
+               borderTop="1px solid #e9e9e9";
+               borderBottom="1px solid gray";
+       }
+}
+
+function BtnNormal(el) {
+       with(el.style){
+               padding="3px";
+               border="1px solid #dddddd";
+       }
+}
+
similarity index 50%
rename from nucleus/libs/include/index.html
rename to skins/admin/default/javascripts/index.html
index 002f5a6..3974d80 100644 (file)
@@ -1,13 +1,11 @@
-<!DOCTYPE html\r
-PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"\r
-"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
-<html xmlns="http://www.w3.org/1999/xhtml">\r
-<head>\r
-       <title>Nothing Here</title>\r
-</head>\r
-<body>\r
-\r
-<h1>Nothing to see here</h1>\r
-\r
-</body>\r
-</html>\r
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+       <title>Nothing Here</title>
+</head>
+<body>
+
+<h1>Nothing to see here</h1>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/skins/admin/default/javascripts/numbercheck.js b/skins/admin/default/javascripts/numbercheck.js
new file mode 100644 (file)
index 0000000..6d7f115
--- /dev/null
@@ -0,0 +1,36 @@
+/**
+  * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/) 
+  * Copyright (C) 2002-2009 The Nucleus Group
+  *
+  * This program is free software; you can redistribute it and/or
+  * modify it under the terms of the GNU General Public License
+  * as published by the Free Software Foundation; either version 2
+  * of the License, or (at your option) any later version.
+  * (see nucleus/documentation/index.html#license for more info)
+  *
+  * script the check (on the clientside) if a entered value
+  * is a valid number and remove the invalid chars
+  *
+  * $Id: numbercheck.js 1888 2012-06-17 08:38:54Z sakamocchi $
+  */
+
+function checkNumeric(f)
+{
+       newval='';
+       dot = false;
+       for (i = 0; i < f.value.length; i++) {
+               c = f.value.substring(i,i+1);
+               if (isInteger(c) || ((c == '.')&&(dot == false)) || ((i == 0)&&(c == '-'))) {
+                       newval += c;
+                       if (c == '.') {
+                               dot = true;
+                       }
+               }
+       }
+       f.value = newval;
+}
+
+function isInteger(value)
+{
+       return (parseInt(value) == value);
+}
similarity index 95%
rename from nucleus/javascript/opennew.js
rename to skins/admin/default/javascripts/opennew.js
index e6247c8..1b99fdc 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/) 
- * Copyright (C) 2002-2012 The Nucleus Group
+ * Copyright (C) 2002-2009 The Nucleus Group
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
@@ -8,7 +8,7 @@
  * of the License, or (at your option) any later version.
  * (see nucleus/documentation/index.html#license for more info)
  *
- * $Id: opennew.js 1388 2009-07-18 06:31:28Z shizuki $
+ * $Id: opennew.js 1888 2012-06-17 08:38:54Z sakamocchi $
  *
  * JavaScript to open non-local links in a new window.
  *
similarity index 92%
rename from nucleus/javascript/templateEdit.js
rename to skins/admin/default/javascripts/templateEdit.js
index a99fbf6..94aa139 100644 (file)
@@ -1,6 +1,6 @@
 /**
   * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/) 
-  * Copyright (C) 2002-2012 The Nucleus Group
+  * Copyright (C) 2002-2009 The Nucleus Group
   *
   * This program is free software; you can redistribute it and/or
   * modify it under the terms of the GNU General Public License
@@ -12,7 +12,7 @@
   *
   * @require compatibility.js
   *
-  * $Id: templateEdit.js 1388 2009-07-18 06:31:28Z shizuki $
+  * $Id: templateEdit.js 1888 2012-06-17 08:38:54Z sakamocchi $
   */
 
 var amountOfFields = 1;
diff --git a/skins/admin/default/javascripts/xmlhttprequest.js b/skins/admin/default/javascripts/xmlhttprequest.js
new file mode 100644 (file)
index 0000000..50cf4e9
--- /dev/null
@@ -0,0 +1,183 @@
+/**
+  * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/) 
+  * Copyright (C) 2002-2009 The Nucleus Group
+  *
+  * This program is free software; you can redistribute it and/or
+  * modify it under the terms of the GNU General Public License
+  * as published by the Free Software Foundation; either version 2
+  * of the License, or (at your option) any later version.
+  * (see nucleus/documentation/index.html#license for more info)
+  *
+  *
+  * This page contains xmlHTTPRequest functions for:
+  * - AutoSaveDraft
+  *
+  *
+  * Usage:
+  * - Add in the page before the form open tag:
+  *     <script type="text/javascript" src="javascript/xmlhttprequest.js"></script>
+  * - Add in the page behind the form close tag:
+  *     var xmlhttprequest = new Array();
+  *     xmlhttprequest[0] = createHTTPHandler(); // AutoDraft handler
+  *     xmlhttprequest[1] = createHTTPHandler(); // UpdateTicket handler
+  *     var seconds = now(); // Last AutoDraft time
+  *     var checks = 0; // Number of checks since last AutoDraft
+  *     var addform = document.getElementById('addform'); // The form id
+  *     var goal = document.getElementById('lastsaved'); // The html div id where 'Last saved: date time' must come
+  *     var goalurl = 'action.php'; // The PHP file where the content must be posted to (action.php)
+  *     var lastsavedtext = 'Last saved'; // The language variable for 'Last saved'
+  *     var formtype = 'add'; // Add or edit form
+  * - Add to the form tag:
+  *     id="addform"
+  * - Add to the textarea's and text fields:
+  *     onkeyup="doMonitor();"
+  * - Add tot the selectboxes and radio buttons
+  *     onchange="doMonitor();"
+  * - Add to the form:
+  *     <input type="hidden" name="draftid" value="0" />
+  * - Optionally a autosave now button can be add:
+  *     <input type="button" name="autosavenow" value="AutoSave now" onclick="autoSaveDraft();" />
+  *
+  *
+  * $Id: xmlhttprequest.js 1888 2012-06-17 08:38:54Z sakamocchi $
+  */
+
+/**
+ * Creates the xmlHTTPRequest handler
+ */
+function createHTTPHandler() {
+       var httphandler = false;
+       /*@cc_on @*/
+       /*@if (@_jscript_version >= 5)
+               // JScript gives us Conditional compilation, we can cope with old IE versions.
+               // and security blocked creation of the objects.
+               try {
+                       httphandler = new ActiveXObject("Msxml2.XMLHTTP");
+               }
+               catch (e) {
+                       try {
+                               httphandler = new ActiveXObject("Microsoft.XMLHTTP");
+                       }
+                       catch (E) {
+                               httphandler = false;
+                       }
+               }
+       @end @*/
+       if (!httphandler && typeof XMLHttpRequest != 'undefined') {
+               httphandler = new XMLHttpRequest();
+       }
+       return httphandler;
+}
+
+/**
+ * Auto saves as draft
+ */
+function autoSaveDraft() {
+       checks = 0;
+       seconds = now();
+
+       var title = encodeURIComponent(addform.title.value);
+       var body = encodeURIComponent(addform.body.value);
+       var catid = addform.catid.options[addform.catid.selectedIndex].value;
+       var more = encodeURIComponent(addform.more.value);
+       var closed = 0;
+       if (addform.closed[0].checked) {
+               closed = addform.closed[0].value;
+       }
+       else if (addform.closed[1].checked) {
+               closed = addform.closed[1].value;
+       }
+       var ticket = addform.ticket.value;
+
+       var querystring = 'action=autodraft';
+       querystring += '&title=' + title;
+       querystring += '&body=' + body;
+       querystring += '&catid=' + catid;
+       querystring += '&more=' + more;
+       querystring += '&closed=' + closed;
+       querystring += '&ticket=' + ticket;
+       if (formtype == 'edit') {
+               querystring += '&itemid=' + addform.itemid.value;
+               querystring += '&type=edit';
+       }
+       else {
+               querystring += '&blogid=' + addform.blogid.value;
+               querystring += '&type=add';
+       }
+       if (addform.draftid.value > 0) {
+               querystring += '&draftid=' + addform.draftid.value;
+       }
+
+       xmlhttprequest[0].open('POST', goalurl, true);
+       xmlhttprequest[0].onreadystatechange = checkMonitor;
+       xmlhttprequest[0].setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
+       xmlhttprequest[0].send(querystring);
+
+       var querystring = 'action=updateticket&ticket=' + ticket;
+
+       xmlhttprequest[1].open('POST', goalurl, true);
+       xmlhttprequest[1].onreadystatechange = updateTicket;
+       xmlhttprequest[1].setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
+       xmlhttprequest[1].send(querystring);
+}
+
+/**
+ * Monitors the edits
+ */
+function doMonitor() {
+       if (checks * (now() - seconds) > 120 * 1000 * 50) {
+               autoSaveDraft();
+       }
+       else {
+               checks++;
+       }
+}
+
+/**
+ * Checks the process of the saving
+ */
+function checkMonitor() {
+       if (xmlhttprequest[0].readyState == 4) {
+               if (xmlhttprequest[0].responseText) {
+                       if (xmlhttprequest[0].responseText.substr(0, 4) == 'err:') {
+                               goal.innerHTML = xmlhttprequest[0].responseText.substr(4) + ' (' + formattedDate() + ')';
+                       }
+                       else {
+                               addform.draftid.value = xmlhttprequest[0].responseText;
+                               goal.innerHTML = lastsavedtext + ' ' + formattedDate();
+                       }
+               }
+       }
+}
+
+/**
+ * Checks the process of the ticket updating
+ */
+function updateTicket() {
+       if (xmlhttprequest[1].readyState == 4) {
+               if (xmlhttprequest[1].responseText) {
+                       if (xmlhttprequest[1].responseText.substr(0, 4) == 'err:') {
+                               goal.innerHTML = xmlhttprequest[1].responseText.substr(4) + ' (' + formattedDate() + ')';
+                       }
+                       else {
+                               addform.ticket.value = xmlhttprequest[1].responseText;
+                       }
+               }
+       }
+}
+
+/**
+ * Gets now in milliseconds
+ */
+function now() {
+       var now = new Date();
+       return now.getTime();
+}
+
+/**
+ * Gets now in the local dateformat
+ */
+function formattedDate() {
+       var now = new Date();
+       return now.toLocaleDateString() + ' ' + now.toLocaleTimeString();
+}
\ No newline at end of file
diff --git a/skins/admin/default/skinbackup.xml b/skins/admin/default/skinbackup.xml
new file mode 100644 (file)
index 0000000..3325810
--- /dev/null
@@ -0,0 +1,4019 @@
+<?xml version="1.0"?>
+<nucleusskin>
+<meta>
+<skin name="admin/default"/>
+<template name="admin/default"/>
+<info><![CDATA[20120525]]></info>
+</meta>
+<skin name="admin/default" type="text/html" includeMode="skindir" includePrefix="admin/default">
+<description>
+<![CDATA[ADMIN Area Default skin]]>
+</description>
+
+<part name="actionlog"><![CDATA[
+       <%pagehead%>
+       
+       <p><a href="<%adminurl%>index.php?action=manage">(<%text(_BACKTOMANAGE)%>)</a></p>
+       
+       <h2><%text(_ACTIONLOG_CLEAR_TITLE)%></h2>
+       <p><a href="<%adminurl%><%addtickettourl(index.php?action=clearactionlog)%>"><%text(_ACTIONLOG_CLEAR_TEXT)%></a></p>
+       
+       <h2><%text(_ACTIONLOG_TITLE)%></h2>
+       <%actionloglist(admin/default)%>
+       <%pagefoot%>
+]]></part>
+<part name="activate"><![CDATA[
+       <%pagehead%>
+       <h2><%activationmessage(title)%></h2>
+       <p><%activationmessage(text)%></p>
+       <p class="error"><%headmessage%></p>
+       <%if(bechangepass)%>
+               <form action="<%adminurl%>index.php" method="post">
+               <p>
+               <input type="hidden" name="action" value="activatesetpwd" />
+               <%ticket%>
+               <input type="hidden" name="key" value="<%activationmessage(ackey)%>" />
+               </p>
+               <table frame="box" rules="all" summary="<%text(_MEMBERS_SETPWD_BTN)%>">
+               <tr>
+               <td><%text(_MEMBERS_PWD)%></td>
+               <td><input type="password" maxlength="40" size="16" name="password" /></td>
+               </tr>
+               <tr>
+               <td><%text(_MEMBERS_REPPWD)%></td>
+               <td><input type="password" maxlength="40" size="16" name="repeatpassword" /></td>
+               <%eventformextra(activation)%>
+               </tr>
+               <tr>
+               <td><%text(_MEMBERS_SETPWD)%></td>
+               <td><input type="submit" value="<%text(_MEMBERS_SETPWD_BTN)%>" /></td>
+               </tr>
+               </table>
+               </form>
+               <%endif%>
+       <%pagefoot%>
+]]></part>
+<part name="activatesetpwd"><![CDATA[
+       <%pagehead%>
+       <h2><%text(_ACTIVATE_SUCCESS_TITLE)%></h2>
+       <p><%text(_ACTIVATE_SUCCESS_TEXT)%></p>
+       <%pagefoot%>
+]]></part>
+<part name="addnewlog"><![CDATA[
+       <%pagehead%>
+       <h2><%text(_BLOGCREATED_TITLE)%></h2>
+       <p><%sprinttext(_BLOGCREATED_ADDEDTXT,<|%createdblogsetting(name)%|>)%></p>
+       <ol>
+       <li><a href="#index_php"><%sprinttext(_BLOGCREATED_SIMPLEWAY,<|%getblogsetting(short)%|>)%></a></li>
+       <li><a href="#skins"><%text(_BLOGCREATED_ADVANCEDWAY)%></a></li>
+       </ol>
+       <h3><a id="index_php"><%sprinttext(_BLOGCREATED_SIMPLEDESC1,<|%getblogsetting(short)%|>)%></a></h3>
+       <p><%sprinttext(_BLOGCREATED_SIMPLEDESC2,<|%getblogsetting(short)%|>)%></p>
+       <pre><code>&lt;?php
+       
+       $CONF['Self'] = '<b><%blogsetting(short)%>.php</b>';
+       
+       include('<i>./config.php</i>');
+       
+       selectBlog('<b><%blogsetting(short)%></b>');
+       selector();
+       
+       ?&gt;</code></pre>
+       <p><%text(_BLOGCREATED_SIMPLEDESC3)%></p>
+       <p><%text(_BLOGCREATED_SIMPLEDESC4)%></p>
+       <form action="<%adminurl%>index.php" method="post">
+       <p>
+       <input type="hidden" name="action" value="addnewlog2" />
+       <%ticket%>
+       <input type="hidden" name="blogid" value="<%requestblogid%>" />
+       </p>
+       
+       <table frame="box" rules="all" summary="<%text(_BLOGCREATED_TITLE)%>">
+       <tr>
+       <td><%text(_EBLOG_URL)%></td>
+       <td><input name="url" maxlength="100" size="40" value="<%sitevar(url)%><%blogsetting(short)%>.php" /></td>
+       </tr>
+       <tr>
+       <td><%text(_EBLOG_CREATE)%></td>
+       <td><input type="submit" value="<%text(_EBLOG_CREATE_BTN)%>" onclick="return checkSubmit();" /></td>
+       </tr>
+       </table>
+       </form>
+       
+       <h3><a id="skins"><%text(_BLOGCREATED_ADVANCEDWAY2)%></a></h3>
+       <p><%text(_BLOGCREATED_ADVANCEDWAY3)%></p>
+       
+       <form action="<%adminurl%>index.php" method="post">
+       <p>
+       <input type="hidden" name="action" value="addnewlog2" />
+       <%ticket%>
+       <input type="hidden" name="blogid" value="<%requestblogid%>" />
+       </p>
+       <table frame="box" rules="all" summary="<%text(_BLOGCREATED_ADVANCEDWAY2)%>">
+       <tr>
+       <td><%text(_EBLOG_URL)%></td>
+       <td><input name="url" maxlength="100" size="40" /></td>
+       </tr>
+       <tr>
+       <td><%text(_EBLOG_CREATE)%></td>
+       <td><input type="submit" value="<%text(_EBLOG_CREATE_BTN)%>" onclick="return checkSubmit();" /></td>
+       </tr>
+       </table>
+       </div>
+       </form><%pagefoot%>
+]]></part>
+<part name="adminerrorpage"><![CDATA[
+       <%pagehead%>
+       <h2>Error!</h2>
+       <%headmessage%><br />
+       <a href="<%adminurl%>index.php" onclick="history.back()"><%text(_BACK)%></a>
+       <%pagefoot%>
+]]></part>
+<part name="adminskindelete"><![CDATA[
+       <%pagehead%>
+       <h2><%text(_DELETE_CONFIRM)%></h2>
+       
+       <form method="post" action="<%adminurl%>index.php">
+       <p><%text(_CONFIRMTXT_SKIN)%><b><%editskintype(name)%></b> (<%editskintype(desc)%>)</p>
+       <input type="hidden" name="action" value="adminskindeleteconfirm" />
+       <%ticket%>
+       <input type="hidden" name="skinid" value="<%editskintype(id)%>" />
+       <input type="submit" tabindex="10" value="<%text(_DELETE_CONFIRM_BTN)%>" />
+       </p>
+       </form>
+       <%pagefoot%>
+]]></part>
+<part name="adminskinedit"><![CDATA[
+       <%pagehead%>
+       <p><a href="<%adminurl%>index.php?action=adminskinoverview">(<%text(_SKIN_BACK)%>)</a></p>
+       
+       <h2><%text(_SKIN_EDITONE_TITLE)%> '<%editskin(name)%>'</h2>
+       
+       <h3><%text(_SKIN_PARTS_TITLE)%></h3>
+       <%text(_SKIN_PARTS_MSG)%>
+       <%normalskinlist(admin/default)%>
+       
+       <h3><%text(_SKIN_PARTS_SPECIAL)%></h3>
+       <form method="get" action="<%adminurl%>index.php">
+       <p>
+       <input type="hidden" name="action" value="adminskinedittype" />
+       <input type="hidden" name="skinid" value="<%editskin(id)%>" />
+       <input name="type" tabindex="89" size="30" maxlength="64" />
+       <input type="submit" tabindex="140" value="<%text(_SKIN_CREATE)%>" onclick="return checkSubmit();" />
+       </p>
+       </form>
+       <%specialskinlist(admin/default)%>
+       
+       <h3><%text(_SKIN_GENSETTINGS_TITLE)%></h3>
+       <form method="post" action="<%adminurl%>index.php">
+       <p>
+       <input type="hidden" name="action" value="adminskineditgeneral" />
+       <%ticket%>
+       <input type="hidden" name="skinid" value="<%editskin(id)%>" />
+       </p>
+       <table frame="box" rules="all" summary="<%text(_SKIN_GENSETTINGS_TITLE)%>">
+       <tr>
+       <td><%text(_SKIN_NAME)%> <%helplink(shortnames)%></td>
+       <td><input name="name" value="<%editskin(name)%>" maxlength="64" size="30" tabindex="90" /></td>
+       </tr>
+       <tr>
+       <td><%text(_SKIN_DESC)%></td>
+       <td><input name="desc" value="<%editskin(desc)%>" maxlength="200" size="50" tabindex="100" /></td>
+       </tr>
+       <tr>
+       <td><%text(_SKIN_TYPE)%></td>
+       <td><input name="type" value="<%editskin(type)%>" maxlength="40" size="20" tabindex="110" /></td>
+       </tr>
+       <tr>
+       <td><%text(_SKIN_INCLUDE_MODE)%> <%helplink(includemode)%></td>
+       <td><%editskin(mode)%></td>
+       </tr>
+       <tr>
+       <td><%text(_SKIN_INCLUDE_PREFIX)%> <%helplink(includeprefix)%></td>
+       <td><input name="inc_prefix" value="<%editskin(prefix)%>" maxlength="40" size="20" tabindex="130" /></td>
+       </tr>
+       <tr>
+       <td><%text(_SKIN_CHANGE)%></td>
+       <td><input type="submit" value="<%text(_SKIN_CHANGE_BTN)%>" onclick="return checkSubmit();" tabindex="140" /></td>
+       </tr>
+       </table>
+       </form>
+       <%pagefoot%>
+]]></part>
+<part name="adminskinedittype"><![CDATA[
+       <%pagehead%>
+       <p>(<a href="<%adminurl%>index.php?action=adminskinoverview"><%text(_SKIN_GOBACK)%></a>)</p>
+       
+       <h2><%text(_SKIN_EDITPART_TITLE)%> '<%editskintype(name)%>': <%editskintype(skintype)%></h2>
+       <%headmessage%>
+       
+       <form method="post" action="<%adminurl%>index.php">
+       <p>
+       <input type="hidden" name="action" value="adminskinupdate" />
+       <%ticket%>
+       <input type="hidden" name="skinid" value="<%editskintype(id)%>" />
+       <input type="hidden" name="type" value="<%editskintype(skintyperaw)%>" />
+       <input type="submit" value="<%text(_SKIN_UPDATE_BTN)%>" onclick="return checkSubmit();" />
+       <input type="reset" value="<%text(_SKIN_RESET_BTN)%>" />
+       (skin type: <%editskintype(skintype)%>)<%skintypehelp%><br />
+       <textarea class="skinedit" tabindex="10" rows="20" cols="80" name="content"><%editskintype(content)%></textarea><br />
+       <input type="submit" tabindex="20" value="<%text(_SKIN_UPDATE_BTN)%>" onclick="return checkSubmit();" />
+       <input type="reset" value="<%text(_SKIN_RESET_BTN)%>" />
+       (skin type: <%editskintype(skintype)%>)
+       <br />
+       <br />
+       <%text(_SKIN_ALLOWEDVARS)%>
+       <%allowedskinactions%><br /><br />
+       <%text(_SKINEDIT_ALLOWEDTEMPLATESS)%>
+       <%skineditallowedlist(template)%><br />
+       </p>
+       </form>
+       <%pagefoot%>
+]]></part>
+<part name="adminskiniedoimport"><![CDATA[
+       <%pagehead%>
+       <p><a href="<%adminurl%>index.php?action=manage">(<%text(_BACKTOMANAGE)%>)</a></p>
+       
+       <h2><%text(_SKINIE_DONE)%></h2>
+       
+       <ul>
+       <li><strong><%text(_SKINIE_INFO_GENERAL)%></strong> <%importskininfo(info)%></li>
+       <li><strong><%text(_SKINIE_INFO_IMPORTEDSKINS)%></strong> <%importskininfo(snames)%></li>
+       <li><strong><%text(_SKINIE_INFO_IMPORTEDTEMPLS)%></strong> <%importskininfo(tnames)%></li>
+       </ul>
+       <%pagefoot%>
+]]></part>
+<part name="adminskinieimport"><![CDATA[
+       <%pagehead%>
+       <p><a href="<%adminurl%>index.php?action=adminskinieoverview">(<%text(_BACK)%>)</a></p>
+       <h2><%text(_SKINIE_CONFIRM_TITLE)%></h2>
+       
+       <ul>
+       <li><strong><%text(_SKINIE_INFO_GENERAL)%></strong> <%importskininfo(info)%></li>
+       <li><strong><%text(_SKINIE_INFO_SKINS)%></strong> <%importskininfo(snames)%></li>
+       <li><strong><%text(_SKINIE_INFO_TEMPLATES)%></strong> <%importskininfo(tnames)%></li>
+       <%if(nameclashes)%>
+               <li><strong style="color: red;"><%text(_SKINIE_INFO_SKINCLASH)%></strong> <%importskininfo(sclashes)%></li>
+               <li><strong style="color: red;"><%text(_SKINIE_INFO_TEMPLCLASH)%></strong> <%importskininfo(tclashes)%></li>
+       <%endif%>
+       </ul>
+       
+       <form method="post" action="<%adminurl%>index.php">
+       <p>
+       <input type="hidden" name="action" value="adminskiniedoimport" />
+       <%ticket%>
+       <input type="hidden" name="skinfile" value="<%importskininfo(skinfile)%>" />
+       <input type="hidden" name="mode" value="<%importskininfo(mode)%>" />
+       <input type="submit" value="<%text(_SKINIE_CONFIRM_IMPORT)%>" />
+       <%if(nameclashes)%>
+               <br />
+               <input type="checkbox" name="overwrite" value="1" id="cb_overwrite" />
+               <label for="cb_overwrite"><%text(_SKINIE_CONFIRM_OVERWRITE)%></label>
+       <%endif%>
+       </p>
+       </form>
+       <%pagefoot%>
+]]></part>
+<part name="adminskinieoverview"><![CDATA[
+       <%pagehead%>
+       <p><a href="<%adminurl%>index.php?action=manage">(<%text(_BACKTOMANAGE)%>)</a></p>
+       
+       <h2><%text(_SKINIE_TITLE_IMPORT)%></h2>
+       
+       <p>
+       <label for="skinie_import_local"><%text(_SKINIE_LOCAL)%></label>
+       </p>
+       
+       <%if(superadmin)%>
+               <form method="post" action="<%adminurl%>index.php">
+               <p>
+               <input type="hidden" name="action" value="adminskinieimport" />
+               <%ticket%>
+               <input type="hidden" name="mode" value="file" />
+               <select name="skinfile" id="skinie_import_local">
+               <%selectlocalskinfiles%>
+               </select>
+               <input type="submit" value="<%text(_SKINIE_BTN_IMPORT)%>" />
+               </p>
+               </form>
+       <%else%>
+               <p><%text(_SKINIE_NOCANDIDATES)%></p>
+       <%endif%>
+       
+       <form method="post" action="<%adminurl%>index.php">
+       <p>
+       <em><%text(_OR)%></em>
+       <%ticket%>
+       <input type="hidden" name="action" value="adminskinieimport" />
+       <input type="hidden" name="mode" value="url" />
+       <label for="skinie_import_url"><%text(_SKINIE_FROMURL)%></label>
+       <input type="text" name="skinfile" id="skinie_import_url" size="60" value="http://" />
+       <input type="submit" value="<%text(_SKINIE_BTN_IMPORT)%>" />
+       </p>
+       </form>
+       
+       <h2><%text(_SKINIE_TITLE_EXPORT)%></h2>
+       
+       <form method="post" action="<%adminurl%>index.php">
+       
+       <p><%text(_SKINIE_EXPORT_INTRO)%></p>
+       
+       <table frame="box" rules="all" summary="<%text(_SKINIE_EXPORT_SKINS)%>">
+       <thead>
+       <tr>
+       <th colspan="2"><%text(_SKINIE_EXPORT_SKINS)%></th>
+       </tr>
+       </thead>
+       <tbody>
+       <%skinielist(skin,admin/default)%>
+       </tbody>
+       </table>
+       
+       <table frame="box" rules="all" summary="<%text(_SKINIE_EXPORT_TEMPLATES)%>">
+       <thead>
+       <th colspan="2"><%text(_SKINIE_EXPORT_TEMPLATES)%></th>
+       </thead>
+       <tbody>
+       <%skinielist(template,admin/default)%>
+       </tbody>
+       </table>
+       
+       <table frame="box" rules="all" summary="<%text(_SKINIE_EXPORT_EXTRA)%>">
+       <thead>
+       <th colspan="2"><%text(_SKINIE_EXPORT_EXTRA)%></th>
+       </tr>
+       </thead>
+       <tbody>
+       <tr>
+       <td colspan="2"><textarea cols="40" rows="5" name="info"></textarea></td>
+       </tr>
+       </tbody>
+       </table>
+       
+       <p>
+       <input type="hidden" name="action" value="adminskinieexport" />
+       <%ticket%>
+       <input type="submit" value="<%text(_SKINIE_BTN_EXPORT)%>" />
+       </p>
+       
+       
+       </form>
+       <%pagefoot%>
+]]></part>
+<part name="adminskinoverview"><![CDATA[
+       <%pagehead%>
+       <p><a href="<%adminurl%>index.php?action=manage">(<%text(_BACKTOMANAGE)%>)</a></p>
+       <h2><%text(_SKIN_EDIT_TITLE)%></h2>
+       
+       <h3><%text(_SKIN_AVAILABLE_TITLE)%></h3>
+       <%skinoverview(admin/default)%>
+       
+       <h3><%text(_SKIN_NEW_TITLE)%></h3>
+       <form method="post" action="<%adminurl%>">
+       <p>
+       <input type="hidden" name="action" value="adminskinnew" />
+       <%ticket%>
+       </p>
+       <table frame="box" rules="all" summary="<%text(_SKIN_NEW_TITLE)%>">
+       <tr>
+       <td><%text(_SKIN_NAME)%> <%helplink(shortnames)%></td>
+       <td><input name="name" tabindex="10010" maxlength="20" size="20" /></td>
+       </tr>
+       <tr>
+       <td><%text(_SKIN_DESC)%></td>
+       <td><input name="desc" tabindex="10020" maxlength="200" size="50" /></td>
+       </tr>
+       <tr>
+       <td><%text(_SKIN_CREATE)%></td>
+       <td><input type="submit" tabindex="10030" value="<%text(_SKIN_CREATE_BTN)%>" onclick="return checkSubmit();" /></td>
+       </tr>
+       </table>
+       </form>
+       <%pagefoot%>
+]]></part>
+<part name="adminskinremovetype"><![CDATA[
+       <%pagehead%>
+       <h2><%text(_DELETE_CONFIRM)%></h2>
+       <p><%text(_CONFIRMTXT_SKIN_PARTS_SPECIAL)%><br />
+       <b><%editskintype(skintype)%> (<%editskintype(name)%>)</b> (<%editskintype(desc)%>)</p>
+       <form method="post" action="<%adminurl%>index.php">
+       <p>
+       <input type="hidden" name="action" value="adminskinremovetypeconfirm" />
+       <%ticket%>
+       <input type="hidden" name="skinid" value="<%editskintype(id)%>" />
+       <input type="hidden" name="type" value="<%editskintype(skintype)%>" />
+       <input type="submit" tabindex="10" value="<%text(_DELETE_CONFIRM_BTN)%>" />
+       </p>
+       </form>
+       <%pagefoot%>
+]]></part>
+<part name="admintemplatedelete"><![CDATA[
+       <%pagehead%>
+       <h2><%text(_DELETE_CONFIRM)%></h2>
+       <p><%text(_CONFIRMTXT_TEMPLATE)%><b><%edittemplateinfo(name)%></b> (<%edittemplateinfo(desc)%>)</p>
+       <form method="post" action="<%adminurl%>index.php">
+       <p>
+       <input type="hidden" name="action" value="admintemplatedeleteconfirm" />
+       <%ticket%>
+       <input type="hidden" name="templateid" value="<%edittemplateinfo(id)%>" />
+       <input type="submit" tabindex="10" value="<%text(_DELETE_CONFIRM_BTN)%>" />
+       </p>
+       </form>
+       <%pagefoot%>
+]]></part>
+<part name="admintemplateedit"><![CDATA[
+       <%pagehead%>
+       <p><a href="<%adminurl%>index.php?action=admintemplateoverview">(<%text(_TEMPLATE_BACK)%>)</a></p>
+       
+       <h2><%text(_TEMPLATE_EDIT_TITLE)%> '<%edittemplateinfo(name)%>'</h2>
+       <%headmessage%>
+       
+       <p><%text(_TEMPLATE_EDIT_MSG)%></p>
+       
+       <form method="post" action="<%adminurl%>index.php">
+       <p>
+       <input type="hidden" name="action" value="admintemplateupdate" />
+       <%ticket%>
+       <input type="hidden" name="templateid" value="<%edittemplateinfo(id)%>" />
+       </p>
+       
+       <table frame="box" rules="all" summary="<%text(_TEMPLATE_EDIT_TITLE)%>">
+       <thead>
+       <tr>
+       <th colspan="2"><%text(_TEMPLATE_SETTINGS)%></th>
+       </tr>
+       </thead>
+       <tbody>
+       <tr>
+       <td><%text(_TEMPLATE_NAME)%> <%helplink(shortnames)%></td>
+       <td><input name="tname" tabindex="4" size="20" maxlength="20" value="<%edittemplateinfo(name)%>" /></td>
+       </tr>
+       <tr>
+       <td><%text(_TEMPLATE_DESC)%></td>
+       <td><input name="tdesc" tabindex="5" size="50" maxlength="200" value="<%edittemplateinfo(desc)%>" /></td>
+       </tr>
+       <tr>
+       <td><%text(_TEMPLATE_UPDATE)%></td>
+       <td>
+       <input type="submit" tabindex="6" value="<%text(_TEMPLATE_UPDATE_BTN)%>" onclick="return checkSubmit();" />
+       <input type="reset" tabindex="7" value="<%text(_TEMPLATE_RESET_BTN)%>" />
+       </td>
+       </tr>
+       </tbody>
+       </table>
+       
+       <table frame="box" rules="all" summary="<%text(_QMENU_LAYOUT_SKINS)%>">
+       <thead>
+       <tr>
+       <th colspan="2"><%text(_QMENU_LAYOUT_SKINS)%></th>
+       </tr>
+       </thead>
+       <tbody>
+       <%edittemplateinfo(row, _ADM_TPLPT_NORMALSKINLIST_HEAD, NORMALSKINLIST_HEAD, ,8)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_NORMALSKINLIST_BODY, NORMALSKINLIST_BODY, ,9)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_NORMALSKINLIST_FOOT, NORMALSKINLIST_FOOT, ,10)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SPECIALSKINLIST_HEAD, SPECIALSKINLIST_HEAD, , 11)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SPECIALSKINLIST_BODY, SPECIALSKINLIST_BODY, , 12)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SPECIALSKINLIST_FOOT, SPECIALSKINLIST_FOOT, , 13)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SKINIE_EXPORT_LIST, SKINIE_EXPORT_LIST, , 17)%>
+       </tbody>
+       </table>
+       
+       <table frame="box" rules="all" summary="<%text(_QMENU_LAYOUT_TEMPL)%>">
+       <thead>
+       <tr>
+       <th colspan="2"><%text(_QMENU_LAYOUT_TEMPL)%></th>
+       </tr>
+       </thead>
+       <tbody>
+       <%edittemplateinfo(row, _ADM_TPLPT_TEMPLATE_EDIT_EXPLUGNAME, TEMPLATE_EDIT_EXPLUGNAME, , 18)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_TEMPLATE_EDIT_ROW_HEAD, TEMPLATE_EDIT_ROW_HEAD, , 19)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_TEMPLATE_EDIT_ROW_TAIL, TEMPLATE_EDIT_ROW_TAIL, , 20)%>
+       </tbody>
+       </table>
+       
+       <table frame="box" rules="all" summary="<%text(_SKINABLEADMIN_ADMINAREAHEADLINK)%>">
+       <thead>
+       <tr>
+       <th colspan="2"><%text(_SKINABLEADMIN_ADMINAREAHEADLINK)%></th>
+       </tr>
+       </thead>
+       <tbody>
+       <%edittemplateinfo(row, _ADM_TPLPT_ADMIN_BLOGLINK, ADMIN_BLOGLINK, , 21)%>
+       </tbody>
+       </table>
+       
+       <table frame="box" rules="all" summary="<%text(_SKINABLEADMIN_BATCH)%>">
+       <thead>
+       <tr>
+       <th colspan="2"><%text(_SKINABLEADMIN_BATCH)%></th>
+       </tr>
+       </thead>
+       <tbody>
+       <%edittemplateinfo(row, _ADM_TPLPT_ADMIN_BATCHLIST, ADMIN_BATCHLIST, , 22)%>
+       </tbody>
+       </table>
+       
+       <table frame="box" rules="all" summary="<%text(_QMENU_ACTIVATE)%>">
+       <thead>
+       <tr>
+       <th colspan="2"><%text(_QMENU_ACTIVATE)%></th>
+       </tr>
+       </thead>
+       <tbody>
+       <%edittemplateinfo(row, _ADM_TPLPT_ACTIVATE_FORGOT_TITLE, ACTIVATE_FORGOT_TITLE, , 23)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_ACTIVATE_FORGOT_TEXT, ACTIVATE_FORGOT_TEXT, , 24)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_ACTIVATE_REGISTER_TITLE, ACTIVATE_REGISTER_TITLE, , 25)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_ACTIVATE_REGISTER_TEXT, ACTIVATE_REGISTER_TEXT, , 26)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_ACTIVATE_CHANGE_TITLE, ACTIVATE_CHANGE_TITLE, , 27)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_ACTIVATE_CHANGE_TEXT, ACTIVATE_CHANGE_TEXT, , 28)%>
+       </tbody>
+       </table>
+       
+       <table frame="box" rules="all" summary="<%text(_QMENU_MANAGE_SYSTEM)%>">
+       <thead>
+       <tr>
+       <th colspan="2"><%text(_QMENU_MANAGE_SYSTEM)%></th>
+       </tr>
+       </thead>
+       <tbody>
+       <%edittemplateinfo(row, _ADM_TPLPT_SYSTEMINFO_GDSETTINGS, SYSTEMINFO_GDSETTINGS, , 29)%>
+       </tbody>
+       </table>
+       
+       <table frame="box" rules="all" summary="<%text(_BLOGLIST_BANS)%>">
+       <thead>
+       <tr>
+       <th colspan="2"><%text(_BLOGLIST_BANS)%></th>
+       </tr>
+       </thead>
+       <tbody>
+       <%edittemplateinfo(row, _ADM_TPLPT_BANLIST_DELETED_LIST, BANLIST_DELETED_LIST, , 30)%>
+       </tbody>
+       </table>
+       
+       <table frame="box" rules="all" summary="<%text(_SKINABLEADMIN_TPLSETTING_INGENERAL)%>">
+       <thead>
+       <tr>
+       <th colspan="2"><%text(_SKINABLEADMIN_TPLSETTING_INGENERAL)%></th>
+       </tr>
+       </thead>
+       <tbody>
+       <%edittemplateinfo(row, _ADM_TPLPT_INSERT_PLUGOPTION_TITLE, INSERT_PLUGOPTION_TITLE, , 31)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_INSERT_PLUGOPTION_BODY, INSERT_PLUGOPTION_BODY, , 32)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_INPUTYESNO_TEMPLATE_ADMIN, INPUTYESNO_TEMPLATE_ADMIN, , 33)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_INPUTYESNO_TEMPLATE_NORMAL, INPUTYESNO_TEMPLATE_NORMAL, , 34)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_ADMIN_CUSTOMHELPLINK_ICON, ADMIN_CUSTOMHELPLINK_ICON, , 35)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_ADMIN_CUSTOMHELPLINK_ANCHOR, ADMIN_CUSTOMHELPLINK_ANCHOR, , 36)%>
+       </tbody>
+       </table>
+       
+       <table frame="box" rules="all" summary="<%text(_SKINABLEADMIN_SHOWLIST_LISTPLUG_SELECT)%>">
+       <thead>
+       <tr>
+       <th colspan="2"><%text(_SKINABLEADMIN_SHOWLIST_LISTPLUG_SELECT)%></th>
+       </tr>
+       </thead>
+       <tbody>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_SELECT_HEAD, SHOWLIST_LISTPLUG_SELECT_HEAD, , 37)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_SELECT_BODY, SHOWLIST_LISTPLUG_SELECT_BODY, , 38)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_SELECT_FOOT, SHOWLIST_LISTPLUG_SELECT_FOOT, , 39)%>
+       </tbody>
+       </table>
+       
+       <table frame="box" rules="all" summary="<%text(_SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE)%>">
+       <thead>
+       <tr>
+       <th colspan="2"><%text(_SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE)%></th>
+       </tr>
+       </thead>
+       <tbody>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_HEAD, SHOWLIST_LISTPLUG_TABLE_HEAD, , 40)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BODY, SHOWLIST_LISTPLUG_TABLE_BODY, , 41)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_FOOT, SHOWLIST_LISTPLUG_TABLE_FOOT, , 42)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_MEMBLIST_HEAD, SHOWLIST_LISTPLUG_TABLE_MEMBLIST_HEAD, , 43)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_MEMBLIST_BODY, SHOWLIST_LISTPLUG_TABLE_MEMBLIST_BODY, , 44)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_MEMBLIST_FOOT, SHOWLIST_LISTPLUG_TABLE_MEMBLIST_FOOT, , 45)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_TEAMLIST_HEAD, SHOWLIST_LISTPLUG_TABLE_TEAMLIST_HEAD, , 46)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_TEAMLIST_BODY, SHOWLIST_LISTPLUG_TABLE_TEAMLIST_BODY, , 47)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_TEAMLIST_FOOT, SHOWLIST_LISTPLUG_TABLE_TEAMLIST_FOOT, , 48)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HEAD, SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HEAD, , 49)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY, SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY, , 50)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL, SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL, , 51)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST, SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST, , 52)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE, SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE, , 53)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND, SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND, , 54)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ, SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ, , 55)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE, SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE, , 56)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN, SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN, , 57)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN, SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN, , 58)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP, SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP, , 59)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL, SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL, , 60)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_FOOT, SHOWLIST_LISTPLUG_TABLE_PLUGLIST_FOOT, , 61)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_POPTLIST_HEAD, SHOWLIST_LISTPLUG_TABLE_POPTLIST_HEAD, , 62)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_POPTLIST_BODY, SHOWLIST_LISTPLUG_TABLE_POPTLIST_BODY, , 63)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLGOPT_OYESNO, SHOWLIST_LISTPLUG_TABLE_PLGOPT_OYESNO, , 64)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLGOPT_OPWORD, SHOWLIST_LISTPLUG_TABLE_PLGOPT_OPWORD, , 65)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLGOPT_OSELEP, SHOWLIST_LISTPLUG_TABLE_PLGOPT_OSELEP, , 66)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLGOPT_OSELEO, SHOWLIST_LISTPLUG_TABLE_PLGOPT_OSELEO, , 67)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLGOPT_OSELEC, SHOWLIST_LISTPLUG_TABLE_PLGOPT_OSELEC, , 68)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLGOPT_OTAREA, SHOWLIST_LISTPLUG_TABLE_PLGOPT_OTAREA, , 69)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLGOPT_OITEXT, SHOWLIST_LISTPLUG_TABLE_PLGOPT_OITEXT, , 70)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTN_FOOT, SHOWLIST_LISTPLUG_TABLE_PLUGOPTN_FOOT, , 71)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_POPTLIST_FOOT, SHOWLIST_LISTPLUG_TABLE_POPTLIST_FOOT, , 72)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_ITEMLIST_HEAD, SHOWLIST_LISTPLUG_TABLE_ITEMLIST_HEAD, , 73)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_ITEMLIST_BODY, SHOWLIST_LISTPLUG_TABLE_ITEMLIST_BODY, , 74)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_ITEMLIST_FOOT, SHOWLIST_LISTPLUG_TABLE_ITEMLIST_FOOT, , 75)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_CMNTLIST_HEAD, SHOWLIST_LISTPLUG_TABLE_CMNTLIST_HEAD, , 76)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_CMNTLIST_BODY, SHOWLIST_LISTPLUG_TABLE_CMNTLIST_BODY, , 77)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_CMNTLIST_ABAN, SHOWLIST_LISTPLUG_TABLE_CMNTLIST_ABAN, , 78)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_CMNTLIST_FOOT, SHOWLIST_LISTPLUG_TABLE_CMNTLIST_FOOT, , 79)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLOGLIST_HEAD, SHOWLIST_LISTPLUG_TABLE_BLOGLIST_HEAD, , 80)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLOGLIST_BODY, SHOWLIST_LISTPLUG_TABLE_BLOGLIST_BODY, , 81)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM, SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM, , 82)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM, SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM, , 83)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLOGLIST_FOOT, SHOWLIST_LISTPLUG_TABLE_BLOGLIST_FOOT, , 84)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLOGSNAM_HEAD, SHOWLIST_LISTPLUG_TABLE_BLOGSNAM_HEAD, , 85)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLOGSNAM_BODY, SHOWLIST_LISTPLUG_TABLE_BLOGSNAM_BODY, , 86)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLOGSNAM_FOOT, SHOWLIST_LISTPLUG_TABLE_BLOGSNAM_FOOT, , 87)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_SHORTNAM_HEAD, SHOWLIST_LISTPLUG_TABLE_SHORTNAM_HEAD, , 88)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_SHORTNAM_BODY, SHOWLIST_LISTPLUG_TABLE_SHORTNAM_BODY, , 89)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_SHORTNAM_FOOT, SHOWLIST_LISTPLUG_TABLE_SHORTNAM_FOOT, , 90)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_CATELIST_HEAD, SHOWLIST_LISTPLUG_TABLE_CATELIST_HEAD, , 91)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_CATELIST_BODY, SHOWLIST_LISTPLUG_TABLE_CATELIST_BODY, , 92)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_CATELIST_FOOT, SHOWLIST_LISTPLUG_TABLE_CATELIST_FOOT, , 93)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_TPLTLIST_HEAD, SHOWLIST_LISTPLUG_TABLE_TPLTLIST_HEAD, , 94)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_TPLTLIST_BODY, SHOWLIST_LISTPLUG_TABLE_TPLTLIST_BODY, , 95)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_TPLTLIST_FOOT, SHOWLIST_LISTPLUG_TABLE_TPLTLIST_FOOT, , 96)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_SKINLIST_HEAD, SHOWLIST_LISTPLUG_TABLE_SKINLIST_HEAD, , 97)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_SKINLIST_BODY, SHOWLIST_LISTPLUG_TABLE_SKINLIST_BODY, , 98)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_SKINLIST_FOOT, SHOWLIST_LISTPLUG_TABLE_SKINLIST_FOOT, , 99)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_DRFTLIST_HEAD, SHOWLIST_LISTPLUG_TABLE_DRFTLIST_HEAD, , 100)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_DRFTLIST_BODY, SHOWLIST_LISTPLUG_TABLE_DRFTLIST_BODY, , 101)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_DRFTLIST_FOOT, SHOWLIST_LISTPLUG_TABLE_DRFTLIST_FOOT, , 102)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_ACTNLIST_HEAD, SHOWLIST_LISTPLUG_TABLE_ACTNLIST_HEAD, , 103)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_ACTNLIST_BODY, SHOWLIST_LISTPLUG_TABLE_ACTNLIST_BODY, , 104)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_ACTNLIST_FOOT, SHOWLIST_LISTPLUG_TABLE_ACTNLIST_FOOT, , 105)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_IBANLIST_HEAD, SHOWLIST_LISTPLUG_TABLE_IBANLIST_HEAD, , 106)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_IBANLIST_BODY, SHOWLIST_LISTPLUG_TABLE_IBANLIST_BODY, , 107)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_IBANLIST_FOOT, SHOWLIST_LISTPLUG_TABLE_IBANLIST_FOOT, , 108)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_NAVILIST, SHOWLIST_LISTPLUG_TABLE_NAVILIST, , 109)%>
+       </tbody>
+       </table>
+       
+       <table frame="box" rules="all" summary="<%text(_SKINABLEADMIN_PLUGIN_QUICKMENU)%>">
+       <thead>
+       <tr>
+       <th colspan="2"><%text(_SKINABLEADMIN_PLUGIN_QUICKMENU)%></th>
+       </tr>
+       </thead>
+       <tbody>
+       <%edittemplateinfo(row, _ADM_TPLPT_PLUGIN_QUICKMENU_TITLE, PLUGIN_QUICKMENU_TITLE, , 109)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_PLUGIN_QUICKMENU_HEAD, PLUGIN_QUICKMENU_HEAD, , 110)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_PLUGIN_QUICKMENU_BODY, PLUGIN_QUICKMENU_BODY, , 111)%>
+       <%edittemplateinfo(row, _ADM_TPLPT_PLUGIN_QUICKMENU_FOOT, PLUGIN_QUICKMENU_FOOT, , 112)%>
+       </tbody>
+       </table>
+       
+       <table frame="box" rules="all" summary="<%text(_TEMPLATE_PLUGIN_FIELDS)%>">
+       <thead>
+       <tr>
+       <th colspan="2"><%text(_TEMPLATE_PLUGIN_FIELDS)%></th>
+       </tr>
+       </thead>
+       <tbody>
+       <%edittemplateinfo(extratemplate,admin/default)%>
+       </tbody>
+       </table>
+       
+       <table frame="box" rules="all" summary="<%text(_TEMPLATE_UPDATE)%>">
+       <thead>
+       <tr>
+       <th colspan="2"><%text(_TEMPLATE_UPDATE)%></th>
+       </tr>
+       </thead>
+       <tbody>
+       <tr>
+       <td><%text(_TEMPLATE_UPDATE)%></td>
+       <td>
+       <input type="submit" tabindex="800" value="<%text(_TEMPLATE_UPDATE_BTN)%>" onclick="return checkSubmit();" />
+       <input type="reset" tabindex="810" value="<%text(_TEMPLATE_RESET_BTN)%>" />
+       </td>
+       </tr>
+       </tbody>
+       </table>
+       
+       </form>
+       <%pagefoot%>
+]]></part>
+<part name="admntemplateoverview"><![CDATA[
+       <%pagehead%>
+       <p><a href="<%adminurl%>index.php?action=manage">(<%text(_BACKTOMANAGE)%>)</a></p>
+       <h2><%text(_TEMPLATE_TITLE)%></h2>
+       
+       <h3><%text(_TEMPLATE_AVAILABLE_TITLE)%></h3>
+       <%templateoverview(admin/default)%>
+       
+       <h3><%text(_TEMPLATE_NEW_TITLE)%></h3>
+       <form method="post" action="<%adminurl%>index.php">
+       <p>
+       <input name="action" value="admintemplatenew" type="hidden" />
+       <%ticket%>
+       </p>
+       <table frame="box" rules="all" summary="<%text(_TEMPLATE_NEW_TITLE)%>">
+       <tr>
+       <td><%text(_TEMPLATE_NAME)%> <%helplink(shortnames)%></td>
+       <td><input name="name" tabindex="10010" maxlength="20" size="20" /></td>
+       </tr>
+       <tr>
+       <td><%text(_TEMPLATE_DESC)%></td>
+       <td><input name="desc" tabindex="10020" maxlength="200" size="50" /></td>
+       </tr>
+       <tr>
+       <td><%text(_TEMPLATE_CREATE)%></td>
+       <td><input type="submit" tabindex="10030" value="<%text(_TEMPLATE_CREATE_BTN)%>" onclick="return checkSubmit();" /></td>
+       </tr>
+       </table>
+       </form>
+       <%pagefoot%>
+]]></part>
+<part name="backupoverview"><![CDATA[
+       <%pagehead%>
+       <p><a href="<%adminurl%>index.php?action=manage">(<%text(_BACKTOMANAGE)%>)</a></p>
+       <h2><%text(_BACKUPS_TITLE)%></h2>
+       <h3><%text(_BACKUP_TITLE)%></h3>
+       <p><%text(_BACKUP_INTRO)%></p>
+       <form method="post" action="<%adminurl%>index.php">
+       <p>
+       <input type="hidden" name="action" value="backupcreate" />
+       <%ticket%>
+       <input type="radio" name="gzip" value="1" checked="checked" id="gzip_yes" tabindex="10" /><label for="gzip_yes"><%text(_BACKUP_ZIP_YES)%></label><br />
+       <input type="radio" name="gzip" value="0" id="gzip_no" tabindex="10" /><label for="gzip_no" ><%text(_BACKUP_ZIP_NO)%></label><br /><br />
+       <input type="submit" value="<%text(_BACKUP_BTN)%>" tabindex="20" />
+       </p>
+       </form>
+       <p class="note"><%text(_BACKUP_NOTE)%></p>
+       <h3><%text(_RESTORE_TITLE)%></h3>
+       <p class="note"><%text(_RESTORE_NOTE)%></p>
+       <p><%text(_RESTORE_INTRO)%></p>
+       <form method="post" action="<%adminurl%>index.php" enctype="multipart/form-data">
+       <p>
+       <input type="hidden" name="action" value="backuprestore" />
+       <%ticket%>
+       <input name="backup_file" type="file" tabindex="30" />
+       <br /><br />
+       <input type="submit" value="<%text(_RESTORE_BTN)%>" tabindex="40" /><br />
+       <input type="checkbox" name="letsgo" value="1" id="letsgo" tabindex="50" /><label for="letsgo"><%text(_RESTORE_IMSURE)%></label><br />
+       <%text(_RESTORE_WARNING)%>
+       </p>
+       </form>
+       <%pagefoot%>
+]]></part>
+<part name="backuprestore"><![CDATA[
+       <%pagehead%>
+       <h2><%text(_RESTORE_COMPLETE)%></h2>
+       <%pagefoot%>
+]]></part>
+<part name="banlist"><![CDATA[
+       <%pagehead%>
+       <p><a href="<%adminurl%>index.php?action=overview">(<%text(_BACKHOME)%>)</a></p>
+       <h2><%text(_BAN_TITLE)%> '<%adminbloglink(admin/default)%>'</h2>
+       <%adminbanlist%>
+       <h2><%text(_BAN_NEW_TITLE)%></h2>
+       <p><a href="<%adminurl%>index.php?action=banlistnew&amp;blogid=<%requestblogid%>"><%text(_BAN_NEW_TEXT)%></a></p><%pagefoot%>
+]]></part>
+<part name="banlistdelete"><![CDATA[
+       <%pagehead%>
+       <h2><%text(_BAN_REMOVE_TITLE)%></h2>
+       
+       <form method="post" action="<%adminurl%>index.php">
+       
+       <h3><%text(_BAN_IPRANGE)%></h3>
+       
+       <p>
+       <%text(_CONFIRMTXT_BAN)%> <%requestiprange%>
+       <input name="iprange" type="hidden" value="<%requestiprange%>" />
+       </p>
+       
+       <h3><%text(_BAN_BLOGS)%></h3>
+       
+       <p>
+       <input type="hidden" name="blogid" value="<%requestblogid%>" />
+       <input name="allblogs" type="radio" value="0" id="allblogs_one" />
+       <label for="allblogs_one"><%sprinttext(_BAN_BANBLOGNAME,<|%getblogsetting(name)%|>)%></label>
+       <br />
+       <input name="allblogs" type="radio" value="1" checked="checked" id="allblogs_all" /><label for="allblogs_all"><%text(_BAN_ALLBLOGS)%></label>
+       </p>
+       
+       <h3><%text(_BAN_DELETE_TITLE)%></h3>
+       
+       <p>
+       <%ticket%>
+       <input type="hidden" name="action" value="banlistdeleteconfirm" />
+       <input type="submit" value="<%text(_DELETE_CONFIRM_BTN)%>" />
+       </p>
+       
+       </form>
+       <%pagefoot%>
+]]></part>
+<part name="banlistdeleteconfirm"><![CDATA[
+       <%pagehead%>
+       <a href="<%adminurl%>index.php?action=banlist&amp;blogid=<%requestblogid%>">(<%text(_BACK)%>)</a>
+       <h2><%text(_BAN_REMOVED_TITLE)%></h2>
+       <p><%text(_BAN_REMOVED_TEXT)%></p>
+       <ul>
+       <%banlistdeletedlist%>
+       </ul>
+       <%pagefoot%>
+]]></part>
+<part name="banlistnew"><![CDATA[
+       <%pagehead%>
+       <h2><%text(_BAN_ADD_TITLE)%></h2>
+       <form method="post" action="<%adminurl%>index.php">
+       <h3><%text(_BAN_IPRANGE)%></h3>
+       <p><%text(_BAN_IPRANGE_TEXT)%></p>
+       <p class="note">
+       <strong><%text(_BAN_EXAMPLE_TITLE)%></strong>
+       <%text(_BAN_EXAMPLE_TEXT)%>
+       <%iprangeinput%>
+       </p>
+       </div>
+       <h3><%text(_BAN_BLOGS)%></h3>
+       <p><%text(_BAN_BLOGS_TEXT)%></p>
+       <p>
+       <input type="hidden" name="blogid" value="<%requestblogid%>" />
+       <input name="allblogs" type="radio" value="0" id="allblogs_one" /><label for="allblogs_one">'<%blogsetting(name)%>'</label><br />
+       <input name="allblogs" type="radio" value="1" checked="checked" id="allblogs_all" /><label for="allblogs_all"><%text(_BAN_ALLBLOGS)%></label>
+       </p>
+       <h3><%text(_BAN_REASON_TITLE)%></h3>
+       <p><%text(_BAN_REASON_TEXT)%></p>
+       <p><textarea name="reason" cols="40" rows="5"></textarea></p>
+       <h3><%text(_BAN_ADD_TITLE)%></h3>
+       <p>
+       <input name="action" type="hidden" value="banlistadd" />
+       <%ticket%>
+       <input type="submit" value="<%text(_BAN_ADD_BTN)%>" />
+       </p>
+       </form>
+       <%pagefoot%>
+]]></part>
+<part name="batchcategory"><![CDATA[
+       <%pagehead%>
+       <a href="<%adminurl%>index.php?action=overview"><%text(_BACKHOME)%></a>
+       <h2><%text(_BATCH_CATEGORIES)%></h2>
+       <p><%text(_BATCH_EXECUTING)%><b><%adminbatchaction%></b></p>
+       <ul>
+       <%adminbatchlist%>
+       </ul>
+       <b><%text(_BATCH_DONE)%></b>
+       <%pagefoot%>
+]]></part>
+<part name="batchcomment"><![CDATA[
+       <%pagehead%>
+       <a href="<%adminurl%>index.php?action=overview"><%text(_BACKHOME)%></a>
+       <h2><%text(_BATCH_COMMENTS)%></h2>
+       <p><%text(_BATCH_EXECUTING)%><b><%adminbatchaction%></b></p>
+       <ul>
+       <%adminbatchlist%>
+       </ul>
+       <b><%text(_BATCH_DONE)%></b><%pagefoot%>
+]]></part>
+<part name="batchdelete"><![CDATA[
+       <%pagehead%>
+       <h2><%text(_BATCH_DELETE_CONFIRM)%></h2>
+       <form method="post" action="<%adminurl%>index.php">
+       <p>
+       <input type="hidden" name="action" value="<%batchdeletetype%>" />
+       <input type="hidden" name="batchaction" value="delete" />
+       <input type="hidden" name="confirmation" value="yes" />
+       <%ticket%>
+       <%batchdeletelist%>
+       <input type="submit" value="<%text(_BATCH_DELETE_CONFIRM_BTN)%>" onclick="return checkSubmit();" />
+       </p>
+       </form>
+       <%pagefoot%>
+]]></part>
+<part name="batchitem"><![CDATA[
+       <%pagehead%>
+       <a href="<%adminurl%>index.php?action=overview"><%text(_BACKHOME)%></a>
+       <h2><%text(_BATCH_ITEMS)%></h2>
+       <p><%text(_BATCH_EXECUTING)%><b><%adminbatchaction%></b></p>
+       <ul>
+       <%adminbatchlist%>
+       </ul>
+       <b><%text(_BATCH_DONE)%></b><%pagefoot%>
+]]></part>
+<part name="batchmember"><![CDATA[
+       <%pagehead%>
+       <a href="<%adminurl%>index.php?action=usermanagement"><%text(_MEMBERS_BACKTOOVERVIEW)%></a>
+       <h2><%text(_BATCH_MEMBERS)%></h2>
+       <p><%text(_BATCH_EXECUTING)%><b><%adminbatchaction%></b></p>
+       <ul>
+       <%adminbatchlist%>
+       </ul>
+       <b><%text(_BATCH_DONE)%></b><%pagefoot%>
+]]></part>
+<part name="batchmove"><![CDATA[
+       <%pagehead%>
+       <h2><%text(_MOVE_TITLE)%></h2>
+       <form method="post" action="<%adminurl%>index.php">
+       <p>
+       <input type="hidden" name="action" value="<%batchmovetype%>" />
+       <input type="hidden" name="batchaction" value="move" />
+       <%ticket%>
+       <%batchmovelist%>
+       <%movedistselect%>
+       <input type="submit" value="<%batchmovebtn%>" onclick="return checkSubmit();" />
+       </p>
+       </form>
+       <%pagefoot%>
+]]></part>
+<part name="batchmovecat"><![CDATA[
+       <%pagehead%>
+       <h2><%text(_MOVECAT_TITLE)%></h2>
+       <form method="post" action="<%adminurl%>index.php">
+       <p>
+       <input type="hidden" name="action" value="<%batchmovetype%>" />
+       <input type="hidden" name="batchaction" value="move" />
+       <%ticket%>
+       <%batchmovelist%>
+       <%movedistselect%>
+       <input type="submit" value="<%batchmovebtn%>" onclick="return checkSubmit();" />
+       </p>
+       </form>
+       <%pagefoot%>
+]]></part>
+<part name="batchteam"><![CDATA[
+<%pagehead%>
+<a href="<%adminurl%>index.php?action=manageteam&amp;blogid=<%requestblogid%>"><%text(_BACK)%></a>
+<h2><%text(_BATCH_TEAM)%></h2>
+<p><%text(_BATCH_EXECUTING)%><b><%adminbatchaction%></b></p>
+<ul>
+<%adminbatchlist%>
+</ul>
+<b><%text(_BATCH_DONE)%></b><%pagefoot%>
+]]></part>
+<part name="blogcommentlist"><![CDATA[
+<%pagehead%>
+<p>(<a href="<%adminurl%>index.php?action=overview"><%text(_BACKHOME)%></a>)</p>
+<h2><%text(_COMMENTS_BLOG)%> <%adminbloglink(admin/default)%></h2>
+<%commentnavlist(admin/default)%><%pagefoot%>
+]]></part>
+<part name="blogsettings"><![CDATA[
+<%pagehead%>
+<p><a href="<%adminurl%>index.php?action=overview">(<%text(_BACKHOME)%>)</a></p>
+<h2><%text(_EBLOG_TITLE)%>: '<%adminbloglink(admin/default)%>'</h2>
+
+<h3><%text(_EBLOG_TEAM_TITLE)%></h3>
+
+<p>
+<%text(_EBLOG_CURRENT_TEAM_MEMBER)%>
+<%blogteammembers%>
+</p>
+
+<p><a href="<%adminurl%>index.php?action=manageteam&amp;blogid=<%requestblogid%>"><%text(_EBLOG_TEAM_TEXT)%></a></p>
+
+<h3><%text(_EBLOG_SETTINGS_TITLE)%></h3>
+
+<form method="post" action="<%adminurl%>index.php">
+
+<p>
+<input type="hidden" name="action" value="blogsettingsupdate" />
+<%ticket%>
+<input type="hidden" name="blogid" value="<%requestblogid%>" />
+</p>
+
+<table frame="box" rules="all" summary="<%text(_EBLOG_SETTINGS_TITLE)%>">
+<thead>
+<tr>
+<th colspan="2"><%text(_EBLOG_SETTINGS_TITLE)%></th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td><%text(_EBLOG_NAME)%></td>
+<td><input name="name" tabindex="10" size="40" maxlength="60" value="<%blogsetting(name)%>" /></td>
+</tr>
+<tr>
+<td>
+<%text(_EBLOG_SHORTNAME)%> <%helplink(shortblogname)%>
+<%text(_EBLOG_SHORTNAME_EXTRA)%>
+</td>
+<td><input name="shortname" tabindex="20" maxlength="15" size="15" value="<%blogsetting(short)%>" /></td>
+</tr>
+<tr>
+<td><%text(_EBLOG_DESC)%></td>
+<td><input name="desc" tabindex="30" maxlength="200" size="40" value="<%blogsetting(desc)%>" /></td>
+</tr>
+<tr>
+<td><%text(_EBLOG_URL)%></td>
+<td><input name="url" tabindex="40" size="40" maxlength="100" value="<%blogsetting(url)%>" /></td>
+</tr>
+<tr>
+<td><%text(_EBLOG_DEFSKIN)%><%helplink(blogdefaultskin)%></td>
+<td><%defskinselect(blog)%></td>
+</tr>
+<tr>
+<td><%text(_EBLOG_LINEBREAKS)%> <%helplink(convertbreaks)%></td>
+<td><%blogsettingyesno(convertbreaks)%></td>
+</tr>
+<tr>
+<td><%text(_EBLOG_ALLOWPASTPOSTING)%> <%helplink(allowpastposting)%></td>
+<td><%blogsettingyesno(allowpastposting)%></td>
+</tr>
+<tr>
+<td><%text(_EBLOG_DISABLECOMMENTS)%></td>
+<td><%blogsettingyesno(comments)%></td>
+</tr>
+<tr>
+<td><%text(_EBLOG_ANONYMOUS)%></td>
+<td><%blogsettingyesno(public)%></td>
+</tr>
+<tr>
+<td><%text(_EBLOG_REQUIREDEMAIL)%></td>
+<td><%blogsettingyesno(reqemail)%></td>
+</tr>
+<tr>
+<td><%text(_EBLOG_NOTIFY)%> <%helplink(blognotify)%></td>
+<td><input name="notify" tabindex="80" maxlength="60" size="40" value="<%blogsetting(notifyaddress)%>" /></td>
+</tr>
+<tr>
+<td><%text(_EBLOG_NOTIFY_ON)%></td>
+<td>
+<input name="notifyComment" value="3" type="checkbox" tabindex="81" id="notifyComment"<%blognotifysetting(comment)%> />
+<label for="notifyComment"><%text(_EBLOG_NOTIFY_COMMENT)%></label><br />
+<input name="notifyVote" value="5" type="checkbox" tabindex="82" id="notifyVote"<%blognotifysetting(vote)%> />
+<label for="notifyVote"><%text(_EBLOG_NOTIFY_KARMA)%></label><br />
+<input name="notifyNewItem" value="7" type="checkbox" tabindex="83" id="notifyNewItem"<%blognotifysetting(newitem)%> />
+<label for="notifyNewItem"><%text(_EBLOG_NOTIFY_ITEM)%></label>
+</td>
+</tr>
+<tr>
+<td><%text(_EBLOG_MAXCOMMENTS)%> <%helplink(blogmaxcomments)%></td>
+<td><input name="maxcomments" tabindex="90" size="3" value="<%blogsetting(maxcomments)%>" /></td>
+</tr>
+<tr>
+<td><%text(_EBLOG_UPDATE)%> <%helplink(blogupdatefile)%></td>
+<td><input name="update" tabindex="100" size="40" maxlength="60" value="<%blogsetting(updatefile)%>" /></td>
+</tr>
+<tr>
+<td><%text(_EBLOG_DEFCAT)%></td>
+<td><%defcatselect%></td>
+</tr>
+<tr>
+<td>
+<%text(_EBLOG_OFFSET)%> <%helplink(blogtimeoffset)%><br />
+<%text(_EBLOG_STIME)%> <b><%blogtime(servertime,"%H:%M")%></b><br />
+<%text(_EBLOG_BTIME)%> <b><%blogtime(blogtime,"%H:%M")%></b>
+</td>
+<td><input name="timeoffset" tabindex="120" size="3" value="<%blogsetting(timeoffset)%>" /></td>
+</tr>
+<tr>
+<td><%text(_EBLOG_SEARCH)%> <%helplink(blogsearchable)%></td>
+<td><%blogsettingyesno(searchable)%></td>
+</tr>
+<%pluginoptions(blog)%>
+<tr>
+<td><%text(_EBLOG_CHANGE)%></td>
+<td><input type="submit" tabindex="130" value="<%text(_EBLOG_CHANGE_BTN)%>" onclick="return checkSubmit();" /></td>
+</tr>
+</tbody>
+</table>
+</form>
+
+<h3><%text(_EBLOG_CAT_TITLE)%></h3>
+
+<%blogcatlist%>
+
+<form action="<%adminurl%>index.php" method="post">
+<p>
+<input name="action" value="categorynew" type="hidden" />
+<%ticket%>
+<input name="blogid" value="<%blogsetting(id)%>" type="hidden" />
+</p>
+
+<table frame="box" rules="all" summary="<%text(_EBLOG_CAT_CREATE)%>">
+<thead>
+<tr>
+<th colspan="2"><%text(_EBLOG_CAT_CREATE)%></th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td><%text(_EBLOG_CAT_NAME)%></td>
+<td><input name="cname" size="40" maxlength="40" tabindex="300" /></td>
+</tr>
+<tr>
+<td><%text(_EBLOG_CAT_DESC)%></td>
+<td><input name="cdesc" size="40" maxlength="200" tabindex="310" /></td>
+</tr>
+<tr>
+<td><%text(_EBLOG_CAT_CREATE)%></td>
+<td><input type="submit" value="<%text(_EBLOG_CAT_CREATE)%>" tabindex="320" /></td>
+</tr>
+</tbody>
+</table>
+
+</form>
+<h3><%text(_PLUGINS_EXTRA)%></h3>
+<%pluginextras(blog)%>
+<%pagefoot%>
+]]></part>
+<part name="bookmarklet"><![CDATA[
+<%pagehead%>
+<p><a href="<%adminurl%>index.php?action=overview">(<%text(_BACKHOME)%>)</a></p>
+<h2><%text(_BOOKMARKLET_TITLE)%></h2>
+<p><%text(_BOOKMARKLET_DESC1)%><%text(_BOOKMARKLET_DESC2)%><%text(_BOOKMARKLET_DESC3)%><%text(_BOOKMARKLET_DESC4)%><%text(_BOOKMARKLET_DESC5)%></p>
+<h3><%text(_BOOKMARKLET_BOOKARKLET)%></h3>
+<p>
+<%text(_BOOKMARKLET_BMARKTEXT)%><small><%text(_BOOKMARKLET_BMARKTEST)%></small>
+<br />
+<br />
+<a href="<%bookmarkletadmin(url)%>"><%sprinttext(_BOOKMARKLET_ANCHOR,<|%getblogsetting(name)%|>)%></a><%text(_BOOKMARKLET_BMARKFOLLOW)%>
+</p>
+<%pagefoot%>
+]]></part>
+<part name="browseowncomments"><![CDATA[
+<%pagehead%>
+<p>(<a href="<%adminurl%>index.php?action=overview"><%text(_BACKHOME)%></a>)</p>
+<h2><%text(_COMMENTS_YOUR)%></h2>
+<%commentnavlist(admin/default)%><%pagefoot%>
+]]></part>
+<part name="browseownitems"><![CDATA[
+<%pagehead%>
+<p><a href="<%adminurl%>index.php?action=overview"><%text(_BACKHOME)%></a></p>
+<h2><%text(_ITEMLIST_YOUR)%></h2>
+<%itemnavlist(admin/default)%><%pagefoot%>
+]]></part>
+<part name="categorydelete"><![CDATA[
+<%pagehead%>
+<h2><%text(_DELETE_CONFIRM)%></h2>
+<p>
+<%text(_CONFIRMTXT_CATEGORY)%><b><%categorysetting(name)%></b>
+</p>
+<form method="post" action="<%adminurl%>index.php">
+<p>
+<input type="hidden" name="action" value="categorydeleteconfirm" />
+<%ticket%>
+<input type="hidden" name="blogid" value="<%requestblogid%>" />
+<input type="hidden" name="catid" value="<%categorysetting(id)%>" />
+<input type="submit" tabindex="10" value="<%text(_DELETE_CONFIRM_BTN)%>" />
+</p>
+</form>
+<%pagefoot%>
+]]></part>
+<part name="categoryedit"><![CDATA[
+<%pagehead%>
+<p><a href="<%adminurl%>index.php?action=blogsettings&amp;blogid=<%requestblogid%>">(<%text(_BACK_TO_BLOGSETTINGS)%>)</a></p>
+<h2><%text(_EBLOG_CAT_UPDATE)%> '<%categorysetting(name)%>'</h2>
+<form method='post' action='<%adminurl%>index.php'>
+<p>
+<input name="blogid" type="hidden" value="<%requestblogid%>" />
+<input name="catid" type="hidden" value="<%categorysetting(id)%>" />
+<input name="desturl" type="hidden" value="<%editdesturl%>" />
+<input name="action" type="hidden" value="categoryupdate" />
+<%ticket%>
+</p>
+
+<table frame="box" rules="all" summary="<%text(_EBLOG_CAT_UPDATE)%>">
+<tr>
+<th colspan="2"><%text(_EBLOG_CAT_UPDATE)%></th>
+</tr>
+<tr>
+<td><%text(_EBLOG_CAT_NAME)%></td>
+<td><input type="text" name="cname" value="<%categorysetting(name)%>" size="40" maxlength="40" /></td>
+</tr>
+<tr>
+<td><%text(_EBLOG_CAT_DESC)%></td>
+<td><input type="text" name="cdesc" value="<%categorysetting(desc)%>" size="40" maxlength="200" /></td>
+</tr>
+<%pluginoptions(category)%>
+<tr>
+<th colspan="2"><%text(_EBLOG_CAT_UPDATE)%></th>
+</tr>
+<tr>
+<td><%text(_EBLOG_CAT_UPDATE)%></td>
+<td><input type="submit" value="<%text(_EBLOG_CAT_UPDATE_BTN)%>" /></td>
+</tr>
+</table>
+</form>
+<%pagefoot%>
+]]></part>
+<part name="commentdelete"><![CDATA[
+<%pagehead%>
+<h2><%text(_DELETE_CONFIRM)%></h2>
+<p><%text(_CONFIRMTXT_COMMENT)%></p>
+<p class="note">
+<b><%text(_EDITC_WHO)%>:</b> <%deletecomment(author)%><br />
+<b><%text(_EDITC_TEXT)%>:</b> <%deletecomment(body)%></div>
+</p>
+<form method="post" action="<%adminurl%>index.php">
+<p>
+<input type="hidden" name="action" value="commentdeleteconfirm" />
+<%ticket%>
+<input type="hidden" name="commentid" value="<%deletecomment(id)%>" />
+<input type="submit" tabindex="10" value="<%text(_DELETE_CONFIRM_BTN)%>" />
+</p>
+</form>
+<%pagefoot%>
+]]></part>
+<part name="commentedit"><![CDATA[
+<%pagehead%>
+<h2><%text(_EDITC_TITLE)%></h2>
+
+<form method="post" action="<%adminurl%>index.php">
+
+<p>
+<input type="hidden" name="action" value="commentupdate" />
+<%ticket%>
+<input type="hidden" name="commentid" value="<%editcomment(id)%>" />
+</p>
+
+<table frame="box" rules="all" summary="<%text(_EDITC_TITLE)%>">
+<tr>
+<th colspan="2"><%text(_EDITC_TITLE)%></th>
+</tr>
+<tr>
+<td><%text(_EDITC_WHO)%></td>
+<td><%editcomment(user)%></td>
+</tr>
+<tr>
+<td><%text(_EDITC_WHEN)%></td>
+<td><%editcomment(date)%></td>
+</tr>
+<tr>
+<td><%text(_EDITC_HOST)%></td>
+<td><%editcomment(host)%></td>
+</tr>
+<tr>
+<td><%text(_EDITC_URL)%></td>
+<td><input type="text" name="url" size="30" tabindex="6" value="<%editcomment(url)%>" /></td>
+</tr>
+<tr>
+<td><%text(_EDITC_EMAIL)%></td>
+<td><input type="text" name="email" size="30" tabindex="8" value="<%editcomment(email)%>" /></td>
+</tr>
+<tr>
+<td><%text(_EDITC_TEXT)%></td>
+<td><textarea name="body" tabindex="10" rows="10" cols="50"><%editcomment(body)%></textarea></td>
+</tr>
+<tr>
+<td><%text(_EDITC_EDIT)%></td>
+<td><input type="submit"  tabindex="20" value="<%text(_EDITC_EDIT)%>" onclick="return checkSubmit();" /></td>
+</tr>
+</table>
+</form>
+<%pagefoot%>
+]]></part>
+<part name="createitem"><![CDATA[
+       <%pagehead%>
+       <h2><%text(_ADD_ADDTO)%> '<%adminbloglink(admin/default)%>'</h2>
+       <%init%>
+       <script type="text/javascript" src="<%skinfile(/javascripts/numbercheck.js)%>"></script>
+       <%if(autosave)%><script type="text/javascript" src="<%skinfile(/javascripts/xmlhttprequest.js)%>"></script><%endif%>
+       <form id="addform" method="post" action="<%adminurl%>index.php" >
+       <p>
+       <input type="hidden" name="action" value="additem" />
+       <input name="blogid" value="<%blogid%>" type="hidden" />
+       <input type="hidden" name="draftid" value="0" />
+       <%ticket%>
+       </p>
+       <table frame="box" rules="all" summary="<%text(_ADD_ADDTO)%>">
+       <tr>
+       <th colspan="2"><%text(_ADD_CREATENEW)%></th>
+       </tr>
+       <%if(autosave)%>
+       <tr>
+       <td><%text(_AUTOSAVEDRAFT)%></td>
+       <td><span id="info"><%text(_AUTOSAVEDRAFT_NOTYETSAVED)%></span></td>
+       </tr>
+       <%endif%>
+       <tr>
+       <td><%text(_ADD_TITLE)%></td>
+       <td><input id="inputtitle" name="title" value="<%contents(title)%>" onkeyup="storeCaret(this); updPreview(title); doMonitor();" onclick="storeCaret(this);" onselect="storeCaret(this);" tabindex="10" size="60" maxlength="160" /></td>
+       </tr>
+       <tr>
+       <td>
+       <%text(_ADD_BODY)%> <%helplink(additem)%>
+       </td>
+       <td>
+       <div class="jsbuttonbar">
+       <!--[if IE]>
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="cutThis()">
+       <img src="<%skinfile(/images/button-cut.gif)%>" title="<%text(_ADD_CUT_TT)%>(Ctrl + X)" alt="<%text(_ADD_CUT_TT)%>(Ctrl + X)" width="16" height="16" />
+       </span>
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="copyThis()">
+       <img src="<%skinfile(/images/button-copy.gif)%>" title="<%text(_ADD_COPY_TT)%>(Ctrl + C)" alt="<%text(_ADD_COPY_TT)%>(Ctrl + C)" width="16" height="16" />
+       </span>
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="pasteThis()">
+       <img src="<%skinfile(/images/button-paste.gif)%>" title="<%text(_ADD_PASTE_TT)%>(Ctrl + V)" alt="<%text(_ADD_PASTE_TT)%>(Ctrl + V)" width="16" height="16" />
+       </span>
+       <span class="jsbuttonspacer">&nbsp;</span>
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="boldThis()">
+       <img src="<%skinfile(/images/button-bold.gif)%>" title="<%text(_ADD_BOLD_TT)%>(Ctrl + Shift + B)" alt="<%text(_ADD_BOLD_TT)%>(Ctrl + Shift + B)" width="16" height="16" />
+       </span>
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="italicThis()">
+       <img src="<%skinfile(/images/button-italic.gif)%>" title="<%text(_ADD_ITALIC_TT)%>(Ctrl + Shift + I)" alt="<%text(_ADD_ITALIC_TT)%>(Ctrl + Shift + I)" width="16" height="16" />
+       </span>
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="ahrefThis()">
+       <img src="<%skinfile(/images/button-link.gif)%>" title="<%text(_ADD_HREF_TT)%>(Ctrl + Shift + A)" alt="<%text(_ADD_HREF_TT)%>(Ctrl + Shift + A)" width="16" height="16" />
+       </span>
+       <![endif]-->
+       <!--[if ! IE]>-->
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="boldThis()">
+       <img src="<%skinfile(/images/button-bold.gif)%>" title="<%text(_ADD_BOLD_TT)%>" alt="<%text(_ADD_BOLD_TT)%>" width="16" height="16" />
+       </span>
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="italicThis()">
+       <img src="<%skinfile(/images/button-italic.gif)%>" title="<%text(_ADD_ITALIC_TT)%>" alt="<%text(_ADD_ITALIC_TT)%>" width="16" height="16" />
+       </span>
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="ahrefThis()">
+       <img src="<%skinfile(/images/button-link.gif)%>" title="<%text(_ADD_HREF_TT)%>" alt="<%text(_ADD_HREF_TT)%>" width="16" height="16" />
+       </span>
+       <!--<![endif]-->
+       <span class="jsbuttonspacer">&nbsp;</span>
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="alignleftThis()">
+       <img src="<%skinfile(/images/button-alignleft.gif)%>" title="<%text(_ADD_ALIGNLEFT_TT)%>" alt="<%text(_ADD_ALIGNLEFT_TT)%>" width="16" height="16" />
+       </span>
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="alignrightThis()">
+       <img src="<%skinfile(/images/button-alignright.gif)%>" title="<%text(_ADD_ALIGNRIGHT_TT)%>" alt="<%text(_ADD_ALIGNRIGHT_TT)%>" width="16" height="16" />
+       </span>
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="aligncenterThis()">
+       <img src="<%skinfile(/images/button-aligncenter.gif)%>" title="<%text(_ADD_ALIGNCENTER_TT)%>" alt="<%text(_ADD_ALIGNCENTER_TT)%>" width="16" height="16" />
+       </span>
+       <span class="jsbuttonspacer">&nbsp;</span>
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="leftThis()">
+       <img src="<%skinfile(/images/button-left.gif)%>" title="<%text(_ADD_LEFT_TT)%>" alt="<%text(_ADD_LEFT_TT)%>" width="16" height="16" />
+       </span>
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="rightThis()">
+       <img src="<%skinfile(/images/button-right.gif)%>" title="<%text(_ADD_RIGHT_TT)%>" alt="<%text(_ADD_RIGHT_TT)%>" width="16" height="16" />
+       </span>
+       <span class="jsbuttonspacer">&nbsp;</span>
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="addMedia()">
+       <img src="<%skinfile(/images/button-media.gif)%>" title="<%text(_ADD_MEDIA_TT)%>" alt="<%text(_ADD_MEDIA_TT)%>" width="16" height="16" />
+       </span>
+       <!--[if IE]>
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="showedit()">
+       <img src="<%skinfile(/images/button-preview.gif)%>" title="<%text(_ADD_PREVIEW_TT)%>" alt="<%text(_ADD_PREVIEW_TT)%>" width="16" height="16" />
+       </span>
+       <![endif]-->
+       <div class="jsbuttonend"></div>
+       </div>
+       <textarea id="inputbody" name="body" tabindex="20" cols="60" rows="20" onkeyup="storeCaret(this); updPreview(body); doMonitor();" onclick="storeCaret(this);" onselect="storeCaret(this);"><%contents(body)%></textarea>
+       </td>
+       </tr>
+       <tr id="edit" style="display:none;">
+       <td><%text(_ADD_PREVIEW)%></td>
+       <td><b><span id="prevtitle">&#160;</span></b><br />
+       <span id="prevbody">&#160;</span><br />
+       <span id="prevmore">&#160;</span><br />
+       </td>
+       </tr>
+       <%if(blogsetting, bcomments)%>
+       <tr>
+       <td><%text(_ADD_DISABLE_COMMENTS)%></td>
+       <td>
+       <input name="closed" type="radio" tabindex="30" value="1" id="closed_yes" /><label for="closed_yes"><%text(_YES)%></label>
+       <input name="closed" type="radio" tabindex="30" value="0" checked="checked" id="closed_no" /><label for="closed_no"><%text(_NO)%></label>
+       </td>
+       </tr>
+       <%endif%>
+       <tr>
+       <td><%text(_ADD_CATEGORY)%></td>
+       <td><%categories(40)%></td>
+       </tr>
+       <tr>
+       <td><%text(_SUBMIT)%></td>
+       <td>
+       <input tabindex="60" type="submit" value="<%text(_ADD_ADDITEM)%>" onclick="return checkSubmit();" /><br />
+       <br />
+       <input name="actiontype" value="addnow" type="radio" checked='checked' id="act_now" tabindex="61" />
+       <label for="act_now"><%text(_ADD_ADDNOW)%></label><br />
+       <input type="radio" id="act_future" name="actiontype" value="addfuture" tabindex="61" />
+       <label for="act_future" ><%text(_ADD_ADDLATER)%></label> <%helplink(future)%>
+       <div class="indent">
+       <%text(_ADD_PLACE_ON)%>
+       <input type="text" id="inputyear" name="year" value="<%currenttime(year)%>" tabindex="63" size="4" onchange="document.forms[0].act_future.checked=true;" />
+       <%text(_LABEL_YEAR_UNIT)%>
+       <input type="text" id="inputmonth" name="month" value="<%currenttime(mon)%>" tabindex="64" size="2" onchange="document.forms[0].act_future.checked=true;" />
+       <%text(_LABEL_MONTH_UNIT)%>
+       <input type="text" id="inputday" name="day" value="<%currenttime(mday)%>" tabindex="65" size="2" onchange="document.forms[0].act_future.checked=true;" />
+       <%text(_LABEL_DAY_UNIT)%>
+       <input id="inputhour" name="hour" value="<%currenttime(hours)%>" tabindex="66" size="2" onchange="document.forms[0].act_future.checked=true;" />
+       <%text(_LABEL_HOUR_UNIT)%>
+       <input type="text" id="inputminutes" name="minutes" value="<%currenttime(minutes)%>" tabindex="67" size="2" onchange="document.forms[0].act_future.checked=true;" />
+       <%text(_LABEL_MINUTE_UNIT)%><br />
+       
+       <%text(_ITEM_ADDEDITTEMPLATE_FORMAT)%>(yyyy)<%text(_LABEL_YEAR_UNIT)%>(mm)<%text(_LABEL_MONTH_UNIT)%>(dd)<%text(_LABEL_DAY_UNIT)%> (hh)<%text(_LABEL_HOUR_UNIT)%>(mm)<%text(_LABEL_MINUTE_UNIT)%>
+       
+       <%if(blogsetting, ballowpast,0)%>
+       <br />
+       <%text(_ADD_NOPASTDATES)%>
+       <%endif%>
+       </div>
+       <input type="radio" id="act_draft" name="actiontype" value="adddraft" tabindex="61" />
+       <label for="act_draft"><%text(_ADD_ADDDRAFT)%></label> <%helplink(draft)%>
+       </td>
+       </tr>
+       <tr>
+       <td><%text(_ADD_PLUGIN_EXTRAS)%></td>
+       <td><%pluginextras%></td>
+       </tr>
+       <%pluginoptions(item)%>
+       <tr>
+       <th colspan="2"><%text(_ADD_MORE)%></th>
+       </tr>
+       <tr>
+       <td><%text(_ADD_MORE)%><br />
+       <%helplink(extended)%>
+       </td>
+       <td>
+       <div class="jsbuttonbar">
+       <!--[if IE]>
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="cutThis()">
+       <img src="<%skinfile(/images/button-cut.gif)%>" title="<%text(_ADD_CUT_TT)%>(Ctrl + X)" alt="<%text(_ADD_CUT_TT)%>(Ctrl + X)" width="16" height="16" />
+       </span>
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="copyThis()">
+       <img src="<%skinfile(/images/button-copy.gif)%>" title="<%text(_ADD_COPY_TT)%>(Ctrl + C)" alt="<%text(_ADD_COPY_TT)%>(Ctrl + C)" width="16" height="16" />
+       </span>
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="pasteThis()">
+       <img src="<%skinfile(/images/button-paste.gif)%>" title="<%text(_ADD_PASTE_TT)%>(Ctrl + V)" alt="<%text(_ADD_PASTE_TT)%>(Ctrl + V)" width="16" height="16" />
+       </span>
+       <span class="jsbuttonspacer">&nbsp;</span>
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="boldThis()">
+       <img src="<%skinfile(/images/button-bold.gif)%>" title="<%text(_ADD_BOLD_TT)%>(Ctrl + Shift + B)" alt="<%text(_ADD_BOLD_TT)%>(Ctrl + Shift + B)" width="16" height="16" />
+       </span>
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="italicThis()">
+       <img src="<%skinfile(/images/button-italic.gif)%>" title="<%text(_ADD_ITALIC_TT)%>(Ctrl + Shift + I)" alt="<%text(_ADD_ITALIC_TT)%>(Ctrl + Shift + I)" width="16" height="16" />
+       </span>
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="ahrefThis()">
+       <img src="<%skinfile(/images/button-link.gif)%>" title="<%text(_ADD_HREF_TT)%>(Ctrl + Shift + A)" alt="<%text(_ADD_HREF_TT)%>(Ctrl + Shift + A)" width="16" height="16" />
+       </span>
+       <![endif]-->
+       <!--[if ! IE]>-->
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="boldThis()">
+       <img src="<%skinfile(/images/button-bold.gif)%>" title="<%text(_ADD_BOLD_TT)%>" alt="<%text(_ADD_BOLD_TT)%>" width="16" height="16" />
+       </span>
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="italicThis()">
+       <img src="<%skinfile(/images/button-italic.gif)%>" title="<%text(_ADD_ITALIC_TT)%>" alt="<%text(_ADD_ITALIC_TT)%>" width="16" height="16" />
+       </span>
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="ahrefThis()">
+       <img src="<%skinfile(/images/button-link.gif)%>" title="<%text(_ADD_HREF_TT)%>" alt="<%text(_ADD_HREF_TT)%>" width="16" height="16" />
+       </span>
+       <!--<![endif]-->
+       <span class="jsbuttonspacer">&nbsp;</span>
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="alignleftThis()">
+       <img src="<%skinfile(/images/button-alignleft.gif)%>" title="<%text(_ADD_ALIGNLEFT_TT)%>" alt="<%text(_ADD_ALIGNLEFT_TT)%>" width="16" height="16" />
+       </span>
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="alignrightThis()">
+       <img src="<%skinfile(/images/button-alignright.gif)%>" title="<%text(_ADD_ALIGNRIGHT_TT)%>" alt="<%text(_ADD_ALIGNRIGHT_TT)%>" width="16" height="16" />
+       </span>
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="aligncenterThis()">
+       <img src="<%skinfile(/images/button-aligncenter.gif)%>" title="<%text(_ADD_ALIGNCENTER_TT)%>" alt="<%text(_ADD_ALIGNCENTER_TT)%>" width="16" height="16" />
+       </span>
+       <span class="jsbuttonspacer">&nbsp;</span>
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="leftThis()">
+       <img src="<%skinfile(/images/button-left.gif)%>" title="<%text(_ADD_LEFT_TT)%>" alt="<%text(_ADD_LEFT_TT)%>" width="16" height="16" />
+       </span>
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="rightThis()">
+       <img src="<%skinfile(/images/button-right.gif)%>" title="<%text(_ADD_RIGHT_TT)%>" alt="<%text(_ADD_RIGHT_TT)%>" width="16" height="16" />
+       </span>
+       <span class="jsbuttonspacer">&nbsp;</span>
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="addMedia()">
+       <img src="<%skinfile(/images/button-media.gif)%>" title="<%text(_ADD_MEDIA_TT)%>" alt="<%text(_ADD_MEDIA_TT)%>" width="16" height="16" />
+       </span>
+       <!--[if IE]>
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="showedit()">
+       <img src="<%skinfile(/images/button-preview.gif)%>" title="<%text(_ADD_PREVIEW_TT)%>" alt="<%text(_ADD_PREVIEW_TT)%>" width="16" height="16" />
+       </span>
+       <![endif]-->
+       </div>
+       <textarea id="inputmore" name="more" onkeyup="storeCaret(this); updPreview(more); doMonitor();" onclick="storeCaret(this);" onselect="storeCaret(this);" tabindex="70" cols="60" rows="20"><%contents(more)%></textarea>
+       </td>
+       </tr>
+       <tr>
+       <td><%text(_SUBMIT)%></td>
+       <td>
+       <input type="submit" value="<%text(_ADD_ADDITEM)%>" onclick="return checkSubmit();" tabindex="60" />
+       <%if(autosave)%>
+       <input type="button" name="autosavenow" value="<%text(_AUTOSAVEDRAFT_NOW)%>" tabindex="80" onclick="autoSaveDraft();" />
+       <%endif%>
+       </td>
+       </tr>
+       </table>
+       
+       </form>
+       <%if(autosave)%>
+       <script type="text/javascript">
+               var xmlhttprequest = new Array();
+               xmlhttprequest[0] = createHTTPHandler(); // AutoDraft handler
+               xmlhttprequest[1] = createHTTPHandler(); // UpdateTicket handler
+               var seconds = now(); // Last AutoDraft time
+               var checks = 0; // Number of checks since last AutoDraft
+               var addform = document.getElementById('addform'); // The form id
+               var goal = document.getElementById('info'); // The html div id where 'Last saved: date time' must come
+               var goalurl = '../action.php'; // The PHP file where the content must be posted to
+               var lastsavedtext = '<%text(_AUTOSAVEDRAFT_LASTSAVED)%>'; // The language variable for 'Last saved'
+               var formtype = 'add'; // Add or edit form
+       </script>
+       <%endif%>
+       <%pagefoot%>
+]]></part>
+<part name="createnewlog"><![CDATA[
+<%pagehead%>
+<p><a href="<%adminurl%>index.php?action=manage">(<%text(_BACKTOMANAGE)%>)</a></p>
+<h2><%text(_EBLOG_CREATE_TITLE)%></h2>
+<h3><%text(_ADMIN_NOTABILIA)%></h3>
+<p><%text(_ADMIN_PLEASE_READ)%></p>
+<p><%text(_ADMIN_HOW_TO_ACCESS)%></p>
+<ol>
+<li><%text(_ADMIN_SIMPLE_WAY)%></li>
+<li><%text(_ADMIN_ADVANCED_WAY)%></li>
+</ol>
+
+<h3><%text(_ADMIN_HOW_TO_CREATE)%></h3>
+
+<p><%text(_EBLOG_CREATE_TEXT)%></p>
+
+<form method="post" action="<%adminurl%>index.php">
+
+<p>
+<input type="hidden" name="action" value="addnewlog" />
+<%ticket%>
+</p>
+
+<table frame="box" rules="all" summary="<%text(_EBLOG_CREATE_TEXT)%>">
+<tr>
+<td><%text(_EBLOG_NAME)%></td>
+<td><input name="name" tabindex="10" size="40" maxlength="60" /></td>
+</tr>
+<tr>
+<td>
+<%text(_EBLOG_SHORTNAME)%>
+<%helplink(shortblogname)%>
+</td>
+<td><input name="shortname" tabindex="20" maxlength="15" size="15" /></td>
+</tr>
+<tr>
+<td><%text(_EBLOG_DESC)%></td>
+<td><input name="desc" tabindex="30" maxlength="200" size="40" /></td>
+</tr>
+<tr>
+<td>
+<%text(_EBLOG_DEFSKIN)%>
+<%helplink(blogdefaultskin)%>
+</td>
+<td><%defskinselect(blog,admin/default)%></td>
+</tr>
+<tr>
+<td>
+<%text(_EBLOG_OFFSET)%>
+<%helplink(blogtimeoffset)%><br />
+<%text(_EBLOG_STIME)%> <b><%blogtime(servertime,"%H:%M")%></b>
+</td>
+<td><input name="timeoffset" tabindex="110" size="3" value="0" /></td>
+</tr>
+<tr>
+<td>
+<%text(_EBLOG_ADMIN)%>
+<%helplink(teamadmin)%>
+</td>
+<td><%text(_EBLOG_ADMIN_MSG)%></td>
+</tr>
+<tr>
+<td><%text(_EBLOG_CREATE)%></td>
+<td><input type="submit" tabindex="120" value="<%text(_EBLOG_CREATE_BTN)%>" onclick="return checkSubmit();" /></td>
+</tr>
+</table>
+</form>
+<%pagefoot%>
+]]></part>
+<part name="deleteblog"><![CDATA[
+<%pagehead%>
+<h2><%text(_DELETE_CONFIRM)%></h2>
+
+<p>
+<%text(_WARNINGTXT_BLOGDEL)%>
+</p>
+
+<p>
+<%text(_CONFIRMTXT_BLOG)%><b><%blogsetting(name)%></b>
+</p>
+
+<form method="post" action="<%adminurl%>index.php">
+
+<p>
+<input type="hidden" name="action" value="deleteblogconfirm" />
+<%ticket%>
+<input type="hidden" name="blogid" value="<%requestblogid%>" />
+<input type="submit" tabindex="10" value="<%text(_DELETE_CONFIRM_BTN)%>" />
+</p>
+</form>
+<%pagefoot%>
+]]></part>
+<part name="editmembersettings"><![CDATA[
+<%pagehead%>
+<p>
+<%if(superadmin)%>
+<a href="<%adminurl%>index.php?action=usermanagement">(<%text(_MEMBERS_BACKTOOVERVIEW)%>)
+<%else%>
+<a href="<%adminurl%>index.php?action=overview">(<%text(_BACKHOME)%>)
+<%endif%>
+</a>
+</p>
+<h2><%text(_MEMBERS_EDIT)%></h2>
+
+<form method="post" action="<%adminurl%>index.php" name="memberedit">
+
+<p>
+<input type="hidden" name="action" value="changemembersettings" />
+<input type="hidden" name="memberid" value="<%editmember(id)%>" />
+<%ticket%>
+</p>
+
+<table frame="box" rules="all" summary="<%text(_MEMBERS_EDIT)%>">
+<thead>
+<tr>
+<th colspan="2"><%text(_MEMBERS_EDIT)%></th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>
+<%text(_MEMBERS_DISPLAY)%> <%helplink(shortnames)%><br />
+<small><%text(_MEMBERS_DISPLAY_INFO)%></small>
+</td>
+<td><%editmember(displayname)%></td>
+</tr>
+<tr>
+<td><%text(_MEMBERS_REALNAME)%></td>
+<td><input name="realname" tabindex="20" maxlength="60" size="40" value="<%editmember(realname)%>" /></td>
+</tr>
+<tr><%if(allowloginedit)%>
+<td><%text(_MEMBERS_PWD)%></td>
+<td><input type="password" tabindex="30" maxlength="40" size="16" name="password" /></td>
+</tr>
+<tr>
+<td><%text(_MEMBERS_REPPWD)%></td>
+<td><input type="password" tabindex="35" maxlength="40" size="16" name="repeatpassword" /></td>
+</tr>
+<tr><%endif%>
+<td>
+<%text(_MEMBERS_EMAIL)%><br />
+<small><%text(_MEMBERS_EMAIL_EDIT)%></small>
+</td>
+<td><input name="email" tabindex="40" size="40" maxlength="60" value="<%editmember(email)%>" /></td>
+</tr>
+<tr>
+<td><%text(_MEMBERS_URL)%></td>
+<td><input name="url" tabindex="50" size="40" maxlength="100" value="<%editmember(url)%>" /></td>
+</tr>
+<%if(superadmin)%>
+<tr>
+<td><%text(_MEMBERS_SUPERADMIN)%> <%helplink(superadmin)%></td>
+<td><%editmember(admin)%></td>
+</tr>
+<tr>
+<td><%text(_MEMBERS_CANLOGIN)%> <%helplink(canlogin)%></td>
+<td><%editmember(canlogin)%></td><%endif%>
+</tr>
+<tr>
+<td><%text(_MEMBERS_NOTES)%></td>
+<td><input name="notes" tabindex="80" size="40" maxlength="100" value="<%editmember(notes)%>" /></td>
+</tr>
+<tr>
+<td><%text(_MEMBERS_LOCALE)%> <%helplink(locale)%></td>
+<td>
+<select name="locale" tabindex="85">
+<%localeselectoptions%>
+</select>
+</td>
+</tr>
+<tr>
+<td><%text(_MEMBERS_USEAUTOSAVE)%> <%helplink(autosave)%></td>
+<td><%editmember(autosave)%></td>
+</tr><%if(superadmin)%><tr>
+<td><%text(_SKINABLEADMIN_MEMBERS_ADMINSKIN)%> <%customhelplink(useadminskin)%></td>
+<td>
+<%defadminskinselect(admin/default)%>
+</td>
+</tr><%endif%><%if(superadmin)%><tr>
+<td><%text(_MEMBERS_BKMKLTSKIN)%></td>
+<td>
+<%defbookmarkletselect(admin/default)%>
+</td>
+</tr>
+<%endif%>
+<%pluginoptions(member)%>
+</tbody>
+</table>
+
+<table frame="box" rules="all" summary="<%text(_MEMBERS_EDIT)%>">
+<thead>
+<tr>
+<th colspan="2"><%text(_MEMBERS_EDIT)%></th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td><%text(_MEMBERS_EDIT)%></td>
+<td><input type="submit" tabindex="90" value="<%text(_MEMBERS_EDIT_BTN)%>" onclick="return checkSubmit();" /></td>
+</tr>
+</tbody>
+</table>
+</form>
+<h3><%text(_PLUGINS_EXTRA)%></h3>
+<%pluginextras(member)%>
+<%pagefoot%>
+]]></part>
+<part name="itemcommentlist"><![CDATA[
+<%pagehead%>
+<p>(<a href="<%adminurl%>index.php?action=itemlist&amp;blogid=<%requestblogid%>"><%text(_BACKTOOVERVIEW)%></a>)</p>
+<h2><%text(_COMMENTS)%></h2>
+<%commentnavlist(admin/default)%>
+<%pagefoot%>
+]]></part>
+<part name="itemdelete"><![CDATA[
+<%pagehead%>
+<h2><%text(_DELETE_CONFIRM)%></h2>
+<p><%text(_CONFIRMTXT_ITEM)%></p>
+<p class="note">
+<b>"<%deleteitemtitle%>"</b><br />
+<%deleteitembody%>
+</p>
+<form method="post" action="<%adminurl%>index.php">
+<p>
+<input type="hidden" name="action" value="itemdeleteconfirm" />
+<%ticket%>
+<input type="hidden" name="itemid" value="<%deleteitemid%>" />
+<input type="submit" value="<%text(_DELETE_CONFIRM_BTN)%>" tabindex="10" />
+</p>
+</form>
+<%pagefoot%>
+]]></part>
+<part name="itemedit"><![CDATA[
+       <%pagehead%>
+       <h2><%text(_EDIT_ITEM)%></h2>
+       
+       <%init%>
+       <script type="text/javascript" src="<%skinfile(/javascripts/numbercheck.js)%>"></script>
+       <%if(autosave)%>
+       <script type="text/javascript" src="<%skinfile(/javascripts/xmlhttprequest.js)%>"></script>
+       <%endif%>
+       
+       <form id="editform" method="post" action="<%adminurl%>index.php">
+       
+       <p>
+       <input type="hidden" name="action" value="itemupdate" />
+       <input name="itemid" value="<%contents(itemid)%>" type="hidden" />
+       <input type="hidden" name="draftid" value="0" />
+       <%ticket%>
+       </p>
+       
+       <table frame="box" rules="all" summary="<%text(_EDIT_ITEM)%>">
+       <tr>
+       <th colspan="2"><%text(_EDIT_ITEM)%></th>
+       </tr>
+       <%if(autosave)%><tr>
+       <td><%text(_AUTOSAVEDRAFT)%></td>
+       <td><span id="info"><%text(_AUTOSAVEDRAFT_NOTYETSAVED)%></span></td>
+       </tr>
+       <%endif%>
+       <tr>
+       <td><%text(_EDIT_ORIG_AUTHOR)%></td>
+       <td><%contents(author)%></td>
+       </tr>
+       <tr>
+       <td><%text(_ADD_TITLE)%></td>
+       <td><input type="text" id="inputtitle" name="title" value="<%contents(title)%>" tabindex="10" size="60"  maxlength="160" onkeyup="storeCaret(this); updPreview(title); doMonitor();" onclick="storeCaret(this);" onselect="storeCaret(this);" />
+       </td>
+       </tr>
+       <tr>
+       <td><%text(_ADD_BODY)%></td>
+       <td>
+       <div class="jsbuttonbar">
+       <!--[if IE]>
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="cutThis()">
+       <img src="<%skinfile(/images/button-cut.gif)%>" title="<%text(_ADD_CUT_TT)%>(Ctrl + X)" alt="<%text(_ADD_CUT_TT)%>(Ctrl + X)" width="16" height="16" />
+       </span>
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="copyThis()">
+       <img src="<%skinfile(/images/button-copy.gif)%>" title="<%text(_ADD_COPY_TT)%>(Ctrl + C)" alt="<%text(_ADD_COPY_TT)%>(Ctrl + C)" width="16" height="16" />
+       </span>
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="pasteThis()">
+       <img src="<%skinfile(/images/button-paste.gif)%>" title="<%text(_ADD_PASTE_TT)%>(Ctrl + V)" alt="<%text(_ADD_PASTE_TT)%>(Ctrl + V)" width="16" height="16" />
+       </span>
+       <span class="jsbuttonspacer">&nbsp;</span>
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="boldThis()">
+       <img src="<%skinfile(/images/button-bold.gif)%>" title="<%text(_ADD_BOLD_TT)%>(Ctrl + Shift + B)" alt="<%text(_ADD_BOLD_TT)%>(Ctrl + Shift + B)" width="16" height="16" />
+       </span>
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="italicThis()">
+       <img src="<%skinfile(/images/button-italic.gif)%>" title="<%text(_ADD_ITALIC_TT)%>(Ctrl + Shift + I)" alt="<%text(_ADD_ITALIC_TT)%>(Ctrl + Shift + I)" width="16" height="16" />
+       </span>
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="ahrefThis()">
+       <img src="<%skinfile(/images/button-link.gif)%>" title="<%text(_ADD_HREF_TT)%>(Ctrl + Shift + A)" alt="<%text(_ADD_HREF_TT)%>(Ctrl + Shift + A)" width="16" height="16" />
+       </span>
+       <![endif]-->
+       <!--[if ! IE]>-->
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="boldThis()">
+       <img src="<%skinfile(/images/button-bold.gif)%>" title="<%text(_ADD_BOLD_TT)%>" alt="<%text(_ADD_BOLD_TT)%>" width="16" height="16" />
+       </span>
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="italicThis()">
+       <img src="<%skinfile(/images/button-italic.gif)%>" title="<%text(_ADD_ITALIC_TT)%>" alt="<%text(_ADD_ITALIC_TT)%>" width="16" height="16" />
+       </span>
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="ahrefThis()">
+       <img src="<%skinfile(/images/button-link.gif)%>" title="<%text(_ADD_HREF_TT)%>" alt="<%text(_ADD_HREF_TT)%>" width="16" height="16" />
+       </span>
+       <!--<![endif]-->
+       <span class="jsbuttonspacer">&nbsp;</span>
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="alignleftThis()">
+       <img src="<%skinfile(/images/button-alignleft.gif)%>" title="<%text(_ADD_ALIGNLEFT_TT)%>" alt="<%text(_ADD_ALIGNLEFT_TT)%>" width="16" height="16" />
+       </span>
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="alignrightThis()">
+       <img src="<%skinfile(/images/button-alignright.gif)%>" title="<%text(_ADD_ALIGNRIGHT_TT)%>" alt="<%text(_ADD_ALIGNRIGHT_TT)%>" width="16" height="16" />
+       </span>
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="aligncenterThis()">
+       <img src="<%skinfile(/images/button-aligncenter.gif)%>" title="<%text(_ADD_ALIGNCENTER_TT)%>" alt="<%text(_ADD_ALIGNCENTER_TT)%>" width="16" height="16" />
+       </span>
+       <span class="jsbuttonspacer">&nbsp;</span>
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="leftThis()">
+       <img src="<%skinfile(/images/button-left.gif)%>" title="<%text(_ADD_LEFT_TT)%>" alt="<%text(_ADD_LEFT_TT)%>" width="16" height="16" />
+       </span>
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="rightThis()">
+       <img src="<%skinfile(/images/button-right.gif)%>" title="<%text(_ADD_RIGHT_TT)%>" alt="<%text(_ADD_RIGHT_TT)%>" width="16" height="16" />
+       </span>
+       <span class="jsbuttonspacer">&nbsp;</span>
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="addMedia()">
+       <img src="<%skinfile(/images/button-media.gif)%>" title="<%text(_ADD_MEDIA_TT)%>" alt="<%text(_ADD_MEDIA_TT)%>" width="16" height="16" />
+       </span>
+       <!--[if IE]>
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="showedit()">
+       <img src="<%skinfile(/images/button-preview.gif)%>" title="<%text(_ADD_PREVIEW_TT)%>" alt="<%text(_ADD_PREVIEW_TT)%>" width="16" height="16" />
+       </span>
+       <![endif]-->
+       </div>
+       <textarea id="inputbody" name="body" tabindex="20" cols="60" rows="20" onkeyup="storeCaret(this); updPreview(body); doMonitor();" onclick="storeCaret(this);" onselect="storeCaret(this);"><%contents(body)%></textarea>
+       </td>
+       </tr>
+       <tr id="edit" style="display:none;">
+       <td><%text(_ADD_PREVIEW)%></td>
+       <td><b><span id="prevtitle">&#160;</span></b><br />
+       <span id="prevbody">&#160;</span><br />
+       <span id="prevmore">&#160;</span><br />
+       </td>
+       </tr>
+       
+       <%if(blogsetting, bcomments)%>
+       <tr>
+       <td><%text(_ADD_DISABLE_COMMENTS)%></td>
+       <td> 
+       <input type="radio" name="closed" value="1" <%checkedonval(1,closed)%> tabindex="30" id="closed_yes" /><label for="closed_yes"><%text(_YES)%></label>
+       <input type="radio" name="closed" value="0" <%checkedonval(0,closed)%> tabindex="30" id="closed_no" /><label for="closed_no"><%text(_NO)%></label><br />
+       <small><%text(_EDIT_COMMENTSNOTE)%></small>
+       </td>
+       </tr>
+       <%endif%>
+       
+       <tr>
+       <td><%text(_ADD_CATEGORY)%></td>
+       <td><%categories(40)%></td>
+       </tr>
+       <tr>
+       <td><%text(_EDIT_SUBMIT)%></td>
+       <td>
+       <input type="submit" tabindex="60" value="<%text(_EDIT_SUBMIT)%>" onclick="return checkSubmit();" />
+       <%if(itemproperty, draft)%>
+       <br />
+       <br />
+       <input name="actiontype" value="addnow" type="radio" id="act_now" />
+       <label for="act_now" tabindex="61"><%text(_ADD_ADDNOW)%></label><br />
+       <input name="actiontype" value="addfuture" type="radio" id="act_future" tabindex="61" /><label for="act_future"><%text(_ADD_ADDLATER)%></label> <%helplink(future)%>
+       <div class="indent">
+       <%text(_ADD_PLACE_ON)%>
+       <input type="text" id="inputyear" name="year" tabindex="71" size="4" value="<%currenttime(year)%>" onchange="document.forms[0].act_future.checked=true;" />
+       <%text(_LABEL_YEAR_UNIT)%>
+       <input type="text" id="inputmonth" name="month" tabindex="72" size="2" value="<%currenttime(mon)%>" onchange="document.forms[0].act_future.checked=true;" />
+       <%text(_LABEL_MONTH_UNIT)%>
+       <input type="text" id="inputday" name="day" tabindex="73" size="2" value="<%currenttime(mday)%>" onchange="document.forms[0].act_future.checked=true;" />
+       <%text(_LABEL_DAY_UNIT)%>
+       
+       <input type="text" id="inputhour" name="hour" tabindex="74" size="2" value="<%currenttime(hours)%>" onchange="document.forms[0].act_future.checked=true;" />
+       <%text(_LABEL_HOUR_UNIT)%>
+       <input type="text" id="inputminutes" name="minutes" tabindex="75" size="2" value="<%currenttime(minutes)%>" onchange="document.forms[0].act_future.checked=true;" />
+       <%text(_LABEL_MINUTE_UNIT)%><br />
+       <%text(_ITEM_ADDEDITTEMPLATE_FORMAT)%>(yyyy)<%text(_LABEL_YEAR_UNIT)%>(mm)<%text(_LABEL_MONTH_UNIT)%>(dd)<%text(_LABEL_DAY_UNIT)%> (hh)<%text(_LABEL_HOUR_UNIT)%>(mm)<%text(_LABEL_MINUTE_UNIT)%>
+       
+       <%if(blogsetting, ballowpast,0)%>
+       <br />
+       <%text(_ADD_NOPASTDATES)%>
+       <%endif%>
+       
+       </div>
+       <input type="radio" id="act_draft" name="actiontype" value="adddraft" checked='checked' tabindex="61" />
+       <label for="act_draft"><%text(_EDIT_BACKTODRAFTS)%></label> <%helplink(draft)%><br />
+       <input type="radio" id="act_delete" name="actiontype" value="delete" tabindex="61" />
+       <label for="act_delete"><%text(_BMLET_DELETE)%></label>
+       <%endif%>
+       
+       <%if(itemproperty, draft,0)%>
+       <br />
+       <br />
+       <input type="radio" id="act_edit" name="actiontype" value="edit" checked="checked" tabindex="61" />
+       <label for="act_edit"><%text(_BMLET_EDIT)%></label>
+       <%if(blogsetting, ballowpast)%>
+       <br />
+       <input type="radio" id="act_changedate" name="actiontype" value="changedate" tabindex="70" />
+       <label for="act_changedate"><%text(_ADD_CHANGEDATE)%></label> <%helplink(changedate)%>
+       <div class="indent">
+       <input type="text" id="inputyear" name="year" value="<%itemtime(year)%>" size="4" tabindex="71" onchange="document.forms[0].act_changedate.checked=true;" />
+       <%text(_LABEL_YEAR_UNIT)%>
+       <input type="text" id="inputmonth" name="month" value="<%itemtime(mon)%>" size="2" tabindex="72" onchange="document.forms[0].act_changedate.checked=true;" />
+       <%text(_LABEL_MONTH_UNIT)%>
+       <input type="text" id="inputday" name="day" value="<%itemtime(mday)%>" size="2" tabindex="73" onchange="document.forms[0].act_changedate.checked=true;" />
+       <%text(_LABEL_DAY_UNIT)%>
+       <input type="text" id="inputhour" name="hour" value="<%itemtime(hours)%>" size="2" tabindex="74" onchange="document.forms[0].act_changedate.checked=true;" />
+       <%text(_LABEL_HOUR_UNIT)%>
+       <input type="text" id="inputminutes" name="minutes" value="<%itemtime(minutes)%>" size="2" tabindex="75" onchange="document.forms[0].act_changedate.checked=true;" />
+       <%text(_LABEL_MINUTE_UNIT)%>
+       <br /><%text(_ITEM_ADDEDITTEMPLATE_FORMAT)%>(yyyy)<%text(_LABEL_YEAR_UNIT)%>(mm)<%text(_LABEL_MONTH_UNIT)%>(dd)<%text(_LABEL_DAY_UNIT)%> (hh)<%text(_LABEL_HOUR_UNIT)%>(mm)<%text(_LABEL_MINUTE_UNIT)%>
+       </div>
+       <%endif%>
+       <input type="radio" id="act_backtodrafts" name="actiontype" value="backtodrafts" tabindex="71" />
+       <label for="act_backtodrafts"><%text(_BMLET_BACKTODRAFTS)%></label> <%helplink(draft)%><br />
+       <input type="radio" id="act_delete" name="actiontype" value="delete" tabindex="61" />
+       <label for="act_delete"><%text(_BMLET_DELETE)%></label>
+       <%endif%>
+       
+       </td>
+       </tr>
+       <tr>
+       <td><%text(_ADD_PLUGIN_EXTRAS)%></td>
+       <td><%pluginextras%></td>
+       </tr>
+       <%pluginoptions(item)%>
+       <tr>
+       <th colspan="2"><%text(_ADD_MORE)%></th>
+       </tr>
+       <tr>
+       <td>
+       <%text(_ADD_MORE)%><br />
+       <%helplink(extended)%>
+       </td>
+       <td>
+       <div class="jsbuttonbar">
+       <!--[if IE]>
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="cutThis()">
+       <img src="<%skinfile(/images/button-cut.gif)%>" title="<%text(_ADD_CUT_TT)%>(Ctrl + X)" alt="<%text(_ADD_CUT_TT)%>(Ctrl + X)" width="16" height="16" />
+       </span>
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="copyThis()">
+       <img src="<%skinfile(/images/button-copy.gif)%>" title="<%text(_ADD_COPY_TT)%>(Ctrl + C)" alt="<%text(_ADD_COPY_TT)%>(Ctrl + C)" width="16" height="16" />
+       </span>
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="pasteThis()">
+       <img src="<%skinfile(/images/button-paste.gif)%>" title="<%text(_ADD_PASTE_TT)%>(Ctrl + V)" alt="<%text(_ADD_PASTE_TT)%>(Ctrl + V)" width="16" height="16" />
+       </span>
+       <span class="jsbuttonspacer">&nbsp;</span>
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="boldThis()">
+       <img src="<%skinfile(/images/button-bold.gif)%>" title="<%text(_ADD_BOLD_TT)%>(Ctrl + Shift + B)" alt="<%text(_ADD_BOLD_TT)%>(Ctrl + Shift + B)" width="16" height="16" />
+       </span>
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="italicThis()">
+       <img src="<%skinfile(/images/button-italic.gif)%>" title="<%text(_ADD_ITALIC_TT)%>(Ctrl + Shift + I)" alt="<%text(_ADD_ITALIC_TT)%>(Ctrl + Shift + I)" width="16" height="16" />
+       </span>
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="ahrefThis()">
+       <img src="<%skinfile(/images/button-link.gif)%>" title="<%text(_ADD_HREF_TT)%>(Ctrl + Shift + A)" alt="<%text(_ADD_HREF_TT)%>(Ctrl + Shift + A)" width="16" height="16" />
+       </span>
+       <![endif]-->
+       <!--[if ! IE]>-->
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="boldThis()">
+       <img src="<%skinfile(/images/button-bold.gif)%>" title="<%text(_ADD_BOLD_TT)%>" alt="<%text(_ADD_BOLD_TT)%>" width="16" height="16" />
+       </span>
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="italicThis()">
+       <img src="<%skinfile(/images/button-italic.gif)%>" title="<%text(_ADD_ITALIC_TT)%>" alt="<%text(_ADD_ITALIC_TT)%>" width="16" height="16" />
+       </span>
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="ahrefThis()">
+       <img src="<%skinfile(/images/button-link.gif)%>" title="<%text(_ADD_HREF_TT)%>" alt="<%text(_ADD_HREF_TT)%>" width="16" height="16" />
+       </span>
+       <!--<![endif]-->
+       <span class="jsbuttonspacer">&nbsp;</span>
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="alignleftThis()">
+       <img src="<%skinfile(/images/button-alignleft.gif)%>" title="<%text(_ADD_ALIGNLEFT_TT)%>" alt="<%text(_ADD_ALIGNLEFT_TT)%>" width="16" height="16" />
+       </span>
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="alignrightThis()">
+       <img src="<%skinfile(/images/button-alignright.gif)%>" title="<%text(_ADD_ALIGNRIGHT_TT)%>" alt="<%text(_ADD_ALIGNRIGHT_TT)%>" width="16" height="16" />
+       </span>
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="aligncenterThis()">
+       <img src="<%skinfile(/images/button-aligncenter.gif)%>" title="<%text(_ADD_ALIGNCENTER_TT)%>" alt="<%text(_ADD_ALIGNCENTER_TT)%>" width="16" height="16" />
+       </span>
+       <span class="jsbuttonspacer">&nbsp;</span>
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="leftThis()">
+       <img src="<%skinfile(/images/button-left.gif)%>" title="<%text(_ADD_LEFT_TT)%>" alt="<%text(_ADD_LEFT_TT)%>" width="16" height="16" />
+       </span>
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="rightThis()">
+       <img src="<%skinfile(/images/button-right.gif)%>" title="<%text(_ADD_RIGHT_TT)%>" alt="<%text(_ADD_RIGHT_TT)%>" width="16" height="16" />
+       </span>
+       <span class="jsbuttonspacer">&nbsp;</span>
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="addMedia()">
+       <img src="<%skinfile(/images/button-media.gif)%>" title="<%text(_ADD_MEDIA_TT)%>" alt="<%text(_ADD_MEDIA_TT)%>" width="16" height="16" />
+       </span>
+       <!--[if IE]>
+       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="showedit()">
+       <img src="<%skinfile(/images/button-preview.gif)%>" title="<%text(_ADD_PREVIEW_TT)%>" alt="<%text(_ADD_PREVIEW_TT)%>" width="16" height="16" />
+       </span>
+       <![endif]-->
+       </div>
+       <textarea id="inputmore" name="more" cols="60" rows="20" tabindex="90" onkeyup="storeCaret(this); updPreview(more); doMonitor();" onclick="storeCaret(this);" onselect="storeCaret(this);"><%contents(more)%></textarea>
+       </td>
+       </tr>
+       <tr>
+       <td><%text(_SUBMIT)%></td>
+       <td>
+       <input type="submit" value="<%text(_EDIT_SUBMIT)%>" tabindex="60" onclick="return checkSubmit();" />
+       <%if(autosave)%>
+       <input type="button" name="autosavenow" value="<%text(_AUTOSAVEDRAFT_NOW)%>" tabindex="80" onclick="autoSaveDraft();" />
+       <%endif%>
+       </td>
+       </tr>
+       </table>
+       </form>
+       <%if(autosave)%>
+       <script type="text/javascript">
+               var xmlhttprequest = new Array();
+               xmlhttprequest[0] = createHTTPHandler(); // AutoDraft handler
+               xmlhttprequest[1] = createHTTPHandler(); // UpdateTicket handler
+               var seconds = now(); // Last AutoDraft time
+               var checks = 0; // Number of checks since last AutoDraft
+               var addform = document.getElementById('editform'); // The form id
+               var goal = document.getElementById('info'); // The html div id where 'Last saved: date time' must come
+               var goalurl = '../action.php'; // The PHP file where the content must be posted to
+               var lastsavedtext = '<%text(_AUTOSAVEDRAFT_LASTSAVED)%>'; // The language variable for 'Last saved'
+               var formtype = 'edit'; // Add or edit form
+       </script>
+       <%endif%>
+       <%pagefoot%>
+]]></part>
+<part name="itemlist"><![CDATA[
+<%pagehead%>
+<p><a href="<%adminurl%>index.php?action=overview">(<%text(_BACKHOME)%>)</a></p>
+<h2><%text(_ITEMLIST_BLOG)%><%adminbloglink(admin/default)%></h2>
+<%ilistaddnew%>
+<%itemnavlist(admin/default)%>
+<%pagefoot%>
+]]></part>
+<part name="itemmove"><![CDATA[
+<%pagehead%>
+<h2><%text(_MOVE_TITLE)%></h2>
+<form method="post" action="<%adminurl%>index.php">
+<p>
+<input type="hidden" name="action" value="itemmoveto" />
+<input type="hidden" name="itemid" value="<%moveitemid%>" />
+<%ticket%>
+<%movedistselect%>
+<input type="submit" value="<%text(_MOVE_BTN)%>" tabindex="10000" onclick="return checkSubmit();" />
+</p>
+</form>
+<%pagefoot%>
+]]></part>
+<part name="manage"><![CDATA[
+<%pagehead%>
+<p><a href="<%adminurl%>index.php?action=overview">(<%text(_BACKHOME)%>)</a></p>
+<%headmessage%>
+<h2><%text(_MANAGE_GENERAL)%></h2>
+
+<ul>
+<li><a href="<%adminurl%>index.php?action=createnewlog"><%text(_OVERVIEW_NEWLOG)%></a></li>
+<li><a href="<%adminurl%>index.php?action=settingsedit"><%text(_OVERVIEW_SETTINGS)%></a></li>
+<li><a href="<%adminurl%>index.php?action=usermanagement"><%text(_OVERVIEW_MEMBERS)%></a></li>
+<li><a href="<%adminurl%>index.php?action=actionlog"><%text(_OVERVIEW_VIEWLOG)%></a></li>
+</ul>
+
+<h2><%text(_MANAGE_SKINS)%></h2>
+<ul>
+<li><a href="<%adminurl%>index.php?action=skinoverview"><%text(_OVERVIEW_SKINS)%></a></li>
+<li><a href="<%adminurl%>index.php?action=templateoverview"><%text(_OVERVIEW_TEMPLATES)%></a></li>
+<li><a href="<%adminurl%>index.php?action=skinieoverview"><%text(_OVERVIEW_SKINIMPORT)%></a></li>
+</ul>
+
+<h2><%text(_MANAGE_EXTRA)%></h2>
+<ul>
+<li><a href="<%adminurl%>index.php?action=backupoverview"><%text(_OVERVIEW_BACKUP)%></a></li>
+<li><a href="<%adminurl%>index.php?action=pluginlist"><%text(_OVERVIEW_PLUGINS)%></a></li>
+</ul><%pagefoot%>
+]]></part>
+<part name="manageteam"><![CDATA[
+<%pagehead%>
+<p><a href="<%adminurl%>index.php?action=blogsettings&amp;blogid=<%requestblogid%>">(<%text(_BACK_TO_BLOGSETTINGS)%>)</a></p>
+<h2><%text(_TEAM_TITLE)%><%blogsetting(name)%></h2>
+<h3><%text(_TEAM_CURRENT)%></h3>
+<%blogteamlist(admin/default)%>
+<h3><%text(_TEAM_ADDNEW)%></h3>
+
+<form method='post' action='<%adminurl%>index.php'>
+
+<p>
+<input type='hidden' name='action' value='teamaddmember' />
+<input type='hidden' name='blogid' value='<%requestblogid%>' />
+<%ticket%>
+</p>
+
+<table frame="box" rules="all" summary="<%text(_TEAM_ADDNEW)%>">
+<tr>
+<td><%text(_TEAM_CHOOSEMEMBER)%></td>
+<td><%newmemberselect%></td>
+</tr>
+<tr>
+<td><%text(_TEAM_ADMIN)%><%helplink(teamadmin)%></td>
+<td><%inputyesno(admin,0,10020)%></td>
+</tr>
+<tr>
+<td><%text(_TEAM_ADD)%></td>
+<td><input type='submit' value='<%text(_TEAM_ADD_BTN)%>' tabindex="10030" /></td>
+</tr>
+</table>
+</form>
+<%pagefoot%>
+]]></part>
+<part name="memberdelete"><![CDATA[
+<%pagehead%>
+<h2><%text(_DELETE_CONFIRM)%></h2>
+<p><%text(_CONFIRMTXT_MEMBER%><b><%editmember(displayname)%></b></p>
+<p><%text(_WARNINGTXT_NOTDELMEDIAFILES)%></p>
+
+<form method="post" action="<%adminurl%>index.php">
+
+<p>
+<input type="hidden" name="action" value="memberdeleteconfirm" />
+<%ticket%>
+<input type="hidden" name="memberid" value="<%editmember(id)%>" />
+<input type="submit" tabindex="10" value="<%text(_DELETE_CONFIRM_BTN)%>" />
+</p>
+</form>
+<%pagefoot%>
+]]></part>
+<part name="overview"><![CDATA[
+<%pagehead%>
+<%headmessage%>
+<h2><%text(_OVERVIEW_YRBLOGS)%></h2>
+<%yrbloglist(admin/default)%>
+<h2><%text(_OVERVIEW_YRSETTINGS)%></h2>
+<ul>
+<li><a href="<%adminurl%>index.php?action=editmembersettings"><%text(_OVERVIEW_EDITSETTINGS)%></a></li>
+<li><a href="<%adminurl%>index.php?action=browseownitems"><%text(_OVERVIEW_BROWSEITEMS)%></a></li>
+<li><a href="<%adminurl%>index.php?action=browseowncomments"><%text(_OVERVIEW_BROWSECOMM)%></a></li>
+</ul>
+<%if(superadmin)%>
+<h2><%text(_OVERVIEW_MANAGEMENT)%></h2>
+<ul>
+<li><a href="<%adminurl%>index.php?action=manage"><%text(_OVERVIEW_MANAGE)%></a></li>
+</ul>
+<%pagefoot%>
+]]></part>
+<part name="pagefoot"><![CDATA[
+       <%if(loggedin)%>
+               <%ifnot(adminaction,showlogin)%>
+                       <h2><%text(_LOGOUT)%></h2>
+                       <ul>
+                       <li><a href="<%adminurl%>index.php?action=overview"><%text(_BACKHOME)%></a></li>
+                       <li><a href="<%adminurl%>index.php?action=logout"><%text(_LOGOUT)%></a></li>
+                       </ul>
+               <%endif%>
+       <%endif%>
+       
+       <p class="foot">
+       <a href="<%text(_ADMINPAGEFOOT_OFFICIALURL)%>">Nucleus CMS</a> &copy; 2002- <%date(%Y)%> <%text(_ADMINPAGEFOOT_COPYRIGHT)%>
+        - <a href="<%text(_ADMINPAGEFOOT_DONATEURL)%>"><%text(_ADMINPAGEFOOT_DONATE)%></a>
+       </p>
+       </div>
+       
+       <!-- content -->
+       <div id="quickmenu">
+       
+       <%if(loggedin)%>
+               <%ifnot(adminaction,showlogin)%>
+                       <ul>
+                       <li><a href="<%adminurl%>index.php?action=overview"><%text(_QMENU_HOME)%></a></li>
+                       </ul>
+                       
+                       <h2><%text(_QMENU_ADD)%></h2>
+                       <form method="get" action="<%adminurl%>index.php">
+                       <div>
+                       <input type="hidden" name="action" value="createitem" />
+                       <%qmenuaddselect(admin/default)%>
+                       </div>
+                       </form>
+                       
+                       <h2><%member(yourrealname)%></h2>
+                       <ul>
+                       <li><a href="<%adminurl%>index.php?action=editmembersettings"><%text(_QMENU_USER_SETTINGS)%></a></li>
+                       <li><a href="<%adminurl%>index.php?action=browseownitems"><%text(_QMENU_USER_ITEMS)%></a></li>
+                       <li><a href="<%adminurl%>index.php?action=browseowncomments"><%text(_QMENU_USER_COMMENTS)%></a></li>
+                       </ul>
+                       
+                       <%if(superadmin)%>
+                               <h2><%text(_QMENU_MANAGE)%></h2>
+                               <ul>
+                               <li><a href="<%adminurl%>index.php?action=actionlog"><%text(_QMENU_MANAGE_LOG)%></a></li>
+                               <li><a href="<%adminurl%>index.php?action=settingsedit"><%text(_QMENU_MANAGE_SETTINGS)%></a></li>
+                               <li><a href="<%adminurl%>index.php?action=systemoverview"><%text(_QMENU_MANAGE_SYSTEM)%></a></li>
+                               <li><a href="<%adminurl%>index.php?action=usermanagement"><%text(_QMENU_MANAGE_MEMBERS)%></a></li>
+                               <li><a href="<%adminurl%>index.php?action=createnewlog"><%text(_QMENU_MANAGE_NEWBLOG)%></a></li>
+                               <li><a href="<%adminurl%>index.php?action=backupoverview"><%text(_QMENU_MANAGE_BACKUPS)%></a></li>
+                               <li><a href="<%adminurl%>index.php?action=pluginlist"><%text(_QMENU_MANAGE_PLUGINS)%></a></li>
+                               </ul>
+                               <h2><%text(_QMENU_LAYOUT)%></h2>
+                               <ul>
+                               <li><a href="<%adminurl%>index.php?action=skinoverview"><%text(_QMENU_LAYOUT_SKINS)%></a></li>
+                               <li><a href="<%adminurl%>index.php?action=templateoverview"><%text(_QMENU_LAYOUT_TEMPL)%></a></li>
+                               <li><a href="<%adminurl%>index.php?action=skinieoverview"><%text(_QMENU_LAYOUT_IEXPORT)%></a></li>
+                               </ul>
+                               <h2><%text(_SKINABLEADMIN_QMENU_LAYOUT)%></h2>
+                               <ul>
+                               <li><a href="<%adminurl%>index.php?action=adminskinoverview"><%text(_QMENU_LAYOUT_SKINS)%></a></li>
+                               <li><a href="<%adminurl%>index.php?action=admintemplateoverview"><%text(_QMENU_LAYOUT_TEMPL)%></a></li>
+                               <li><a href="<%adminurl%>index.php?action=adminskinieoverview"><%text(_QMENU_LAYOUT_IEXPORT)%></a></li>
+                               </ul>
+                       <%endif%>
+                       
+                       <%quickmenu(admin/default)%>
+               <%endif%>
+               
+       <%elseif(adminaction,activate)%>
+               <h2><%text(_QMENU_ACTIVATE)%></h2>
+               <%text(_QMENU_ACTIVATE_TEXT)%>
+       
+       <%elseif(adminaction,activatesetpwd)%>
+               <h2><%text(_QMENU_ACTIVATE)%></h2><%text(_QMENU_ACTIVATE_TEXT)%>
+       
+       <%else%>
+               <h2><%text(_QMENU_INTRO)%></h2><%text(_QMENU_INTRO_TEXT)%>
+       
+       <%endif%>
+       
+       </div>
+       <!-- content / quickmenu container -->
+       <div class="clear"></div>
+       <!-- new -->
+       </div>
+       <!-- adminwrapper -->
+       <!-- new -->
+       </div>
+       <!-- new -->
+       <p style="text-align:right;"><%benchmark%></p>
+       </body>
+       </html>
+]]></part>
+<part name="pagehead"><![CDATA[
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<%locale%>" lang="<%locale%>">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=<%charset%>" />
+<title><%sitevar(name)%> - Admin</title>
+<link rel="stylesheet" title="Nucleus Admin Default" type="text/css" href="<%skinfile(/styles/admin_contemporary.css)%>" />
+<link rel="stylesheet" title="Nucleus Admin Default" type="text/css" href="<%skinfile(/styles/addedit.css)%>" />
+
+<script type="text/javascript" src="<%skinfile(/javascripts/edit.js)%>"></script>
+<script type="text/javascript" src="<%skinfile(/javascripts/admin.js)%>"></script>
+<script type="text/javascript" src="<%skinfile(/javascripts/compatibility.js)%>"></script>
+
+<meta http-equiv='Pragma' content='no-cache' />
+<meta http-equiv='Cache-Control' content='no-cache, must-revalidate' />
+<meta http-equiv='Expires' content='-1' />
+<%extrahead%>
+</head>
+<body>
+<div id="adminwrapper">
+<div class="header">
+<h1><%sitevar(name)%></h1>
+</div>
+<div id="container">
+<div id="content">
+<div class="loginname">
+<%if(loggedin)%>
+<%text(_LOGGEDINAS)%> <%member(yourrealname)%> - <a href="<%adminurl%>index.php?action=logout"><%text(_LOGOUT)%></a><br /><a href="<%adminurl%>index.php?action=overview"><%text(_ADMINHOME)%></a> - 
+<%else%>
+<a href="<%adminurl%>index.php?action=showlogin" title="Log in"><%text(_NOTLOGGEDIN)%></a><br />
+<%endif%>
+<a href="<%sitevar(url)%>"><%text(_YOURSITE)%></a><br />
+(
+<%if(superadmin)%>
+<a href="<%versioncheckurl%>" title="<%text(_ADMIN_SYSTEMOVERVIEW_VERSIONCHECK_TITLE)%>"><%version%><%codename%></a>
+<%else%>
+<%version%><%codename%>
+<%endif%>
+)
+</div>
+]]></part>
+<part name="plugindelete"><![CDATA[
+<%pagehead%>
+<h2><%text(_DELETE_CONFIRM)%></h2>
+
+<p><%text(_CONFIRMTXT_PLUGIN)%> <strong><%editpluginfo(name)%></strong>?</p>
+<form method="post" action="<%adminurl%>index.php">
+<p>
+<%ticket%>
+<input type="hidden" name="action" value="plugindeleteconfirm" />
+<input type="hidden" name="plugid" value="<%editpluginfo(id)%>" />
+<input type="submit" tabindex="10" value="<%text(_DELETE_CONFIRM_BTN)%>" />
+</p>
+</form>
+<%pagefoot%>
+]]></part>
+<part name="pluginhelp"><![CDATA[
+<p><a href="<%adminurl%>index.php?action=pluginlist">(<%text(_PLUGS_BACK)%>)</a></p>
+<h2><%text(_PLUGS_HELP_TITLE)%>: <%helpplugname%></h2>
+<%pluginhelp%>
+]]></part>
+<part name="pluginlist"><![CDATA[
+<%pagehead%>
+<p><a href="<%adminurl%>index.php?action=manage">(<%text(_BACKTOMANAGE)%>)</a></p>
+<h2><%text(_PLUGS_TITLE_MANAGE)%><%helplink(plugins)%></h2>
+<h3><%text(_PLUGS_TITLE_INSTALLED)%> &nbsp;&nbsp;<span style="font-size:smaller"><%helplink('getplugins')%><%text(_PLUGS_TITLE_GETPLUGINS)%></a></span></h3>
+<%pluginlistlist(admin/default)%>
+<h3><%text(_PLUGS_TITLE_UPDATE)%></h3>
+<p><%text(_PLUGS_TEXT_UPDATE)%></p>
+<form method="post" action="<%adminurl%>index.php">
+<p>
+<input type="hidden" name="action" value="pluginupdate" />
+<%ticket%>
+<input type="submit" value="<%text(_PLUGS_BTN_UPDATE)%>" tabindex="20" />
+</p>
+</form>
+<h3><%text(_PLUGS_TITLE_NEW)%></h3>
+
+<%if(existsnewplugin)%>
+<p><%text(_PLUGS_ADD_TEXT)%></p>
+<form method='post' action='index.php'>
+
+<p>
+<input type='hidden' name='action' value='pluginadd' />
+<%ticket%>
+<select name="filename" tabindex="30">
+<%newpluginlist%>
+</select>
+<input type='submit' tabindex="40" value='<%text(_PLUGS_BTN_INSTALL)%>' />
+</p>
+</form>
+<%else%>
+<p><%text(_PLUGS_NOCANDIDATES)%></p>
+<%endif%>
+<%pagefoot%>
+]]></part>
+<part name="pluginoptions"><![CDATA[
+<%pagehead%>
+<p><a href="<%adminurl%>index.php?action=pluginlist">(<%text(_PLUGS_BACK)%>)</a></p>
+<h2><%sprinttext(_PLUGIN_OPTIONS_TITLE,<|%geteditpluginfo(name)%|>)%></h2>
+<%headmessage%>
+
+<form action="<%adminurl%>index.php" method="post">
+
+<p>
+<input type="hidden" name="action" value="pluginoptionsupdate" />
+<input type="hidden" name="plugid" value="<%editpluginfo(id)%>" />
+<%ticket%>
+</p>
+
+<%editplugoptionslist(admin/default)%>
+
+</form>
+<%pagefoot%>
+]]></part>
+<part name="settingsedit"><![CDATA[
+<%pagehead%>
+<p><a href="<%adminurl%>index.php?action=manage">(<%text(_BACKTOMANAGE)%>)</a></p>
+<h2><%text(_SETTINGS_TITLE)%></h2>
+
+<form action="<%adminurl%>index.php" method="post">
+
+<p>
+<input type="hidden" name="action" value="settingsupdate" />
+<%ticket%>
+</p>
+
+<table frame="box" rules="all" summary="<%text(_SETTINGS_SUB_GENERAL)%>">
+<thead>
+<tr>
+<th colspan="2"><%text(_SETTINGS_SUB_GENERAL)%></th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td><%text(_SETTINGS_DEFBLOG)%> <%helplink(defaultblog)%></td>
+<td><%defblogselect(admin/default)%></td>
+</tr>
+<tr>
+<td><%text(_SETTINGS_BASESKIN)%> <%helplink(baseskin)%></td>
+<td><%defskinselect(,admin/default)%></td>
+</tr>
+<tr>
+<td><%text(_SETTINGS_ADMINMAIL)%></td>
+<td><input name="AdminEmail" tabindex="10010" size="40" value="<%configsettingsedit(AdminEmail)%>" /></td>
+</tr>
+<tr>
+<td><%text(_SETTINGS_SITENAME)%></td>
+<td><input name="SiteName" tabindex="10020" size="40" value="<%configsettingsedit(SiteName)%>" /></td>
+</tr>
+<tr>
+<td><%text(_SETTINGS_SITEURL)%></td>
+<td><input name="IndexURL" tabindex="10030" size="40" value="<%configsettingsedit(IndexURL)%>" /></td>
+</tr>
+<tr>
+<td><%text(_SETTINGS_ADMINURL)%></td>
+<td><input name="AdminURL" tabindex="10040" size="40" value="<%configsettingsedit(AdminURL)%>" /></td>
+</tr>
+<tr>
+<td><%text(_SETTINGS_PLUGINURL)%> <%helplink(pluginurl)%></td>
+<td><input name="PluginURL" tabindex="10045" size="40" value="<%configsettingsedit(PluginURL)%>" /></td>
+</tr>
+<tr>
+<td><%text(_SETTINGS_SKINSURL)%> <%helplink(skinsurl)%></td>
+<td><input name="SkinsURL" tabindex="10046" size="40" value="<%configsettingsedit(SkinsURL)%>" /></td>
+</tr>
+<tr>
+<td><%text(_SETTINGS_ACTIONSURL)%> <%helplink(actionurl)%></td>
+<td><input name="ActionURL" tabindex="10047" size="40" value="<%configsettingsedit(ActionURL)%>" /></td>
+</tr>
+<tr>
+<td><%text(_SETTINGS_LOCALE)%> <%helplink(locale)%></td>
+<td><select name="Locale" tabindex="10050"><%localeselectoptions%></select></td>
+</tr>
+<tr>
+<td><%text(_SETTINGS_DISABLESITE)%> <%helplink(disablesite)%></td>
+<td>
+<%configsettingsyesno(DisableSite, 10060)%><br />
+<%text(_SETTINGS_DISABLESITEURL)%> <input name="DisableSiteURL" tabindex="10070" size="40" value="<%configsettingsedit(DisableSiteURL)%>" />
+</td>
+</tr>
+<tr>
+<td><%text(_SETTINGS_DIRS)%></td>
+<td><%outputspecialdirs(nucleusdir)%><i><%text(_SETTINGS_SEECONFIGPHP)%></i></td>
+</tr>
+<tr>
+<td><%text(_SETTINGS_DBLOGIN)%></td>
+<td><i><%text(_SETTINGS_SEECONFIGPHP)%></i></td>
+</tr>
+<tr>
+<td><%text(_SETTINGS_JSTOOLBAR)%></td>
+<td>
+<select name="DisableJsTools" tabindex="10075">
+<%jstoolbaroptions%>
+</select>
+</td>
+</tr>
+<tr>
+<td><%text(_SETTINGS_URLMODE)%> <%helplink(urlmode)%></td>
+<td><%configsettingsedit(URLMode)%> <%text(_SETTINGS_URLMODE_HELP)%></td>
+</tr>
+<tr>
+<td><%text(_SETTINGS_DEBUGVARS)%> <%helplink(debugvars)%></td>
+<td><%configsettingsyesno(DebugVars, 10078)%></td>
+</tr>
+<tr>
+<td><%text(_SETTINGS_DEFAULTLISTSIZE)%> <%helplink(defaultlistsize)%></td>
+<td><input name="DefaultListSize" tabindex="10079" size="40" value="<%configsettingsedit(DefaultListSize)%>" /></td>
+</tr>
+<tr>
+<td><%text(_SETTINGS_ADMINSKIN)%></td>
+<td><%defadminskinselect(admin/default%></td>
+</tr>
+<tr>
+<td><%text(_SETTINGS_BKMKLTSKIN)%></td>
+<td><%defbookmarkletselect(admin/default%></td>
+</tr>
+</tbody>
+</table>
+
+<table frame="box" rules="all" summary="<%text(_SETTINGS_MEDIA)%>">
+<thead>
+<tr>
+<th colspan="2"><%text(_SETTINGS_MEDIA)%> <%helplink(media)%></th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td><%text(_SETTINGS_MEDIADIR)%></td>
+<td>
+<%outputspecialdirs(mediadir)%>
+<i><%text(_SETTINGS_SEECONFIGPHP)%></i><%mediadirwarning%>
+</td>
+</tr>
+<tr>
+<td><%text(_SETTINGS_MEDIAURL)%></td>
+<td><input name="MediaURL" tabindex="10090" size="40" value="<%configsettingsedit(MediaURL)%>" /></td>
+</tr>
+<tr>
+<td><%text(_SETTINGS_ALLOWUPLOAD)%></td>
+<td><%configsettingsyesno(AllowUpload, 10095)%></td>
+</tr>
+<tr>
+<td><%text(_SETTINGS_ALLOWUPLOADTYPES)%></td>
+<td><input name="AllowedTypes" tabindex="10100" size="40" value="<%configsettingsedit(AllowedTypes)%>" />
+</tr>
+<tr>
+<td><%text(_SETTINGS_MAXUPLOADSIZE)%></td>
+<td><input name="MaxUploadSize" tabindex="10105" size="40" value="<%configsettingsedit(MaxUploadSize)%>" /></td>
+</tr>
+<tr>
+<td><%text(_SETTINGS_MEDIAPREFIX)%></td>
+<td><%configsettingsyesno(MediaPrefix, 10110)%></td>
+</tr>
+</tbody>
+</table>
+
+<table frame="box" rules="all" summary="<%text(_SETTINGS_MEMBERS)%>">
+<thead>
+<tr>
+<th colspan="2"><%text(_SETTINGS_MEMBERS)%></th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td><%text(_SETTINGS_CHANGELOGIN)%></td>
+<td><%configsettingsyesno(AllowLoginEdit, 10120)%></td>
+</tr>
+<tr>
+<td><%text(_SETTINGS_ALLOWCREATE)%> <%helplink(allowaccountcreation)%>
+</td>
+<td><%configsettingsyesno(AllowMemberCreate, 10130)%></td>
+</tr>
+<tr>
+<td><%text(_SETTINGS_NEWLOGIN)%> <%helplink(allownewmemberlogin)%><br /><%text(_SETTINGS_NEWLOGIN2)%></td>
+<td><%configsettingsyesno(NewMemberCanLogon, 10140)%></td>
+</tr>
+<tr>
+<td><%text(_SETTINGS_MEMBERMSGS)%> <%helplink(messageservice)%></td>
+<td><%configsettingsyesno(AllowMemberMail, 10150)%></td>
+</tr>
+<tr>
+<td><%text(_SETTINGS_NONMEMBERMSGS)%> <%helplink(messageservice)%></td>
+<td><%configsettingsyesno(NonmemberMail, 10155%></td>
+</tr>
+<tr>
+<td><%text(_SETTINGS_PROTECTMEMNAMES)%> <%helplink(protectmemnames)%></td>
+<td><%configsettingsyesno(ProtectMemNames, 10156)%></td>
+</tr>
+</tbody>
+</table>
+
+<table frame="box" rules="all" summary="<%text(_SETTINGS_COOKIES_TITLE)%>">
+<thead>
+<tr>
+<th colspan="2"><%text(_SETTINGS_COOKIES_TITLE)%> <%helplink(cookies)%></th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td><%text(_SETTINGS_COOKIEPREFIX)%></td>
+<td><input name="CookiePrefix" tabindex="10159" size="40" value="<%configsettingsedit(CookiePrefix)%>" /></td>
+</tr>
+<tr>
+<td><%text(_SETTINGS_COOKIEDOMAIN)%></td>
+<td><input name="CookieDomain" tabindex="10160" size="40" value="<%configsettingsedit(CookieDomain)%>" /></td>
+</tr>
+<tr>
+<td><%text(_SETTINGS_COOKIEPATH)%></td>
+<td><input name="CookiePath" tabindex="10170" size="40" value="<%configsettingsedit(CookiePath)%>" /></td>
+</tr>
+<tr>
+<td><%text(_SETTINGS_COOKIESECURE)%></td>
+<td><%configsettingsyesno(CookieSecure, 10180)%></td>
+</tr>
+<tr>
+<td><%text(_SETTINGS_COOKIELIFE)%></td>
+<td><%configsettingsedit(SessionCookie)%></td>
+</tr>
+<tr>
+<td><%text(_SETTINGS_LASTVISIT)%></td>
+<td><%configsettingsyesno(LastVisit, 10200)%></td>
+</tr>
+</tbody>
+</table>
+
+<table frame="box" rules="all" summary="<%text(_SETTINGS_UPDATE)%>">
+<thead>
+<tr>
+<th colspan="2"><%text(_SETTINGS_UPDATE)%></th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td><%text(_SETTINGS_UPDATE)%></td>
+<td><input type="submit" tabindex="10210" value="<%text(_SETTINGS_UPDATE_BTN)%>" onclick="return checkSubmit();" /></td>
+</tr>
+</tbody>
+</table>
+
+</form>
+
+<h2><%text(_PLUGINS_EXTRA)%></h2>
+
+<%pluginextras%>
+<%pagefoot%>
+]]></part>
+<part name="showlogin"><![CDATA[
+<%pagehead%>
+<h2><%text(_LOGIN)%></h2>
+<%headmessage%>
+<form action="<%adminurl%>index.php" method="post">
+<p>
+<%text(_LOGIN_NAME)%> <br /><input name="login"  tabindex="10" /><br />
+<%text(_LOGIN_PASSWORD)%> <br /><input name="password"  tabindex="20" type="password" /><br />
+<input name="action" value="login" type="hidden" /><br />
+<input type="submit" value="<%text(_LOGIN)%>" tabindex="30" /><br />
+<small>
+<input type="checkbox" value="1" name="shared" tabindex="40" id="shared" /><label for="shared"><%text(_LOGIN_SHARED)%></label><br />
+<a href="forgotpassword.php"><%text(_LOGIN_FORGOT)%></a>
+</small>
+<%passrequestvars%>
+</p>
+</form>
+<%pagefoot%>
+]]></part>
+<part name="skindelete"><![CDATA[
+<%pagehead%>
+<h2><%text(_DELETE_CONFIRM)%></h2>
+<p><%text(_CONFIRMTXT_SKIN)%><b><%editskintype(name)%></b> (<%editskintype(desc)%>)</p>
+<form method="post" action="<%adminurl%>index.php">
+<p>
+<input type="hidden" name="action" value="skindeleteconfirm" />
+<%ticket%>
+<input type="hidden" name="skinid" value="<%editskintype(id)%>" />
+<input type="submit" tabindex="10" value="<%text(_DELETE_CONFIRM_BTN)%>" />
+</p>
+</form>
+<%pagefoot%>
+]]></part>
+<part name="skinedit"><![CDATA[
+       <%pagehead%>
+       <p><a href="<%adminurl%>index.php?action=skinoverview">(<%text(_SKIN_BACK)%>)</a></p>
+       
+       <h2><%text(_SKIN_EDITONE_TITLE)%> '<%editskin(name)%>'</h2>
+       
+       <h3><%text(_SKIN_PARTS_TITLE)%></h3>
+       <%text(_SKIN_PARTS_MSG)%>
+       <%normalskinlist(admin/default)%>
+       
+       <h3><%text(_SKIN_PARTS_SPECIAL)%></h3>
+       <form method="get" action="<%adminurl%>index.php">
+       <p>
+       <input type="hidden" name="action" value="skinedittype" />
+       <input type="hidden" name="skinid" value="<%editskin(id)%>" />
+       <input name="type" tabindex="89" size="20" maxlength="20" />
+       <input type="submit" tabindex="140" value="<%text(_SKIN_CREATE)%>" onclick="return checkSubmit();" />
+       </p>
+       </form>
+       <%specialskinlist(admin/default)%>
+       
+       <h3><%text(_SKIN_GENSETTINGS_TITLE)%></h3>
+       <form method="post" action="<%adminurl%>index.php">
+       <p>
+       <input type="hidden" name="action" value="skineditgeneral" />
+       <%ticket%>
+       <input type="hidden" name="skinid" value="<%editskin(id)%>" />
+       </p>
+       <table frame="box" rules="all" summary="<%text(_SKIN_GENSETTINGS_TITLE)%>">
+       <tr>
+       <td><%text(_SKIN_NAME)%> <%helplink(shortnames)%></td>
+       <td><input name="name" tabindex="90" value="<%editskin(name)%>" maxlength="20" size="20" /></td>
+       </tr>
+       <tr>
+       <td><%text(_SKIN_DESC)%></td>
+       <td><input name="desc" tabindex="100" value="<%editskin(desc)%>" maxlength="200" size="50" /></td>
+       </tr>
+       <tr>
+       <td><%text(_SKIN_TYPE)%></td>
+       <td><input name="type" tabindex="110" value="<%editskin(type)%>" maxlength="40" size="20" /></td>
+       </tr>
+       <tr>
+       <td><%text(_SKIN_INCLUDE_MODE)%> <%helplink(includemode)%></td>
+       <td><%editskin(mode)%></td>
+       </tr>
+       <tr>
+       <td><%text(_SKIN_INCLUDE_PREFIX)%> <%helplink(includeprefix)%></td>
+       <td><input name="inc_prefix" tabindex="130" value="<%editskin(prefix)%>" maxlength="40" size="20" /></td>
+       </tr>
+       <tr>
+       <td><%text(_SKIN_CHANGE)%></td>
+       <td><input type="submit" tabindex="140" value="<%text(_SKIN_CHANGE_BTN)%>" onclick="return checkSubmit();" /></td>
+       </tr>
+       </table>
+       </form>
+       <%pagefoot%>
+]]></part>
+<part name="skinedittype"><![CDATA[
+       <%pagehead%>
+       <p>(<a href="<%adminurl%>index.php?action=skinoverview"><%text(_SKIN_GOBACK)%></a>)</p>
+       
+       <h2><%text(_SKIN_EDITPART_TITLE)%> '<%editskintype(name)%>': <%editskintype(skintype)%></h2>
+       <%headmessage%>
+       
+       <form method="post" action="<%adminurl%>index.php">
+       <p>
+       <input type="hidden" name="action" value="skinupdate" />
+       <%ticket%>
+       <input type="hidden" name="skinid" value="<%editskintype(id)%>" />
+       <input type="hidden" name="type" value="<%editskintype(skintyperaw)%>" />
+       <input type="submit" value="<%text(_SKIN_UPDATE_BTN)%>" onclick="return checkSubmit();" />
+       <input type="reset" value="<%text(_SKIN_RESET_BTN)%>" />
+       (skin type: <%editskintype(skintype)%>)<%skintypehelp%><br />
+       <textarea class="skinedit" tabindex="10" rows="20" cols="80" name="content"><%editskintype(content)%></textarea>
+       <br />
+       <input type="submit" tabindex="20" value="<%text(_SKIN_UPDATE_BTN)%>" onclick="return checkSubmit();" />
+       <input type="reset" value="<%text(_SKIN_RESET_BTN)%>" />
+       (skin type: <%editskintype(skintype)%>)
+       <br />
+       <br />
+       
+       <%text(_SKIN_ALLOWEDVARS)%>
+       <%allowedskinactions%><br /><br />
+       <%text(_SKINEDIT_ALLOWEDBLOGS)%>
+       <%skineditallowedlist(blog)%>
+       <%text(_SKINEDIT_ALLOWEDTEMPLATESS)%>
+       </p>
+       <%skineditallowedlist(template)%>
+       </form>
+       <%pagefoot%>
+]]></part>
+<part name="skiniedoimport"><![CDATA[
+<%pagehead%>
+<p><a href="<%adminurl%>index.php?action=manage">(<%text(_BACKTOMANAGE)%>)</a></p>
+<h2><%text(_SKINIE_DONE)%></h2>
+
+<ul>
+<li><strong><%text(_SKINIE_INFO_GENERAL)%></strong> <%importskininfo(info)%></li>
+<li><strong><%text(_SKINIE_INFO_IMPORTEDSKINS)%></strong> <%importskininfo(snames)%></li>
+<li><strong><%text(_SKINIE_INFO_IMPORTEDTEMPLS)%></strong> <%importskininfo(tnames)%></li>
+</ul><%pagefoot%>
+]]></part>
+<part name="skinieimport"><![CDATA[
+<%pagehead%>
+<p><a href="<%adminurl%>index.php?action=skinieoverview">(<%text(_BACK)%>)</a></p>
+<h2><%text(_SKINIE_CONFIRM_TITLE)%></h2>
+<ul>
+<li><strong><%text(_SKINIE_INFO_GENERAL)%></strong> <%importskininfo(info)%></li>
+<li><strong><%text(_SKINIE_INFO_SKINS)%></strong> <%importskininfo(snames)%></li>
+<li><strong><%text(_SKINIE_INFO_TEMPLATES)%></strong> <%importskininfo(tnames)%></li>
+<%if(nameclashes)%>
+<li><strong style="color: red;"><%text(_SKINIE_INFO_SKINCLASH)%></strong> <%importskininfo(sclashes)%></li>
+<li><strong style="color: red;"><%text(_SKINIE_INFO_TEMPLCLASH)%></strong> <%importskininfo(tclashes)%></li>
+<%endif%>
+</ul>
+
+<form method="post" action="<%adminurl%>index.php">
+<p>
+<input type="hidden" name="action" value="skiniedoimport" />
+<%ticket%>
+<input type="hidden" name="skinfile" value="<%importskininfo(skinfile)%>" />
+<input type="hidden" name="mode" value="<%importskininfo(mode)%>" />
+<input type="submit" value="<%text(_SKINIE_CONFIRM_IMPORT)%>" />
+<%if(nameclashes)%>
+<br />
+<input type="checkbox" name="overwrite" value="1" id="cb_overwrite" />
+<label for="cb_overwrite"><%text(_SKINIE_CONFIRM_OVERWRITE)%></label>
+<%endif%>
+</p>
+</form>
+<%pagefoot%>
+]]></part>
+<part name="skinieoverview"><![CDATA[
+       <%pagehead%>
+       <p><a href="<%adminurl%>index.php?action=manage">(<%text(_BACKTOMANAGE)%>)</a></p>
+       <h2><%text(_SKINIE_TITLE_IMPORT)%></h2>
+       <p>
+       <label for="skinie_import_local"><%text(_SKINIE_LOCAL)%></label>
+       </p>
+       <%if(skincandidates)%>
+       <form method="post" action="<%adminurl%>index.php">
+       <p>
+       <input type="hidden" name="action" value="skinieimport" />
+       <%ticket%>
+       <input type="hidden" name="mode" value="file" />
+       <select name="skinfile" id="skinie_import_local">
+       <%selectlocalskinfiles%>
+       </select>
+       <input type="submit" value="<%text(_SKINIE_BTN_IMPORT)%>" />
+       </p>
+       </form>
+       <%else%>
+       <p>
+       <%text(_SKINIE_NOCANDIDATES)%>
+       </p>
+       <%endif%>
+       <p><em><%text(_OR)%></em></p>
+       <form method="post" action="<%adminurl%>index.php">
+       <p>
+       <%ticket%>
+       <input type="hidden" name="action" value="skinieimport" />
+       <input type="hidden" name="mode" value="url" />
+       <label for="skinie_import_url"><%text(_SKINIE_FROMURL)%></label>
+       <input type="text" name="skinfile" id="skinie_import_url" size="60" value="http://" />
+       <input type="submit" value="<%text(_SKINIE_BTN_IMPORT)%>" />
+       </p>
+       </form>
+       
+       <h2><%text(_SKINIE_TITLE_EXPORT)%></h2>
+       <form method="post" action="<%adminurl%>index.php">
+       
+       <p><%text(_SKINIE_EXPORT_INTRO)%></p>
+       
+       <table frame="box" rules="all" summary="<%text(_SKINIE_EXPORT_SKINS)%>">
+       <thead>
+       <tr>
+       <th colspan="2"><%text(_SKINIE_EXPORT_SKINS)%></th>
+       </tr>
+       </thead>
+       <tbody>
+       <%skinielist(skin,admin/default)%>
+       </tbody>
+       </table>
+       
+       <table frame="box" rules="all" summary="<%text(_SKINIE_EXPORT_TEMPLATES)%>">
+       <thead>
+       <th colspan="2"><%text(_SKINIE_EXPORT_TEMPLATES)%></th>
+       </tr>
+       </thead>
+       <tbody>
+       <%skinielist(template,admin/default)%>
+       </tbody>
+       </table>
+       
+       <table frame="box" rules="all" summary="<%text(_SKINIE_EXPORT_SKINS)%>">
+       <thead>
+       <th colspan="2"><%text(_SKINIE_EXPORT_EXTRA)%></th>
+       </tr>
+       </thead>
+       <tbody>
+       <tr>
+       <td colspan="2"><textarea cols="40" rows="5" name="info"></textarea></td>
+       </tr>
+       </tbody>
+       </table>
+       
+       <p>
+       <input type="hidden" name="action" value="skinieexport" />
+       <%ticket%>
+       <input type="submit" value="<%text(_SKINIE_BTN_EXPORT)%>" />
+       </p>
+       
+       </form>
+       
+       <%pagefoot%>
+]]></part>
+<part name="skinoverview"><![CDATA[
+       <%pagehead%>
+       <p><a href="<%adminurl%>index.php?action=manage">(<%text(_BACKTOMANAGE)%>)</a></p>
+       
+       <h2><%text(_SKIN_EDIT_TITLE)%></h2>
+       
+       <h3><%text(_SKIN_AVAILABLE_TITLE)%></h3>
+       <%skinoverview(admin/default)%>
+       
+       <h3><%text(_SKIN_NEW_TITLE)%></h3>
+       <form method="post" action="<%adminurl%>index.php">
+       <p>
+       <input name="action" value="skinnew" type="hidden" />
+       <%ticket%>
+       </p>
+       
+       <table frame="box" rules="all" sumamry="<%text(_SKIN_NEW_TITLE)%>">
+       <tr>
+       <td><%text(_SKIN_NAME)%> <%helplink(shortnames)%></td>
+       <td><input name="name" tabindex="10010" maxlength="20" size="20" /></td>
+       </tr>
+       <tr>
+       <td><%text(_SKIN_DESC)%></td>
+       <td><input name="desc" tabindex="10020" maxlength="200" size="50" /></td>
+       </tr>
+       <tr>
+       <td><%text(_SKIN_CREATE)%></td>
+       <td><input type="submit" tabindex="10030" value="<%text(_SKIN_CREATE_BTN)%>" onclick="return checkSubmit();" /></td>
+       </tr>
+       </table>
+       </form>
+       <%pagefoot%>
+]]></part>
+<part name="skinremovetype"><![CDATA[
+<%pagehead%>
+<h2><%text(_DELETE_CONFIRM)%></h2>
+<p>
+<%text(_CONFIRMTXT_SKIN_PARTS_SPECIAL)%><br />
+<b><%editskintype(skintype)%> (<%editskintype(name)%>)</b> (<%editskintype(desc)%>)
+</p>
+<form method="post" action="<%adminurl%>index.php">
+<p>
+<input type="hidden" name="action" value="skinremovetypeconfirm" />
+<%ticket%>
+<input type="hidden" name="skinid" value="<%editskintype(id)%>" />
+<input type="hidden" name="type" value="<%editskintype(skintype)%>" />
+<input type="submit" tabindex="10" value="<%text(_DELETE_CONFIRM_BTN)%>" />
+</p>
+</form>
+<%pagefoot%>
+]]></part>
+<part name="systemoverview"><![CDATA[
+<%pagehead%>
+<h2><%text(_ADMIN_SYSTEMOVERVIEW_HEADING)%></h2>
+<%if(superadmin)%>
+<h3><%text(_ADMIN_SYSTEMOVERVIEW_PHPANDMYSQL)%></h3>
+
+<table frame="box" rules="all" summary="<%text(_ADMIN_SYSTEMOVERVIEW_PHPANDMYSQL)%>">
+<thead>
+<tr>
+<th colspan="2"><%text(_ADMIN_SYSTEMOVERVIEW_VERSIONS)%></th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td width="50%"><%text(_ADMIN_SYSTEMOVERVIEW_PHPVERSION)%></td>
+<td><%systemsettings(phpversion)%></td>
+</tr>
+<tr>
+<td><%text(_ADMIN_SYSTEMOVERVIEW_MYSQLVERSION)%></td>
+<td><%systemsettings(sqlserverinfo)%> (<%systemsettings(sqlclientinfo)%>)</td>
+</tr>
+</tbody>
+</table>
+
+<table frame="box" rules="all" summary="Important PHP settings">
+<thead>
+<tr>
+<th colspan="2"><%text(_ADMIN_SYSTEMOVERVIEW_SETTINGS)%></th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td width="50%">magic_quotes_gpc</td>
+<td><%systemsettings(magicquotesgpc)%></td>
+</tr>
+<tr>
+<td width="50%">magic_quotes_runtime</td>
+<td><%systemsettings(magicquotesruntime)%></td>
+</tr>
+<tr>
+<td width="50%">register_globals</td>
+<td><%systemsettings(registerglobals)%></td>
+</tr>
+</tbody>
+</table>
+
+<table summary="Information about GD library">
+<thead>
+<tr>
+<th colspan="2"><%text(_ADMIN_SYSTEMOVERVIEW_GDLIBRALY)%></th>
+</tr>
+</thead>
+<tbody>
+<%systemsettings(gdinfo)%>
+</tbody>
+</table>
+
+<table frame="box" rules="all" summary="special modules are loaded">
+<thead>
+<tr>
+<th colspan="2"><%text(_ADMIN_SYSTEMOVERVIEW_MODULES)%></th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td width="50%">mod_rewrite</td>
+<td><%systemsettings(modrewrite)%></td>
+</tr>
+</tbody>
+</table>
+
+<h3><%text(_ADMIN_SYSTEMOVERVIEW_NUCLEUSSYSTEM)%></h3>
+<table frame="box" rules="all" summary="<%text(_ADMIN_SYSTEMOVERVIEW_NUCLEUSSYSTEM)%>">
+<thead>
+<tr>
+<th colspan="2">Nucleus CMS</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td width="50%"><%text(_ADMIN_SYSTEMOVERVIEW_NUCLEUSVERSION)%></td>
+<td><%systemsettings(nucleusversion)%></td>
+</tr>
+<tr>
+<td width="50%"><%text(_ADMIN_SYSTEMOVERVIEW_NUCLEUSPATCHLEVEL)%></td>
+<td><%systemsettings(nucleuspatchlevel)%></td>
+</tr>
+<tr>
+<td colspan="2"><%newestcompare%></td>
+</tr>
+</tbody>
+</table>
+
+<table frame="box" rules="all" summary="Important settings of the installation">
+<thead>
+<tr>
+<th colspan="2"><%text(_ADMIN_SYSTEMOVERVIEW_NUCLEUSSETTINGS)%></th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td width="50%">$CONF['Self']</td>
+<td><%systemsettings(confself)%></td>
+</tr>
+<tr>
+<td width="50%">$CONF['ItemURL']</td>
+<td><%systemsettings(confitemurl)%></td>
+</tr>
+<tr>
+<td width="50%">$CONF['alertOnHeadersSent']</td>
+<td><%systemsettings(alertonheaderssent)%></td>
+</tr>
+</tbody>
+</table>
+
+<h3><%text(_ADMIN_SYSTEMOVERVIEW_VERSIONCHECK)%></h3>
+<!-- Link to the online version test at the Nucleus CMS website -->
+<p>
+<%text(_ADMIN_SYSTEMOVERVIEW_VERSIONCHECK_TXT)%>
+<a href="<%systemsettings(versioncheckurl)%>" title="<%text(_ADMIN_SYSTEMOVERVIEW_VERSIONCHECK_TITLE)%>">
+Nucleus CMS <%systemsettings(nucleusversion)%> <%systemsettings(nucleuscodename)%></a>
+</p>
+
+<%else%>
+<p>
+<%text(_ADMIN_SYSTEMOVERVIEW_NOT_ADMIN)%>
+</p>
+<%endif%>
+<%pagefoot%>
+]]></part>
+<part name="teamdelete"><![CDATA[
+<%pagehead%>
+<h2><%text(_DELETE_CONFIRM)%></h2>
+<p>
+<%text(_CONFIRMTXT_TEAM1)%>
+<b><%editmember(displayname)%></b>
+<%text(_CONFIRMTXT_TEAM2)%>
+<b><%blogsetting(name)%></b>
+</p>
+<form method="post" action="<%adminurl%>index.php">
+<p>
+<input type="hidden" name="action" value="teamdeleteconfirm" />
+<%ticket%>
+<input type="hidden" name="memberid" value="<%editmember(id)%>" />
+<input type="hidden" name="blogid" value="<%requestblogid%>" />
+<input type="submit" tabindex="10" value="<%text(_DELETE_CONFIRM_BTN)%>" />
+</p>
+</form>
+<%pagefoot%>
+]]></part>
+<part name="templatedelete"><![CDATA[
+<%pagehead%>
+<h2><%text(_DELETE_CONFIRM)%></h2>
+<p><%text(_CONFIRMTXT_TEMPLATE)%><b><%edittemplateinfo(name)%></b> (<%edittemplateinfo(desc)%>)</p>
+<form method="post" action="<%adminurl%>index.php">
+<p>
+<input type="hidden" name="action" value="templatedeleteconfirm" />
+<%ticket%>
+<input type="hidden" name="templateid" value="<%edittemplateinfo(id)%>" />
+<input type="submit" tabindex="10" value="<%text(_DELETE_CONFIRM_BTN)%>" />
+</p>
+</form>
+<%pagefoot%>
+]]></part>
+<part name="templateedit"><![CDATA[
+       <%pagehead%>
+       <p><a href="<%adminurl%>index.php?action=templateoverview">(<%text(_TEMPLATE_BACK)%>)</a></p>
+       
+       <h2><%text(_TEMPLATE_EDIT_TITLE)%> '<%edittemplateinfo(name)%>'</h2>
+       <%headmessage%>
+       
+       <p><%text(_TEMPLATE_EDIT_MSG)%></p>
+       
+       <form method="post" action="<%adminurl%>index.php">
+       
+       <p>
+       <input type="hidden" name="action" value="templateupdate" />
+       <%ticket%>
+       <input type="hidden" name="templateid" value="<%edittemplateinfo(id)%>" />
+       </p>
+       
+       <table frame="box" rules="all" summary="<%text(_TEMPLATE_SETTINGS)%>">
+       <thead>
+       <tr>
+       <th colspan="2"><%text(_TEMPLATE_SETTINGS)%></th>
+       </tr>
+       </thead>
+       <tbody>
+       <tr>
+       <td><%text(_TEMPLATE_NAME)%> <%helplink(shortnames)%></td>
+       <td><input name="tname" tabindex="4" size="20" maxlength="20" value="<%edittemplateinfo(name)%>" /></td>
+       </tr>
+       <tr>
+       <td><%text(_TEMPLATE_DESC)%></td>
+       <td><input name="tdesc" tabindex="5" size="50" maxlength="200" value="<%edittemplateinfo(desc)%>" /></td>
+       </tr>
+       <tr>
+       <td><%text(_TEMPLATE_UPDATE)%></td>
+       <td>
+       <input type="submit" tabindex="6" value="<%text(_TEMPLATE_UPDATE_BTN)%>" onclick="return checkSubmit();" />
+       <input type="reset" tabindex="7" value="<%text(_TEMPLATE_RESET_BTN)%>" />
+       </td>
+       </tr>
+       </tbody>
+       </table>
+       
+       <table frame="box" rules="all" summary="<%text(_TEMPLATE_ITEMS)%>">
+       <thead>
+       <tr>
+       <th colspan="2"><%text(_TEMPLATE_ITEMS)%> <%helplink(templateitems)%></th>
+       </tr>
+       </thead>
+       <tbody>
+       <%edittemplateinfo(row,_TEMPLATE_ITEMHEADER,ITEM_HEADER,,8)%>
+       <%edittemplateinfo(row,_TEMPLATE_ITEMBODY,ITEM,,9,1)%>
+       <%edittemplateinfo(row,_TEMPLATE_ITEMFOOTER,ITEM_FOOTER,,10)%>
+       <%edittemplateinfo(row,_TEMPLATE_MORELINK,MORELINK,morelink, 20)%>
+       <%edittemplateinfo(row,_TEMPLATE_EDITLINK, EDITLINK, editlink, 25)%>
+       <%edittemplateinfo(row,_TEMPLATE_NEW, NEW, new, 30)%>
+       </tbody>
+       </table>
+       
+       <table frame="box" rules="all" summary="<%text(_TEMPLATE_COMMENTS_ANY)%>">
+       <thead>
+       <tr>
+       <th colspan="2"><%text(_TEMPLATE_COMMENTS_ANY)%> <%helplink(templatecomments)%></th>
+       </tr>
+       </thead>
+       <tbody>
+       <%edittemplateinfo(row,_TEMPLATE_CHEADER, COMMENTS_HEADER, commentheaders, 40)%>
+       <%edittemplateinfo(row,_TEMPLATE_CBODY, COMMENTS_BODY, commentbody, 50, 1)%>
+       <%edittemplateinfo(row,_TEMPLATE_CFOOTER, COMMENTS_FOOTER, commentheaders, 60)%>
+       <%edittemplateinfo(row,_TEMPLATE_CONE, COMMENTS_ONE, commentwords, 70)%>
+       <%edittemplateinfo(row,_TEMPLATE_CMANY, COMMENTS_MANY, commentwords, 80)%>
+       <%edittemplateinfo(row,_TEMPLATE_CMORE, COMMENTS_CONTINUED, commentcontinued, 90)%>
+       <%edittemplateinfo(row,_TEMPLATE_CMEXTRA, COMMENTS_AUTH, memberextra, 100)%>
+       </tbody>
+       </table>
+       
+       <table frame="box" rules="all" summary="<%text(_TEMPLATE_COMMENTS_NONE)%>">
+       <thead>
+       <tr>
+       <th colspan="2"><%text(_TEMPLATE_COMMENTS_NONE)%> <%helplink(templatecomments)%></th>
+       </tr>
+       </thead>
+       <tbody>
+       <%edittemplateinfo(row,_TEMPLATE_CNONE, COMMENTS_NONE, , 110)%>
+       </tbody>
+       </table>
+       
+       <table frame="box" rules="all" summary="<%text(_TEMPLATE_COMMENTS_TOOMUCH)%>">
+       <thead>
+       <tr>
+       <th colspan="2"><%text(_TEMPLATE_COMMENTS_TOOMUCH)%> <%helplink(templatecomments)%></th>
+       </tr>
+       </thead>
+       <tbody>
+       <%edittemplateinfo(row,_TEMPLATE_CTOOMUCH, COMMENTS_TOOMUCH, , 120)%>
+       </tbody>
+       </table>
+       
+       <table frame="box" rules="all" summary="<%text(_TEMPLATE_ARCHIVELIST)%>">
+       <thead>
+       <tr>
+       <th colspan="2"><%text(_TEMPLATE_ARCHIVELIST)%> <%helplink(templatearchivelists)%></th>
+       </tr>
+       </thead>
+       <tbody>
+       <%edittemplateinfo(row,_TEMPLATE_AHEADER, ARCHIVELIST_HEADER, , 130)%>
+       <%edittemplateinfo(row,_TEMPLATE_AITEM, ARCHIVELIST_LISTITEM, , 140)%>
+       <%edittemplateinfo(row,_TEMPLATE_AFOOTER, ARCHIVELIST_FOOTER, , 150)%>
+       </tbody>
+       </table>
+       
+       <table frame="box" rules="all" summary="<%text(_TEMPLATE_BLOGLIST)%>">
+       <thead>
+       <tr>
+       <th colspan="2"><%text(_TEMPLATE_BLOGLIST)%> <%helplink(templatebloglists)%></th>
+       </tr>
+       </thead>
+       <tbody>
+       <%edittemplateinfo(row,_TEMPLATE_BLOGHEADER, BLOGLIST_HEADER, , 160)%>
+       <%edittemplateinfo(row,_TEMPLATE_BLOGITEM, BLOGLIST_LISTITEM, , 170)%>
+       <%edittemplateinfo(row,_TEMPLATE_BLOGFOOTER, BLOGLIST_FOOTER, , 180)%>
+       </tbody>
+       </table>
+       
+       <table frame="box" rules="all" summary="<%text(_TEMPLATE_CATEGORYLIST)%>">
+       <thead>
+       <tr>
+       <th colspan="2"><%text(_TEMPLATE_CATEGORYLIST)%> <%helplink(templatecategorylists)%></th>
+       </tr>
+       </thead>
+       <tbody>
+       <%edittemplateinfo(row,_TEMPLATE_CATHEADER, CATLIST_HEADER, , 190)%>
+       <%edittemplateinfo(row,_TEMPLATE_CATITEM, CATLIST_LISTITEM, , 200)%>
+       <%edittemplateinfo(row,_TEMPLATE_CATFOOTER, CATLIST_FOOTER, , 210)%>
+       </tbody>
+       </table>
+       
+       <table frame="box" rules="all" summary="<%text(_TEMPLATE_DATETIME)%>">
+       <thead>
+       <tr>
+       <th colspan="2"><%text(_TEMPLATE_DATETIME)%></th>
+       </tr>
+       </thead>
+       <tbody>
+       <%edittemplateinfo(row,_TEMPLATE_DHEADER, DATE_HEADER, dateheads, 220)%>
+       <%edittemplateinfo(row,_TEMPLATE_DFOOTER, DATE_FOOTER, dateheads, 230)%>
+       <%edittemplateinfo(row,_TEMPLATE_DFORMAT, FORMAT_DATE, datetime, 240)%>
+       <%edittemplateinfo(row,_TEMPLATE_TFORMAT, FORMAT_TIME, datetime, 250)%>
+       </tbody>
+       </table>
+       
+       <table frame="box" rules="all" summary="<%text(_TEMPLATE_IMAGE)%>">
+       <thead>
+       <tr>
+       <th colspan="2"><%text(_TEMPLATE_IMAGE)%> <%helplink(templatepopups)%></th>
+       </tr>
+       </thead>
+       <tbody>
+       <%edittemplateinfo(row,_TEMPLATE_PCODE, POPUP_CODE, , 270)%>
+       <%edittemplateinfo(row,_TEMPLATE_ICODE, IMAGE_CODE, , 280)%>
+       <%edittemplateinfo(row,_TEMPLATE_MCODE, MEDIA_CODE, , 290)%>
+       </tbody>
+       </table>
+       
+       <table frame="box" rules="all" summary="<%text(_TEMPLATE_SEARCH)%>">
+       <thead>
+       <tr>
+       <th colspan="2"><%text(_TEMPLATE_SEARCH)%></th>
+       </tr>
+       </thead>
+       <tbody>
+       <%edittemplateinfo(row,_TEMPLATE_SHIGHLIGHT, SEARCH_HIGHLIGHT, highlight,300)%>
+       <%edittemplateinfo(row,_TEMPLATE_SNOTFOUND, SEARCH_NOTHINGFOUND, nothingfound,310)%>
+       </tbody>
+       </table>
+       
+       <table frame="box" rules="all" summary="<%text(_TEMPLATE_PLUGIN_FIELDS)%>">
+       <thead>
+       <tr>
+       <th colspan="2"><%text(_TEMPLATE_PLUGIN_FIELDS)%></th>
+       </tr>
+       </thead>
+       <tbody>
+       <%edittemplateinfo(extratemplate,admin/default)%>
+       </tbody>
+       </table>
+       
+       <table frame="box" rules="all" summary="<%text(_TEMPLATE_UPDATE)%>">
+       <thead>
+       <tr>
+       <th colspan="2"><%text(_TEMPLATE_UPDATE)%></th>
+       </tr>
+       </thead>
+       <tbody>
+       <tr>
+       <td><%text(_TEMPLATE_UPDATE)%></td>
+       <td>
+       <input type="submit" tabindex="800" value="<%text(_TEMPLATE_UPDATE_BTN)%>" onclick="return checkSubmit();" />
+       <input type="reset" tabindex="810" value="<%text(_TEMPLATE_RESET_BTN)%>" />
+       </td>
+       </tr>
+       </tbody>
+       </table>
+       
+       </form>
+       <%pagefoot%>
+]]></part>
+<part name="templateoverview"><![CDATA[
+       <%pagehead%>
+       <p><a href="<%adminurl%>index.php?action=manage">(<%text(_BACKTOMANAGE)%>)</a></p>
+       <h2><%text(_TEMPLATE_TITLE)%></h2>
+       
+       <h3><%text(_TEMPLATE_AVAILABLE_TITLE)%></h3>
+       <%templateoverview(admin/default)%>
+       
+       <h3><%text(_TEMPLATE_NEW_TITLE)%></h3>
+       <form method="post" action="<%adminurl%>index.php">
+       <p>
+       <input name="action" value="templatenew" type="hidden" />
+       <%ticket%>
+       </p>
+       <table frame="box" rules="all" summary="<%text(_TEMPLATE_NEW_TITLE)%>">
+       <tr>
+       <td><%text(_TEMPLATE_NAME)%> <%helplink(shortnames)%></td>
+       <td><input name="name" tabindex="10010" maxlength="20" size="20" /></td>
+       </tr>
+       <tr>
+       <td><%text(_TEMPLATE_DESC)%></td>
+       <td><input name="desc" tabindex="10020" maxlength="200" size="50" /></td>
+       </tr>
+       <tr>
+       <td><%text(_TEMPLATE_CREATE)%></td>
+       <td><input type="submit" tabindex="10030" value="<%text(_TEMPLATE_CREATE_BTN)%>" onclick="return checkSubmit();" /></td>
+       </tr>
+       </table>
+       </form>
+       <%pagefoot%>
+]]></part>
+<part name="usermanagement"><![CDATA[
+<%pagehead%>
+<p><a href="<%adminurl%>index.php?action=manage">(<%text(_BACKTOMANAGE)%>)</a></p>
+<h2><%text(_MEMBERS_TITLE)%></h2>
+<h3><%text(_MEMBERS_CURRENT)%></h3>
+<%editmemberlist(admin/default)%>
+<h3><%text(_MEMBERS_NEW)%></h3>
+
+<form method="post" action="<%adminurl%>index.php" name="memberedit">
+
+<p>
+<input type="hidden" name="action" value="memberadd" />
+<%ticket%>
+</p>
+
+<table frame="box" rules="all" summary="<%text(_MEMBERS_NEW)%>">
+<thead>
+<tr>
+<th colspan="2"><%text(_MEMBERS_NEW)%></th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>
+<%text(_MEMBERS_DISPLAY)%> <%helplink(shortnames)%>
+<br /><small><%text(_MEMBERS_DISPLAY_INFO)%></small>
+</td>
+<td><input tabindex="10010" name="name" size="32" maxlength="32" /></td>
+</tr>
+<tr>
+<td><%text(_MEMBERS_REALNAME)%></td>
+<td><input name="realname" tabindex="10020" size="40" maxlength="60" /></td>
+</tr>
+<tr>
+<td><%text(_MEMBERS_PWD)%></td>
+<td><input name="password" tabindex="10030" size="16" maxlength="40" type="password" /></td>
+</tr>
+<tr>
+<td><%text(_MEMBERS_REPPWD)%></td>
+<td><input name="repeatpassword" tabindex="10035" size="16" maxlength="40" type="password" /></td>
+</tr>
+<tr>
+<td><%text(_MEMBERS_EMAIL)%></td>
+<td><input name="email" tabindex="10040" size="40" maxlength="60" /></td>
+</tr>
+<tr>
+<td><%text(_MEMBERS_URL)%></td>
+<td><input name="url" tabindex="10050" size="40" maxlength="100" /></td>
+</tr>
+<tr>
+<td><%text(_MEMBERS_SUPERADMIN)%> <%helplink(superadmin)%></td>
+<td><%inputyesno(admin,1,10060)%> </td>
+</tr>
+<tr>
+<td><%text(_MEMBERS_CANLOGIN)%> <%helplink(canlogin)%></td>
+<td><%inputyesno(canlogin,1,10070)%></td>
+</tr>
+<tr>
+<td><%text(_MEMBERS_NOTES)%></td>
+<td><input name="notes" maxlength="100" size="40" tabindex="10080" /></td>
+</tr>
+<tr>
+<td><%text(_MEMBERS_NEW)%></td>
+<td><input type="submit" value="<%text(_MEMBERS_NEW_BTN)%>" tabindex="10090" onclick="return checkSubmit();" /></td>
+</tr>
+</tbody>
+</table>
+</form>
+<%pagefoot%>
+]]></part>
+<part name="createaccountinput"><![CDATA[
+       <%pagehead%>
+       <h2><%text(_CREATE_ACCOUNT0)%></h2>
+       <%headmessage%>
+       <form method="post" action="<%sitevar(url)%>createaccount.php">
+       <dl>
+       <dt><label for="name"><%text(_CREATE_ACCOUNT_LOGIN_NAME)%></label></dt>
+       <dd>
+       <input id="name" name="name" value="<%contents(name)%>" size="32" maxlength="32" />
+       <span style="\small"><%text(_CREATE_ACCOUNT_LOGIN_NAME_VALID)%></span>
+       </dd>
+       <dt><label for="realname"><%text(_CREATE_ACCOUNT_REAL_NAME)%></label></dt>
+       <dd><input id="realname" name="realname" value="<%contents(realname)%>" size="40" /></dd>
+       <dt><label for="email"><%text(_CREATE_ACCOUNT_EMAIL)%></label></dt>
+       <dd>
+       <input id="email"name="email" value="<%contents(email)%>" size="40" />
+       <span style="\small"><%text(_CREATE_ACCOUNT_EMAIL2)%></span>
+       </dd>
+       <dt><label for="url"><%text(_CREATE_ACCOUNT_URL)%></label></dt>
+       <dd><input id="url"name="url" value="<%contents(url)%>" size="60" /></dd>
+       </dl>
+       <%pluginextras(createaccount)%>
+       <%eventformextra(membermailform-notloggedin)%>
+       <p>
+       <input type="hidden" name="showform" value="1" />
+       <button type="submit" name="action" value="createaccount"><%text(_CREATE_ACCOUNT_SUBMIT)%></button>
+       </p>
+       </form>
+       <%pagefoot%>
+]]></part>
+<part name="createaccountsuccess"><![CDATA[
+       <%pagehead%>
+       <h2><%text(_CREATE_ACCOUNT)%></h2>
+       <%headmessage%>
+       <p><%text(_MSG_ACTIVATION_SENT)%></p>
+       <p><%text(_BACK)%> <a href="<%sitevar(IndexURL)%>" title="<%sitevar(SiteName)%>"><%sitevar(SiteName)%></a></p>
+       <%pagefoot%>
+]]></part>
+<part name="createaccountdisable"><![CDATA[
+       <%pagehead%>
+       <h2><%text(_CREATE_ACCOUNT0)%></h2>
+       <p><%text(_CREATE_ACCOUNT1)%></p>
+       <p><%text(_CREATE_ACCOUNT2)%></p>
+       <p><%text(_BACK)%> <a href="<%sitevar(IndexURL)%>" title="<%sitevar(SiteName)%>"><%sitevar(SiteName)%></a></p>
+       <%pagefoot%>
+]]></part>
+<part name="forgotpassword"><![CDATA[
+       <%pagehead%>
+       <h2><%text(_FORGOTPASSWORD_TITLE)%></h2>
+       <p><%text(_FORGOTPASSWORD_MSG)%></p>
+       <form method="post" action="<%actionurl%>">
+       <dl>
+       <dt><label for="nucleus_pf_username"><%text(_CREATE_ACCOUNT_LOGIN_NAME)%></label></dt>
+       <dd><input type="text" name="name" id="nucleus_pf_username" /></dd>
+       <dt><label for="nucleus_pf_email"><%text(_CREATE_ACCOUNT_EMAIL)%></label></dt>
+       <dd><input type="text" name="email" id="nucleus_pf_email" /></dd>
+       </dl>
+       <p>
+       <input type="hidden" name="action" value="forgotpassword" />
+       <input type="submit" value="<%text(_FORGOTPASSWORD_SUBMIT)%>" class="transparent" />
+       </p>
+       </form>
+       <p><%text(_FORGOTPASSWORD_CONTACT)%></p>
+       <%pagefoot%>
+]]></part>
+</skin>
+<template name="admin/default">
+<description><![CDATA[
+       ADMIN Area Default template
+]]></description>
+
+<part name="PLUGIN_QUICKMENU_HEAD"><![CDATA[
+       <h2><%text(_QMENU_PLUGINS)%></h2>
+       <ul>
+]]></part>
+<part name="PLUGIN_QUICKMENU_BODY"><![CDATA[
+       <li><a href="<%plugadminurl%>" title="<%plugadmintooltip%>"><%plugadmintitle%></a></li>
+]]></part>
+<part name="PLUGIN_QUICKMENU_FOOT"><![CDATA[
+       </ul>
+]]></part>
+
+<part name="SHOWLIST_LISTPLUG_TABLE_ACTNLIST_HEAD"><![CDATA[
+       <th><%coltime%></th>
+       <th><%colmesg%></th>
+]]></part>
+<part name="SHOWLIST_LISTPLUG_TABLE_ACTNLIST_BODY"><![CDATA[
+       <td><%timestamp%></td>
+       <td><%message%></td>
+]]></part>
+
+<part name="SHOWLIST_LISTPLUG_TABLE_IBANLIST_HEAD"><![CDATA[
+       <th><%iprange%></th>
+       <th><%reason%></th>
+       <th><%colact%></th>
+]]></part>
+<part name="SHOWLIST_LISTPLUG_TABLE_IBANLIST_BODY"><![CDATA[
+       <td><%iprange%></td>
+       <td><%reason%></td>
+       <td><a href="<%adminurl%>index.php?action=banlistdelete&amp;blogid=<%blogid%>&amp;iprange=<%iprange%>"><%delbtn%></a></td>
+]]></part>
+
+<part name="SHOWLIST_LISTPLUG_TABLE_SKINLIST_HEAD"><![CDATA[
+       <th><%colname%></th>
+       <th><%coldesc%></th>
+       <th colspan="3"><%colact%></th>
+]]></part>
+<part name="SHOWLIST_LISTPLUG_TABLE_SKINLIST_BODY"><![CDATA[
+       <td><%skinname%><br /><br />
+       <%skintypelabel%> <%skintype%><br />
+       <%incmodelabel%> <%incmode%><br />
+       <%incpreflabel%> <%incpref%><br />
+       <%skinthumb%>
+       <%readme%></td>
+       <td class="availableSkinTypes"><%skindesc%><%skinparts%></td>
+       <td style="white-space:nowrap">
+       <a href="<%editurl%>" tabindex="<%tabindex%>">
+       <%editbtn%>
+       </a>
+       </td>
+       <td style="white-space:nowrap">
+       <a href="<%cloneurl%>" tabindex="<%tabindex%>">
+       <%clonebtn%>
+       </a>
+       </td>
+       <td style="white-space:nowrap">
+       <a href="<%deleteurl%>" tabindex="<%tabindex%>">
+       <%delbtn%>
+       </a>
+       </td>
+]]></part>
+
+<part name="SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM"><![CDATA[
+       <td>
+       <a href="<%adminurl%>index.php?action=blogsettings&amp;blogid=<%blogid%>" title="<%ttsettingtext%>"><%settingtext%></a>
+       </td>
+       <td>
+       <a href="<%adminurl%>index.php?action=banlist&amp;blogid=<%blogid%>" title="<%ttbanstext%>"><%banstext%></a>
+       </td>
+]]></part>
+<part name="SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM"><![CDATA[
+       <td>
+       <a href="<%adminurl%>index.php?action=deleteblog&amp;blogid=<%blogid%>" title="<%ttdeletetext%>"><%deletetext%></a>
+       </td>
+]]></part>
+
+<part name="SHOWLIST_LISTPLUG_TABLE_BLOGSNAM_HEAD"><![CDATA[
+       <th><%colshortname%></th>
+       <th><%colblogname%></th>
+]]></part>
+<part name="SHOWLIST_LISTPLUG_TABLE_BLOGSNAM_BODY"><![CDATA[
+       <td><%bshortname%></td>
+       <td><%blogname%></td>
+]]></part>
+
+<part name="SHOWLIST_LISTPLUG_TABLE_SHORTNAM_HEAD"><![CDATA[
+       <th><%colname%></th>
+       <th><%coldesc%></th>
+]]></part>
+<part name="SHOWLIST_LISTPLUG_TABLE_SHORTNAM_BODY"><![CDATA[
+       <td><%name%></td>
+       <td><%desc%></td>
+]]></part>
+
+<part name="SHOWLIST_LISTPLUG_TABLE_CATELIST_HEAD"><![CDATA[
+       <th><%colname%></th>
+       <th><%coldesc%></th>
+       <th colspan="2"><%colact%></th>
+]]></part>
+<part name="SHOWLIST_LISTPLUG_TABLE_CATELIST_BODY"><![CDATA[
+       <td><input type="checkbox" id="batch<%batchid%>" name="batch[<%batchid%>]" value="<%catid%>" />
+       <label for="batch<%batchid%>"><%catname%></label>
+       </td>
+       <td><%catdesc%></td>
+       <td><a href="<%adminurl%>index.php?action=categorydelete&amp;blogid=<%blogid%>&amp;catid=<%catid%>" tabindex="<%tabindex%>">
+       <%delbtn%></a></td>
+       <td><a href="<%adminurl%>index.php?action=categoryedit&amp;blogid=<%blogid%>&amp;catid=<%catid%>" tabindex="<%tabindex%>">
+       <%editbtn%></a></td>
+]]></part>
+
+<part name="SHOWLIST_LISTPLUG_TABLE_TPLTLIST_HEAD"><![CDATA[
+       <th><%colname%></th>
+       <th><%coldesc%></th>
+       <th colspan="3"><%colact%></th>
+]]></part>
+<part name="SHOWLIST_LISTPLUG_TABLE_TPLTLIST_BODY"><![CDATA[
+       <td><%templatename%></td>
+       <td><%templatedesc%></td>
+       <td style="white-space:nowrap">
+       <a href="<%editurl%>" tabindex="<%tabindex%>"><%editbtn%>
+       </a></td>
+       <td style="white-space:nowrap">
+       <a href="<%cloneurl%>" tabindex="<%tabindex%>"><%clonebtn%>
+       </a></td>
+       <td style="white-space:nowrap">
+       <a href="<%deleteurl%>" tabindex="<%tabindex%>"><%delbtn%>
+       </a></td>
+]]></part>
+<part name="SHOWLIST_LISTPLUG_TABLE_DRFTLIST_HEAD"><![CDATA[
+       <th><%colblog%></th>
+       <th><%coldesc%></th>
+       <th colspan="2"><%colact%></th>
+]]></part>
+<part name="SHOWLIST_LISTPLUG_TABLE_DRFTLIST_BODY"><![CDATA[
+       <td><%bshortname%></td>
+       <td><%ititle%></td>
+       <td><a href="<%adminurl%>index.php?action=itemedit&amp;itemid=<%itemid%>"><%editbtn%></a></td>
+       <td><a href="<%adminurl%>index.php?action=itemdelete&amp;itemid=<%itemid%>"><%delbtn%></a></td>
+]]></part>
+<part name="SHOWLIST_LISTPLUG_TABLE_CMNTLIST_ABAN"><![CDATA[
+       <td style="white-space:nowrap"><a href="<%adminurl%>index.php?action=banlistnewfromitem&amp;itemid=<%itemid%>&amp;ip=<%banip%>" title="<%banhost%>"><%banbtn%></a></td>
+]]></part>
+<part name="SHOWLIST_LISTPLUG_TABLE_BLOGLIST_HEAD"><![CDATA[
+       <th><%blognames%></th><th colspan="8"><%actionshead%></th>
+]]></part>
+<part name="SHOWLIST_LISTPLUG_TABLE_BLOGLIST_BODY"><![CDATA[
+       <td title="blogid:<%blogid%> shortname:<%shortname%>">
+       <a href="<%blogurl%>"><img src="<%skinfile(/images/globe.gif)%>" width="13" height="13" alt="<%iconalt%>" /></a> <%blogname%>
+       </td>
+       <td>
+       <a href="<%adminurl%>index.php?action=createitem&amp;blogid=<%blogid%>" title="<%ttaddtext%>"><%addtext%></a>
+       </td>
+       <td>
+       <a href="<%adminurl%>index.php?action=itemlist&amp;blogid=<%blogid%>" title="<%ttedittext%>"><%edittext%></a>
+       </td>
+       <td>
+       <a href="<%adminurl%>index.php?action=blogcommentlist&amp;blogid=<%blogid%>" title="<%ttcommenttext%>"><%commenttext%></a>
+       </td>
+       <td>
+       <a href="<%adminurl%>index.php?action=bookmarklet&amp;blogid=<%blogid%>" title="<%ttbmlettext%>"><%bmlettext%></a>
+       </td>
+]]></part>
+<part name="SHOWLIST_LISTPLUG_TABLE_CMNTLIST_HEAD"><![CDATA[
+       <th><%colinfo%></th>
+       <th><%colcontent%></th>
+       <th colspan="3"><%colaction%></th>
+]]></part>
+<part name="SHOWLIST_LISTPLUG_TABLE_CMNTLIST_BODY"><![CDATA[
+       <td><%commentdate%><br /><%commentator%><br /><%commentsite%><br /><%commentmail%><br /></td>
+       <td><input type="checkbox" id="batch<%batchid%>" name="batch[<%batchid%>]" value="<%commentid%>" />
+       <label for="batch<%batchid%>"><%commentbody%></label></td>
+       <td style="white-space:nowrap">
+       <a href="<%adminurl%>index.php?action=commentedit&amp;commentid=<%commentid%>"><%editbtn%></a></td>
+       <td style="white-space:nowrap">
+       <a href="<%adminurl%>index.php?action=commentdelete&amp;commentid=<%commentid%>"><%delbtn%></a></td>
+       <%addbanlist%>
+]]></part>
+<part name="SHOWLIST_LISTPLUG_TABLE_PLGOPT_OPWORD"><![CDATA[
+<input type="password" size="40" maxlength="128" name="<%varname%>" value="<%value%>" />
+]]></part>
+<part name="SHOWLIST_LISTPLUG_TABLE_PLGOPT_OSELEP"><![CDATA[
+<select name="<%varname%>">
+]]></part>
+<part name="SHOWLIST_LISTPLUG_TABLE_PLGOPT_OSELEO"><![CDATA[
+<option value="<%value%>"<%selected%>><%optname%></option>
+]]></part>
+<part name="SHOWLIST_LISTPLUG_TABLE_PLGOPT_OSELEC"><![CDATA[
+</select>
+]]></part>
+<part name="SHOWLIST_LISTPLUG_TABLE_PLGOPT_OTAREA"><![CDATA[
+<textarea class="pluginoption" cols="30" rows="5" name="<%varname%>"<%readonly%>><%value%></textarea>
+]]></part>
+<part name="SHOWLIST_LISTPLUG_TABLE_PLGOPT_OITEXT"><![CDATA[
+<input type="text" size="40" maxlength="128" name="<%varname%>" value="<%value%>"<%datatype%><%readonly%> />
+]]></part>
+<part name="SHOWLIST_LISTPLUG_TABLE_PLUGOPTN_FOOT"><![CDATA[
+<%extra%></td>
+]]></part>
+<part name="SHOWLIST_LISTPLUG_TABLE_POPTLIST_FOOT"><![CDATA[
+
+<tr>
+<td><%savetext%></td>
+<td><input type="submit" value="<%savetext%>" /></td>
+</tr>
+]]></part>
+<part name="SHOWLIST_LISTPLUG_TABLE_ITEMLIST_HEAD"><![CDATA[
+       <th><%colinfo%></th>
+       <th><%colcontent%></th>
+       <th style="white-space:nowrap"><%colaction%></th>
+]]></part>
+<part name="SHOWLIST_LISTPLUG_TABLE_ITEMLIST_BODY"><![CDATA[
+       <td<%cssclass%>>
+       <%bshortlabel%> <%bshortnameval%><br />
+       <%categorylabel%> <%categorynameval%><br />
+       <%authorlabel%> <%authornameval%><br />
+       <%itemdatelabel%> <%itemdateval%><br />
+       <%itemtimelabel%> <%itemtimeval%>
+       </td>
+       <td<%cssclass%>>
+       <input type="checkbox" id="batch<%batchid%>" name="batch[<%batchid%>]" value="<%itemid%>" />
+       <label for="batch<%batchid%>"><b><%itemtitle%></b></label><br />
+       <%itembody%></td>
+       <td style="white-space:nowrap"<%cssclass%>>
+       <a href="<%adminurl%>index.php?action=itemedit&amp;itemid=<%itemid%>"><%editbtn%></a><br />
+       <a href="<%adminurl%>index.php?action=itemmove&amp;itemid=<%itemid%>"><%movebtn%></a><br />
+       <a href="<%adminurl%>index.php?action=itemdelete&amp;itemid=<%itemid%>"><%delbtn%></a><br />
+       <%camount%>
+       </td>
+]]></part>
+<part name="SHOWLIST_LISTPLUG_TABLE_POPTLIST_HEAD"><![CDATA[
+       <th><%colinfo%></th>
+       <th><%colvalue%></th>
+]]></part>
+<part name="SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND"><![CDATA[
+       <br /><br /><%deplistlbl%><br /><%dependlist%>
+]]></part>
+<part name="SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ"><![CDATA[
+       <br /><br /><%deprlstlbl%><br /><%depreqlist%>
+]]></part>
+<part name="SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE"><![CDATA[
+       <td colspan="2"><%noplugalert%></td>
+]]></part>
+<part name="SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN"><![CDATA[
+       <td>
+       <a href="<%actionupurl%>" tabindex="<%tabindex%>"><%actionuptxt%></a><br />
+       <a href="<%actiondownurl%>" tabindex="<%tabindex%>"><%actiondowntxt%></a><br />
+       <a href="<%actuninsturl%>" tabindex="<%tabindex%>"><%actuninsttxt%></a><br />
+       <%plugadminurl%>
+       <%plughelpurl%>
+       <%plugoptsetting%>
+       </td>
+]]></part>
+<part name="SHOWLIST_LISTPLUG_TABLE_POPTLIST_BODY"><![CDATA[
+       <td><%description%></td>
+       <td>
+]]></part>
+<part name="SHOWLIST_LISTPLUG_TABLE_PLGOPT_OYESNO"><![CDATA[
+       <input type="radio" name="<%name%>" value="<%yesval%>"<%yescheckedval%> id="<%yesid%>" />
+       <label for="<%yesid%>"><%yesvaltext%></label>
+       <input type="radio" name="<%name%>" value="<%noval%>"<%nocheckedval%> id="<%noid%>"<%disabled%> />
+       <label for="<%noid%>"><%novaltext%></label>
+]]></part>
+<part name="SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL"><![CDATA[
+       <a href="<%actoptionurl%>" tabindex="<%tabindex%>"><%actoptiontxt%></a><br />
+]]></part>
+<part name="SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN"><![CDATA[
+       <a href="<%actadminurl%>" tabindex="<%tabindex%>"><%actadmintxt%></a><br />
+]]></part>
+<part name="SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP"><![CDATA[
+       <a href="<%acthelpurl%>" tabindex="<%tabindex%>"><%acthelptxt%></a><br />
+]]></part>
+<part name="SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL"><![CDATA[
+       <a href="<%plugurl%>" tabindex="<%tabindex%>"><%plugsite%></a>
+]]></part>
+<part name="SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HEAD"><![CDATA[
+       <th><%colinfo%></th>
+       <th><%coldesc%></th>
+       <th style=\"white-space:nowrap\"><%colactions%></th>
+]]></part>
+<part name="SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST"><![CDATA[
+       <br /><br /><%evntlstlbl%><br /><%eventlist%>
+]]></part>
+<part name="SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE"><![CDATA[
+       <br /><br /><strong><%updatealert%></strong>
+]]></part>
+<part name="SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY"><![CDATA[
+       <td>
+       <strong><%plugname%></strong><br />
+       <%autherlabel%> <%plugauther%><br />
+       <%versionlabel%> <%plugversion%><br />
+       <%pluggeturl%><br />
+       </td>
+       <td>
+       <%desclabel%><br /><%plugdesc%>
+       <%eventlist%>
+       <%needupdate%>
+       <%dependlist%>
+       <%depreqlist%>
+       </td>
+]]></part>
+<part name="SHOWLIST_LISTPLUG_TABLE_TEAMLIST_HEAD"><![CDATA[
+       <th><%colmembername%></th>
+       <th><%colmemberrname%></th>
+       <th><%colteamadmin%><%helplink(teamadmin)%></th>
+       <th colspan="2"><%colactions%></th>
+]]></part>
+<part name="SHOWLIST_LISTPLUG_TABLE_TEAMLIST_BODY"><![CDATA[
+       <td>
+       <input type="checkbox" id="batch<%id%>" name="batch[<%id%>]" value="<%memberid%>" />
+       <label for="batch<%id%>">
+       <a href="mailto:<%mailaddress%>" tabindex="<%tabindex%>"><%name%></a>
+       </label>
+       </td>
+       <td><%realname%></td>
+       <td><%admin%></td>
+       <td><a href="<%adminurl%>index.php?action=teamdelete&amp;memberid=<%memberid%>&amp;blogid=<%blogid%>" tabindex="<%tabindex%>"><%deletebtn%></a></td>
+       <td><a href="<%chadminurl%>" tabindex="<%tabindex%>"><%chadminbtn%></a></td>
+]]></part>
+<part name="SHOWLIST_LISTPLUG_TABLE_MEMBLIST_BODY"><![CDATA[
+       <td>
+       <input type="checkbox" id="batch<%id%>" name="batch[<%id%>]" value="<%memberid%>" />
+       <label for="batch<%id%>">
+       <a href="mailto:<%mailaddress%>" tabindex="<%tabindex%>"><%name%></a>
+       </label>
+       </td>
+       <td><%realname%></td>
+       <td><a href="<%url%>" tabindex="<%tabindex%>"><%url%></a></td>
+       <td><%admin%></td>
+       <td><%login%></td>
+       <td><a href="<%adminurl%>index.php?action=memberedit&amp;memberid=<%memberid%>" tabindex="<%tabindex%>"><%editbtn%></a></td>
+       <td><a href="<%adminurl%>index.php?action=memberdelete&amp;memberid=<%memberid%>" tabindex="<%tabindex%>"><%deletebtn%></a></td>
+]]></part>
+<part name="SHOWLIST_LISTPLUG_TABLE_FOOT"><![CDATA[
+       <%typefoot%>
+       </tbody>
+       </table>
+]]></part>
+<part name="SHOWLIST_LISTPLUG_TABLE_MEMBLIST_HEAD"><![CDATA[
+       <th><%colmembername%></th>
+       <th><%colmemberrname%></th>
+       <th><%colmemberurl%></th>
+       <th><%colmemberadmin%><%helplink(superadmin)%></th>
+       <th><%colmemberlogin%><%helplink(canlogin)%></th>
+       <th colspan="2"><%colactions%></th>
+]]></part>
+<part name="SHOWLIST_LISTPLUG_SELECT_FOOT"><![CDATA[
+       </select>
+]]></part>
+<part name="SHOWLIST_LISTPLUG_TABLE_HEAD"><![CDATA[
+       <table frame="box" rules="all" summary="<%summary%>">
+       <thead>
+       <tr>
+       <%typehead%>
+       </tr>
+       </thead>
+       <tbody>
+]]></part>
+<part name="SHOWLIST_LISTPLUG_TABLE_BODY"><![CDATA[
+       <tr onmouseover="focusRow(this);" onmouseout="blurRow(this);">
+       <%typebody%>
+       </tr>
+]]></part>
+<part name="SKINIE_EXPORT_LIST"><![CDATA[
+       <tr>
+       <td><input type="checkbox" name="<%typeid%>"  id="<%expid%>" /><label for="<%expid%>"><%expname%></label></td>
+       <td><%expdesc%></td>
+       </tr>
+]]></part>
+<part name="SHOWLIST_LISTPLUG_SELECT_HEAD"><![CDATA[
+       <select name="<%name%>" tabindex="<%tabindex%>" <%javascript%>>
+       <%extraoption%>
+]]></part>
+<part name="SHOWLIST_LISTPLUG_SELECT_BODY"><![CDATA[
+       <option value="<%value%>" <%selected%> title="<%title%>"><%option%></option>
+]]></part>
+<part name="SHOWLIST_LISTPLUG_SELECT_FOOT"><![CDATA[
+       </select>
+]]></part>
+<part name="SHOWLIST_LISTPLUG_TABLE_NAVILIST"><![CDATA[
+<table frame="box" rules="all" sumamry="navigation actions" class="navigation">
+<tr>
+<td>
+<form method="post" action="<%adminurl%>">
+<input type="hidden" name="start" value="<%prev%>" />
+<button type="submit" name="action" value="<%action%>">&lt; &lt; <%listsprev%></button>
+<input type="hidden" name="blogid" value="<%blogid%>" />
+<input type="hidden" name="itemid" value="<%itemid%>" />
+<input type="hidden" name="search" value="<%search%>" />
+<input type="hidden" name="amount" value="<%amount%>" />
+</form>
+</td>
+<td>
+<form method="post" action="<%adminurl%>">
+<input type="text" name="amount" size="3" value="<%amount%>" />
+<%listsperpage%>
+<input type="hidden" name="start" value="0" />
+<button type="submit" name="action" value="<%action%>">&gt; <%listschange%></button>
+<input type="hidden" name="blogid" value="<%blogid%>" />
+<input type="hidden" name="itemid" value="<%itemid%>" />
+<input type="hidden" name="search" value="<%search%>" />
+<input type="hidden" name="amount" value="<%amount%>" />
+</form>
+</td>
+<td>
+<form method="post" action="<%adminurl%>">
+<input type="text" name="search" value="<%search%>" size="7" />
+<input type="hidden" name="start" value="0" />
+<button type="submit" name="action" value="<%action%>">&gt; <%listssearch%></button>
+<input type="hidden" name="blogid" value="<%blogid%>" />
+<input type="hidden" name="itemid" value="<%itemid%>" />
+<input type="hidden" name="search" value="<%search%>" />
+<input type="hidden" name="amount" value="<%amount%>" />
+</form>
+</td>
+<td>
+<form method="post" action="<%adminurl%>">
+<input type="hidden" name="start" value="<%next%>" />
+<button type="submit" name="action" value="<%action%>"><%listsnext%>&gt; &gt; </button>
+<input type="hidden" name="blogid" value="<%blogid%>" />
+<input type="hidden" name="itemid" value="<%itemid%>" />
+<input type="hidden" name="search" value="<%search%>" />
+<input type="hidden" name="amount" value="<%amount%>" />
+</form>
+</td>
+</tr>
+</table>]]></part>
+<part name="INPUTYESNO_TEMPLATE_NORMAL"><![CDATA[
+       <input type="radio" name="<%name%>" value="<%yesval%>"<%yescheckedval%> id="<%yesid%>" />
+       <label for="<%yesid%>"><%yesvaltext%></label>
+       <input type="radio" name="<%name%>" value="<%noval%>"<%nocheckedval%> id="<%noid%>"<%disabled%> />
+       <label for="<%noid%>"><%novaltext%></label>
+]]></part>
+<part name="SYSTEMINFO_GDSETTINGS"><![CDATA[
+       <tr>
+       <td width="50%"><%key%></td>
+       <td><%value%></td>
+       </tr>
+]]></part>
+<part name="BANLIST_DELETED_LIST"><![CDATA[
+       <li><%blogname%></li>
+]]></part>
+<part name="INSERT_PLUGOPTION_TITLE"><![CDATA[
+       <tr>
+       <th colspan="2"><%sprinttext(_PLUGIN_OPTIONS_TITLE, <|%insertpluginfo(name)%|>)%></th>
+       </tr>
+]]></part>
+<part name="INSERT_PLUGOPTION_BODY"><![CDATA[
+       <tr><%listplugplugoptionrow(admin/default)%></tr>
+]]></part>
+<part name="INPUTYESNO_TEMPLATE_ADMIN"><![CDATA[
+       <input onclick="selectCanLogin(true);" type="radio" name="<%name%>" value="<%yesval%>"<%yescheckedval%> id="<%yesid%>" />
+       <label for="<%yesid%>"><%yesvaltext%></label>
+       <input onclick="selectCanLogin(false);" type="radio" name="<%name%>" value="<%noval%>"<%nocheckedval%> id="<%noid%>"<%disabled%> />
+       <label for="<%noid%>"><%novaltext%></label>
+]]></part>
+<part name="SPECIALSKINLIST_HEAD"><![CDATA[
+       <ul>
+]]></part>
+<part name="SPECIALSKINLIST_BODY"><![CDATA[
+       <li><a tabindex="<%tabindex%>" href="<%adminurl%>index.php?action=skinedittype&skinid=<%skinid%>&type=<%skintype%>"><%skintype%></a> (<a tabindex="<%tabindex%>" href="<%adminurl%>index.php?action=skinremovetype&skinid=<%skinid%>&type=<%skintype%>">remove</a>)</li>
+]]></part>
+<part name="SPECIALSKINLIST_FOOT"><![CDATA[
+       </ul>
+]]></part>
+
+<part name="TEMPLATE_EDIT_ROW_HEAD"><![CDATA[
+       <tr>
+       <td><%description%><%help%></td>
+       <td id="td<%count%>">
+       <textarea class="templateedit" name="<%name%>" tabindex="<%tabindex%>" cols="50" rows="<%rows%>" id="textarea<%count%>">
+]]></part>
+<part name="TEMPLATE_EDIT_ROW_TAIL"><![CDATA[
+       </textarea>
+       </td>
+       </tr>
+]]></part>
+
+<part name="TEMPLATE_EDIT_EXPLUGNAME"><![CDATA[
+       <tr>
+       <th colspan="2"><%explugtplname%></th>
+       </tr>
+]]></part>
+
+<part name="ADMIN_BATCHLIST"><![CDATA[
+       <li><%text(_BATCH_EXECUTING)%&nbsp;<b><%adminbatchaction%></b>&nbsp;<%batchlisttype%>&nbsp;<b><%batchid%></b>...&nbsp;<b><%batchlistmsg%></b></li>
+]]></part>
+<part name="ADMIN_BLOGLINK"><![CDATA[
+       <a href="<%url%>" title="<%adminbloglinktitle%>"><%blogname%></a>
+]]></part>
+
+<part name="ADMIN_CUSTOMHELPLINK_ANCHOR"><![CDATA[
+       <a href="<%helpurl%>#<%helptarget%>" title="<%title%>" <%onclick%>>
+]]></part>
+<part name="ADMIN_CUSTOMHELPLINK_ICON"><![CDATA[
+       <img src="<%iconurl%>" <%width%><%height%>alt="<%alt%>" title="<%title%>" /></a>
+]]></part>
+<part name="NORMALSKINLIST_HEAD"><![CDATA[
+       <ul>
+]]></part>
+<part name="NORMALSKINLIST_BODY"><![CDATA[
+       <li><a href="<%editurl%>" tabindex="<%tabindex%>"><%skintypename%></a> <%help%></li>
+]]></part>
+<part name="NORMALSKINLIST_FOOT"><![CDATA[
+       </ul>
+]]></part>
+<part name="SPECIALSKINLIST_HEAD"><![CDATA[
+       <ul>
+]]></part>
+<part name="SPECIALSKINLIST_BODY"><![CDATA[
+       <li><a href="<%editurl%>" tabindex="<%tabindex%>"><%skintype%></a> (<a href="<%removeurl%>" tabindex="<%tabindex%>">remove</a>)</li>
+]]></part>
+<part name="SPECIALSKINLIST_FOOT"><![CDATA[
+       </ul>
+]]></part>
+<part name="PLUGIN_QUICKMENU_BODY"><![CDATA[
+       <li><a href="<%plugadminurl%>" title="<%plugadmintooltip%>"><%plugadmintitle%></a></li>
+]]></part>
+<part name="PLUGIN_QUICKMENU_FOOT"><![CDATA[
+       </ul>
+]]></part>
+<part name="SHOWLIST_LISTPLUG_TABLE_NAVILIST"><![CDATA[
+       <table frame="box" rules="all" sumamry="navigation actions" class="navigation">
+       <tr>
+       <td>
+       <form method="post" action="<%adminurl%>">
+       <input type="hidden" name="start" value="<%prev%>" />
+       <button type="submit" name="action" value="<%action%>">&lt; &lt; <%listsprev%></button>
+       <input type="hidden" name="blogid" value="<%blogid%>" />
+       <input type="hidden" name="itemid" value="<%itemid%>" />
+       <input type="hidden" name="search" value="<%search%>" />
+       <input type="hidden" name="amount" value="<%amount%>" />
+       </form>
+       </td>
+       <td>
+       <form method="post" action="<%adminurl%>">
+       <input type="text" name="amount" size="3" value="<%amount%>" />
+       <%listsperpage%>
+       <input type="hidden" name="start" value="0" />
+       <button type="submit" name="action" value="<%action%>">&gt; <%listschange%></button>
+       <input type="hidden" name="blogid" value="<%blogid%>" />
+       <input type="hidden" name="itemid" value="<%itemid%>" />
+       <input type="hidden" name="search" value="<%search%>" />
+       <input type="hidden" name="amount" value="<%amount%>" />
+       </form>
+       </td>
+       <td>
+       <form method="post" action="<%adminurl%>">
+       <input type="text" name="search" value="<%search%>" size="7" />
+       <input type="hidden" name="start" value="0" />
+       <button type="submit" name="action" value="<%action%>">&gt; <%listssearch%></button>
+       <input type="hidden" name="blogid" value="<%blogid%>" />
+       <input type="hidden" name="itemid" value="<%itemid%>" />
+       <input type="hidden" name="search" value="<%search%>" />
+       <input type="hidden" name="amount" value="<%amount%>" />
+       </form>
+       </td>
+       <td>
+       <form method="post" action="<%adminurl%>">
+       <input type="hidden" name="start" value="<%next%>" />
+       <button type="submit" name="action" value="<%action%>"><%listsnext%>&gt; &gt; </button>
+       <input type="hidden" name="blogid" value="<%blogid%>" />
+       <input type="hidden" name="itemid" value="<%itemid%>" />
+       <input type="hidden" name="search" value="<%search%>" />
+       <input type="hidden" name="amount" value="<%amount%>" />
+       </form>
+       </td>
+       </tr>
+       </table>
+]]></part>
+</template>
+</nucleusskin>
similarity index 84%
rename from nucleus/styles/addedit.css
rename to skins/admin/default/styles/addedit.css
index 2a2a5d1..3dd4f12 100644 (file)
@@ -2,7 +2,7 @@
        This stylesheet serves to make item previews look nicer, and to markup the 
        buttonbar
        
-       $Id: addedit.css 757 2005-08-12 07:29:40Z dekarma $
+       $Id: addedit.css 1888 2012-06-17 08:38:54Z sakamocchi $
 */
 
 .leftbox, .rightbox {
@@ -22,7 +22,7 @@
 
 /* markup buttons */
 .jsbuttonbar {
-       height: 30px;
+       padding: 3px;
        cursor: default;
 }
 
@@ -40,3 +40,7 @@
        float: left;
        width: 10px;
 }
+
+.jsbuttonend {
+       clear: both;
+}
similarity index 98%
rename from nucleus/styles/admin_contemporary.css
rename to skins/admin/default/styles/admin_contemporary.css
index a21dd3e..2914b3a 100644 (file)
@@ -3,7 +3,7 @@
 /*
        admin area style
        
-       $Id: admin.css 1261 2008-05-22 20:32:43Z kaigreve $
+       $Id: admin_contemporary.css 1888 2012-06-17 08:38:54Z sakamocchi $
 */
 
 body {
similarity index 99%
rename from nucleus/styles/admin_original.css
rename to skins/admin/default/styles/admin_original.css
index e477d43..113fc9e 100644 (file)
@@ -1,7 +1,7 @@
 /*
        admin area style
 
-       $Id: admin_original.css 1652 2012-02-11 06:02:05Z sakamocchi $
+       $Id: admin_original.css 1888 2012-06-17 08:38:54Z sakamocchi $
 */
 
 body {
similarity index 97%
rename from nucleus/styles/bookmarklet.css
rename to skins/admin/default/styles/bookmarklet.css
index 17db1b8..95cadaf 100644 (file)
@@ -1,7 +1,7 @@
 /* 
        style definitions for the bookmarklet 
        
-       $Id: bookmarklet.css 1277 2008-10-22 08:43:59Z shizuki $
+       $Id: bookmarklet.css 1888 2012-06-17 08:38:54Z sakamocchi $
 */
 
 body {
diff --git a/skins/admin/default/styles/bullet.gif b/skins/admin/default/styles/bullet.gif
new file mode 100644 (file)
index 0000000..b43de48
Binary files /dev/null and b/skins/admin/default/styles/bullet.gif differ
diff --git a/skins/admin/default/styles/contemporary/background.png b/skins/admin/default/styles/contemporary/background.png
new file mode 100644 (file)
index 0000000..a1308eb
Binary files /dev/null and b/skins/admin/default/styles/contemporary/background.png differ
similarity index 96%
rename from nucleus/styles/manual.css
rename to skins/admin/default/styles/manual.css
index 72ced08..0a2be06 100644 (file)
@@ -1,7 +1,7 @@
 /*
        documentation style
        
-       $Id: manual.css 757 2005-08-12 07:29:40Z dekarma $
+       $Id: manual.css 1888 2012-06-17 08:38:54Z sakamocchi $
 */
 
 body {
similarity index 95%
rename from nucleus/styles/popups.css
rename to skins/admin/default/styles/popups.css
index 7b6592d..22ca05b 100644 (file)
@@ -1,7 +1,7 @@
 /*
        media library popup
        
-       $Id: popups.css 757 2005-08-12 07:29:40Z dekarma $
+       $Id: popups.css 1888 2012-06-17 08:38:54Z sakamocchi $
 */
 
 body {
diff --git a/skins/admin/defaultimporter.skn b/skins/admin/defaultimporter.skn
new file mode 100644 (file)
index 0000000..e605d89
--- /dev/null
@@ -0,0 +1,160 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=<%charset%>" />
+<title><%sitevar(name)%> - Admin</title>
+<link rel="stylesheet" title="Nucleus Admin Default" type="text/css" href="<%skinfile(admin/default/styles/admin_contemporary.css)%>" />
+<link rel="stylesheet" title="Nucleus Admin Default" type="text/css" href="<%skinfile(admin/default/styles/addedit.css)%>" />
+
+<script type="text/javascript" src="<%skinfile(admin/default/javascript/edit.js)%>"></script>
+<script type="text/javascript" src="<%skinfile(admin/default/javascript/admin.js)%>"></script>
+<script type="text/javascript" src="<%skinfile(admin/default/javascript/compatibility.js)%>"></script>
+
+<meta http-equiv='Pragma' content='no-cache' />
+<meta http-equiv='Cache-Control' content='no-cache, must-revalidate' />
+<meta http-equiv='Expires' content='-1' />
+<%extrahead%>
+</head>
+<body>
+<div id="adminwrapper">
+<div class="header">
+<h1><%sitevar(name)%></h1>
+</div>
+<div id="container">
+<div id="content">
+<div class="loginname">
+
+<%if(loggedin)%>
+       <%text(_LOGGEDINAS)%> <%member(yourrealname)%> - <a href="<%adminurl%>index.php?action=logout"><%text(_LOGOUT)%></a><br />
+       <a href="<%adminurl%>index.php?action=overview"><%text(_ADMINHOME)%></a> - 
+<%else%>
+       <a href="<%adminurl%>index.php?action=showlogin" title="Log in"><%text(_NOTLOGGEDIN)%></a><br />
+<%endif%>
+
+<a href="<%sitevar(url)%>"><%text(_YOURSITE)%></a><br />
+(
+<%if(superadmin)%>
+       <a href="<%versioncheckurl%>" title="<%text(_ADMIN_SYSTEMOVERVIEW_VERSIONCHECK_TITLE)%>"><%version%><%codename%></a>
+<%else%>
+       <%version%><%codename%>
+<%endif%>
+)
+</div>
+
+<p><a href="<%adminurl%>index.php?action=manage">(<%text(_BACKTOMANAGE)%>)</a></p>
+
+<h2><%text(_SKINIE_TITLE_IMPORT)%></h2>
+
+<p>
+<label for="skinie_import_local"><%text(_SKINIE_LOCAL)%></label>
+<%if(superadmin)%>
+       <form method="post" action="<%adminurl%>index.php">
+       <p>
+       <input type="hidden" name="action" value="adminskinieimport" />
+       <input type="hidden" name="overwrite" value="1" />
+       <%ticket%>
+       <input type="hidden" name="mode" value="file" />
+       <select name="skinfile" id="skinie_import_local">
+       <%selectlocalskinfiles%>
+       </select>
+       <input type="submit" value="<%text(_SKINIE_BTN_IMPORT)%>" />
+       </p>
+       </form>
+<%else%>
+       <p><%text(_SKINIE_NOCANDIDATES)%></p>
+<%endif%>
+
+<p><em><%text(_OR)%></em></p>
+
+<form method="post" action="<%adminurl%>index.php">
+<p>
+<%ticket%>
+<input type="hidden" name="action" value="adminskinieimport" />
+<input type="hidden" name="mode" value="url" />
+<label for="skinie_import_url"><%text(_SKINIE_FROMURL)%></label>
+<input type="text" name="skinfile" id="skinie_import_url" size="60" value="http://" />
+<input type="submit" value="<%text(_SKINIE_BTN_IMPORT)%>" />
+</p>
+</form>
+
+<%if(loggedin)%>
+       <%ifnot(adminaction,showlogin)%>
+               <h2><%text(_LOGOUT)%></h2>
+               <ul>
+               <li><a href="<%adminurl%>index.php?action=overview"><%text(_BACKHOME)%></a></li>
+               <li><a href="<%adminurl%>index.php?action=logout"><%text(_LOGOUT)%></a></li>
+               </ul>
+       <%endif%>
+<%endif%>
+
+<div class="foot">
+<a href="<%text(_ADMINPAGEFOOT_OFFICIALURL)%>">Nucleus CMS</a> &copy; 2002- <%date(%Y)%> <%text(_ADMINPAGEFOOT_COPYRIGHT)%> - <a href="<%text(_ADMINPAGEFOOT_DONATEURL)%>"><%text(_ADMINPAGEFOOT_DONATE)%></a>
+</div>
+</div>
+<!-- content -->
+
+<div id="quickmenu">
+<%if(loggedin)%>
+<%ifnot(adminaction,showlogin)%>
+<ul>
+<li><a href="<%adminurl%>index.php?action=overview"><%text(_QMENU_HOME)%></a></li>
+</ul>
+
+<h2><%text(_QMENU_ADD)%></h2>
+<form method="get" action="<%adminurl%>index.php">
+<div>
+<input type="hidden" name="action" value="createitem" />
+<%qmenuaddselect%>
+</div>
+</form>
+
+<h2><%member(yourrealname)%></h2>
+<ul>
+<li><a href="<%adminurl%>index.php?action=editmembersettings"><%text(_QMENU_USER_SETTINGS)%></a></li>
+<li><a href="<%adminurl%>index.php?action=browseownitems"><%text(_QMENU_USER_ITEMS)%></a></li>
+<li><a href="<%adminurl%>index.php?action=browseowncomments"><%text(_QMENU_USER_COMMENTS)%></a></li>
+</ul>
+
+<%if(superadmin)%>
+       <h2><%text(_QMENU_MANAGE)%></h2>
+       <ul>
+       <li><a href="<%adminurl%>index.php?action=actionlog"><%text(_QMENU_MANAGE_LOG)%></a></li>
+       <li><a href="<%adminurl%>index.php?action=settingsedit"><%text(_QMENU_MANAGE_SETTINGS)%></a></li>
+       <li><a href="<%adminurl%>index.php?action=systemoverview"><%text(_QMENU_MANAGE_SYSTEM)%></a></li>
+       <li><a href="<%adminurl%>index.php?action=usermanagement"><%text(_QMENU_MANAGE_MEMBERS)%></a></li>
+       <li><a href="<%adminurl%>index.php?action=createnewlog"><%text(_QMENU_MANAGE_NEWBLOG)%></a></li>
+       <li><a href="<%adminurl%>index.php?action=backupoverview"><%text(_QMENU_MANAGE_BACKUPS)%></a></li>
+       <li><a href="<%adminurl%>index.php?action=pluginlist"><%text(_QMENU_MANAGE_PLUGINS)%></a></li>
+       </ul>
+       <h2><%text(_QMENU_LAYOUT)%></h2>
+       <ul>
+       <li><a href="<%adminurl%>index.php?action=skinoverview"><%text(_QMENU_LAYOUT_SKINS)%></a></li>
+       <li><a href="<%adminurl%>index.php?action=templateoverview"><%text(_QMENU_LAYOUT_TEMPL)%></a></li>
+       <li><a href="<%adminurl%>index.php?action=skinieoverview"><%text(_QMENU_LAYOUT_IEXPORT)%></a></li>
+       </ul>
+       <h2><%text(_SKINABLEADMIN_QMENU_LAYOUT)%></h2>
+       <ul>
+       <li><a href="<%adminurl%>index.php?action=adminskinoverview"><%text(_QMENU_LAYOUT_SKINS)%></a></li>
+       <li><a href="<%adminurl%>index.php?action=admintemplateoverview"><%text(_QMENU_LAYOUT_TEMPL)%></a></li>
+       <li><a href="<%adminurl%>index.php?action=adminskinieoverview"><%text(_QMENU_LAYOUT_IEXPORT)%></a></li>
+       </ul><%endif%>
+       <%quickmenu(default/admin)%>
+<%elseif(adminaction,activate)%>
+       <h2><%text(_QMENU_ACTIVATE)%></h2><%text(_QMENU_ACTIVATE_TEXT)%>
+<%elseif(adminaction,activatesetpwd)%>
+       <h2><%text(_QMENU_ACTIVATE)%></h2><%text(_QMENU_ACTIVATE_TEXT)%>
+<%else%>
+       <h2><%text(_QMENU_INTRO)%></h2><%text(_QMENU_INTRO_TEXT)%>
+<%endif%>
+
+</div>
+<!-- content / quickmenu container -->
+<div class="clear"></div>
+<!-- new -->
+</div>
+<!-- adminwrapper -->
+<!-- new -->
+</div>
+ <!-- new -->
+</body>
+</html>
\ No newline at end of file
diff --git a/skins/admin/showlogin.skn b/skins/admin/showlogin.skn
new file mode 100644 (file)
index 0000000..807db30
--- /dev/null
@@ -0,0 +1,67 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=<%charset%>" />
+<title><%sitevar(name)%> - Admin</title>
+<link rel="stylesheet" title="Nucleus Admin Default" type="text/css" href="<%skinfile(admin/default/styles/admin_contemporary.css)%>" />
+<link rel="stylesheet" title="Nucleus Admin Default" type="text/css" href="<%skinfile(admin/default/styles/addedit.css)%>" />
+<script type="text/javascript" src="<%skinfile(admin/default/javascript/edit.js)%>"></script>
+<script type="text/javascript" src="<%skinfile(admin/default/javascript/admin.js)%>"></script>
+<script type="text/javascript" src="<%skinfile(admin/default/javascript/compatibility.js)%>"></script>
+<meta http-equiv='Pragma' content='no-cache' />
+<meta http-equiv='Cache-Control' content='no-cache, must-revalidate' />
+<meta http-equiv='Expires' content='-1' />
+<%extrahead%>
+</head>
+<body>
+<div id="adminwrapper">
+<div class="header">
+<h1><%sitevar(name)%></h1>
+</div>
+<div id="container">
+<div id="content">
+<div class="loginname">
+<a href="<%adminurl%>index.php?action=showlogin" title="Log in"><%text(_NOTLOGGEDIN)%></a><br />
+<a href="<%sitevar(url)%>"><%text(_YOURSITE)%></a><br />
+(<%version%><%codename%>)
+</div>
+
+<h2><%text(_LOGIN)%></h2>
+<%headmessage%>
+
+<form action="index.php" method="post"><p>
+<%text(_LOGIN_NAME)%> <br />
+<input name="login"  tabindex="10" /><br />
+<%text(_LOGIN_PASSWORD)%> <br />
+<input name="password"  tabindex="20" type="password" /><br />
+<input name="action" value="login" type="hidden" /><input name="customaction" value="top" type="hidden" /><br />
+<input type="submit" value="<%text(_LOGIN)%>" tabindex="30" /><br />
+<small>
+<input type="checkbox" value="1" name="shared" tabindex="40" id="shared" /><label for="shared"><%text(_LOGIN_SHARED)%></label><br />
+<a href="forgotpassword.php"><%text(_LOGIN_FORGOT)%></a>
+</small>
+<%passrequestvars%>
+</p>
+</form>
+
+<div class="foot">
+<a href="<%text(_ADMINPAGEFOOT_OFFICIALURL)%>">Nucleus CMS</a> &copy; 2002- <%date(%Y)%> <%text(_ADMINPAGEFOOT_COPYRIGHT)%>
+ - <a href="<%text(_ADMINPAGEFOOT_DONATEURL)%>"><%text(_ADMINPAGEFOOT_DONATE)%></a>
+</div>
+
+</div>
+
+<!-- content -->
+<div id="quickmenu">
+<h2><%text(_QMENU_INTRO)%></h2>
+<%text(_QMENU_INTRO_TEXT)%>
+</div>
+<!-- content / quickmenu container -->
+<div class="clear"></div>
+<!-- new -->
+</div>
+
+<!-- adminwrapper --><!-- new -->
+</div> <!-- new -->
+</body>
+</html>
\ No newline at end of file
index 23be1e1..44cc23e 100644 (file)
@@ -11,6 +11,7 @@
        <a href="http://jigsaw.w3.org/css-validator/">Valid CSS</a> | 
        <a href="#top">Back to top</a></small>
 </div>
+<%benchmark%>
 </div>
 
 </body>
index c8f073f..30c2286 100644 (file)
@@ -433,9 +433,15 @@ function moveNiceTitle(e)
                X = e.pageX;
                }
        w_title = Number(CURRENT_NICE_TITLE.style.width.replace(/^(\d+).*$/, '$1'));
+<<<<<<< HEAD
        if (w_title + X > (window.innerWidth - 20))
                {
                X = window.innerWidth - w_title - 20;
+=======
+       if (w_title + X > (window.innerWidth + (document.documentElement.scrollLeft || window.pageXOffset) - 20))
+               {
+               X = (window.innerWidth + (document.documentElement.scrollLeft || window.pageXOffset) - 20) - w_title;
+>>>>>>> skinnable-master
                }
 
        if (document.all)
@@ -446,7 +452,11 @@ function moveNiceTitle(e)
                {
                Y = e.pageY;
                }
+<<<<<<< HEAD
        if (Y > (window.innerHeight - 60))
+=======
+       if (Y > (window.innerHeight + (document.documentElement.scrollTop || window.pageYOffset) - 60))
+>>>>>>> skinnable-master
                {
                Y = Y - 25 - 60;
                }
index dfab004..c479efd 100644 (file)
@@ -294,8 +294,6 @@ Posted by: <a href="<%authorlink%>" title="Author: <%author%>"><%author%></a>
 
                <part name="FORMAT_TIME"><![CDATA[%X]]></part>
 
-               <part name="LOCALE"><![CDATA[en]]></part>
-
                <part name="POPUP_CODE"><![CDATA[<%popuplink%>]]></part>
 
                <part name="IMAGE_CODE"><![CDATA[<%image%>]]></part>
@@ -361,8 +359,6 @@ title="<%ip%> | Click to visit <%user%>'s website or send an email">
 
                <part name="FORMAT_TIME"><![CDATA[%X]]></part>
 
-               <part name="LOCALE"><![CDATA[en]]></part>
-
                <part name="POPUP_CODE"><![CDATA[<%popuplink%>]]></part>
 
                <part name="IMAGE_CODE"><![CDATA[<%image%>]]></part>
index 5382d61..0c6dafa 100644 (file)
 </div>
 ]]></part>
 
-<part name="LOCALE"><![CDATA[en]]></part>
 <part name="MEDIA_CODE"><![CDATA[<%media%>]]></part>
 <part name="MORELINK"><![CDATA[<a href="<%itemlink%>">[Read More!]</a>]]></part>
 <part name="POPUP_CODE"><![CDATA[<%popuplink%>]]></part>
 </div>
 ]]></part>
 
-<part name="LOCALE"><![CDATA[en]]></part>
 <part name="MEDIA_CODE"><![CDATA[<%media%>]]></part>
 <part name="POPUP_CODE"><![CDATA[<%popuplink%>]]></part>
 <part name="SEARCH_HIGHLIGHT"><![CDATA[<span class="highlight">\0</span>]]></part>
old mode 100644 (file)
new mode 100755 (executable)
index 76b154f..ab66174
@@ -1,65 +1,65 @@
-<?php\r
-\r
-/*\r
- * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)\r
- * Copyright (C) 2002-2012 The Nucleus Group\r
- *\r
- * This program is free software; you can redistribute it and/or\r
- * modify it under the terms of the GNU General Public License\r
- * as published by the Free Software Foundation; either version 2\r
- * of the License, or (at your option) any later version.\r
- * (see nucleus/documentation/index.html#license for more info)\r
- */\r
-\r
-/**\r
- * Nucleus RSS syndication channel skin\r
- * @license http://nucleuscms.org/license.txt GNU General Public License\r
- * @copyright Copyright (C) 2002-2012 The Nucleus Group\r
- * @version $Id: xml-rss2.php 1624 2012-01-09 11:36:20Z sakamocchi $\r
- */\r
-\r
-header('Pragma: no-cache');\r
-\r
-$CONF = array();\r
-include('./config.php');\r
-\r
-if ( !$CONF['DisableSite'] )\r
-{\r
-       // get feed into $feed\r
-       ob_start();\r
-       selectSkin('feeds/rss20');\r
-       selector();\r
-       $feed = ob_get_contents();\r
-       ob_end_clean();\r
-       \r
-       /*\r
-        * create ETAG (hash of feed)\r
-        * (HTTP_IF_NONE_MATCH has quotes around it)\r
-        */\r
-       $eTag = '"' . md5($feed) . '"';\r
-       header('Etag: ' . $eTag);\r
-       \r
-       // compare Etag to what we got\r
-       if ( $eTag == serverVar('HTTP_IF_NONE_MATCH') )\r
-       {\r
-               header('HTTP/1.0 304 Not Modified');\r
-               header('Content-Length: 0');\r
-       }\r
-       else\r
-       {\r
-               echo $feed;\r
-       }\r
-}\r
-// site is disabled, output empty RSS file\r
-else\r
-{\r
-       echo '<?xml version="1.0" encoding="' . i18n::get_current_charset() . '"?>' . "\n";\r
-       echo "<rss version=\"2.0\">\n";\r
-       echo "<channel>\n";\r
-       echo '<title>' . Entity::hsc($CONF['SiteName']) . "</title>\n";\r
-       echo "<link>" . Entity::hsc($CONF['IndexURL']) . "</link>\n";\r
-       echo "<description></description>\n";\r
-       echo "<docs>http://backend.userland.com/rss</docs>\n";\r
-       echo "</channel>\n";\r
-       echo "</rss>\n";\r
-}\r
+<?php
+
+/*
+ * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)
+ * Copyright (C) 2002-2009 The Nucleus Group
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * (see nucleus/documentation/index.html#license for more info)
+ */
+
+/**
+ * Nucleus RSS syndication channel skin
+ * @license http://nucleuscms.org/license.txt GNU General Public License
+ * @copyright Copyright (C) 2002-2009 The Nucleus Group
+ * @version $Id: xml-rss2.php 1721 2012-03-31 10:18:25Z sakamocchi $
+ */
+
+header('Pragma: no-cache');
+
+$CONF = array();
+include('./config.php');
+
+if ( !$CONF['DisableSite'] )
+{
+       // get feed into $feed
+       ob_start();
+       selectSkin('feeds/rss20');
+       selector();
+       $feed = ob_get_contents();
+       ob_end_clean();
+       
+       /*
+        * create ETAG (hash of feed)
+        * (HTTP_IF_NONE_MATCH has quotes around it)
+        */
+       $eTag = '"' . md5($feed) . '"';
+       header('Etag: ' . $eTag);
+       
+       // compare Etag to what we got
+       if ( $eTag == serverVar('HTTP_IF_NONE_MATCH') )
+       {
+               header('HTTP/1.0 304 Not Modified');
+               header('Content-Length: 0');
+       }
+       else
+       {
+               echo $feed;
+       }
+}
+// site is disabled, output empty RSS file
+else
+{
+       echo '<?xml version="1.0" encoding="' . i18n::get_current_charset() . '"?>' . "\n";
+       echo "<rss version=\"2.0\">\n";
+       echo "<channel>\n";
+       echo '<title>' . Entity::hsc($CONF['SiteName']) . "</title>\n";
+       echo "<link>" . Entity::hsc($CONF['IndexURL']) . "</link>\n";
+       echo "<description></description>\n";
+       echo "<docs>http://backend.userland.com/rss</docs>\n";
+       echo "</channel>\n";
+       echo "</rss>\n";
+}