OSDN Git Service

MARGE:masterブランチのマージ(マージできない分について、データベースハンドラーを書き換え)
authorreine <reine@users.sourceforge.jp>
Sat, 5 May 2012 19:27:53 +0000 (04:27 +0900)
committerreine <reine@users.sourceforge.jp>
Sat, 5 May 2012 19:27:53 +0000 (04:27 +0900)
アイテム編集画面のボタン表示とボタンが機能しない問題に対応
管理画面スキンフォルダをadmin/defaultに変更
ブックマークレット画面が一応表示されるようにした

138 files changed:
install/index.php
install/install.sql
nucleus/bookmarklet.php
nucleus/convert/functions.inc.php
nucleus/convert/wordpress.php
nucleus/javascript/edit.js
nucleus/libs/ACTIONLOG.php
nucleus/libs/ACTIONS.php
nucleus/libs/ADMIN.php
nucleus/libs/AdminActions.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/MEMBER.php
nucleus/libs/PLUGIN.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/showlist.php
nucleus/libs/skinie.php
nucleus/libs/sql/DB.php [new file with mode: 0644]
nucleus/libs/sql/MYSQLPDO.php [new file with mode: 0644]
nucleus/libs/sql/mysql.php [deleted file]
nucleus/libs/sql/pdo.php [deleted file]
nucleus/libs/sql/sql.php [new file with mode: 0644]
nucleus/media.php
nucleus/plugins/NP_SecurityEnforcer.php
nucleus/plugins/securityenforcer/index.php
nucleus/styles/addedit.css
nucleus/styles/admin_original.css
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.3.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
skins/admin/bookmarklet/images/button-aligncenter.gif [moved from skins/admin/defaultadmin/images/button-aligncenter.gif with 100% similarity]
skins/admin/bookmarklet/images/button-alignleft.gif [moved from skins/admin/defaultadmin/images/button-alignleft.gif with 100% similarity]
skins/admin/bookmarklet/images/button-alignright.gif [moved from skins/admin/defaultadmin/images/button-alignright.gif with 100% similarity]
skins/admin/bookmarklet/images/button-bold.gif [moved from skins/admin/defaultadmin/images/button-bold.gif with 100% similarity]
skins/admin/bookmarklet/images/button-copy.gif [moved from skins/admin/defaultadmin/images/button-copy.gif with 100% similarity]
skins/admin/bookmarklet/images/button-cut.gif [moved from skins/admin/defaultadmin/images/button-cut.gif with 100% similarity]
skins/admin/bookmarklet/images/button-italic.gif [moved from skins/admin/defaultadmin/images/button-italic.gif with 100% similarity]
skins/admin/bookmarklet/images/button-left.gif [moved from skins/admin/defaultadmin/images/button-left.gif with 100% similarity]
skins/admin/bookmarklet/images/button-link.gif [moved from skins/admin/defaultadmin/images/button-link.gif with 100% similarity]
skins/admin/bookmarklet/images/button-media.gif [moved from skins/admin/defaultadmin/images/button-media.gif with 100% similarity]
skins/admin/bookmarklet/images/button-paste.gif [moved from skins/admin/defaultadmin/images/button-paste.gif with 100% similarity]
skins/admin/bookmarklet/images/button-preview.gif [moved from skins/admin/defaultadmin/images/button-preview.gif with 100% similarity]
skins/admin/bookmarklet/images/button-right.gif [moved from skins/admin/defaultadmin/images/button-right.gif with 100% similarity]
skins/admin/bookmarklet/images/globe.gif [moved from skins/admin/defaultadmin/images/globe.gif with 100% similarity]
skins/admin/bookmarklet/javascripts/admin.js [moved from skins/admin/defaultadmin/javascripts/admin.js with 96% similarity]
skins/admin/bookmarklet/javascripts/bookmarklet.js [moved from skins/admin/defaultadmin/javascripts/bookmarklet.js with 96% similarity]
skins/admin/bookmarklet/javascripts/compatibility.js [moved from skins/admin/defaultadmin/javascripts/compatibility.js with 97% similarity]
skins/admin/bookmarklet/javascripts/edit.js [moved from skins/admin/defaultadmin/javascripts/edit.js with 95% similarity]
skins/admin/bookmarklet/javascripts/index.html [moved from skins/admin/defaultadmin/javascripts/index.html with 93% similarity]
skins/admin/bookmarklet/javascripts/numbercheck.js [moved from skins/admin/defaultadmin/javascripts/numbercheck.js with 96% similarity]
skins/admin/bookmarklet/javascripts/opennew.js [moved from skins/admin/defaultadmin/javascripts/opennew.js with 97% similarity]
skins/admin/bookmarklet/javascripts/templateEdit.js [moved from skins/admin/defaultadmin/javascripts/templateEdit.js with 94% similarity]
skins/admin/bookmarklet/javascripts/xmlhttprequest.js [moved from skins/admin/defaultadmin/javascripts/xmlhttprequest.js with 96% similarity]
skins/admin/bookmarklet/skinbackup.xml
skins/admin/bookmarklet/styles/addedit.css [moved from skins/admin/defaultadmin/styles/addedit.css with 77% similarity]
skins/admin/bookmarklet/styles/admin_contemporary.css [moved from skins/admin/defaultadmin/styles/admin_contemporary.css with 94% similarity]
skins/admin/bookmarklet/styles/admin_contemporary_jp.css [moved from skins/admin/defaultadmin/styles/admin_contemporary_jp.css with 95% similarity]
skins/admin/bookmarklet/styles/admin_original.css [moved from skins/admin/defaultadmin/styles/admin_original.css with 94% similarity]
skins/admin/bookmarklet/styles/background.png [moved from skins/admin/defaultadmin/styles/background.png with 100% similarity]
skins/admin/bookmarklet/styles/bookmarklet.css [moved from skins/admin/defaultadmin/styles/bookmarklet.css with 93% similarity]
skins/admin/bookmarklet/styles/bullet.gif [moved from skins/admin/defaultadmin/styles/bullet.gif with 100% similarity]
skins/admin/bookmarklet/styles/contemporary/background.png [moved from skins/admin/defaultadmin/styles/contemporary/background.png with 100% similarity]
skins/admin/bookmarklet/styles/contemporary_jp/background.png [moved from skins/admin/defaultadmin/styles/contemporary_jp/background.png with 100% similarity]
skins/admin/bookmarklet/styles/contemporary_jp/bullet.gif [moved from skins/admin/defaultadmin/styles/contemporary_jp/bullet.gif with 100% similarity]
skins/admin/bookmarklet/styles/contemporary_jp/quickb-hover.jpg [moved from skins/admin/defaultadmin/styles/contemporary_jp/quickb-hover.jpg with 100% similarity]
skins/admin/bookmarklet/styles/contemporary_jp/quickb.jpg [moved from skins/admin/defaultadmin/styles/contemporary_jp/quickb.jpg with 100% similarity]
skins/admin/bookmarklet/styles/logo.gif [moved from skins/admin/defaultadmin/styles/logo.gif with 100% similarity]
skins/admin/bookmarklet/styles/manual.css [moved from skins/admin/defaultadmin/styles/manual.css with 92% similarity]
skins/admin/bookmarklet/styles/popups.css [moved from skins/admin/defaultadmin/styles/popups.css with 92% similarity]
skins/admin/bookmarklet/styles/quickb-hover.jpg [moved from skins/admin/defaultadmin/styles/quickb-hover.jpg with 100% similarity]
skins/admin/bookmarklet/styles/quickb.jpg [moved from skins/admin/defaultadmin/styles/quickb.jpg with 100% similarity]
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 [new file with mode: 0644]
skins/admin/default/javascripts/admin.js [new file with mode: 0644]
skins/admin/default/javascripts/bookmarklet.js [new file with mode: 0644]
skins/admin/default/javascripts/compatibility.js [new file with mode: 0644]
skins/admin/default/javascripts/edit.js [new file with mode: 0644]
skins/admin/default/javascripts/index.html [new file with mode: 0644]
skins/admin/default/javascripts/numbercheck.js [new file with mode: 0644]
skins/admin/default/javascripts/opennew.js [new file with mode: 0644]
skins/admin/default/javascripts/templateEdit.js [new file with mode: 0644]
skins/admin/default/javascripts/xmlhttprequest.js [new file with mode: 0644]
skins/admin/default/skinbackup.xml [moved from skins/admin/defaultadmin/skinbackup.xml with 97% similarity]
skins/admin/default/styles/addedit.css [new file with mode: 0644]
skins/admin/default/styles/admin_contemporary.css [new file with mode: 0644]
skins/admin/default/styles/admin_contemporary_jp.css [new file with mode: 0644]
skins/admin/default/styles/admin_original.css [new file with mode: 0644]
skins/admin/default/styles/background.png [new file with mode: 0644]
skins/admin/default/styles/bookmarklet.css [new file with mode: 0644]
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/contemporary_jp/background.png [new file with mode: 0644]
skins/admin/default/styles/contemporary_jp/bullet.gif [new file with mode: 0644]
skins/admin/default/styles/contemporary_jp/quickb-hover.jpg [new file with mode: 0644]
skins/admin/default/styles/contemporary_jp/quickb.jpg [new file with mode: 0644]
skins/admin/default/styles/logo.gif [new file with mode: 0644]
skins/admin/default/styles/manual.css [new file with mode: 0644]
skins/admin/default/styles/popups.css [new file with mode: 0644]
skins/admin/default/styles/quickb-hover.jpg [new file with mode: 0644]
skins/admin/default/styles/quickb.jpg [new file with mode: 0644]
skins/default/show_benchmark.inc

index 44ed150..7204bc6 100644 (file)
@@ -44,7 +44,7 @@ if ( version_compare(PHP_VERSION, '5.3.0', '<') )
 \r
 /* default installed plugins and skins */\r
 $aConfPlugsToInstall = array('NP_SecurityEnforcer', 'NP_SkinFiles');\r
-$aConfSkinsToImport = array('atom', 'rss2.0', 'rsd', 'default', 'admin/defaultadmin');\r
+$aConfSkinsToImport = array('atom', 'rss2.0', 'rsd', 'default', 'admin/default', 'admin/bookmarklet');\r
 \r
 // Check if some important files\r
 do_check_files();\r
@@ -56,14 +56,7 @@ if ( !i18n::init('UTF-8', './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>');\r
 }\r
 \r
-// check if mysql support is installed; this check may not make sense, as is, in a version past 3.5x\r
-if ( !function_exists('mysql_query') && !function_exists('mysqli_query') )\r
-{\r
-       exit('<div style="font-size: xx-large;"> Your PHP version does not have support for MySQL :( </div>');\r
-}\r
-\r
 // include core classes that are needed for login & plugin handling\r
-include_once('../nucleus/libs/mysql.php');\r
 \r
 // added for 3.5 sql_* wrapper\r
 global $MYSQL_HANDLER;\r
@@ -71,8 +64,14 @@ global $MYSQL_HANDLER;
 if ( !isset($MYSQL_HANDLER) )\r
 {\r
        $MYSQL_HANDLER = array('mysql', '');\r
+       \r
+       // check if mysql support is installed; this check may not make sense, as is, in a version past 3.5x\r
+       if ( !function_exists('mysql_query') && !function_exists('mysqli_query') )\r
+       {\r
+               exit('<div style="font-size: xx-large;"> Your PHP version does not have support for MySQL :( </div>');\r
+       }\r
 }\r
-include_once('../nucleus/libs/sql/' . $MYSQL_HANDLER[0] . '.php');\r
+include_once('../nucleus/libs/sql/sql.php');\r
 \r
 session_start();\r
 if ( count($_GET) == 0 && count($_POST) == 0 )\r
@@ -809,7 +808,7 @@ function show_install_complete_form()
 function do_install()\r
 {\r
        global $param;\r
-       global $MYSQL_HOST, $MYSQL_USER, $MYSQL_PASSWORD, $MYSQL_DATABASE, $MYSQL_PREFIX, $MYSQL_CONN;\r
+       global $MYSQL_HANDLER, $MYSQL_HOST, $MYSQL_USER, $MYSQL_PASSWORD, $MYSQL_DATABASE, $MYSQL_PREFIX, $MYSQL_CONN;\r
        global $DIR_NUCLEUS, $DIR_MEDIA, $DIR_SKINS, $DIR_PLUGINS, $DIR_LANG, $DIR_LIBS;\r
        $errors = array();\r
 \r
@@ -832,8 +831,8 @@ function do_install()
        /*\r
         * 2.open mySQL connection\r
         */\r
-       $MYSQL_CONN = @sql_connect_args($MYSQL_HOST, $MYSQL_USER, $MYSQL_PASSWORD);\r
-       if ( $MYSQL_CONN == false )\r
+       $MYSQL_CONN = @DB::setConnectionInfo($MYSQL_HANDLER[1], $MYSQL_HOST, $MYSQL_USER, $MYSQL_PASSWORD);\r
+       if ( $MYSQL_CONN == FALSE )\r
        {\r
                $errors[] = _DBCONNECT_ERROR;\r
                return $errors;\r
@@ -842,19 +841,20 @@ function do_install()
        /*\r
         * 3. try to create database if needed\r
         */\r
-       if ( !sql_query("CREATE DATABASE IF NOT EXISTS {$MYSQL_DATABASE}") )\r
+       if ( DB::execute("CREATE DATABASE IF NOT EXISTS {$MYSQL_DATABASE}") === FALSE )\r
        {\r
-               $errors[] = _INST_ERROR1 . ': ' . sql_error();\r
+               $errinfo = DB::getError();\r
+               $errors[] = _INST_ERROR1 . ': ' . $errinfo[2];\r
        }\r
 \r
        /*\r
         * 4. try to select database\r
         */\r
-       if ( !sql_select_db($MYSQL_DATABASE) )\r
+       $MYSQL_CONN = @DB::setConnectionInfo($MYSQL_HANDLER[1], $MYSQL_HOST, $MYSQL_USER, $MYSQL_PASSWORD, $MYSQL_DATABASE);\r
+       if ( !$MYSQL_CONN )\r
        {\r
                $errors[] = _INST_ERROR2;\r
        }\r
-       sql_set_charset('utf8');\r
 \r
        if ( count($errors) > 0 )\r
        {\r
@@ -889,8 +889,8 @@ function do_install()
        }\r
 \r
        // table exists check\r
-       $result = sql_query('SHOW TABLES');\r
-       while ( $row = mysql_fetch_array($result, MYSQL_NUM) )\r
+       $result = DB::getResult('SHOW TABLES');\r
+       foreach ( $result as $row )\r
        {\r
                if ( in_array($row[0], $prefixed_table_names) )\r
                {\r
@@ -919,9 +919,10 @@ function do_install()
                                $query = str_replace($table_names, $prefixed_table_names, $query);\r
                        }\r
 \r
-                       if ( !sql_query($query) )\r
+                       if ( DB::execute($query) === FALSE )\r
                        {\r
-                               $errors[] = _INST_ERROR4 . ' (<small>' . $query . '</small>): ' . sql_error();\r
+                               $errinfo = DB::getError();\r
+                               $errors[] = _INST_ERROR4 . ' (<small>' . $query . '</small>): ' . $errinfo[2];\r
                        }\r
                }\r
        }\r
@@ -930,11 +931,18 @@ function do_install()
         * 6. put needed records\r
         */\r
        /* push first post */\r
-       $query = "INSERT INTO %s VALUES (1, '%s', '%s', '%s', 1, 1, '%s', 0, 0, 0, 1, 0, 1)";\r
-       $query = sprintf($query, tableName('nucleus_item'), _1ST_POST_TITLE, _1ST_POST, _1ST_POST2, i18n::formatted_datetime('mysql', time()));\r
-       if ( !sql_query($query) )\r
+       $query = "INSERT INTO %s VALUES (1, %s, %s, %s, 1, 1, %s, 0, 0, 0, 1, 0, 1)";\r
+       $query = sprintf($query,\r
+               tableName('nucleus_item'),\r
+               DB::quoteValue(_1ST_POST_TITLE),\r
+               DB::quoteValue(_1ST_POST),\r
+               DB::quoteValue(_1ST_POST2),\r
+               DB::formatDateTime()\r
+       );\r
+       if ( DB::execute($query) === FALSE )\r
        {\r
-               $errors[] = _INST_ERROR4 . ' (<small>' . $newpost . '</small>): ' . sql_error();\r
+               $errinfo = DB::getError();\r
+               $errors[] = _INST_ERROR4 . ' (<small>' . $newpost . '</small>): ' . $errinfo[2];\r
        }\r
 \r
        /* push configurations */\r
@@ -948,41 +956,49 @@ function do_install()
        array_merge($errors, updateConfig('SiteName', $param->blog_name));\r
        array_merge($errors, updateConfig('Locale', i18n::get_current_locale()));\r
 \r
-       /* escape strings for SQL */\r
-       $user_name                      = sql_real_escape_string($param->user_name);\r
-       $user_realname          = sql_real_escape_string($param->user_realname);\r
-       $user_password          = sql_real_escape_string(md5($param->user_password));\r
-       $user_email                     = sql_real_escape_string($param->user_email);\r
-       $blog_name                      = sql_real_escape_string($param->blog_name);\r
-       $blog_shortname         = sql_real_escape_string($param->blog_shortname);\r
-       $config_indexurl        = sql_real_escape_string($param->IndexURL);\r
-\r
        /* push super admin */\r
-       $query = "UPDATE %s SET mname = '%s', mrealname = '%s', mpassword = '%s', memail = '%s', murl = '%s', madmin = 1, mcanlogin = 1 WHERE mnumber = 1";\r
-       $query = sprintf($query, tableName('nucleus_member'), $user_name, $user_realname, $user_password, $user_email, $config_indexurl);\r
-       if ( !sql_query($query) )\r
+       $query = "UPDATE %s SET mname = %s, mrealname = %s, mpassword = %s, memail = %s, murl = %s, madmin = 1, mcanlogin = 1 WHERE mnumber = 1";\r
+       $query = sprintf($query,\r
+               tableName('nucleus_member'),\r
+               DB::quoteValue($param->user_name),\r
+               DB::quoteValue($param->user_realname),\r
+               DB::quoteValue(md5($param->user_password)),\r
+               DB::quoteValue($param->user_email),\r
+               DB::quoteValue($param->IndexURL)\r
+       );\r
+       if ( DB::execute($query) === FALSE )\r
        {\r
-               $errors[] = _INST_ERROR5 . ': ' . sql_error();\r
+               $errinfo = DB::getError();\r
+               $errors[] = _INST_ERROR5 . ': ' . $errinfo[2];\r
        }\r
 \r
        /* push new weblog */\r
-       $query = "UPDATE %s SET bname = '%s', bshortname = '%s', burl = '%s' WHERE bnumber = 1";\r
-       $query = sprintf($query, tableName('nucleus_blog'), $blog_name, $blog_shortname, $config_indexurl);\r
-       if ( !sql_query($query) )\r
+       $query = "UPDATE %s SET bname = %s, bshortname = %s, burl = %s WHERE bnumber = 1";\r
+       $query = sprintf($query,\r
+               tableName('nucleus_blog'),\r
+               DB::quoteValue($param->blog_name),\r
+               DB::quoteValue($param->blog_shortname),\r
+               DB::quoteValue($param->IndexURL)\r
+       );\r
+       if ( DB::execute($query) === FALSE )\r
        {\r
-               $errors[] = _INST_ERROR6 . ': ' . sql_error();\r
+               $errinfo = DB::getError();\r
+               $errors[] = _INST_ERROR6 . ': ' . $errinfo[2];\r
        }\r
 \r
        /* push default category */\r
-       $query = "UPDATE %s SET cname = '%s', cdesc = '%s' WHERE catid = 1";\r
-       $query = sprintf($query, tableName('nucleus_category'), _GENERALCAT_NAME, _GENERALCAT_DESC);\r
-       if ( !sql_query($query) )\r
+       $query = "UPDATE %s SET cname = %s, cdesc = %s WHERE catid = 1";\r
+       $query = sprintf($query,\r
+               tableName('nucleus_category'),\r
+               DB::quoteValue(_GENERALCAT_NAME),\r
+               DB::quoteValue(_GENERALCAT_DESC)\r
+       );\r
+       if ( DB::execute($query) === FALSE )\r
        {\r
-               $errors[] = _INST_ERROR6 . ': ' . sql_error();\r
+               $errinfo = DB::getError();\r
+               $errors[] = _INST_ERROR6 . ': ' . $errinfo[2];\r
        }\r
 \r
-       sql_close();\r
-\r
        /*\r
         * 7. install default plugins and skins\r
         */\r
@@ -1006,24 +1022,28 @@ function do_install()
                {\r
                        array_merge($errors, $aSkinErrors);\r
                }\r
-               $query = "SELECT MIN(sdnumber) as result FROM %s WHERE sdname='admin/default';";\r
-               $query = sprintf($query, tableName('nucleus_skin_desc'));\r
-               $res = sql_query($query);\r
-               $obj = sql_fetch_object($res);\r
-               array_merge($errors, updateConfig('DefaultAdminSkin', $obj->result));\r
+               \r
+               $query  = "SELECT sdnumber FROM %s WHERE sdname='admin/default'";\r
+               $query  = sprintf($query, tableName('nucleus_skin_desc'));\r
+               $res    = intval(DB::getValue($query));\r
+               array_merge($errors, updateConfig('AdminSkin', $res));\r
+               \r
+               $query  = "SELECT sdnumber FROM %s WHERE sdname='admin/bookmarklet'";\r
+               $query  = sprintf($query, tableName('nucleus_skin_desc'));\r
+               $res    = intval(DB::getValue($query));\r
+               array_merge($errors, updateConfig('BookmarkletSkin', $res));\r
                \r
                $query          = "SELECT sdnumber FROM %s WHERE sdname='default'";\r
                $query          = sprintf($query, tableName('nucleus_skin_desc'));\r
-               $res            = sql_query($query);\r
-               $obj            = sql_fetch_assoc($res);\r
-               $defSkinID      = (integer) $obj['sdnumber'];\r
+               $defSkinID      = intval(DB::getValue($query));\r
 \r
                $query = "UPDATE %s SET bdefskin=%d WHERE bnumber=1";\r
                $query = sprintf($query, tableName('nucleus_blog'), $defSkinID);\r
-               sql_query($query);\r
+               DB::execute($query);\r
+               \r
                $query = "UPDATE %s SET value=%d WHERE name='BaseSkin'";\r
                $query = sprintf($query, tableName('nucleus_config'), $defSkinID);\r
-               sql_query($query);\r
+               DB::execute($query);\r
 \r
                $aPlugErrors = installCustomPlugs();\r
                if ( count($aPlugErrors) > 0 )\r
@@ -1121,28 +1141,26 @@ function canConfigFileWritable()
  */\r
 function getMySqlVersion()\r
 {\r
-       global $minimum_mysql_version, $errors;\r
+       global $MYSQL_HANDLER, $minimum_mysql_version, $errors;\r
        // Turn on output buffer\r
        // Needed to repress the output of the sql function that are\r
        // not part of php (in this case the @ operator doesn't work)\r
        ob_start();\r
 \r
        // note: this piece of code is taken from phpMyAdmin\r
-       $conn = sql_connect_args('localhost', '', '');\r
-       $result = @sql_query('SELECT VERSION() AS version', $conn);\r
+       $conn = @DB::setConnectionInfo($MYSQL_HANDLER[1], 'localhost', '', '');\r
 \r
-       if ( $result != FALSE && sql_num_rows($result) > 0 )\r
+       if ( $conn )\r
        {\r
-               $row = sql_fetch_array($result);\r
-               $match = preg_split('#\.#', $row['version']);\r
+               $row = DB::getAttribute(PDO::ATTR_SERVER_VERSION);\r
+               $match = preg_split('#\.#', $row);\r
        }\r
        else\r
        {\r
-               $result = @sql_query('SHOW VARIABLES LIKE \'version\'', $conn);\r
+               $row = @DB::getRow('SHOW VARIABLES LIKE \'version\'');\r
 \r
-               if ( $result != FALSE && @sql_num_rows($result) > 0 )\r
+               if ( $row )\r
                {\r
-                       $row = sql_fetch_row($result);\r
                        $match = preg_split('#\.#', $row[1]);\r
                }\r
                else\r
@@ -1158,7 +1176,7 @@ function getMySqlVersion()
                }\r
        }\r
 \r
-       @sql_disconnect($conn);\r
+       @DB::disConnect();\r
 \r
        //End and clean output buffer\r
        ob_end_clean();\r
@@ -1198,13 +1216,17 @@ function installCustomPlugs()
                return $aErrors;\r
        }\r
 \r
-       $res = sql_query('SELECT * FROM ' . tableName('nucleus_plugin'));\r
-       $numCurrent = sql_num_rows($res);\r
+       $query = sprintf('SELECT * FROM %s', tableName('nucleus_plugin'));\r
+       $res = DB::getResult($query);\r
+       $numCurrent = $res->rowCount();\r
 \r
        foreach ( $aConfPlugsToInstall as $plugName )\r
        {\r
-               $query = 'INSERT INTO ' . tableName('nucleus_plugin') . ' (porder, pfile) VALUES (' . (++$numCurrent) . ", '" . sql_real_escape_string($plugName) . "')";\r
-               sql_query($query);\r
+               $query = sprintf('INSERT INTO %s (porder, pfile) VALUES (%d, %s)',\r
+                       tableName('nucleus_plugin'),\r
+                       (++$numCurrent),\r
+                       DB::quoteValue($plugName));\r
+               DB::execute($query);\r
 \r
                $manager->clearCachedInfo('installedPlugins');\r
                $plugin =& $manager->getPlugin($plugName);\r
@@ -1212,7 +1234,10 @@ function installCustomPlugs()
 \r
                if ( !$plugin )\r
                {\r
-                       sql_query('DELETE FROM ' . tableName('nucleus_plugin') . " WHERE pfile = '" . sql_real_escape_string($plugName) . "'");\r
+                       $query = sprintf('DELETE FROM %s WHERE pfile = %s',\r
+                               tableName('nucleus_plugin'),\r
+                               DB::quoteValue($plugName));\r
+                       DB::execute($query);\r
                        $numCurrent--;\r
                        array_push($aErrors, sprintf(_INST_ERROR9, $plugName));\r
                        continue;\r
@@ -1220,20 +1245,25 @@ function installCustomPlugs()
                $plugin->install();\r
        }\r
 \r
-       sql_query('DELETE FROM ' . tableName('nucleus_plugin_event'));\r
-       $res = sql_query('SELECT pid, pfile FROM ' . tableName('nucleus_plugin'));\r
+       $query = sprintf('DELETE FROM %s', tableName('nucleus_plugin_event'));\r
+       DB::execute($query);\r
+       $query = sprintf('SELECT pid, pfile FROM %s', tableName('nucleus_plugin'));\r
+       $res = DB::getResult($query);\r
 \r
-       while ( $o = sql_fetch_object($res) )\r
+       foreach ( $res as $row )\r
        {\r
-               $pid = $o->pid;\r
-               $plug =& $manager->getPlugin($o->pfile);\r
+               $plug =& $manager->getPlugin($row['pfile']);\r
 \r
                if ( $plug )\r
                {\r
                        $eventList = $plug->getEventList();\r
                        foreach ( $eventList as $eventName )\r
                        {\r
-                               sql_query('INSERT INTO ' . tableName('nucleus_plugin_event') . ' (pid, event) VALUES (' . $pid . ", '" . $eventName . "')");\r
+                               $query = sprintf('INSERT INTO %s (pid, event) VALUES (%d, %s)',\r
+                                       tableName('nucleus_plugin_event'),\r
+                                       intval($row['pid']),\r
+                                       DB::quoteValue($eventName));\r
+                               DB::execute($query);\r
                        }\r
                }\r
        }\r
@@ -1319,7 +1349,6 @@ function do_check_files()
                '../nucleus/libs/MANAGER.php',\r
                '../nucleus/libs/MEDIA.php',\r
                '../nucleus/libs/MEMBER.php',\r
-               '../nucleus/libs/mysql.php',\r
                '../nucleus/libs/NOTIFICATION.php',\r
                '../nucleus/libs/PARSER.php',\r
                '../nucleus/libs/PLUGIN.php',\r
@@ -1331,7 +1360,8 @@ function do_check_files()
                '../nucleus/libs/vars4.1.0.php',\r
                '../nucleus/libs/xmlrpc.inc.php',\r
                '../nucleus/libs/xmlrpcs.inc.php',\r
-               '../nucleus/libs/sql/mysql.php'\r
+               '../nucleus/libs/sql/DB.php',\r
+               '../nucleus/libs/sql/MYSQLPDO.php'\r
        );\r
 \r
        $count = count($files);\r
@@ -1359,15 +1389,14 @@ function do_check_files()
 function updateConfig($name, $value)\r
 {\r
        $errors = array();\r
-       $name = sql_real_escape_string($name);\r
-       $value = trim(sql_real_escape_string($value));\r
 \r
-       $query = "UPDATE %s SET value = '%s' WHERE name = '%s'";\r
-       $query = sprintf($query, tableName('nucleus_config'), $value, $name);\r
+       $query = "UPDATE %s SET value = %s WHERE name = %s";\r
+       $query = sprintf($query, tableName('nucleus_config'), DB::quoteValue(trim($value)), DB::quoteValue($name));\r
 \r
-       if ( !sql_query($query) )\r
+       if ( DB::execute($query) === FALSE )\r
        {\r
-               $errors[] = _INST_ERROR4 . ': ' . sql_error();\r
+               $errinfo = DB::getError();\r
+               $errors[] = _INST_ERROR4 . ': ' . $errinfo[2];\r
        }\r
        return $errors;\r
 }\r
@@ -1490,6 +1519,8 @@ class ParamManager
 \r
        public function check_mysql_parameters()\r
        {\r
+               global $MYSQL_HANDLER;\r
+               \r
                $parameters = array('mysql_host', 'mysql_user', 'mysql_password', 'mysql_database', 'mysql_tablePrefix');\r
                $this->read_parameter($parameters);\r
 \r
@@ -1529,14 +1560,14 @@ class ParamManager
                \r
                if ( count($errors) == 0 )\r
                {\r
-                       $mysql_conn = @sql_connect_args($this->mysql_host, $this->mysql_user, $this->mysql_password);\r
+                       $mysql_conn = @DB::setConnectionInfo($MYSQL_HANDLER[1], $this->mysql_host, $this->mysql_user, $this->mysql_password);\r
                        if ( $mysql_conn == false )\r
                        {\r
                                $errors[] = _DBCONNECT_ERROR;\r
                        }\r
                        else\r
                        {\r
-                               @sql_disconnect($mysql_conn);\r
+                               @DB::disConnect();\r
                        }\r
                }\r
 \r
index c12e5cd..0a6bb60 100644 (file)
@@ -115,7 +115,8 @@ INSERT INTO nucleus_config VALUES ('DatabaseVersion', '350');
 INSERT INTO nucleus_config VALUES ('DebugVars', '0');\r
 INSERT INTO nucleus_config VALUES ('DefaultListSize', '10');\r
 INSERT INTO nucleus_config VALUES ('AdminCSS', 'original');\r
-INSERT INTO nucleus_config VALUES ('DefaultAdminSkin', '0');\r
+INSERT INTO nucleus_config VALUES ('AdminSkin', '0');\r
+INSERT INTO nucleus_config VALUES ('BookmarkletSkin', '0');\r
 \r
 CREATE TABLE nucleus_item (\r
   inumber int(11) NOT NULL auto_increment,\r
index 13d30d5..4b3f5c9 100644 (file)
@@ -26,7 +26,7 @@ $CONF['UsingAdminArea'] = 1;
 include('../config.php');
 
 // get skin object
-$skinid = $CONF['DefaultBookmarkletSkin'];
+$skinid = $CONF['BookmarkletSkin'];
 if ( !Skin::existsID($skinid) )
 {
        echo _ERROR_SKIN;
@@ -127,6 +127,8 @@ function bm_doAddItem($skin)
        bm_message($skin, _ITEM_ADDED, _ITEM_ADDED, $message,$extrahead);
        
        return;
+       
+       return;
 }
 
 function bm_doEditItem($skin)
@@ -238,12 +240,13 @@ function bm_loginAndPassThrough($skin, $action='add')
        $skin->parse('showlogin');
        $skin->parse('pagefoot');
        
+       
        return;
 }
 
 function bm_doShowForm($skin)
 {
-       global $member;
+       global $manager, $member;
        
        $blogid                 = intRequestVar('blogid');
        $log_text               = trim(requestVar('logtext'));
@@ -254,6 +257,10 @@ function bm_doShowForm($skin)
        {
                bm_doError(_ERROR_NOSUCHBLOG);
        }
+       else
+       {
+               $blog =& $manager->getBlog($blogid);
+       }
        
        if ( !$member->isTeamMember($blogid) )
        {
@@ -277,8 +284,9 @@ function bm_doShowForm($skin)
                $logje .= '<a href="' . Entity::hsc($log_link) . '">' . Entity::hsc($log_linktitle) . '</a>';
        }
        
-       $item['body'] = $logje;
-       $item['title'] = Entity::hsc($log_linktitle);
+       $variables = array();
+       $variables['body'] = $logje;
+       $variables['title'] = Entity::hsc($log_linktitle);
        
        /* TODO: $itemを渡す */
        $skin->parse('pagehead');
@@ -304,15 +312,15 @@ function bm_doEditForm($skin)
                bm_doError(_ERROR_DISALLOWED);
        }
        
-       $item =& $manager->getItem($itemid, 1, 1);
+       $variables =& $manager->getItem($itemid, 1, 1);
        $blog =& $manager->getBlog(getBlogIDFromItemID($itemid) );
        
-       $manager->notify('PrepareItemForEdit', array('item' => &$item) );
+       $manager->notify('PrepareItemForEdit', array('item' => &$variables) );
        
        if ( $blog->convertBreaks() )
        {
-               $item['body'] = removeBreaks($item['body']);
-               $item['more'] = removeBreaks($item['more']);
+               $variables['body'] = removeBreaks($variables['body']);
+               $variables['more'] = removeBreaks($variables['more']);
        }
        
        /* TODO: $itemを渡す */
@@ -320,8 +328,7 @@ function bm_doEditForm($skin)
        $skin->parse('createitem');
        $skin->parse('pagefoot');
        
-       return;
-}
+       return;}
 
 function bm_doError($skin, $msg)
 {
@@ -336,13 +343,13 @@ function bm_message($skin, $title, $head, $msg, $extrahead = '')
        $skin->parse('adminerrorpage');
        $skin->parse('pagefoot');
        
+       
        return;
 }
 
 function bm_doContextMenuCode($width=600, $height=500)
 {
-       global $CONF;
-       
+       global $CONF;   
        $blogid = (integer) intGetVar('blogid');
        
        echo "<script type=\"text/javascript\" defer=\"defer\">\n";
index a1d18de..045cbdb 100644 (file)
@@ -283,9 +283,10 @@ class BlogImport {
                switch($what) {
 // ----------------------------------------------------------------------------------------
                        case 'NucleusMemberOptions':
-                               $res = sql_query('SELECT mname as text, mnumber as value FROM '.sql_table('member'));
-                               while ($o = mysql_fetch_object($res)) {
-                                       echo '<option value="'.Entity::hsc($o->value).'">'.Entity::hsc($o->text).'</option>';
+                               $res = DB::getResult('SELECT mname as text, mnumber as value FROM '.sql_table('member'));
+                               foreach ( $res as $row )
+                               {
+                                       echo '<option value="'.Entity::hsc($row['value']).'">'.Entity::hsc($row['text']).'</option>';
                                }
                                break;
 // ----------------------------------------------------------------------------------------
@@ -795,33 +796,39 @@ 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)";
 
-               mysql_query($query) or die("Error while executing query: " . $query);
+               if ( DB::execute($query) === FALSE )
+               {
+                       die('Error while executing query: ' . $query);
+               }
 
-               return mysql_insert_id();
+               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
-               mysql_query('INSERT INTO '.sql_table('category')." (CNAME, CDESC) VALUES ('General','Items that do not fit in another category')");
-               $defcat = mysql_insert_id();
+               DB::execute('INSERT INTO '.sql_table('category')." (CNAME, CDESC) VALUES ('General','Items that do not fit in another category')");
+               $defcat = DB::getInsertId();
 
-               $query = 'INSERT INTO '.sql_table('blog')." (BNAME, BSHORTNAME, BCOMMENTS, BMAXCOMMENTS, BDEFCAT) VALUES ('$name','$shortname',1 ,0, $defcat)";
-               mysql_query($query) or die("Error while executing query: " . $query);
-               $id = mysql_insert_id();
+               $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);
+               }
+               $id = DB::getInsertId();
 
                // update category row so it links to blog
-               mysql_query('UPDATE ' . sql_table('category') . ' SET cblog=' . intval($id). ' WHERE catid=' . intval($defcat));
+               DB::execute('UPDATE ' . sql_table('category') . ' SET cblog=' . intval($id). ' WHERE catid=' . intval($defcat));
 
                BlogImport::sql_addToTeam($id,$ownerid,1);
 
@@ -830,20 +837,23 @@ 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)";
 
-               mysql_query($query) or die("Error while executing query: " . $query);
+               if ( DB::execute($query) === FALSE )
+               {
+                       die('Error while executing query: ' . $query);
+               }
 
-               return mysql_insert_id();
+               return DB::getInsertId();
        }
 
        function sql_addToTeam($blogid, $memberid, $admin) {
@@ -851,13 +861,14 @@ class BlogImport {
                $query = 'INSERT INTO '.sql_table('team').' (TMEMBER, TBLOG, TADMIN) '
                           . "VALUES ($memberid, $blogid, $admin)";
 
-               mysql_query($query) or die("Error while executing query: " . $query);
+               if ( DB::execute($query) === FALSE )
+               {
+                       die('Error while executing query: ' . $query);
+               }
 
-               return mysql_insert_id();
+               return DB::getInsertId();
        }
 
-
-
 }
 
 // some sort of version checking
@@ -882,53 +893,61 @@ 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)";
 
-               mysql_query($query) or die("Error while executing query: " . $query);
+               if ( DB::execute($query) === FALSE )
+               {
+                       die('Error while executing query: ' . $query);
+               }
 
-               return mysql_insert_id();
+               return DB::getInsertId();
        }
 
 
        // 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
-               mysql_query('INSERT INTO '.sql_table('category')." (CNAME, CDESC) VALUES ('General','Items that do not fit in another categort')");
-               $defcat = mysql_insert_id();
+               DB::execute('INSERT INTO '.sql_table('category')." (CNAME, CDESC) VALUES ('General','Items that do not fit in another categort')");
+               $defcat = DB::getInsertId();
 
-               $query = 'INSERT INTO '.sql_table('blog')." (BNAME, BSHORTNAME, BCOMMENTS, BMAXCOMMENTS, BDEFCAT) VALUES ('$name','$shortname',1 ,0, $defcat)";
-               mysql_query($query) or die("Error while executing query: " . $query);
-               $id = mysql_insert_id();
+               $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);
+               }
+               $id = DB::getInsertId();
 
                convert_addToTeam($id,$ownerid,1);
 
-
                return $id;
        }
 
        // 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)";
 
-               mysql_query($query) or die("Error while executing query: " . $query);
+               if ( DB::execute($query) === FALSE )
+               {
+                       die("Error while executing query: " . $query);
+               }
 
-               return mysql_insert_id();
+               return DB::getInsertId();
        }
 
        // TODO: remove this function (replaced by BlogImport::sql_addToTeam)
@@ -937,9 +956,12 @@ if ($ver > 250)
                $query = 'INSERT INTO '.sql_table('team').' (TMEMBER, TBLOG, TADMIN) '
                           . "VALUES ($memberid, $blogid, $admin)";
 
-               mysql_query($query) or die("Error while executing query: " . $query);
-
-               return mysql_insert_id();
+               if ( DB::execute($query) === FALSE )
+               {
+                       die("Error while executing query: " . $query);
+               }
+               
+               return DB::getInsertId();
        }
 
        function convert_showLogin($type) {
index a35330b..9e5a78c 100644 (file)
 /*
   v1.1 - add robustness code for category creation and item adding (admun)
   v1.2 - add sql_table()
-*/
+ */
 
 include("../../config.php");
 
   function def($s){ 
     if (isset($_POST[$s])) 
-      echo addslashes(stripslashes($_POST[$s])); 
+      echo Entity::hsc($_POST[$s]); 
     else {
       if (i18n::strpos($s,'host')!==FALSE) echo "localhost";
       if (i18n::strpos($s,'username')!==FALSE) echo "root";
@@ -104,130 +104,148 @@ a:hover{text-decoration:underline}
 <body>
   <div id='content'>
   <h1><small>WordPress &raquo;&raquo;</small> Nucleus CMS <small>&raquo;&raquo; convertor</small></h1>
-
 <?php
-  if (!isset($_POST['convert'])) {
+if ( !isset($_POST['convert']) )
+{
 ?>
   <p>This tool will convert your <a href='http://wordpress.org/'>WordPress blog</a> (tested w/ 3.1.x), into <a href='http://nucleuscms.org'> Nucleus CMS weblog</a>. First, install Nucleus, in a default install, and only after that run this tool. It will transfer all categories, posts, and comments into blog #1.</p>
 <?php
-  } else {
+}
+else
+{
 
-    $isok=true;
-    
-    // connect to WordPress database
-       $linkwp = @mysql_connect($_POST['wphost'],$_POST['wpusername'],$_POST['wppassword'],true);
-    if($linkwp==false) 
-      error("Cannot connect to WordPress DB..");
-    else {
-         @mysql_select_db($_POST['wpdatabase'],$linkwp) or error("Cannot select WordPress DB...");
-       }
-       
-    // 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>";
+       $isok = true;
 
-      /* *********************************************** */
-      echo "<h2>Transfering categories...</h2>";
-      mysql_query("delete from ". sql_table('category') . " where cdesc='@wordpress'",$linkblogcms);
-      $q = mysql_query("SELECT count(*) as result FROM " . sql_table('category'));
-      $total_row = mysql_fetch_object($q);
-      $total_num = $total_row->result;
-      $catdd = $total_num;
-      $total_num++;
+       // connect to WordPress database
+       $linkwp = @mysql_connect($_POST['wphost'], $_POST['wpusername'], $_POST['wppassword'], true);
+       if ( $linkwp == false )
+               error("Cannot connect to WordPress DB..");
+       else
+       {
+               @mysql_select_db($_POST['wpdatabase'], $linkwp) or error("Cannot select WordPress DB...");
+       }
 
-      $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=
-          "INSERT INTO " . sql_table('category') .
-          " (catid,cblog,cname,cdesc)  values (".
-          intval($total_num).",1,'".encoding($row->name)."','@wordpress')";
-        $result = mysql_query($query,$linkblogcms) or die($query);
-        $total_num++;
-      }
-      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...");
+       }
+        */
 
-      /* *********************************************** */
-      echo "<h2>Transfering posts and comments...</h2>";
-      mysql_query("delete from " . sql_table('comment') . " where chost='@wordpress'",$linkblogcms);
-      $query="select * from ".$prefixwp."posts where post_status='publish' order by ID";
-      $querywp=mysql_query($query,$linkwp) or die($query);
-      echo "<p>rows to transfer: ".mysql_num_rows($querywp)."</p>";
-      echo "<p>";
-      $i=1;
-      while ($row=mysql_fetch_object($querywp)) {
-        echo $i++.", ";
-               // find category
-               $query = 'select * from '.$prefixwp.'term_relationships, '.$prefixwp.'term_taxonomy where '.$prefixwp.'term_relationships.term_taxonomy_id='.$prefixwp.'term_taxonomy.term_taxonomy_id and object_id='.$row->ID.' and '.$prefixwp.'term_taxonomy.taxonomy=\'category\' limit 1';
-               $catwp = mysql_query($query, $linkwp) or die($query);
-               $category = mysql_fetch_object($catwp);
-               $cat = $cate_map[$category->term_id];
-               if (empty($cat)) $cat = 1;
+       if ( !$isok )
+       {
+               echo "<p>Please correct these errors first!</p><hr />";
+       }
+       else
+       {
+               /*                 */
+               /* transfer data ! */
+               /*                 */
+               $prefixwp = $_POST['wpprefix'];
 
-        // insert post
-        $query=
-          "INSERT INTO " . sql_table('item') . " ".
-          "(ititle,ibody,iblog,iauthor,itime,icat) values (".
-          "'".addslashes(encoding($row->post_title))."','".addslashes(paragraph(encoding(stripslashes($row->post_content)),false))."',1,1,'".$row->post_date."',$cat)";
-        $result = mysql_query($query,$linkblogcms) or die($query);
-        $itemid=mysql_insert_id($linkblogcms);
+               /* *********************************************** */
+               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>";
 
-        // insert comments
-        $query="select * from ".$prefixwp."comments where comment_post_ID=".$row->ID;
-        $querywp_detail=mysql_query($query,$linkwp) or die($query);
-        while ($row_detail=mysql_fetch_object($querywp_detail)) {
-          $url=$row_detail->comment_author_email;
-          if (!empty($row_detail->comment_author_url)) $url=$row_detail->comment_author_url;
-          $query=
-            "INSERT INTO " . sql_table('comment') .
-            " (cbody,cuser,cmail,cmember,citem,ctime,cip,cblog,chost) values (".
-              "'".addslashes(paragraph(encoding(strip_tags(stripslashes($row_detail->comment_content))),true))."',".
-              "'".encoding($row_detail->comment_author)."',".
-              "'$url',".
-              "0,".
-              "$itemid,".
-              "'".$row_detail->comment_date."',".
-              "'".$row_detail->comment_author_IP."',".
-              "1,".
-              "'@wordpress')";
-          $result = mysql_query($query,$linkblogcms) or die($query);
-        }
-      }
-      echo "</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++;
 
-      // done
-      echo "<h2>Done! Enjoy your stay in Nucleus</h2>";
-      die;
-    }
+               $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>";
+
+               /* *********************************************** */
+               echo "<h2>Transfering posts and comments...</h2>";
+               DB::execute("DELETE FROM " . sql_table('comment') . " WHERE chost='@wordpress'");
+               $query = "SELECT * FROM " . $prefixwp . "posts WHERE post_status='publish' ORDER BY ID";
+               $querywp = mysql_query($query, $linkwp) or die($query);
+               echo "<p>rows to transfer: " . mysql_num_rows($querywp) . "</p>";
+               echo "<p>";
+               $i = 1;
+               while ( $row = mysql_fetch_object($querywp) )
+               {
+                       echo $i++ . ", ";
+                       // find category
+                       $query = 'SELECT * FROM ' . $prefixwp . 'term_relationships, ' . $prefixwp . 'term_taxonomy WHERE ' . $prefixwp
+                               . 'term_relationships.term_taxonomy_id=' . $prefixwp . 'term_taxonomy.term_taxonomy_id AND object_id=' . $row->ID . ' AND '
+                               . $prefixwp . 'term_taxonomy.taxonomy=\'category\' LIMIT 1';
+                       $catwp = mysql_query($query, $linkwp) or die($query);
+                       $category = mysql_fetch_object($catwp);
+                       $cat = $cate_map[$category->term_id];
+                       if ( empty($cat) ) $cat = 1;
 
+                       // insert post
+                       $query = sprintf("INSERT INTO %s (ititle,ibody,iblog,iauthor,itime,icat) VALUES (%s,%s,1,1,'%s',%d)"
+                               , sql_table('item')
+                               , DB::quoteValue(encoding($row->post_title))
+                               , DB::quoteValue(paragraph(encoding(stripslashes($row->post_content)), false))
+                               , $row->post_date
+                               , $cat);
+                       if ( DB::execute($query) === FALSE )
+                       {
+                               die($query);
+                       }
+                       $itemid = DB::getInsertId();
+
+                       // insert comments
+                       $query = "SELECT * FROM " . $prefixwp . "comments WHERE comment_post_ID=" . $row->ID;
+                       $querywp_detail = mysql_query($query, $linkwp) or die($query);
+                       while ( $row_detail = mysql_fetch_object($querywp_detail) )
+                       {
+                               $url = $row_detail->comment_author_email;
+                               if ( !empty($row_detail->comment_author_url) ) $url = $row_detail->comment_author_url;
+                               $query = sprintf("INSERT INTO %s (cbody,cuser,cmail,cmember,citem,ctime,cip,cblog,chost)"
+                                       . " VALUES (%s,%s,%s,0,%d,'%s',%s,1,'@wordpress')"
+                                       , sql_table('comment')
+                                       , DB::quoteValue(paragraph(encoding(strip_tags(stripslashes($row_detail->comment_content))), true))
+                                       , encoding($row_detail->comment_author)
+                                       , DB::quoteValue($url)
+                                       , $itemid
+                                       , $row_detail->comment_date
+                                       , DB::quoteValue($row_detail->comment_author_IP));
+                               if ( DB::execute($query) === FALSE )
+                               {
+                                       die($query);
+                               }
+                       }
+               }
+               echo "</p>";
+
+               // done
+               echo "<h2>Done! Enjoy your stay in Nucleus</h2>";
+               die;
        }
+
+}
 ?>
   <form method='post' action='./wordpress.php'>
 
index 3d6bcc4..c1cc3c0 100644 (file)
@@ -329,16 +329,15 @@ function isCaretEmpty() {
 
 function BtnHighlight(el) {
        with(el.style){
-               borderLeft="1px solid gray";
-               borderRight="1px solid #e9e9e9";
-               borderTop="1px solid gray";
-               borderBottom="1px solid #e9e9e9";
+               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";
        }
 }
index 2c5373d..a7c7055 100644 (file)
@@ -48,11 +48,9 @@ class ActionLog
                        $message = "[" . $member->getDisplayName() . "] " . $message;\r
                }\r
                \r
-               $message = sql_real_escape_string($message);            // add slashes\r
-               $timestamp = date("Y-m-d H:i:s",time());        // format timestamp\r
-               $query = "INSERT INTO %s (timestamp, message) VALUES ('%s', '%s')";\r
-               $query = sprintf($query, sql_table('actionlog'), $timestamp, $message);\r
-               sql_query($query);\r
+               $query = "INSERT INTO %s (timestamp, message) VALUES (%s, %s)";\r
+               $query = sprintf($query, sql_table('actionlog'), DB::formatDateTime(), DB::quoteValue($message));\r
+               DB::execute($query);\r
                \r
                self::trimLog();\r
                return;\r
@@ -64,11 +62,11 @@ class ActionLog
        function clear() {\r
                global $manager;\r
 \r
-               $query = 'DELETE FROM ' . sql_table('actionlog');\r
+               $query = sprintf('DELETE FROM %s', sql_table('actionlog'));\r
 \r
                $manager->notify('ActionLogCleared',array());\r
 \r
-               return sql_query($query);\r
+               return DB::execute($query) !== FALSE;\r
        }\r
 \r
        /**\r
@@ -83,14 +81,18 @@ class ActionLog
                // trim\r
                $checked = 1;\r
 \r
-               $iTotal = quickQuery('SELECT COUNT(*) AS result FROM ' . sql_table('actionlog'));\r
+               $query = sprintf('SELECT COUNT(*) AS result FROM %s', sql_table('actionlog'));\r
+               $iTotal = DB::getValue($query);\r
 \r
                // if size > 500, drop back to about 250\r
                $iMaxSize = 500;\r
                $iDropSize = 250;\r
                if ($iTotal > $iMaxSize) {\r
-                       $tsChop = quickQuery('SELECT timestamp as result FROM ' . sql_table('actionlog') . ' ORDER BY timestamp DESC LIMIT '.$iDropSize.',1');\r
-                       sql_query('DELETE FROM ' . sql_table('actionlog') . ' WHERE timestamp < \'' . $tsChop . '\'');\r
+                       $query = sprintf('SELECT timestamp as result FROM %s ORDER BY timestamp DESC LIMIT %d,1',\r
+                               sql_table('actionlog'), intval($iDropSize));\r
+                       $tsChop = DB::getValue($query);\r
+                       $query = sprintf("DELETE FROM %s WHERE timestamp < '%s'", sql_table('actionlog'), $tsChop);\r
+                       DB::execute($query);\r
                }\r
 \r
        }\r
index 5d5bc48..9306a05 100644 (file)
@@ -631,7 +631,7 @@ class Actions extends BaseActions
                                }\r
                                if ( $sqlquery )\r
                                {\r
-                                       $iAmountOnPage = intval(quickQuery($sqlquery)) - intval($startpos);\r
+                                       $iAmountOnPage = intval(DB::getValue($sqlquery)) - intval($startpos);\r
                                }\r
                        }\r
                        \r
@@ -1129,19 +1129,6 @@ class Actions extends BaseActions
        }\r
        \r
        /**\r
-        * Actions::parse_charset()\r
-        * Parse skinvar charset\r
-        * \r
-        * @param       void\r
-        * @return      void\r
-        */\r
-       public function parse_charset()\r
-       {\r
-               echo i18n::get_current_charset();\r
-               return;\r
-       }\r
-       \r
-       /**\r
         * Actions::parse_commentform()\r
         * Parse skinvar commentform\r
         * \r
index 36b8b6c..6e4c1db 100644 (file)
@@ -149,7 +149,7 @@ class Admin
                global $CONF, $DIR_LIBS;\r
                \r
                /* NOTE: 1. decide which skinid to use */\r
-               $skinid = $CONF['DefaultAdminSkin'];\r
+               $skinid = $CONF['AdminSkin'];\r
                /*\r
                 * NOTE: this is temporary escaped because not implemented yet\r
                if (isset($member) && $member->isLoggedIn())\r
@@ -243,9 +243,9 @@ class Admin
                {\r
                        self::error(_BADACTION . ENTITY::hsc($action));\r
                }\r
-               elseif ( $id != $CONF['DefaultAdminSkin'] )\r
+               elseif ( $id != $CONF['AdminSkin'] )\r
                {\r
-                       self::$skin = new Skin($CONF['DefaultAdminSkin']);\r
+                       self::$skin = new Skin($CONF['AdminSkin']);\r
                        if ( self::$skin && self::existsSkinContents('adminerrorpage') )\r
                        {\r
                                self::error(_BADACTION . ENTITY::hsc($action));\r
@@ -275,16 +275,16 @@ class Admin
                }\r
                else\r
                {\r
-                       $query = "SELECT scontent as result FROM %s WHERE sdesc=%d AND stype='%s';";\r
+                       $query = "SELECT scontent as result FROM %s WHERE sdesc=%d AND stype=%s";\r
                        /* TODO: skinid should be a default */\r
                        if ( !is_object(self::$skin) )\r
                        {\r
                                global $CONF;\r
-                               return quickQuery(sprintf($query, sql_table('skin'), $CONF['DefaultAdminSkin'], sql_real_escape_string($action)));\r
+                               return DB::getValue(sprintf($query, sql_table('skin'), $CONF['AdminSkin'], DB::quoteValue($action)));\r
                        }\r
                        else\r
                        {\r
-                               return quickQuery(sprintf($query, sql_table('skin'), self::$skin->getID(), sql_real_escape_string($action)));\r
+                               return DB::getValue(sprintf($query, sql_table('skin'), self::$skin->getID(), DB::quoteValue($action)));\r
                        }\r
                }\r
                return;\r
@@ -299,9 +299,9 @@ class Admin
         */\r
        static private function specialActionsAllow($action)\r
        {\r
-               $query = "SELECT sdesc as result FROM %s WHERE  sdesc = %d AND stype = '%s';";\r
-               $query = sprintf($query, sql_table('skin'), (integer) self::$skin->id, sql_real_escape_string($action));\r
-               return quickQuery($query);\r
+               $query = "SELECT sdesc as result FROM %s WHERE  sdesc = %d AND stype = %s";\r
+               $query = sprintf($query, sql_table('skin'), (integer) self::$skin->id, DB::quoteValue($action));\r
+               return DB::getValue($query);\r
        }\r
        \r
        /**\r
@@ -715,12 +715,12 @@ class Admin
                        $query = sprintf($query, sql_table('blog'), sql_table('team'), (integer) $member->getID());\r
                }\r
                \r
-               $rblogids = sql_query($query);\r
-               while ($o = sql_fetch_object($rblogids))\r
+               $rblogids = DB::getResult($query);\r
+               foreach ( $rblogids as $row )\r
                {\r
-                       if ( $o->bnumber != $iForcedBlogInclude )\r
+                       if ( $row['bnumber'] != $iForcedBlogInclude )\r
                        {\r
-                               $aBlogIds[] = intval($o->bnumber);\r
+                               $aBlogIds[] = intval($row['bnumber']);\r
                        }\r
                }\r
                \r
@@ -998,7 +998,7 @@ class Admin
                        $item = Item::getItem($itemid, 0, 0);\r
                        $query = "SELECT COUNT(*) FROM %s WHERE unix_timestamp(itime) <= '%s';";\r
                        $query = sprintf($query, sql_table('item'), $item['timestamp']);\r
-                       $cnt  = quickQuery($query);\r
+                       $cnt  = DB::getValue($query);\r
                        $_REQUEST['start'] = $cnt + 1;\r
                        self::action_itemlist(getBlogIDFromItemID($itemid));\r
                }\r
@@ -1102,9 +1102,9 @@ class Admin
                \r
                $query = "SELECT * FROM %s WHERE iblog=%d AND iposted=0 AND itime>'%s'";\r
                $query = sprintf($query, sql_table('item'), (integer) $blogid, i18n::formatted_datetime('mysql', $currenttime));\r
-               $result = sql_query($query);\r
+               $result = DB::getResult($query);\r
                \r
-               if ( sql_num_rows($result) > 0 )\r
+               if ( $result->rowCount() > 0 )\r
                {\r
                                $blog->setFuturePost();\r
                }\r
@@ -1314,17 +1314,15 @@ class Admin
                );\r
                $manager->notify('PreUpdateComment', $data);\r
                \r
-               $query = "UPDATE %s SET cmail='%s', cemail='%s', cbody='%s' WHERE cnumber=%d;";\r
-               $query = sprintf($query, sql_table('comment'), sql_real_escape_string($url), sql_real_escape_string($email), sql_real_escape_string($body), (integer) $commentid);\r
-               sql_query($query);\r
+               $query = "UPDATE %s SET cmail=%s, cemail=%s, cbody=%s WHERE cnumber=%d;";\r
+               $query = sprintf($query, sql_table('comment'), DB::quoteValue($url), DB::quoteValue($email), DB::quoteValue($body), (integer) $commentid);\r
+               DB::execute($query);\r
                \r
                // get itemid\r
                $query = "SELECT citem FROM %s WHERE cnumber=%d;";\r
                $query = sprintf($query, sql_table('comment'), (integer) $commentid);\r
                \r
-               $res    = sql_query($query);\r
-               $o              = sql_fetch_object($res);\r
-               $itemid = $o->citem;\r
+               $itemid = DB::getValue($query);\r
                \r
                if ( $member->canAlterItem($itemid) )\r
                {\r
@@ -1373,9 +1371,7 @@ class Admin
                $query = "SELECT citem FROM %s WHERE cnumber=%d;";\r
                $query = sprintf($query, sql_table('comment'), (integer) $commentid);\r
                \r
-               $res = sql_query($query);\r
-               $o = sql_fetch_object($res);\r
-               $itemid = $o->citem;\r
+               $itemid = DB::getValue($query);\r
                \r
                $error = self::deleteOneComment($commentid);\r
                if ( $error )\r
@@ -1420,7 +1416,7 @@ class Admin
                // delete the comments associated with the item\r
                $query = "DELETE FROM %s WHERE cnumber=%d;";\r
                $query = sprintf($query, sql_table('comment'), (integer) $commentid);\r
-               sql_query($query);\r
+               DB::execute($query);\r
                \r
                $data = array(\r
                        'commentid' => $commentid\r
@@ -1589,8 +1585,8 @@ class Admin
                        ||      (!$canlogin && $mem->isAdmin() && $mem->canLogin())\r
                        )\r
                {\r
-                       $r = sql_query('SELECT * FROM '.sql_table('member').' WHERE madmin=1 and mcanlogin=1');\r
-                       if ( sql_num_rows($r) < 2 )\r
+                       $r = DB::getResult('SELECT * FROM '.sql_table('member').' WHERE madmin=1 and mcanlogin=1');\r
+                       if ( $r->rowCount() < 2 )\r
                        {\r
                                self::error(_ERROR_ATLEASTONEADMIN);\r
                        }\r
@@ -1989,8 +1985,8 @@ class Admin
                        // (check for at least two admins before deletion)\r
                        $query = "SELECT * FROM %s WHERE tblog=%d and tadmin=1;";\r
                        $query = sprintf($query, sql_table('team'), (integer) $blogid);\r
-                       $r     = sql_query($query);\r
-                       if ( sql_num_rows($r) < 2 )\r
+                       $r     = DB::getResult($query);\r
+                       if ( $r->rowCount() < 2 )\r
                        {\r
                                return _ERROR_ATLEASTONEBLOGADMIN;\r
                        }\r
@@ -1998,7 +1994,7 @@ class Admin
                \r
                $query = "DELETE FROM %s WHERE tblog=%d AND tmember=%d;";\r
                $query = sprintf($query, sql_table('team'), (integer) $blogid, (integer) $memberid);\r
-               sql_query($query);\r
+               DB::execute($query);\r
                \r
                $data = array(\r
                        'member' => &$tmem,\r
@@ -2032,8 +2028,8 @@ class Admin
                {\r
                        $query = "SELECT * FROM %s WHERE tblog=%d AND tadmin=1;";\r
                        $query = sprintf($query, sql_table('team'), (integer) $blogid);\r
-                       $r = sql_query($query);\r
-                       if ( sql_num_rows($r) == 1 )\r
+                       $r = DB::getResult($query);\r
+                       if ( $r->rowCount() == 1 )\r
                        {\r
                                self::error(_ERROR_ATLEASTONEBLOGADMIN);\r
                        }\r
@@ -2050,7 +2046,7 @@ class Admin
                \r
                $query = "UPDATE %s SET tadmin=%d WHERE tblog=%d and tmember=%d;";\r
                $query = sprintf($query, (integer) $blogid, (integer) $newval, (integer) $blogid, (integer) $memberid);\r
-               sql_query($query);\r
+               DB::execute($query);\r
                \r
                // only show manageteam if member did not change its own admin privileges\r
                if ( $member->isBlogAdmin($blogid) )\r
@@ -2110,10 +2106,10 @@ class Admin
                        self::error(_ERROR_BADCATEGORYNAME);\r
                }\r
                \r
-               $query = "SELECT * FROM %s WHERE cname='%s' AND cblog=%d;";\r
-               $query = sprintf($query, sql_table('category'), sql_real_escape_string($cname), (integer) $blogid);\r
-               $res = sql_query($query);\r
-               if ( sql_num_rows($res) > 0 )\r
+               $query = "SELECT * FROM %s WHERE cname=%s AND cblog=%d;";\r
+               $query = sprintf($query, sql_table('category'), DB::quoteValue($cname), (integer) $blogid);\r
+               $res = DB::getResult($query);\r
+               if ( $res->rowCount() > 0 )\r
                {\r
                        self::error(_ERROR_DUPCATEGORYNAME);\r
                }\r
@@ -2188,17 +2184,17 @@ class Admin
                        self::error(_ERROR_BADCATEGORYNAME);\r
                }\r
                \r
-               $query  = "SELECT * FROM %s WHERE cname='%s' AND cblog=%d AND not(catid=%d);";\r
-               $query  = sprintf($query, sql_table('category'), sql_real_escape_string($cname), (integer) $blogid, (integer) $catid);\r
-               $res    = sql_query($query);\r
-               if ( sql_num_rows($res) > 0 )\r
+               $query  = "SELECT * FROM %s WHERE cname=%s AND cblog=%d AND not(catid=%d);";\r
+               $query  = sprintf($query, sql_table('category'), DB::quoteValue($cname), (integer) $blogid, (integer) $catid);\r
+               $res    = DB::getResult($query);\r
+               if ( $res->rowCount() > 0 )\r
                {\r
                        self::error(_ERROR_DUPCATEGORYNAME);\r
                }\r
                \r
-               $query =  "UPDATE %s SET cname='%s', cdesc='%s' WHERE catid=%d;";\r
-               $query = sprintf($query, sql_table('category'), sql_real_escape_string($cname), sql_real_escape_string($cdesc), (integer) $catid);\r
-               sql_query($query);\r
+               $query =  "UPDATE %s SET cname=%s, cdesc=%s WHERE catid=%d;";\r
+               $query = sprintf($query, sql_table('category'), DB::quoteValue($cname), DB::quoteValue($cdesc), (integer) $catid);\r
+               DB::execute($query);\r
                \r
                // store plugin options\r
                $aOptions = requestArray('plugoption');\r
@@ -2253,8 +2249,8 @@ class Admin
                // check if catid is the only category left for blogid\r
                $query = "SELECT catid FROM %s WHERE cblog=%d;";\r
                $query = sprintf($query, sql_table('category'), $blogid);\r
-               $res = sql_query($query);\r
-               if ( sql_num_rows($res) == 1 )\r
+               $res = DB::getResult($query);\r
+               if ( $res->rowCount() == 1 )\r
                {\r
                        self::error(_ERROR_DELETELASTCATEGORY);\r
                }\r
@@ -2330,8 +2326,8 @@ class Admin
                $query = "SELECT catid FROM %s WHERE cblog=%d;";\r
                $query = sprintf($query, sql_table('category'), (integer) $blogid);\r
                \r
-               $res = sql_query($query);\r
-               if ( sql_num_rows($res) == 1 )\r
+               $res = DB::getResult($query);\r
+               if ( $res->rowCount() == 1 )\r
                {\r
                        return _ERROR_DELETELASTCATEGORY;\r
                }\r
@@ -2342,7 +2338,7 @@ class Admin
                // change category for all items to the default category\r
                $query = "UPDATE %s SET icat=%d WHERE icat=%d;";\r
                $query =sprintf($query, sql_table('item'), (integer) $destcatid, (integer) $catid);\r
-               sql_query($query);\r
+               DB::execute($query);\r
                \r
                // delete all associated plugin options\r
                NucleusPlugin::delete_option_values('category', (integer) $catid);\r
@@ -2350,7 +2346,7 @@ class Admin
                // delete category\r
                $query = "DELETE FROM %s WHERE catid=%d;";\r
                $query = sprintf($query, sql_table('category'), (integer) $catid);\r
-               sql_query($query);\r
+               DB::execute($query);\r
                \r
                $data = array('catid' => $catid);\r
                $manager->notify('PostDeleteCategory', $data);\r
@@ -2504,30 +2500,30 @@ class Admin
                \r
                // delete all comments\r
                $query = 'DELETE FROM ' . sql_table('comment') . ' WHERE cblog='.$blogid;\r
-               sql_query($query);\r
+               DB::execute($query);\r
                \r
                // delete all items\r
                $query = 'DELETE FROM ' . sql_table('item') . ' WHERE iblog=' . $blogid;\r
-               sql_query($query);\r
+               DB::execute($query);\r
                \r
                // delete all team members\r
                $query = 'DELETE FROM ' . sql_table('team') . ' WHERE tblog=' . $blogid;\r
-               sql_query($query);\r
+               DB::execute($query);\r
                \r
                // delete all bans\r
                $query = 'DELETE FROM ' . sql_table('ban') . ' WHERE blogid=' . $blogid;\r
-               sql_query($query);\r
+               DB::execute($query);\r
                \r
                // delete all categories\r
                $query = 'DELETE FROM ' . sql_table('category') . ' WHERE cblog=' . $blogid;\r
-               sql_query($query);\r
+               DB::execute($query);\r
                \r
                // delete all associated plugin options\r
                NucleusPlugin::delete_option_values('blog', $blogid);\r
                \r
                // delete the blog itself\r
                $query = 'DELETE FROM ' . sql_table('blog') . ' WHERE bnumber=' . $blogid;\r
-               sql_query($query);\r
+               DB::execute($query);\r
                \r
                $data = array('blogid' => $blogid);\r
                $manager->notify('PostDeleteBlog', $data);\r
@@ -2615,19 +2611,19 @@ class Admin
                /* unlink comments from memberid */\r
                if ( $memberid )\r
                {\r
-                       $query = "UPDATE %s SET cmember=0, cuser='%s' WHERE cmember=%d;";\r
-                       $query = sprintf($query, sql_table('comment'), sql_real_escape_string($mem->getDisplayName()), $memberid);\r
-                       sql_query($query);\r
+                       $query = "UPDATE %s SET cmember=0, cuser=%s WHERE cmember=%d;";\r
+                       $query = sprintf($query, sql_table('comment'), DB::quoteValue($mem->getDisplayName()), $memberid);\r
+                       DB::execute($query);\r
                }\r
                \r
                $query = 'DELETE FROM ' . sql_table('member') . ' WHERE mnumber=' . $memberid;\r
-               sql_query($query);\r
+               DB::execute($query);\r
                \r
                $query = 'DELETE FROM ' . sql_table('team') . ' WHERE tmember=' . $memberid;\r
-               sql_query($query);\r
+               DB::execute($query);\r
                \r
                $query = 'DELETE FROM ' . sql_table('activation') . ' WHERE vmember=' . $memberid;\r
-               sql_query($query);\r
+               DB::execute($query);\r
                \r
                // delete all associated plugin options\r
                NucleusPlugin::delete_option_values('member', $memberid);\r
@@ -2696,27 +2692,27 @@ class Admin
                $manager->notify('PreAddBlog', $data);\r
                \r
                // add slashes for sql queries\r
-               $bname                  = sql_real_escape_string($bname);\r
-               $bshortname             = sql_real_escape_string($bshortname);\r
-               $btimeoffset    = sql_real_escape_string($btimeoffset);\r
-               $bdesc                  = sql_real_escape_string($bdesc);\r
-               $bdefskin               = sql_real_escape_string($bdefskin);\r
+               $bname                  = DB::quoteValue($bname);\r
+               $bshortname             = DB::quoteValue($bshortname);\r
+               $btimeoffset    = DB::quoteValue($btimeoffset);\r
+               $bdesc                  = DB::quoteValue($bdesc);\r
+               $bdefskin               = DB::quoteValue($bdefskin);\r
                \r
                // create blog\r
-               $query = "INSERT INTO %s (bname, bshortname, bdesc, btimeoffset, bdefskin) VALUES ('%s', '%s', '%s', '%s', '%s');";\r
+               $query = "INSERT INTO %s (bname, bshortname, bdesc, btimeoffset, bdefskin) VALUES (%s, %s, %s, %s, %s);";\r
                $query = sprintf($query, sql_table('blog'), $bname, $bshortname, $bdesc, $btimeoffset, $bdefskin);\r
-               sql_query($query);\r
+               DB::execute($query);\r
                \r
-               $blogid =  sql_insert_id();\r
+               $blogid = DB::getInsertId();\r
                $blog   =& $manager->getBlog($blogid);\r
                \r
                // create new category\r
                $catdefname = (!defined('_EBLOGDEFAULTCATEGORY_NAME') ? 'General' : _EBLOGDEFAULTCATEGORY_NAME);\r
                $catdefdesc = (!defined('_EBLOGDEFAULTCATEGORY_DESC') ? 'Items that do not fit in other categories' : _EBLOGDEFAULTCATEGORY_DESC);\r
                \r
-               $query = 'INSERT INTO %s (cblog, cname, cdesc) VALUES (%d, "%s", "%s")';\r
-               sql_query(sprintf($query, sql_table('category'), (integer) $blogid, $catdefname, $catdefdesc));\r
-               $catid = sql_insert_id();\r
+               $query = 'INSERT INTO %s (cblog, cname, cdesc) VALUES (%d, %s, %s)';\r
+               DB::execute(sprintf($query, sql_table('category'), (integer) $blogid, DB::quoteValue($catdefname), DB::quoteValue($catdefdesc)));\r
+               $catid = DB::getInsertId();\r
                \r
                // set as default category\r
                $blog->setDefaultCategory($catid);\r
@@ -2725,7 +2721,7 @@ class Admin
                // create team member\r
                $query = "INSERT INTO %s (tmember, tblog, tadmin) VALUES (%d, %d, 1);";\r
                $query = sprintf($query, sql_table('team'), (integer) $member->getID(), (integer) $blogid);\r
-               sql_query($query);\r
+               DB::execute($query);\r
                \r
                $itemdeftitle = (defined('_EBLOG_FIRSTITEM_TITLE') ? _EBLOG_FIRSTITEM_TITLE : 'First Item');\r
                $itemdefbody  = (defined('_EBLOG_FIRSTITEM_BODY')  ? _EBLOG_FIRSTITEM_BODY  : 'This is the first item in your weblog. Feel free to delete it.');\r
@@ -3021,7 +3017,7 @@ class Admin
                $member->isAdmin() or self::disallow();\r
                \r
                $extrahead  = "<script type=\"text/javascript\" src=\"javascript/templateEdit.js\"></script>\n";\r
-               $extrahead .= '<script type=\"text/javascript">setTemplateEditText("' . sql_real_escape_string(_EDITTEMPLATE_EMPTY) . "\");</script>\n";\r
+               $extrahead .= '<script type=\"text/javascript">setTemplateEditText("' . Entity::hsc(_EDITTEMPLATE_EMPTY) . "\");</script>\n";\r
                \r
                self::pagehead($extrahead);\r
                self::$skin->parse('templateedit');\r
@@ -3070,18 +3066,15 @@ class Admin
                        self::error(_ERROR_DUPTEMPLATENAME);\r
                }\r
                \r
-               $name = sql_real_escape_string($name);\r
-               $desc = sql_real_escape_string($desc);\r
-               \r
                // 1. Remove all template parts\r
                $query = "DELETE FROM %s WHERE tdesc=%d;";\r
                $query = sprintf($query, sql_table('template'), (integer) $templateid);\r
-               sql_query($query);\r
+               DB::execute($query);\r
                \r
                // 2. Update description\r
-               $query = "UPDATE %s SET tdname='%s', tddesc='%s' WHERE tdnumber=%d;";\r
-               $query = sprintf($query, sql_table('template_desc'), sql_real_escape_string($name), sql_real_escape_string($desc), (integer) $templateid);\r
-               sql_query($query);\r
+               $query = "UPDATE %s SET tdname=%s, tddesc=%s WHERE tdnumber=%d;";\r
+               $query = sprintf($query, sql_table('template_desc'), DB::quoteValue($name), DB::quoteValue($desc), (integer) $templateid);\r
+               DB::execute($query);\r
                \r
                // 3. Add non-empty template parts\r
                self::addToTemplate($templateid, 'ITEM_HEADER',                 postVar('ITEM_HEADER'));\r
@@ -3151,13 +3144,14 @@ class Admin
                        return -1;\r
                }\r
                \r
-               $partname = sql_real_escape_string($partname);\r
-               $content  = sql_real_escape_string($content);\r
-               \r
-               $query = "INSERT INTO %s (tdesc, tpartname, tcontent) VALUES (%d, '%s', '%s');";\r
-               $query = sprintf($query, sql_table('template'), (integer) $id, $partname, $content);\r
-               sql_query($query) or exit(_ADMIN_SQLDIE_QUERYERROR . sql_error());\r
-               return sql_insert_id();\r
+               $query = "INSERT INTO %s (tdesc, tpartname, tcontent) VALUES (%d, %s, %s);";\r
+               $query = sprintf($query, sql_table('template'), (integer) $id, DB::quoteValue($partname), DB::quoteValue($content));\r
+               if ( DB::execute($query) === FALSE )\r
+               {\r
+                       $err = DB::getError();\r
+                       exit(_ADMIN_SQLDIE_QUERYERROR . $err[2]);\r
+               }\r
+               return DB::getInsertId();\r
        }\r
        \r
        /**\r
@@ -3199,10 +3193,10 @@ class Admin
                $manager->notify('PreDeleteTemplate', $data);\r
                \r
                // 1. delete description\r
-               sql_query('DELETE FROM ' . sql_table('template_desc') . ' WHERE tdnumber=' . $templateid);\r
+               DB::execute('DELETE FROM ' . sql_table('template_desc') . ' WHERE tdnumber=' . $templateid);\r
                \r
                // 2. delete parts\r
-               sql_query('DELETE FROM ' . sql_table('template') . ' WHERE tdesc=' . $templateid);\r
+               DB::execute('DELETE FROM ' . sql_table('template') . ' WHERE tdesc=' . $templateid);\r
                \r
                \r
                $data = array('templateid' => $templateid);\r
@@ -3282,10 +3276,10 @@ class Admin
                $query = "SELECT tpartname, tcontent FROM %s WHERE tdesc=%d;";\r
                $query = sprintf($query, sql_table('template'), (integer) $templateid);\r
                \r
-               $res = sql_query($query);\r
-               while ( $o = sql_fetch_object($res) )\r
+               $res = DB::getResult($query);\r
+               foreach ( $res as $row)\r
                {\r
-                       self::addToTemplate($newid, $o->tpartname, $o->tcontent);\r
+                       self::addToTemplate($newid, $row['tpartname'], $row['tcontent']);\r
                }\r
                \r
                self::action_templateoverview();\r
@@ -3323,7 +3317,7 @@ class Admin
                }\r
                $member->isAdmin() or self::disallow();\r
                $extrahead  = "<script type=\"text/javascript\" src=\"javascript/templateEdit.js\"></script>\n";\r
-               $extrahead .= '<script type="text/javascript">setTemplateEditText("' . sql_real_escape_string(_EDITTEMPLATE_EMPTY) . '");</script>' . "\n";\r
+               $extrahead .= '<script type="text/javascript">setTemplateEditText("' . Entity::hsc(_EDITTEMPLATE_EMPTY) . '");</script>' . "\n";\r
                self::pagehead($extrahead);\r
                self::$skin->parse('admintemplateedit');\r
                self::pagefoot();\r
@@ -3353,18 +3347,16 @@ class Admin
                {\r
                        self::error(_ERROR_DUPTEMPLATENAME);\r
                }\r
-               $name = sql_real_escape_string($name);\r
-               $desc = sql_real_escape_string($desc);\r
                \r
                // 1. Remove all template parts\r
                $query = "DELETE FROM %s WHERE tdesc=%d;";\r
                $query = sprintf($query, sql_table('template'), (integer) $templateid);\r
-               sql_query($query);\r
+               DB::execute($query);\r
                \r
                // 2. Update description\r
-               $query = "UPDATE %s SET tdname='%s', tddesc='%s' WHERE tdnumber=%d;";\r
-               $query = sprintf($query, sql_table('template_desc'), sql_real_escape_string($name), sql_real_escape_string($desc), (integer) $templateid);\r
-               sql_query($query);\r
+               $query = "UPDATE %s SET tdname=%s, tddesc=%s WHERE tdnumber=%d;";\r
+               $query = sprintf($query, sql_table('template_desc'), DB::quoteValue($name), DB::quoteValue($desc), (integer) $templateid);\r
+               DB::execute($query);\r
                \r
                // 3. Add non-empty template parts\r
                self::addToAdminTemplate($templateid, 'ADMINSKINTYPELIST_HEAD',                                 postVar('ADMINSKINTYPELIST_HEAD'));\r
@@ -3504,10 +3496,14 @@ class Admin
                        return -1;\r
                }\r
                \r
-               $query = "INSERT INTO %s (tdesc, tpartname, tcontent ) VALUES (%d, '%s', '%s');";\r
-               $query = sprintf($query, sql_table('template'), (integer) $id, sql_real_escape_string($partname), sql_real_escape_string($content));\r
-               sql_query($query) or exit(_ADMIN_SQLDIE_QUERYERROR . sql_error());\r
-               return sql_insert_id();\r
+               $query = "INSERT INTO %s (tdesc, tpartname, tcontent ) VALUES (%d, %s, %s);";\r
+               $query = sprintf($query, sql_table('template'), (integer) $id, DB::quoteValue($partname), DB::quoteValue($content));\r
+               if ( DB::execute($query) === FALSE )\r
+               {\r
+                       $err = DB::getError();\r
+                       exit(_ADMIN_SQLDIE_QUERYERROR . $err[2]);\r
+               }\r
+               return DB::getInsertId();\r
        }\r
        \r
        /**\r
@@ -3547,12 +3543,12 @@ class Admin
                // 1. delete description\r
                $query = "DELETE FROM %s WHERE tdnumber=%s;";\r
                $query = sprintf($query, sql_table('template_desc'), (integer) $templateid);\r
-               sql_query($query);\r
+               DB::execute($query);\r
                \r
                // 2. delete parts\r
                $query = "DELETE FROM %s WHERE tdesc=%d;";\r
                $query = sprintf($query, sql_table('template'), (integer) $templateid);\r
-               sql_query($query);\r
+               DB::execute($query);\r
                \r
                $data = array('templateid' => $templateid);\r
                $manager->notify('PostDeleteAdminTemplate', $data);\r
@@ -3629,10 +3625,10 @@ class Admin
                $query = "SELECT tpartname, tcontent FROM %s WHERE tdesc=%d;";\r
                $query = sprintf($query, sql_table('template'), (integer) $templateid);\r
                \r
-               $res = sql_query($query);\r
-               while ( $o = sql_fetch_object($res) )\r
+               $res = DB::getResult($query);\r
+               foreach ( $res as $row )\r
                {\r
-                       self::addToAdminTemplate($newid, $o->tpartname, $o->tcontent);\r
+                       self::addToAdminTemplate($newid, $row['tpartname'], $row['tcontent']);\r
                }\r
                \r
                self::action_admintemplateoverview();\r
@@ -3829,10 +3825,10 @@ class Admin
                $query = "SELECT bname FROM %s WHERE bdefskin=%d";\r
                $query = sprintf($query, sql_table('blog'), (integer) $skinid);\r
                \r
-               $r = sql_query($query);\r
-               if ( $o = sql_fetch_object($r) )\r
+               $name = DB::getValue($query);\r
+               if ( $name )\r
                {\r
-                       self::error(_ERROR_SKINDEFDELETE . Entity::hsc($o->bname));\r
+                       self::error(_ERROR_SKINDEFDELETE . Entity::hsc($name));\r
                }\r
                \r
                self::pagehead();\r
@@ -3865,10 +3861,10 @@ class Admin
                $query = "SELECT bname FROM %s WHERE bdefskin=%d;";\r
                $query = sprintf($query, sql_table('blog'), (integer) $skinid);\r
                \r
-               $r = sql_query($query);\r
-               if ( $o = sql_fetch_object($r) )\r
-               {\r
-                       self::error(_ERROR_SKINDEFDELETE .$o->bname);\r
+               $name = DB::getValue($query);\r
+               if ( $name )\r
+                               {\r
+                       self::error(_ERROR_SKINDEFDELETE . Entity::hsc($name));\r
                }\r
                \r
                $data = array('skinid' => $skinid);\r
@@ -3877,12 +3873,12 @@ class Admin
                // 1. delete description\r
                $query = "DELETE FROM %s WHERE sdnumber=%d;";\r
                $query = sprintf($query, sql_table('skin_desc'), (integer) $skinid);\r
-               sql_query($query);\r
+               DB::execute($query);\r
                \r
                // 2. delete parts\r
                $query = "DELETE FROM %s WHERE sdesc=%d;";\r
                $query = sprintf($query, sql_table('skin'), (integer) $skinid);\r
-               sql_query($query);\r
+               DB::execute($query);\r
                \r
                $data = array('skinid' => $skinid);\r
                $manager->notify('PostDeleteSkin', $data);\r
@@ -3960,7 +3956,7 @@ class Admin
                // delete part\r
                $query = "DELETE FROM %s WHERE sdesc=%d AND stype='%s';";\r
                $query = sprintf($query, sql_table('skin'), (integer) $skinid, (integer) $skintype);\r
-               sql_query($query);\r
+               DB::execute($query);\r
                \r
                $data = array(\r
                        'skinid'   => $skinid,\r
@@ -4015,8 +4011,8 @@ class Admin
                $query = "SELECT stype FROM %s WHERE sdesc=%d;";\r
                $query = sprintf($query, sql_table('skin'), (integer) $skinid);\r
                \r
-               $res = sql_query($query);\r
-               while ( $row = sql_fetch_assoc($res) )\r
+               $res = DB::getResult($query);\r
+               foreach ( $res as $row )\r
                {\r
                        self::skinclonetype($skin, $newid, $row['stype']);\r
                }\r
@@ -4040,12 +4036,9 @@ class Admin
                \r
                if ( $content )\r
                {\r
-                       $content = sql_real_escape_string($content);\r
-                       $type = sql_real_escape_string($type);\r
-                       \r
-                       $query = "INSERT INTO %s (sdesc, scontent, stype) VALUES (%d, '%s', '%s')";\r
-                       $query = sprintf($query, sql_table('skin'), (integer) $newid, $content, $type);\r
-                       sql_query($query);\r
+                       $query = "INSERT INTO %s (sdesc, scontent, stype) VALUES (%d, %s, %s)";\r
+                       $query = sprintf($query, sql_table('skin'), (integer) $newid, DB::quoteValue($content), DB::quoteValue($type));\r
+                       DB::execute($query);\r
                }\r
                return;\r
        }\r
@@ -4246,7 +4239,7 @@ class Admin
                $skinid = intRequestVar('skinid');\r
                \r
                // don't allow default skin to be deleted\r
-               if ( $skinid == $CONF['DefaultAdminSkin'] )\r
+               if ( $skinid == $CONF['AdminSkin'] )\r
                {\r
                        self::error(_ERROR_DEFAULTSKIN);\r
                }\r
@@ -4270,13 +4263,13 @@ class Admin
                // 1. delete description\r
                $query = "DELETE FROM %s WHERE sdnumber=%d;";\r
                $query = sprintf($query, sql_table('skin_desc'), (integer) $skinid);\r
-               sql_query($query);\r
+               DB::execute($query);\r
                \r
                // 2. delete parts\r
                $query = "DELETE FROM %s WHERE sdesc=%d;";\r
                $query = sprintf($query, sql_table('skin'), (integer) $skinid);\r
                \r
-               sql_query($query);\r
+               DB::execute($query);\r
                \r
                $manager->notify('PostDeleteAdminSkin', array('skinid' => (integer) $skinid));\r
                self::action_adminskinoverview();\r
@@ -4338,7 +4331,7 @@ class Admin
                // delete part\r
                $query = 'DELETE FROM %s WHERE sdesc = %d AND stype ="%s"';\r
                $query = sprintf($query, sql_table('skin'), (integer) $skinid, $skintype);\r
-               sql_query($query);\r
+               DB::execute($query);\r
                \r
                $data = array(\r
                        'skinid'        => $skinid,\r
@@ -4392,8 +4385,8 @@ class Admin
                $query = "SELECT stype FROM %s WHERE sdesc=%d;";\r
                $query = sprintf($query, sql_table('skin'), (integer) $skinid);\r
                \r
-               $res = sql_query($query);\r
-               while ( $row = sql_fetch_assoc($res) )\r
+               $res = DB::getResult($query);\r
+               foreach ( $res as $row )\r
                {\r
                        self::skinclonetype($skin, $newid, $row['stype']);\r
                }\r
@@ -4415,12 +4408,9 @@ class Admin
                \r
                if ( $content )\r
                {\r
-                       $content        = sql_real_escape_string($content);\r
-                       $type           = sql_real_escape_string($type);\r
-                       \r
-                       $query = "INSERT INTO %s (sdesc, scontent, stype) VALUES (%d, '%s', '%s')";\r
-                       $query = sprintf($query, sql_table('skin'), (integer) $newid, $content, $type);\r
-                       sql_query($query);\r
+                       $query = "INSERT INTO %s (sdesc, scontent, stype) VALUES (%d, %s, %s)";\r
+                       $query = sprintf($query, sql_table('skin'), (integer) $newid, DB::quoteValue($content), DB::quoteValue($type));\r
+                       DB::execute($query);\r
                }\r
                return;\r
        }\r
@@ -4716,13 +4706,14 @@ class Admin
         */\r
        static private function updateConfig($name, $val)\r
        {\r
-               $name = sql_real_escape_string($name);\r
-               $val = trim(sql_real_escape_string($val));\r
-               \r
-               $query = "UPDATE %s SET value='%s' WHERE name='%s'";\r
-               $query = sprintf($query, sql_table('config'), $val, $name);\r
-               sql_query($query) or die(_ADMIN_SQLDIE_QUERYERROR . sql_error());\r
-               return sql_insert_id();\r
+               $query = "UPDATE %s SET value=%s WHERE name=%s";\r
+               $query = sprintf($query, sql_table('config'), DB::quoteValue($val), DB::quoteValue($name));\r
+               if ( DB::execute($query) === FALSE )\r
+               {\r
+                       $err = DB::getError();\r
+                       die(_ADMIN_SQLDIE_QUERYERROR . $err[2]);\r
+               }\r
+               return DB::getInsertId();\r
        }\r
        \r
        /**\r
@@ -4796,7 +4787,7 @@ class Admin
                {\r
                        if ( isset($extrahead) && !empty($extrahead) )\r
                        {\r
-                       self::$extrahead = $extrahead;\r
+                               self::$extrahead = $extrahead;\r
                        }\r
                        self::$skin->parse('pagehead');\r
                }\r
@@ -4815,7 +4806,7 @@ class Admin
                         * TODO: obsoleted\r
                        if ( !array_key_exists('AdminCSS', $CONF) )\r
                        {\r
-                               sql_query("INSERT INTO " . sql_table('config') . " VALUES ('AdminCSS', 'original')");\r
+                               DB::execute("INSERT INTO " . sql_table('config') . " VALUES ('AdminCSS', 'original')");\r
                                $CONF['AdminCSS'] = 'original';\r
                        }\r
                        */\r
@@ -4842,9 +4833,9 @@ class Admin
                        echo "<link rel=\"stylesheet\" title=\"Nucleus Admin Default\" type=\"text/css\" href=\"{$baseUrl}admin/defaultadmin/styles/admin_{$CONF["AdminCSS"]}.css\" />\n";\r
                        */\r
                        echo "<link rel=\"stylesheet\" title=\"Nucleus Admin Default\" type=\"text/css\" href=\"{$baseUrl}admin/defaultadmin/styles/addedit.css\" />\n";\r
-                       echo "<script type=\"text/javascript\" src=\"{$baseUrl}javascript/edit.js\"></script>\n";\r
-                       echo "<script type=\"text/javascript\" src=\"{$baseUrl}javascript/admin.js\"></script>\n";\r
-                       echo "<script type=\"text/javascript\" src=\"{$baseUrl}javascript/compatibility.js\"></script>\n";\r
+                       echo "<script type=\"text/javascript\" src=\"{$baseUrl}javascripts/edit.js\"></script>\n";\r
+                       echo "<script type=\"text/javascript\" src=\"{$baseUrl}javascripts/admin.js\"></script>\n";\r
+                       echo "<script type=\"text/javascript\" src=\"{$baseUrl}javascripts/compatibility.js\"></script>\n";\r
                        echo "{$extrahead}\n";\r
                        echo "</head>\n\n";\r
                        echo "<body>\n";\r
@@ -5443,8 +5434,8 @@ class Admin
                }\r
                \r
                // get number of currently installed plugins\r
-               $res = sql_query('SELECT * FROM ' . sql_table('plugin'));\r
-               $numCurrent = sql_num_rows($res);\r
+               $res = DB::getResult('SELECT * FROM ' . sql_table('plugin'));\r
+               $numCurrent = $res->rowCount();\r
                \r
                // plugin will be added as last one in the list\r
                $newOrder = $numCurrent + 1;\r
@@ -5453,10 +5444,10 @@ class Admin
                $manager->notify('PreAddPlugin', $data);\r
                \r
                // do this before calling getPlugin (in case the plugin id is used there)\r
-               $query = "INSERT INTO %s (porder, pfile) VALUES (%d, '%s');";\r
-               $query = sprintf($query, sql_table('plugin'), (integer) $newOrder, sql_real_escape_string($name));\r
-               sql_query($query);\r
-               $iPid = sql_insert_id();\r
+               $query = "INSERT INTO %s (porder, pfile) VALUES (%d, %s);";\r
+               $query = sprintf($query, sql_table('plugin'), (integer) $newOrder, DB::quoteValue($name));\r
+               DB::execute($query);\r
+               $iPid = DB::getInsertId();\r
                \r
                $manager->clearCachedInfo('installedPlugins');\r
                \r
@@ -5469,7 +5460,7 @@ class Admin
                        $query = "DELETE FROM %s WHERE pid=%d;";\r
                        $query = sprintf($query, sql_table('plugin'), (integer) $iPid);\r
                        \r
-                       sql_query($query);\r
+                       DB::execute($query);\r
                        \r
                        $manager->clearCachedInfo('installedPlugins');\r
                        self::error(_ERROR_PLUGIN_LOAD);\r
@@ -5498,8 +5489,8 @@ class Admin
                $pluginList = $plugin->getPluginDep();\r
                foreach ( $pluginList as $pluginName )\r
                {\r
-                       $res = sql_query('SELECT * FROM '.sql_table('plugin') . ' WHERE pfile="' . $pluginName . '"');\r
-                       if (sql_num_rows($res) == 0)\r
+                       $res = DB::getResult('SELECT * FROM '.sql_table('plugin') . ' WHERE pfile=' . DB::quoteValue($pluginName));\r
+                       if ($res->rowCount() == 0)\r
                        {\r
                                // uninstall plugin again...\r
                                self::deleteOnePlugin($plugin->getID());\r
@@ -5533,22 +5524,22 @@ class Admin
                $member->isAdmin() or self::disallow();\r
                \r
                // delete everything from plugin_events\r
-               sql_query('DELETE FROM '.sql_table('plugin_event'));\r
+               DB::execute('DELETE FROM '.sql_table('plugin_event'));\r
                \r
                // loop over all installed plugins\r
-               $res = sql_query('SELECT pid, pfile FROM '.sql_table('plugin'));\r
-               while ( $o = sql_fetch_object($res) )\r
+               $res = DB::getResult('SELECT pid, pfile FROM '.sql_table('plugin'));\r
+               foreach ( $res as $row )\r
                {\r
-                       $pid  =  $o->pid;\r
-                       $plug =& $manager->getPlugin($o->pfile);\r
+                       $pid  =  $row['pid'];\r
+                       $plug =& $manager->getPlugin($row['pfile']);\r
                        if ( $plug )\r
                        {\r
                                $eventList = $plug->getEventList();\r
                                foreach ( $eventList as $eventName )\r
                                {\r
-                                       $query = "INSERT INTO %s (pid, event) VALUES (%d, '%s')";\r
-                                       $query = sprintf($query, sql_table('plugin_event'), (integer) $pid, sql_real_escape_string($eventName));\r
-                                       sql_query($query);\r
+                                       $query = "INSERT INTO %s (pid, event) VALUES (%d, %s)";\r
+                                       $query = sprintf($query, sql_table('plugin_event'), (integer) $pid, DB::quoteValue($eventName));\r
+                                       DB::execute($query);\r
                                }\r
                        }\r
                }\r
@@ -5626,13 +5617,13 @@ class Admin
                \r
                $query = "SELECT pfile as result FROM %s WHERE pid=%d;";\r
                $query = sprintf($query, sql_table('plugin'), (integer) $pid);\r
-               $name = quickQuery($query);\r
+               $name = DB::getValue($query);\r
                \r
                // check dependency before delete\r
-               $res = sql_query('SELECT pfile FROM ' . sql_table('plugin'));\r
-               while ($o = sql_fetch_object($res))\r
+               $res = DB::getResult('SELECT pfile FROM ' . sql_table('plugin'));\r
+               foreach ( $res as $row )\r
                {\r
-                       $plug =& $manager->getPlugin($o->pfile);\r
+                       $plug =& $manager->getPlugin($row['pfile']);\r
                        if ( $plug )\r
                        {\r
                                $depList = $plug->getPluginDep();\r
@@ -5640,7 +5631,7 @@ class Admin
                                {\r
                                        if ( $name == $depName )\r
                                        {\r
-                                               return sprintf(_ERROR_DELREQPLUGIN, $o->pfile);\r
+                                               return sprintf(_ERROR_DELREQPLUGIN, $row['pfile']);\r
                                        }\r
                                }\r
                        }\r
@@ -5660,31 +5651,30 @@ class Admin
                }\r
                \r
                // delete all subscriptions\r
-               sql_query('DELETE FROM ' . sql_table('plugin_event') . ' WHERE pid=' . $pid);\r
+               DB::execute('DELETE FROM ' . sql_table('plugin_event') . ' WHERE pid=' . $pid);\r
                \r
                // delete all options\r
                // get OIDs from plugin_option_desc\r
-               $res = sql_query('SELECT oid FROM ' . sql_table('plugin_option_desc') . ' WHERE opid=' . $pid);\r
+               $res = DB::getResult('SELECT oid FROM ' . sql_table('plugin_option_desc') . ' WHERE opid=' . $pid);\r
                $aOIDs = array();\r
-               while ($o = sql_fetch_object($res))\r
+               foreach ( $res as $row )\r
                {\r
-                       array_push($aOIDs, $o->oid);\r
+                       array_push($aOIDs, $row['oid']);\r
                }\r
                \r
                // delete from plugin_option and plugin_option_desc\r
-               sql_query('DELETE FROM ' . sql_table('plugin_option_desc') . ' WHERE opid=' . $pid);\r
+               DB::execute('DELETE FROM ' . sql_table('plugin_option_desc') . ' WHERE opid=' . $pid);\r
                if (count($aOIDs) > 0)\r
                {\r
-                       sql_query('DELETE FROM ' . sql_table('plugin_option') . ' WHERE oid in (' . implode(',', $aOIDs) . ')');\r
+                       DB::execute('DELETE FROM ' . sql_table('plugin_option') . ' WHERE oid in (' . implode(',', $aOIDs) . ')');\r
                }\r
                \r
                // update order numbers\r
-               $res = sql_query('SELECT porder FROM ' . sql_table('plugin') . ' WHERE pid=' . $pid);\r
-               $o = sql_fetch_object($res);\r
-               sql_query('UPDATE ' . sql_table('plugin') . ' SET porder=(porder - 1) WHERE porder>' . $o->porder);\r
+               $res = DB::getValue('SELECT porder FROM ' . sql_table('plugin') . ' WHERE pid=' . $pid);\r
+               DB::execute('UPDATE ' . sql_table('plugin') . ' SET porder=(porder - 1) WHERE porder>' . $res);\r
                \r
                // delete row\r
-               sql_query('DELETE FROM ' . sql_table('plugin') . ' WHERE pid=' . $pid);\r
+               DB::execute('DELETE FROM ' . sql_table('plugin') . ' WHERE pid=' . $pid);\r
                \r
                $manager->clearCachedInfo('installedPlugins');\r
                $data = array('plugid' => $pid);\r
@@ -5714,16 +5704,14 @@ class Admin
                }\r
                \r
                // 1. get old order number\r
-               $res = sql_query('SELECT porder FROM ' . sql_table('plugin') . ' WHERE pid=' . $plugid);\r
-               $o = sql_fetch_object($res);\r
-               $oldOrder = $o->porder;\r
+               $oldOrder = DB::getValue('SELECT porder FROM ' . sql_table('plugin') . ' WHERE pid=' . $plugid);\r
                \r
                // 2. calculate new order number\r
                $newOrder = ($oldOrder > 1) ? ($oldOrder - 1) : 1;\r
                \r
                // 3. update plug numbers\r
-               sql_query('UPDATE ' . sql_table('plugin') . ' SET porder=' . $oldOrder . ' WHERE porder=' . $newOrder);\r
-               sql_query('UPDATE ' . sql_table('plugin') . ' SET porder=' . $newOrder . ' WHERE pid=' . $plugid);\r
+               DB::execute('UPDATE ' . sql_table('plugin') . ' SET porder=' . $oldOrder . ' WHERE porder=' . $newOrder);\r
+               DB::execute('UPDATE ' . sql_table('plugin') . ' SET porder=' . $newOrder . ' WHERE pid=' . $plugid);\r
                \r
                //self::action_pluginlist();\r
                // To avoid showing ticket in the URL, redirect to pluginlist, instead.\r
@@ -5751,19 +5739,17 @@ class Admin
                }\r
                \r
                // 1. get old order number\r
-               $res = sql_query('SELECT porder FROM ' . sql_table('plugin') . ' WHERE pid=' . $plugid);\r
-               $o = sql_fetch_object($res);\r
-               $oldOrder = $o->porder;\r
+               $oldOrder = DB::getValue('SELECT porder FROM ' . sql_table('plugin') . ' WHERE pid=' . $plugid);\r
                \r
-               $res = sql_query('SELECT * FROM ' . sql_table('plugin'));\r
-               $maxOrder = sql_num_rows($res);\r
+               $res = DB::getResult('SELECT * FROM ' . sql_table('plugin'));\r
+               $maxOrder = $res->rowCount();\r
                \r
                // 2. calculate new order number\r
                $newOrder = ($oldOrder < $maxOrder) ? ($oldOrder + 1) : $maxOrder;\r
                \r
                // 3. update plug numbers\r
-               sql_query('UPDATE ' . sql_table('plugin') . ' SET porder=' . $oldOrder . ' WHERE porder=' . $newOrder);\r
-               sql_query('UPDATE ' . sql_table('plugin') . ' SET porder=' . $newOrder . ' WHERE pid=' . $plugid);\r
+               DB::execute('UPDATE ' . sql_table('plugin') . ' SET porder=' . $oldOrder . ' WHERE porder=' . $newOrder);\r
+               DB::execute('UPDATE ' . sql_table('plugin') . ' SET porder=' . $newOrder . ' WHERE pid=' . $plugid);\r
                \r
                //self::action_pluginlist();\r
                // To avoid showing ticket in the URL, redirect to pluginlist, instead.\r
@@ -5862,40 +5848,40 @@ class Admin
                $query = "SELECT oid, ovalue FROM %s WHERE ocontextid=%d;";\r
                $query = sprintf($query, sql_table('plugin_option'), (integer) $contextid);\r
                \r
-               $res = sql_query($query);\r
-               while ( $object = sql_fetch_object($res) )\r
+               $res = DB::getResult($query);\r
+               foreach ( $res as $row )\r
                {\r
-                       $aIdToValue[$object->oid] = $object->ovalue;\r
+                       $aIdToValue[$row['oid']] = $row['ovalue'];\r
                }\r
                \r
                // get list of oids per pid\r
-               $query  = "SELECT * FROM %s, %s WHERE opid=pid and ocontext= '%s' ORDER BY porder, oid ASC;";\r
-               $query  = sprintf($query, sql_table('plugin_option_desc'), sql_table('plugin'), sql_real_escape_string($context));\r
-               $res    = sql_query($query);\r
+               $query  = "SELECT * FROM %s, %s WHERE opid=pid and ocontext= %s ORDER BY porder, oid ASC;";\r
+               $query  = sprintf($query, sql_table('plugin_option_desc'), sql_table('plugin'), DB::quoteValue($context));\r
+               $res    = DB::getResult($query);\r
                \r
                $aOptions = array();\r
-               while ( $object = sql_fetch_object($res) )\r
+               foreach ($res as $row )\r
                {\r
-                       if ( !in_array($object->oid, array_keys($aIdToValue)) )\r
+                       if ( !in_array($row['oid'], array_keys($aIdToValue)) )\r
                        {\r
-                               $value = $object->odef;\r
+                               $value = $row['odef'];\r
                        }\r
                        else\r
                        {\r
-                               $value = $aIdToValue[$object->oid];\r
+                               $value = $aIdToValue[$row['oid']];\r
                        }\r
                        \r
                        array_push(\r
                                $aOptions,\r
                                array(\r
-                                       'pid'                   => $object->pid,\r
-                                       'pfile'                 => $object->pfile,\r
-                                       'oid'                   => $object->oid,\r
+                                       'pid'                   => $row['pid'],\r
+                                       'pfile'                 => $row['pfile'],\r
+                                       'oid'                   => $row['oid'],\r
                                        'value'                 => $value,\r
-                                       'name'                  => $object->oname,\r
-                                       'description'   => $object->odesc,\r
-                                       'type'                  => $object->otype,\r
-                                       'typeinfo'              => $object->oextra,\r
+                                       'name'                  => $row['oname'],\r
+                                       'description'   => $row['odesc'],\r
+                                       'type'                  => $row['otype'],\r
+                                       'typeinfo'              => $row['oextra'],\r
                                        'contextid'             => $contextid,\r
                                        'extra'                 => ''\r
                                )\r
@@ -5936,9 +5922,9 @@ class Admin
         */\r
        static private function getAdminskinIDFromName($skinname)\r
        {\r
-               $query          = "SELECT 'sdnumber' as result FROM %s WHERE sdname = '%s';";\r
-               $query          = sprintf($query, sql_table('skin_desc'), mysql_real_escape_string($skinname));\r
-               $admnSknID      = quickQuery($query);\r
+               $query          = "SELECT 'sdnumber' as result FROM %s WHERE sdname = %s;";\r
+               $query          = sprintf($query, sql_table('skin_desc'), DB::quoteValue($skinname));\r
+               $admnSknID      = DB::getValue($query);\r
                return (integer) $adminSkinID;\r
        }\r
        \r
@@ -5950,9 +5936,9 @@ class Admin
         */\r
        static private function getAdminskinNameFromID($skinid)\r
        {\r
-               $query          = "SELECT sdname as result FROM %s WHERE sdnumber = '%d';";\r
+               $query          = "SELECT sdname as result FROM %s WHERE sdnumber = %d;";\r
                $query          = sprintf($query, sql_table('skin_desc'), (integer) $skinid);\r
-               $admnSknID      = quickQuery($query);\r
+               $admnSknID      = DB::getValue($query);\r
                return (integer) $adminSkinID;\r
        }\r
        \r
index 0e992cc..18863e9 100644 (file)
@@ -1075,19 +1075,19 @@ class AdminActions extends BaseActions
                                        break;
                                case 'setadmin':
                                        // always succeeds
-                                       sql_query("UPDATE {$setadminsql} {$selectedid};");
+                                       DB::execute("UPDATE {$setadminsql} {$selectedid};");
                                        $error = '';
                                        break;
                                case 'unsetadmin':
                                        // there should always remain at least one super-admin
-                                       $r = sql_query($unsetchksql);
-                                       if ( sql_num_rows($r) < 2 )
+                                       $r = DB::getResult($unsetchksql);
+                                       if ( $r->rowCount() < 2 )
                                        {
                                                $error = $unseterrmsg;
                                        }
                                        else
                                        {
-                                               sql_query("UPDATE {$setadminsql} {$selectedid};");
+                                               DB::execute("UPDATE {$setadminsql} {$selectedid};");
                                        }
                                        break;
                                default:
@@ -1249,15 +1249,15 @@ class AdminActions extends BaseActions
                        case 'skin':
                                $query = "SELECT * FROM %s WHERE sdname LIKE 'admin/%%';";
                                $query = sprintf($query, sql_table('skin_desc'));
-                               $res = sql_query($query);
+                               $res = DB::getResult($query);
                                
-                               while ( $skinObj = sql_fetch_object($res) )
+                               foreach ( $res as $row )
                                {
                                        $data = array(
-                                               'typeid'        => 'skin[' . $skinObj->sdnumber . ']',
-                                               'expid'         => 'skinexp' . $skinObj->sdnumber,
-                                               'expname'       => Entity::hsc($skinObj->sdname),
-                                               'expdesc'       => Entity::hsc($skinObj->sddesc),
+                                               'typeid'        => 'skin[' . $row['sdnumber'] . ']',
+                                               'expid'         => 'skinexp' . $row['sdnumber'],
+                                               'expname'       => Entity::hsc($row['sdname']),
+                                               'expdesc'       => Entity::hsc($row['sddesc']),
                                        );
                                        echo Template::fill($template, $data);
                                }
@@ -1265,14 +1265,14 @@ class AdminActions extends BaseActions
                        case 'template':
                                $query = "SELECT * FROM %s WHERE tdname LIKE 'admin/%%';";
                                $query = sprintf($query, sql_table('template_desc'));
-                               $res = sql_query($query);
-                               while ( $templateObj = sql_fetch_object($res) )
+                               $res = DB::getResult($query);
+                               foreach ( $res as $row )
                                {
                                        $data = array(
-                                               'typeid'        => 'template[' . $templateObj->tdnumber . ']',
-                                               'expid'         => 'templateexp' . $templateObj->tdnumber,
-                                               'expname'       => Entity::hsc($templateObj->tdname),
-                                               'expdesc'       => Entity::hsc($templateObj->tddesc),
+                                               'typeid'        => 'template[' . $row['tdnumber'] . ']',
+                                               'expid'         => 'templateexp' . $row['tdnumber'],
+                                               'expname'       => Entity::hsc($row['tdname']),
+                                               'expdesc'       => Entity::hsc($row['tddesc']),
                                        );
                                        echo Template::fill($template, $data);
                                }
@@ -1314,7 +1314,7 @@ class AdminActions extends BaseActions
                $query = sprintf($query, sql_table('skin_desc'));
                
                $template['name'] = 'adminskin';
-               $template['selected'] = $CONF['DefaultAdminSkin'];
+               $template['selected'] = $CONF['AdminSkin'];
                $template['tabindex'] = 110;
                Showlist($query, 'select', $template, '');
                return;
@@ -1340,8 +1340,8 @@ class AdminActions extends BaseActions
                $query = "SELECT stype FROM  %s WHERE stype NOT IN (%s) AND sdesc=%d;";
                $query = sprintf($query, sql_table('skin'), "'" . implode("', '", $nType) . "'", (integer) $skinid);
                
-               $res    = sql_query($query);
-               if ( $res && sql_num_rows($res) > 0 )
+               $res    = DB::getResult($query);
+               if ( $res && $res->rowCount() > 0 )
                {
                        /* NOTE: set templates for HEAD/BODY/FOOT */
                        if ( !array_key_exists('ADMIN_SPECIALSKINLIST_HEAD', $templates) || empty($templates['ADMIN_SPECIALSKINLIST_HEAD']) )
@@ -1381,7 +1381,7 @@ class AdminActions extends BaseActions
                        /* NOTE: do echo */
                        $data = array();
                        echo $template['head'];
-                       while ( $row = sql_fetch_assoc($res) )
+                       foreach ( $res as $row )
                        {
                                $data = array(
                                        'tabindex'      => $tabstart++,
@@ -1736,38 +1736,38 @@ class AdminActions extends BaseActions
                // (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 = sql_query($queryBlogs);
+               $blogs = DB::getResult($queryBlogs);
                
                if ( $mode == 'category' )
                {
-                       if ( sql_num_rows($blogs) > 1 )
+                       if ( $blogs->rowCount() > 1 )
                        {
                                $multipleBlogs = 1;
                        }
-                       while ( $oBlog = sql_fetch_object($blogs) )
+                       foreach ( $blogs as $rBlog )
                        {
                                if ( isset($multipleBlogs) && !empty($multipleBlogs) )
                                {
-                                       echo '<optgroup label="' . Entity::hsc($oBlog->bname) . "\">\n";
+                                       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($oBlog->bnumber) )
+                                       if ( $member->blogAdminRights($rBlog['bnumber']) )
                                        {
-                                               echo '<option value="newcat-' . $oBlog->bnumber . '">' . _ADD_NEWCAT . "</option>\n";
+                                               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) $oBlog->bnumber);
-                               $categories = sql_query($catQuery);
-                               while ( $oCat = sql_fetch_object($categories) )
+                               $catQuery = sprintf($catQuery, sql_table('category'), (integer) $rBlog['bnumber']);
+                               $categories = DB::getResult($catQuery);
+                               foreach ( $categories as $rCat )
                                {
-                                       if ( $oCat->catid == $selected )
+                                       if ( $rCat['catid'] == $selected )
                                        {
                                                $selectText = ' selected="selected" ';
                                        }
@@ -1775,7 +1775,7 @@ class AdminActions extends BaseActions
                                        {
                                                $selectText = '';
                                        }
-                                       echo '<option value="' . $oCat->catid . '" ' . $selectText . '>' . Entity::hsc($oCat->cname) . "</option>\n";
+                                       echo '<option value="' . $rCat['catid'] . '" ' . $selectText . '>' . Entity::hsc($rCat['cname']) . "</option>\n";
                                }
                                
                                if ( isset($multipleBlogs) && !empty($multipleBlogs) )
@@ -1787,16 +1787,16 @@ class AdminActions extends BaseActions
                else
                {
                        // blog mode
-                       while ( $oBlog = sql_fetch_object($blogs) )
+                       foreach ( $blogs as $rBlog )
                        {
-                               echo '<option value="' . $oBlog->bnumber . '"';
-                               if ( $oBlog->bnumber == $selected )
+                               echo '<option value="' . $rBlog['bnumber'] . '"';
+                               if ( $rBlog['bnumber'] == $selected )
                                {
-                                       echo '<option value="' . $oBlog->bnumber . '" selected="selected">' . Entity::hsc($oBlog->bname) . "</option>\n";
+                                       echo '<option value="' . $rBlog['bnumber'] . '" selected="selected">' . Entity::hsc($rBlog['bname']) . "</option>\n";
                                }
                                else
                                {
-                                       echo '<option value="' . $oBlog->bnumber . '">' . Entity::hsc($oBlog->bname) . "</option>\n";
+                                       echo '<option value="' . $rBlog['bnumber'] . '">' . Entity::hsc($rBlog['bname']) . "</option>\n";
                                }
                        }
                }
@@ -1901,11 +1901,11 @@ class AdminActions extends BaseActions
                                . "FROM %s, %s "
                                . "WHERE mnumber=tmember AND tblog=%d;";
                $query = sprintf($query, sql_table('member'), sql_table('team'), (integer) $blogid);
-               $res = sql_query($query);
+               $res = DB::getResult($query);
                $memberNames = array();
-               while ( $o = sql_fetch_object($res) )
+               foreach ( $res as $row )
                {
-                       $memberNames[] = Entity::hsc($o->mname) . ' (' . Entity::hsc($o->mrealname). ')';
+                       $memberNames[] = Entity::hsc($row['mname']) . ' (' . Entity::hsc($row['mrealname']). ')';
                }
                echo implode(',', $memberNames);
        }
@@ -2043,16 +2043,15 @@ class AdminActions extends BaseActions
                $blogid = intRequestVar('blogid');
                $query  = "SELECT * FROM %s WHERE cblog = %d AND catid = %d;";
                $query  = sprintf($query, sql_table('category'), (integer) $blogid, (integer) $catid);
-               $res    = sql_query($query);
-               $obj    = sql_fetch_object($res);
+               $row    = DB::getRow($query);
                
                if ( $type != 'name' )
                {
-                       echo Entity::hsc($obj->cdesc);
+                       echo Entity::hsc($row['cdesc']);
                }
                else
                {
-                       echo Entity::hsc($obj->cname);
+                       echo Entity::hsc($row['cname']);
                }
                
                return;
@@ -2182,7 +2181,7 @@ class AdminActions extends BaseActions
                $search = postVar('search');
                if ( !empty($search) )
                {
-                       $query .= ' and cbody LIKE "%' . sql_real_escape_string($search) . '%"';
+                       $query .= ' and cbody LIKE ' . DB::quoteValue('%'.$search.'%');
                }
                
                $query .= " ORDER BY ctime ASC LIMIT {$start},{$amount}";
@@ -2211,7 +2210,7 @@ class AdminActions extends BaseActions
                                {
                                        $query = "INSERT INTO %s VALUES (DefaultListSize, 10);";
                                        $query = sprintf($query, sql_table('config'));
-                                       sql_query($query);
+                                       DB::execute($query);
                                        $CONF['DefaultListSize'] = 10;
                                }
                                elseif ( intval($CONF['DefaultListSize']) < 1 )
@@ -2887,18 +2886,18 @@ class AdminActions extends BaseActions
                
                $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 = sql_query($query);
-               
-               while ( $o = sql_fetch_object($resource) )
-               {
-                       array_push($aOIDs, $o->oid);
-                       $aOptions[$o->oid] = array(
-                               'oid'                   => $o->oid,
-                               'value'                 => $o->odef,
-                               'name'                  => $o->oname,
-                               'description'   => $o->odesc,
-                               'type'                  => $o->otype,
-                               'typeinfo'              => $o->oextra,
+               $resource = DB::getResult($query);
+               
+               foreach ( $resource as $row )
+               {
+                       array_push($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
                        );
                }
@@ -2909,11 +2908,11 @@ class AdminActions extends BaseActions
                        $query = 'SELECT oid, ovalue FROM %s WHERE oid in (%s)';
                        $query = sprintf($query, sql_table('plugin_option'), implode(',', $aOIDs));
                        
-                       $result = sql_query($query);
+                       $result = DB::getResult($query);
                        
-                       while ( $o = sql_fetch_object($result) )
+                       foreach ( $result as $row )
                        {
-                               $aOptions[$o->oid]['value'] = $o->ovalue;
+                               $aOptions[$row['oid']]['value'] = $row['ovalue'];
                        }
                }
                
@@ -3868,9 +3867,9 @@ class AdminActions extends BaseActions
                
                if ( !empty($search) )
                {
-                       $query .= ' AND ((ititle LIKE "%' . sql_real_escape_string($search) . '%") '
-                               . '  OR  (ibody LIKE "%' . sql_real_escape_string($search) . '%") '
-                               . '  OR  (imore LIKE "%' . sql_real_escape_string($search) . '%"))';
+                       $query .= ' AND ((ititle LIKE ' . DB::quoteValue('%'.$search.'%') . ') '
+                               . '  OR  (ibody LIKE ' . DB::quoteValue('%'.$search.'%') . ') '
+                               . '  OR  (imore LIKE ' . DB::quoteValue('%'.$search.'%') . '))';
                }
                
                if ( postVar('start') )
@@ -4112,7 +4111,7 @@ class AdminActions extends BaseActions
                                {
                                        $query  = "SELECT icat as result FROM %s WHERE inumber=%d;";
                                        $query = sprintf($query, sql_table('item'), intRequestVar('itemid'));
-                                       $catid  = quickQuery(sprintf($query, intRequestVar('itemid')));
+                                       $catid  = DB::getValue(sprintf($query, intRequestVar('itemid')));
                                        Admin::selectBlogCategory('catid', $catid, 10, 1);
                                }
                                break;
@@ -4169,12 +4168,12 @@ class AdminActions extends BaseActions
                
                $query = "SELECT tmember FROM %s WHERE tblog=%d;";
                $query = sprintf($query, sql_table('team'), (integer) $blogid);
-               $res = sql_query($query);
+               $res = DB::getResult($query);
                
                $tmem = array();
-               while ( $tmember = sql_fetch_object($res) ) 
+               foreach ( $res as $row ) 
                {
-                       $tmem[] = intval($tmember->tmember);
+                       $tmem[] = intval($row['tmember']);
                }
                
                $query  = "SELECT mname as text, mnumber as value FROM %s WHERE mnumber NOT IN (%s);";
@@ -4623,26 +4622,27 @@ class AdminActions extends BaseActions
                switch ( $type )
                {
                        case 'skin':
-                               $res = sql_query('SELECT * FROM ' . sql_table('skin_desc'));
-                               while ( $skinObj = sql_fetch_object($res) )
+                               $res = DB::getResult('SELECT * FROM ' . sql_table('skin_desc'));
+                               foreach ( $res as $row )
                                {
                                        $data = array(
-                                               'typeid'        => 'skin[' . $skinObj->sdnumber . ']',
-                                               'expid'         => 'skinexp' . $skinObj->sdnumber,
-                                               'expname'       => Entity::hsc($skinObj->sdname),
-                                               'expdesc'       => Entity::hsc($skinObj->sddesc),
+                                               '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':
-                               $res = sql_query('SELECT * FROM '.sql_table('template_desc'). " WHERE tdname NOT LIKE 'admin/%%';");
-                               while ($templateObj = sql_fetch_object($res)) {
+                               $res = DB::getResult('SELECT * FROM '.sql_table('template_desc'). " WHERE tdname NOT LIKE 'admin/%%';");
+                               foreach ( $res as $row )
+                               {
                                        $data = array(
-                                               'typeid'        => 'template[' . $templateObj->tdnumber . ']',
-                                               'expid'         => 'templateexp' . $templateObj->tdnumber,
-                                               'expname'       => Entity::hsc($templateObj->tdname),
-                                               'expdesc'       => Entity::hsc($templateObj->tddesc),
+                                               'typeid'        => 'template[' . $row['tdnumber'] . ']',
+                                               'expid'         => 'templateexp' . $row['tdnumber'],
+                                               'expname'       => Entity::hsc($row['tdname']),
+                                               'expdesc'       => Entity::hsc($row['tddesc'])
                                        );
                                        echo Template::fill($template, $data);
                                }
@@ -4735,8 +4735,8 @@ class AdminActions extends BaseActions
                $query  = "SELECT stype FROM %s WHERE stype NOT IN ('%s') AND sdesc = %d;";
                $query = sprintf($query, sql_table('skin'), implode("', '", $nType), $skinid);
                
-               $res    = sql_query($query);
-               if ( $res && sql_num_rows($res) > 0 )
+               $res    = DB::getResult($query);
+               if ( $res && $res->rowCount() > 0 )
                {
                        $data = array();
                        if ( array_key_exists('SPECIALSKINLIST_HEAD', $templates) && !empty($templates['SPECIALSKINLIST_HEAD']) )
@@ -4760,7 +4760,7 @@ class AdminActions extends BaseActions
                        }
                        
                        $tabstart = 75;
-                       while ( $row = sql_fetch_assoc($res) )
+                       foreach ( $res as $row )
                        {
                                $data = array(
                                        'tabindex'      => $tabstart++,
@@ -4851,10 +4851,10 @@ class AdminActions extends BaseActions
                                echo phpversion();
                                break;
                        case 'sqlserverinfo':
-                               echo sql_get_server_info();
+                               echo DB::getAttribute(PDO::ATTR_SERVER_VERSION);
                                break;
                        case 'sqlclientinfo':
-                               echo sql_get_client_info();
+                               echo DB::getAttribute(PDO::ATTR_CLIENT_VERSION);
                                break;
                        case 'magicquotesgpc':
                                echo ini_get('magic_quotes_gpc') ? 'On' : 'Off';
@@ -5022,7 +5022,7 @@ class AdminActions extends BaseActions
                {
                        $query = 'SELECT COUNT(*) as result FROM ' . sql_table('blog');
                        
-                       $total = quickQuery($query);
+                       $total = DB::getValue($query);
                        if ( $total > $amount )
                        {
                                echo '<p><a href="index.php?action=overview&amp;showall=yes">' . _OVERVIEW_SHOWALL . '</a></p>';
@@ -5712,11 +5712,11 @@ class AdminActions extends BaseActions
                        if ( preg_match("#^NP_(.*)\.php$#", $file, $matches) )
                        {
                                $name = $matches[1];
-                               $query = "SELECT * FROM %s WHERE pfile='%s';";
-                               $query = sprintf($query, sql_table('plugin'), sql_real_escape_string("{NP_{$name}"));
-                               $res  = sql_query($query);
+                               $query = "SELECT * FROM %s WHERE pfile=%s;";
+                               $query = sprintf($query, sql_table('plugin'), DB::quoteValue("{NP_{$name}"));
+                               $res  = DB::getResult($query);
                                
-                               if ( sql_num_rows($res) == 0 )
+                               if ( $res->rowCount() == 0 )
                                {
                                        $candidates[] = $name;
                                }
index 177e83d..cd8f8cf 100644 (file)
@@ -28,13 +28,16 @@ class Ban
        public function isBanned($blogid, $ip)\r
        {\r
                $blogid = intval($blogid);\r
-               $query = 'SELECT * FROM '.sql_table('ban').' WHERE blogid='.$blogid;\r
-               $res = sql_query($query);\r
-               while ($obj = sql_fetch_object($res)) {\r
-                       $found = i18n::strpos ($ip, $obj->iprange);\r
-                       if (!($found === false))\r
+               $query = sprintf('SELECT * FROM %s WHERE blogid=%d', sql_table('ban'), intval($blogid));\r
+               $res = DB::getResult($query);\r
+               foreach ( $res as $row )\r
+               {\r
+                       $found = i18n::strpos ($ip, $row['iprange']);\r
+                       if ( $found !== false )\r
+                       {\r
                                // found a match!\r
-                                       return new BanInfo($obj->iprange, $obj->reason);\r
+                               return new BanInfo($row['iprange'], $row['reason']);\r
+                       }\r
                }\r
                return 0;\r
        }\r
@@ -53,8 +56,6 @@ class Ban
        {\r
                global $manager;\r
                \r
-               $blogid = intval($blogid);\r
-               \r
                $manager->notify(\r
                        'PreAddBan',\r
                        array(\r
@@ -64,9 +65,9 @@ class Ban
                        )\r
                );\r
                \r
-               $query = "INSERT INTO %s (blogid, iprange, reason) VALUES (%d, '%s', '%s')";\r
-               $query = sprintf($query, sql_table('ban'), $blogid, sql_real_escape_string($iprange), sql_real_escape_string($reason));\r
-               $res = sql_query($query);\r
+               $query = 'INSERT INTO %s (blogid, iprange, reason) VALUES (%d, %s, %s)';\r
+               $query = sprintf($query, sql_table('ban'), intval($blogid), DB::quoteValue($iprange), DB::quoteValue($reason));\r
+               $res = DB::execute($query);\r
                \r
                $manager->notify(\r
                        'PostAddBan',\r
@@ -76,7 +77,8 @@ class Ban
                                'reason' => $reason\r
                        )\r
                );\r
-               return $res ? 1 : 0;\r
+               \r
+               return $res !== FALSE ? 1 : 0;\r
        }\r
        \r
        /**\r
@@ -86,18 +88,28 @@ class Ban
        public function removeBan($blogid, $iprange)\r
        {\r
                global $manager;\r
-               $blogid = intval($blogid);\r
                \r
-               $manager->notify('PreDeleteBan', array('blogid' => $blogid, 'range' => $iprange));\r
-               \r
-               $query = 'DELETE FROM '.sql_table('ban')." WHERE blogid=$blogid and iprange='" .sql_real_escape_string($iprange). "'";\r
-               sql_query($query);\r
+               $manager->notify(\r
+                       'PreDeleteBan',\r
+                       array(\r
+                               'blogid' => $blogid,\r
+                               'range' => $iprange\r
+                       )\r
+               );\r
                \r
-               $result = (sql_affected_rows() > 0);\r
+               $query = 'DELETE FROM %s WHERE blogid=%d and iprange=%s';\r
+               $query = sprintf($query, sql_table('ban'), intval($blogid), DB::quoteValue($iprange));\r
+               $res = DB::execute($query);\r
                \r
-               $manager->notify('PostDeleteBan', array('blogid' => $blogid, 'range' => $iprange));\r
+               $manager->notify(\r
+                       'PostDeleteBan',\r
+                       array(\r
+                               'blogid' => $blogid,\r
+                               'range' => $iprange\r
+                       )\r
+               );\r
                \r
-               return $result;\r
+               return $res !== FALSE ? 1 : 0;\r
        }\r
 }\r
 \r
index 83f141d..fe8d956 100644 (file)
@@ -98,8 +98,8 @@ class Blog
                        $timestamp_start = mktime(0,0,0,$month,$day,$year);\r
                        $timestamp_end = mktime(0,0,0,$month,$day+1,$year);\r
                }\r
-               $extra_query = " and i.itime>='%s' and i.itime<'%s'";\r
-               $extra_query = sprintf($extra_query, i18n::formatted_datetime('mysql', $timestamp_start), i18n::formatted_datetime('mysql', $timestamp_end));\r
+               $extra_query = " and i.itime>=%s and i.itime<%s";\r
+               $extra_query = sprintf($extra_query, DB::formatDateTime($timestamp_start), DB::formatDateTime($timestamp_end));\r
                \r
                $this->readLogAmount($templatename,0,$extra_query,'',1,1);\r
                return;\r
@@ -195,13 +195,13 @@ class Blog
                $parser = new Parser($handler);\r
                \r
                // execute query\r
-               $items = sql_query($query);\r
+               $items = DB::getResult($query);\r
                \r
                // loop over all items\r
                $old_date = 0;\r
-               while ( $item = sql_fetch_object($items) )\r
+               foreach ( $items as $item )\r
                {\r
-                       $item->timestamp = strtotime($item->itime);     // string timestamp -> unix timestamp\r
+                       $item['timestamp'] = strtotime($item['itime']); // string timestamp -> unix timestamp\r
                        \r
                        // action handler needs to know the item we're handling\r
                        $handler->setCurrentItem($item);\r
@@ -209,11 +209,11 @@ class Blog
                        // add date header if needed\r
                        if ( $dateheads )\r
                        {\r
-                               $new_date = date('dFY',$item->timestamp);\r
+                               $new_date = date('dFY', $item['timestamp']);\r
                                if ( $new_date != $old_date )\r
                                {\r
                                        // unless this is the first time, write date footer\r
-                                       $timestamp = $item->timestamp;\r
+                                       $timestamp = $item['timestamp'];\r
                                        if ( $old_date != 0 )\r
                                        {\r
                                                $oldTS = strtotime($old_date);\r
@@ -257,7 +257,7 @@ class Blog
                        $parser->parse($template['ITEM_FOOTER']);\r
                }\r
                \r
-               $numrows = sql_num_rows($items);\r
+               $numrows = $items->rowCount();\r
                \r
                // add another date footer if there was at least one item\r
                if ( ($numrows > 0) && $dateheads )\r
@@ -267,7 +267,7 @@ class Blog
                        $manager->notify('PostDateFoot',array('blog' => &$this, 'timestamp' => strtotime($old_date)));\r
                }\r
                \r
-               sql_free_result($items);\r
+               $items->closeCursor();\r
                return $numrows;\r
        }\r
        \r
@@ -339,14 +339,14 @@ class Blog
                \r
                $manager->notify('PreAddItem',array('title' => &$title, 'body' => &$body, 'more' => &$more, 'blog' => &$this, 'authorid' => &$authorid, 'timestamp' => &$timestamp, 'closed' => &$closed, 'draft' => &$draft, 'catid' => &$catid));\r
                \r
-               $ititle = sql_real_escape_string($title);\r
-               $ibody = sql_real_escape_string($body);\r
-               $imore = sql_real_escape_string($more);\r
+               $ititle = DB::quoteValue($title);\r
+               $ibody = DB::quoteValue($body);\r
+               $imore = DB::quoteValue($more);\r
                \r
-               $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)";\r
+               $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)";\r
                $query = sprintf($query, sql_table('item'), $ititle, $ibody, $imore, $blogid, $authorid, $timestamp, $closed, $draft, $catid, $posted);\r
-               sql_query($query);\r
-               $itemid = sql_insert_id();\r
+               DB::execute($query);\r
+               $itemid = DB::getInsertId();\r
                \r
                $manager->notify('PostAddItem',array('itemid' => $itemid));\r
                \r
@@ -427,11 +427,11 @@ class Blog
                                $catName = _CREATED_NEW_CATEGORY_NAME;\r
                                $i = 1;\r
                                \r
-                               $res = sql_query('SELECT * FROM '.sql_table('category')." WHERE cname='".$catName.$i."' and cblog=".$this->getID());\r
-                               while ( sql_num_rows($res) > 0 )\r
+                               $res = DB::getResult('SELECT * FROM '.sql_table('category')." WHERE cname='".$catName.$i."' and cblog=".$this->getID());\r
+                               while ( $res->rowCount() > 0 )\r
                                {\r
                                        $i++;\r
-                                       $res = sql_query('SELECT * FROM '.sql_table('category')." WHERE cname='".$catName.$i."' and cblog=".$this->getID());\r
+                                       $res = DB::getResult('SELECT * FROM '.sql_table('category')." WHERE cname='".$catName.$i."' and cblog=".$this->getID());\r
                                }\r
                                \r
                                $catName = $catName . $i;\r
@@ -446,10 +446,10 @@ class Blog
                                )\r
                        );\r
                        \r
-                       $query = "INSERT INTO %s (cblog, cname, cdesc) VALUES (%d, '%s', '%s')";\r
-                       $query = sprintf($query, sql_table('category'), (integer) $this->getID(), sql_real_escape_string($catName), sql_real_escape_string($catDescription));\r
-                       sql_query($query);\r
-                       $catid = sql_insert_id();\r
+                       $query = "INSERT INTO %s (cblog, cname, cdesc) VALUES (%d, %s, %s)";\r
+                       $query = sprintf($query, sql_table('category'), (integer) $this->getID(), DB::quoteValue($catName), DB::quoteValue($catDescription));\r
+                       DB::execute($query);\r
+                       $catid = DB::getInsertId();\r
                        \r
                        $manager->notify(\r
                                'PostAddCategory',\r
@@ -576,7 +576,7 @@ class Blog
                                . ' and i.idraft=0'\r
                                . $selectblogs\r
                                        // don't show future items\r
-                               . ' and i.itime<="' . i18n::formatted_datetime('mysql', $this->getCorrectTime()) . '"'\r
+                               . ' and i.itime<=' . DB::formatDateTime($this->getCorrectTime())\r
                                . ' and '.$where;\r
 \r
                // take into account amount of months to search\r
@@ -584,7 +584,7 @@ class Blog
                {\r
                        $localtime = getdate($this->getCorrectTime());\r
                        $timestamp_start = mktime(0,0,0,$localtime['mon'] - $amountMonths,1,$localtime['year']);\r
-                       $query .= ' and i.itime>"' . i18n::formatted_datetime('mysql', $timestamp_start) . '"';\r
+                       $query .= ' and i.itime>' . DB::formatDateTime($timestamp_start);\r
                }\r
                \r
                if ( $mode == '' )\r
@@ -631,7 +631,7 @@ class Blog
                                // exclude drafts\r
                                . ' and i.idraft=0'\r
                                // don't show future items\r
-                               . ' and i.itime<="' . i18n::formatted_datetime('mysql', $this->getCorrectTime()) . '"';\r
+                               . ' and i.itime<=' . DB::formatDateTime($this->getCorrectTime());\r
                \r
                if ( $this->getSelectedCategory() )\r
                {\r
@@ -688,7 +688,7 @@ class Blog
                                . ' FROM '.sql_table('item')\r
                                . ' WHERE iblog=' . $this->getID()\r
                                // don't show future items!\r
-                               . ' AND itime <="' . i18n::formatted_datetime('mysql', $this->getCorrectTime()) . '"'\r
+                               . ' AND itime <=' . DB::formatDateTime($this->getCorrectTime())\r
                                // don't show draft items\r
                                . ' AND idraft=0';\r
                \r
@@ -714,23 +714,23 @@ class Blog
                        $query .= ' LIMIT ' . intval($limit);\r
                }\r
                \r
-               $res = sql_query($query);\r
-               while ( $current = sql_fetch_object($res) )\r
+               $res = DB::getResult($query);\r
+               foreach ( $res as $current )\r
                {\r
                        /* string time -> unix timestamp */\r
-                       $current->itime = strtotime($current->itime);\r
+                       $current['itime'] = strtotime($current['itime']);\r
                        \r
                        if ( $mode == 'day' )\r
                        {\r
-                               $archivedate = date('Y-m-d',$current->itime);\r
-                               $archive['day'] = date('d',$current->itime);\r
-                               $data['day'] = date('d',$current->itime);\r
-                               $data['month'] = date('m',$current->itime);\r
+                               $archivedate = date('Y-m-d',$current['itime']);\r
+                               $archive['day'] = date('d',$current['itime']);\r
+                               $data['day'] = date('d',$current['itime']);\r
+                               $data['month'] = date('m',$current['itime']);\r
                                $archive['month'] = $data['month'];\r
                        }\r
                        elseif ( $mode == 'year' )\r
                        {\r
-                               $archivedate = date('Y',$current->itime);\r
+                               $archivedate = date('Y',$current['itime']);\r
                                $data['day'] = '';\r
                                $data['month'] = '';\r
                                $archive['day'] = '';\r
@@ -738,14 +738,14 @@ class Blog
                        }\r
                        else\r
                        {\r
-                               $archivedate = date('Y-m',$current->itime);\r
-                               $data['month'] = date('m',$current->itime);\r
+                               $archivedate = date('Y-m',$current['itime']);\r
+                               $data['month'] = date('m',$current['itime']);\r
                                $archive['month'] = $data['month'];\r
                                $data['day'] = '';\r
                                $archive['day'] = '';\r
                        }\r
                        \r
-                       $data['year'] = date('Y',$current->itime);\r
+                       $data['year'] = date('Y',$current['itime']);\r
                        $archive['year'] = $data['year'];\r
                        $data['archivelink'] = Link::create_archive_link($this->getID(),$archivedate,$linkparams);\r
                        \r
@@ -757,11 +757,11 @@ class Blog
                        );\r
                        \r
                        $temp = Template::fill($template['ARCHIVELIST_LISTITEM'],$data);\r
-                       echo i18n::formatted_datetime($temp, $current->itime);\r
+                       echo i18n::formatted_datetime($temp, $current['itime']);\r
                        return;\r
                }\r
                \r
-               sql_free_result($res);\r
+               $res->closeCursor();\r
                \r
                if ( !array_key_exists('ARCHIVELIST_FOOTER', $template) || !$template['ARCHIVELIST_FOOTER'] )\r
                {\r
@@ -844,9 +844,9 @@ class Blog
                \r
                $query = "SELECT catid, cdesc as catdesc, cname as catname FROM %s WHERE cblog=%d ORDER BY cname ASC;";\r
                $query = sprintf($query, sql_table('category'), (integer) $this->getID());\r
-               $res = sql_query($query);\r
+               $res = DB::getResult($query);\r
                \r
-               while ( $data = sql_fetch_assoc($res) )\r
+               foreach ( $res as $data )\r
                {\r
                        $args = array(\r
                                'catid' => $data['catid'],\r
@@ -903,7 +903,7 @@ class Blog
                        }\r
                }\r
                \r
-               sql_free_result($res);\r
+               $res->closeCursor();\r
                \r
                $args = array(\r
                        'blogid'        => $this->getID(),\r
@@ -985,9 +985,9 @@ class Blog
                );\r
                \r
                $query = 'SELECT bnumber, bname, bshortname, bdesc, burl FROM '.sql_table('blog').' ORDER BY '.$orderby.' '.$direction;\r
-               $res = sql_query($query);\r
+               $res = DB::getResult($query);\r
                \r
-               while ( $data = sql_fetch_assoc($res) )\r
+               foreach ( $res as $data )\r
                {\r
                        $list = array();\r
                        $list['bloglink'] = Link::create_blogid_link($data['bnumber']);\r
@@ -1014,7 +1014,7 @@ class Blog
                        echo Template::fill((isset($template['BLOGLIST_LISTITEM']) ? $template['BLOGLIST_LISTITEM'] : null), $list);\r
                }\r
                \r
-               sql_free_result($res);\r
+               $res->closeCursor();\r
                \r
                echo Template::fill((isset($template['BLOGLIST_FOOTER']) ? $template['BLOGLIST_FOOTER'] : null),\r
                        array(\r
@@ -1032,13 +1032,13 @@ class Blog
                $query =  'SELECT *'\r
                           . ' FROM '.sql_table('blog')\r
                           . ' WHERE bnumber=' . $this->blogid;\r
-               $res = sql_query($query);\r
+               $res = DB::getResult($query);\r
 \r
-               $this->isValid = (sql_num_rows($res) > 0);\r
+               $this->isValid = ($res->rowCount() > 0);\r
                if (!$this->isValid)\r
                        return;\r
 \r
-               $this->settings = sql_fetch_assoc($res);\r
+               $this->settings = $res->fetch(PDO::FETCH_ASSOC);\r
        }\r
 \r
        /**\r
@@ -1052,25 +1052,25 @@ class Blog
                        $offset = intval($offset);\r
 \r
                $query =  'UPDATE '.sql_table('blog')\r
-                          . " SET bname='" . sql_real_escape_string($this->getName()) . "',"\r
-                          . "     bshortname='". sql_real_escape_string($this->getShortName()) . "',"\r
-                          . "     bcomments=". intval($this->commentsEnabled()) . ","\r
-                          . "     bmaxcomments=" . intval($this->getMaxComments()) . ","\r
-                          . "     btimeoffset=" . $offset . ","\r
-                          . "     bpublic=" . intval($this->isPublic()) . ","\r
-                          . "     breqemail=" . intval($this->emailRequired()) . ","\r
-                          . "     bconvertbreaks=" . intval($this->convertBreaks()) . ","\r
-                          . "     ballowpast=" . intval($this->allowPastPosting()) . ","\r
-                          . "     bnotify='" . sql_real_escape_string($this->getNotifyAddress()) . "',"\r
-                          . "     bnotifytype=" . intval($this->getNotifyType()) . ","\r
-                          . "     burl='" . sql_real_escape_string($this->getURL()) . "',"\r
-                          . "     bupdate='" . sql_real_escape_string($this->getUpdateFile()) . "',"\r
-                          . "     bdesc='" . sql_real_escape_string($this->getDescription()) . "',"\r
-                          . "     bdefcat=" . intval($this->getDefaultCategory()) . ","\r
-                          . "     bdefskin=" . intval($this->getDefaultSkin()) . ","\r
-                          . "     bincludesearch=" . intval($this->getSearchable())\r
-                          . " WHERE bnumber=" . intval($this->getID());\r
-               sql_query($query);\r
+                          . ' SET bname=' . DB::quoteValue($this->getName()) . ','\r
+                          . '     bshortname='. DB::quoteValue($this->getShortName()) . ','\r
+                          . '     bcomments='. intval($this->commentsEnabled()) . ','\r
+                          . '     bmaxcomments=' . intval($this->getMaxComments()) . ','\r
+                          . '     btimeoffset=' . $offset . ','\r
+                          . '     bpublic=' . intval($this->isPublic()) . ','\r
+                          . '     breqemail=' . intval($this->emailRequired()) . ','\r
+                          . '     bconvertbreaks=' . intval($this->convertBreaks()) . ','\r
+                          . '     ballowpast=' . intval($this->allowPastPosting()) . ','\r
+                          . '     bnotify=' . DB::quoteValue($this->getNotifyAddress()) . ','\r
+                          . '     bnotifytype=' . intval($this->getNotifyType()) . ','\r
+                          . '     burl=' . DB::quoteValue($this->getURL()) . ','\r
+                          . '     bupdate=' . DB::quoteValue($this->getUpdateFile()) . ','\r
+                          . '     bdesc=' . DB::quoteValue($this->getDescription()) . ','\r
+                          . '     bdefcat=' . intval($this->getDefaultCategory()) . ','\r
+                          . '     bdefskin=' . intval($this->getDefaultSkin()) . ','\r
+                          . '     bincludesearch=' . intval($this->getSearchable())\r
+                          . ' WHERE bnumber=' . intval($this->getID());\r
+               DB::execute($query);\r
 \r
        }\r
 \r
@@ -1094,8 +1094,8 @@ class Blog
          */\r
        function isValidCategory($catid) {\r
                $query = 'SELECT * FROM '.sql_table('category').' WHERE cblog=' . $this->getID() . ' and catid=' . intval($catid);\r
-               $res = sql_query($query);\r
-               return (sql_num_rows($res) != 0);\r
+               $res = DB::getResult($query);\r
+               return ($res->rowCount() != 0);\r
        }\r
 \r
        /**\r
@@ -1105,9 +1105,8 @@ class Blog
          *     category id\r
          */\r
        function getCategoryName($catid) {\r
-               $res = sql_query('SELECT cname FROM '.sql_table('category').' WHERE cblog='.$this->getID().' and catid=' . intval($catid));\r
-               $o = sql_fetch_object($res);\r
-               return $o->cname;\r
+               $res = DB::getValue('SELECT cname FROM '.sql_table('category').' WHERE cblog='.$this->getID().' and catid=' . intval($catid));\r
+               return $res;\r
        }\r
 \r
        /**\r
@@ -1117,9 +1116,8 @@ class Blog
          *     category id\r
          */\r
        function getCategoryDesc($catid) {\r
-               $res = sql_query('SELECT cdesc FROM '.sql_table('category').' WHERE cblog='.$this->getID().' and catid=' . intval($catid));\r
-               $o = sql_fetch_object($res);\r
-               return $o->cdesc;\r
+               $res = DB::getValue('SELECT cdesc FROM '.sql_table('category').' WHERE cblog='.$this->getID().' and catid=' . intval($catid));\r
+               return $res;\r
        }\r
 \r
        /**\r
@@ -1129,10 +1127,9 @@ class Blog
          *     category name\r
          */\r
        function getCategoryIdFromName($name) {\r
-               $res = sql_query('SELECT catid FROM '.sql_table('category').' WHERE cblog='.$this->getID().' and cname="' . sql_real_escape_string($name) . '"');\r
-               if (sql_num_rows($res) > 0) {\r
-                       $o = sql_fetch_object($res);\r
-                       return $o->catid;\r
+               $res = DB::getValue('SELECT catid FROM '.sql_table('category').' WHERE cblog='.$this->getID().' and cname="' . DB::quoteValue($name) . '"');\r
+               if ( $res ) {\r
+                       return $res;\r
                } else {\r
                        return $this->getDefaultCategory();\r
                }\r
@@ -1394,10 +1391,10 @@ class Blog
                );\r
                \r
                // add to team\r
-               $query = "INSERT INTO %s (TMEMBER, TBLOG, TADMIN) VALUES (%d, %d, %d);";
-               $query = sprintf($query, sql_table('team'), (integer) $memberid, (integer) $this->getID(), (integer) $admin);
-               sql_query($query);\r
-\r
+               $query = "INSERT INTO %s (TMEMBER, TBLOG, TADMIN) VALUES (%d, %d, %d);";\r
+               $query = sprintf($query, sql_table('team'), (integer) $memberid, (integer) $this->getID(), (integer) $admin);\r
+               DB::execute($query);\r
+               \r
                $manager->notify(\r
                        'PostAddTeamMember',\r
                        array(\r
@@ -1425,8 +1422,8 @@ class Blog
          *     blog shortname\r
          */\r
        function exists($name) {\r
-               $r = sql_query('select * FROM '.sql_table('blog').' WHERE bshortname="'.sql_real_escape_string($name).'"');\r
-               return (sql_num_rows($r) != 0);\r
+               $r = DB::getResult('SELECT * FROM '.sql_table('blog').' WHERE bshortname='. DB::quoteValue($name));\r
+               return ($r->rowCount() != 0);\r
        }\r
 \r
        /**\r
@@ -1437,8 +1434,8 @@ class Blog
          *     blog id\r
          */\r
        function existsID($id) {\r
-               $r = sql_query('select * FROM '.sql_table('blog').' WHERE bnumber='.intval($id));\r
-               return (sql_num_rows($r) != 0);\r
+               $r = DB::getResult('SELECT * FROM '.sql_table('blog').' WHERE bnumber='.intval($id));\r
+               return ($r->rowCount() != 0);\r
        }\r
 \r
        /**\r
@@ -1447,7 +1444,7 @@ class Blog
        function setFuturePost() {\r
                $query =  'UPDATE '.sql_table('blog')\r
                            . " SET bfuturepost='1' WHERE bnumber=" . $this->getID();\r
-               sql_query($query);\r
+               DB::execute($query);\r
        }\r
 \r
        /**\r
@@ -1456,7 +1453,7 @@ class Blog
        function clearFuturePost() {\r
                $query =  'UPDATE '.sql_table('blog')\r
                           . " SET bfuturepost='0' WHERE bnumber=" . $this->getID();\r
-               sql_query($query);\r
+               DB::execute($query);\r
        }\r
 \r
        /**\r
@@ -1467,9 +1464,9 @@ class Blog
 \r
                if ($this->settings['bfuturepost'] == 1) {\r
                        $blogid = $this->getID();\r
-                       $result = sql_query("SELECT * FROM " . sql_table('item')\r
+                       $result = DB::getResult("SELECT * FROM " . sql_table('item')\r
                                  . " WHERE iposted=0 AND iblog=" . $blogid . " AND itime<NOW()");\r
-                       if (sql_num_rows($result) > 0) {\r
+                       if ( $result->rowCount() > 0 ) {\r
                                // This $pinged is allow a plugin to tell other hook to the event that a ping is sent already\r
                                // Note that the plugins's calling order is subject to thri order in the plugin list\r
                                $pinged = false;\r
@@ -1481,12 +1478,12 @@ class Blog
                                );\r
 \r
                                // clear all expired future posts\r
-                               sql_query("UPDATE " . sql_table('item') . " SET iposted='1' WHERE iblog=" . $blogid . " AND itime<NOW()");\r
+                               DB::execute("UPDATE " . sql_table('item') . " SET iposted='1' WHERE iblog=" . $blogid . " AND itime<NOW()");\r
 \r
                                // check to see any pending future post, clear the flag is none\r
-                               $result = sql_query("SELECT * FROM " . sql_table('item')\r
+                               $result = DB::getResult("SELECT * FROM " . sql_table('item')\r
                                          . " WHERE iposted=0 AND iblog=" . $blogid);\r
-                               if (sql_num_rows($result) == 0) {\r
+                               if ( $result->rowCount() == 0 ) {\r
                                        $this->clearFuturePost();\r
                                }\r
                        }\r
@@ -1591,7 +1588,7 @@ class Blog
                        if ( !$showFuture )\r
                        {\r
                                // don't show future items\r
-                               $query .= " and i.itime<='" . i18n::formatted_datetime('mysql', $this->getCorrectTime()) . "'";\r
+                               $query .= ' and i.itime<=' . DB::formatDateTime($this->getCorrectTime());\r
                        }\r
                        \r
                        $query .= ' and i.inumber='.intval($value);\r
index e9db97a..83cb68d 100644 (file)
@@ -66,7 +66,7 @@ class BodyActions extends BaseActions
        {\r
                global $currentitemid;\r
                $this->currentItem =& $item;\r
-               $currentitemid = $this->currentItem->itemid;\r
+               $currentitemid = $this->currentItem['itemid'];\r
                return;\r
        }\r
        \r
@@ -107,9 +107,9 @@ class BodyActions extends BaseActions
                array_shift($params);\r
                \r
                // add item reference (array_unshift didn't work)\r
-               $params = array_merge(array(&$this->currentItem),$params);\r
+               $params = array_merge(array(&$this->currentItem), $params);\r
                \r
-               call_user_func_array(array(&$plugin,'doItemVar'), $params);\r
+               call_user_func_array(array(&$plugin, 'doItemVar'), $params);\r
                return;\r
        }\r
        \r
@@ -125,8 +125,8 @@ class BodyActions extends BaseActions
        {\r
                // image/popup calls have arguments separated by |\r
                $args = func_get_args();\r
-               $args = preg_split('#\|#',implode($args,', '));\r
-               echo call_user_func_array(array(&$this,'createImageCode'),$args);\r
+               $args = preg_split('#\|#', implode($args, ', '));\r
+               echo call_user_func_array(array(&$this, 'createImageCode'), $args);\r
        }\r
        \r
        /**\r
@@ -145,18 +145,18 @@ class BodyActions extends BaseActions
                // select private collection when no collection given\r
                if ( i18n::strpos($filename, '/') === FALSE )\r
                {\r
-                       $filename = $this->currentItem->authorid . '/' . $filename;\r
+                       $filename = $this->currentItem['authorid'] . '/' . $filename;\r
                }\r
                \r
                $windowwidth = $width;\r
                $windowheight = $height;\r
                \r
-               $vars['link']                   = Entity::hsc($CONF['MediaURL']. $filename);\r
-               $vars['text']                   = Entity::hsc($text);\r
-               $vars['image'] = '<img src="' . $vars['link'] . '" width="' . $width . '" height="' . $height . '" alt="' . $vars['text'] . '" title="' . $vars['text'] . '" />';\r
-               $vars['width']                  = $width;\r
-               $vars['height']                 = $height;\r
-               $vars['media']                  = '<a href="' . $vars['link'] . '">' . $vars['text'] . '</a>';\r
+               $vars['link']   = Entity::hsc($CONF['MediaURL']. $filename);\r
+               $vars['text']   = Entity::hsc($text);\r
+               $vars['image']  = '<img src="' . $vars['link'] . '" width="' . $width . '" height="' . $height . '" alt="' . $vars['text'] . '" title="' . $vars['text'] . '" />';\r
+               $vars['width']  = $width;\r
+               $vars['height'] = $height;\r
+               $vars['media']  = '<a href="' . $vars['link'] . '">' . $vars['text'] . '</a>';\r
                \r
                return Template::fill($this->template['IMAGE_CODE'], $vars);
        }\r
@@ -173,8 +173,8 @@ class BodyActions extends BaseActions
        {\r
                // image/popup calls have arguments separated by |\r
                $args = func_get_args();\r
-               $args = preg_split('#\|#', implode($args,', '));\r
-               echo call_user_func_array(array(&$this,'createMediaCode'), $args);\r
+               $args = preg_split('#\|#', implode($args, ', '));\r
+               echo call_user_func_array(array(&$this, 'createMediaCode'), $args);\r
        }\r
        \r
        /**\r
@@ -192,7 +192,7 @@ class BodyActions extends BaseActions
                // select private collection when no collection given\r
                if ( i18n::strpos($filename, '/') === FALSE )\r
                {\r
-                       $filename = $this->currentItem->authorid . '/' . $filename;\r
+                       $filename = $this->currentItem['authorid'] . '/' . $filename;\r
                }\r
                \r
                $vars['link']                   = Entity::hsc($CONF['MediaURL'] . $filename);\r
@@ -214,8 +214,8 @@ class BodyActions extends BaseActions
        {\r
                // image/popup calls have arguments separated by |\r
                $args = func_get_args();\r
-               $args = preg_split('#\|#', implode($args,', '));\r
-               echo call_user_func_array(array(&$this,'createPopupCode'), $args);\r
+               $args = preg_split('#\|#', implode($args, ', '));\r
+               echo call_user_func_array(array(&$this, 'createPopupCode'), $args);\r
        }\r
        \r
        /**\r
@@ -235,7 +235,7 @@ class BodyActions extends BaseActions
                // select private collection when no collection given\r
                if ( i18n::strpos($filename, '/') === FALSE )\r
                {\r
-                       $filename = $this->currentItem->authorid . '/' . $filename;\r
+                       $filename = $this->currentItem['authorid'] . '/' . $filename;\r
                }\r
                \r
                $windowwidth = $width;\r
@@ -280,7 +280,7 @@ class BodyActions extends BaseActions
                                $condition = ($blog && ($blog->getSetting($name) == $value));\r
                                break;\r
                        case 'itemblogsetting':\r
-                               $b =& $manager->getBlog(getBlogIDFromItemID($this->currentItem->itemid));\r
+                               $b =& $manager->getBlog(getBlogIDFromItemID($this->currentItem['itemid']));\r
                                $condition = ($b && ($b->getSetting($name) == $value));\r
                                break;\r
                        case 'loggedin':\r
@@ -354,19 +354,19 @@ class BodyActions extends BaseActions
        {\r
                global $member, $manager;\r
                \r
-               $b =& $manager->getBlog(getBlogIDFromItemID($this->currentItem->itemid));\r
+               $b =& $manager->getBlog(getBlogIDFromItemID($this->currentItem['itemid']));\r
                \r
                // when no parameter is defined, just check if author is current visitor\r
                if ( ($key != 'isadmin' && $key != 'name') || ($key == 'name' && $value == '') )\r
                {\r
-                       return (intval($member->getID()) > 0 && intval($member->getID()) == intval($this->currentItem->authorid));\r
+                       return (intval($member->getID()) > 0 && intval($member->getID()) == intval($this->currentItem['authorid']));\r
                }\r
                \r
                // check author name\r
                if ( $key == 'name' )\r
                {\r
                        $value = strtolower($value);\r
-                       if ( $value == strtolower($this->currentItem->author) )\r
+                       if ( $value == strtolower($this->currentItem['author']) )\r
                        {\r
                                return TRUE;\r
                        }\r
@@ -375,7 +375,7 @@ class BodyActions extends BaseActions
                // check if author is admin\r
                if ( ($key == 'isadmin') )\r
                {\r
-                       $aid = intval($this->currentItem->authorid);\r
+                       $aid = intval($this->currentItem['authorid']);\r
                        $blogid = intval($b->getID());                  \r
                        $amember =& $manager->getMember($aid);\r
                        if ( $amember->isAdmin() )\r
@@ -400,7 +400,7 @@ class BodyActions extends BaseActions
        {\r
                global $catid, $manager;\r
                \r
-               $b =& $manager->getBlog(getBlogIDFromItemID($this->currentItem->itemid));\r
+               $b =& $manager->getBlog(getBlogIDFromItemID($this->currentItem['itemid']));\r
                \r
                // when no parameter is defined, just check if a category is selected\r
                if ( ($key != 'catname' && $key != 'catid') || ($value == '') )\r
@@ -408,7 +408,7 @@ class BodyActions extends BaseActions
                        return $b->isValidCategory($catid);\r
                }\r
                        \r
-               $icatid = $this->currentItem->catid;\r
+               $icatid = $this->currentItem['catid'];\r
                \r
                // check category name\r
                if ( $key == 'catname' )\r
index a949f82..7261ff3 100644 (file)
@@ -54,6 +54,7 @@ class BaseActions
        
        /* NOTE: defined actions for this base class */
        static private $defined_actions = array(
+               'charset',
                'else',
                'elseif',
                'elseifnot',
@@ -61,6 +62,7 @@ class BaseActions
                'if',
                'ifnot',
                'include',
+               'locale',
                'parsedinclude',
                'phpinclude',
                'set',
@@ -112,6 +114,42 @@ class BaseActions
        }
        
        /**
+        * BaseActions::parse_charset()
+        * Parse charset to appropriate character set name registered to IANA
+        * 
+        * @param       void
+        * @return      void
+        */
+       public function parse_charset()
+       {
+               global $member;
+               
+               if ( i18n::get_forced_charset() !== '' )
+               {
+                       echo i18n::get_forced_charset();
+               }
+               else
+               {
+                       echo i18n::get_current_charset();
+               }
+               
+               return;
+       }
+       
+       /**
+        * BaseActions::parse_locale()
+        * Parse locale to language-script-region according to RFC 4646
+        * 
+        * @param       void
+        * @return      void
+        */
+       public function parse_locale()
+       {
+               echo preg_replace('#_#', '-', i18n::get_current_locale());
+               return;
+       }
+       
+       /**
         * BaseActions::parse_include()
         * include file (no parsing of php)
         * 
index 71473fa..8af5d5f 100644 (file)
@@ -45,9 +45,7 @@ class Comment
                       . ' WHERE cnumber = %d;';\r
                \r
                $query = sprintf($query, sql_table('comment'), sql_table('member'), (integer) $commentid);\r
-               $comments = sql_query($query);
-               \r
-               $aCommentInfo = sql_fetch_assoc($comments);\r
+               $aCommentInfo = DB::getRow($query);\r
 \r
                if ( $aCommentInfo )
                {
index b41870d..73bcd46 100644 (file)
@@ -404,8 +404,8 @@ class CommentActions extends BaseActions
        {\r
                $data = array(\r
                        'itemid'        => $this->commentsObj->itemid,\r
-                       'timestamp'     => $this->commentsObj->itemActions->currentItem->timestamp,\r
-                       'title'         => $this->commentsObj->itemActions->currentItem->title,\r
+                       'timestamp'     => $this->commentsObj->itemActions->currentItem['timestamp'],\r
+                       'title'         => $this->commentsObj->itemActions->currentItem['title'],\r
                        'extra'         => $this->commentsObj->itemActions->linkparams\r
                );\r
                \r
@@ -682,7 +682,7 @@ class CommentActions extends BaseActions
        }\r
        \r
        /**\r
-        * ItemActions::checkCondition()\r
+        * CommentActions::checkCondition()\r
         * Checks conditions for if statements\r
         *\r
         * @param       string  $field  type of <%if%>\r
index 751ae33..851080d 100644 (file)
@@ -84,8 +84,8 @@ class Comments
                                   . ' WHERE c.citem=' . $this->itemid\r
                                   . ' ORDER BY c.ctime';\r
 \r
-                       $comments = sql_query($query);\r
-                       $this->commentcount = sql_num_rows($comments);\r
+                       $comments = DB::getResult($query);\r
+                       $this->commentcount = $comments->rowCount();\r
                }\r
 \r
                // if no result was found\r
@@ -103,7 +103,7 @@ class Comments
 \r
                $parser->parse($template['COMMENTS_HEADER']);\r
 \r
-               while ( $comment = sql_fetch_assoc($comments) ) {\r
+               foreach ( $comments as $comment ) {\r
                        $comment['timestamp'] = strtotime($comment['ctime']);\r
                        $handler->setCurrentComment($comment);\r
                        $handler->setHighlight($highlight);\r
@@ -114,7 +114,7 @@ class Comments
 \r
                $parser->parse($template['COMMENTS_FOOTER']);\r
 \r
-               sql_free_result($comments);\r
+               $comments->closeCursor();\r
 \r
                return $this->commentcount;\r
        }\r
@@ -126,10 +126,9 @@ class Comments
                $query =  'SELECT COUNT(*)'\r
                           . ' FROM '.sql_table('comment').' as c'\r
                           . ' WHERE c.citem='. $this->itemid;\r
-               $res = sql_query($query);\r
-               $arr = sql_fetch_row($res);\r
+               $res = DB::getValue($query);\r
 \r
-               return $arr[0];\r
+               return $res;\r
        }\r
 \r
        /**\r
@@ -323,12 +322,12 @@ class Comments
                \r
                $manager->notify('PreAddComment', array('comment' => &$comment, 'spamcheck' => &$spamcheck) );\r
                \r
-               $name           = sql_real_escape_string($comment['user']);\r
-               $url            = sql_real_escape_string($comment['userid']);\r
-               $email      = sql_real_escape_string($comment['email']);\r
-               $body           = sql_real_escape_string($comment['body']);\r
-               $host           = sql_real_escape_string($comment['host']);\r
-               $ip                     = sql_real_escape_string($comment['ip']);\r
+               $name           = DB::quoteValue($comment['user']);\r
+               $url            = DB::quoteValue($comment['userid']);\r
+               $email      = DB::quoteValue($comment['email']);\r
+               $body           = DB::quoteValue($comment['body']);\r
+               $host           = DB::quoteValue($comment['host']);\r
+               $ip                     = DB::quoteValue($comment['ip']);\r
                $memberid       = intval($comment['memberid']);\r
                $timestamp      = date('Y-m-d H:i:s', $comment['timestamp']);\r
                $itemid         = $this->itemid;\r
@@ -336,12 +335,12 @@ class Comments
                $qSql       = 'SELECT COUNT(*) AS result '\r
                                        . 'FROM ' . sql_table('comment')\r
                                        . ' WHERE '\r
-                                       .      'cmail   = "' . $url . '"'\r
-                                       . ' AND cmember = "' . $memberid . '"'\r
-                                       . ' AND cbody   = "' . $body . '"'\r
-                                       . ' AND citem   = "' . $itemid . '"'\r
-                                       . ' AND cblog   = "' . $blogid . '"';\r
-               $result     = (integer) quickQuery($qSql);\r
+                                       .      'cmail   = ' . $url\r
+                                       . ' AND cmember = ' . $memberid\r
+                                       . ' AND cbody   = ' . $body\r
+                                       . ' AND citem   = ' . $itemid\r
+                                       . ' AND cblog   = ' . $blogid;\r
+               $result     = (integer) DB::getValue($qSql);\r
                \r
                if ( $result > 0 )\r
                {\r
@@ -349,12 +348,12 @@ class Comments
                }\r
                \r
                $query = 'INSERT INTO '.sql_table('comment').' (CUSER, CMAIL, CEMAIL, CMEMBER, CBODY, CITEM, CTIME, CHOST, CIP, CBLOG) '\r
-                          . "VALUES ('$name', '$url', '$email', $memberid, '$body', $itemid, '$timestamp', '$host', '$ip', '$blogid')";\r
+                          . "VALUES ($name, $url, $email, $memberid, $body, $itemid, '$timestamp', $host, $ip, '$blogid')";\r
                \r
-               sql_query($query);\r
+               DB::execute($query);\r
                \r
                // post add comment\r
-               $commentid = sql_insert_id();\r
+               $commentid = DB::getInsertId();\r
                $manager->notify('PostAddComment', array('comment' => &$comment, 'commentid' => &$commentid, 'spamcheck' => &$spamcheck) );\r
                \r
                // succeeded !\r
index 4df0789..9de8eb4 100644 (file)
@@ -98,15 +98,15 @@ class Item
                if ( !$allow_future )\r
                {\r
                        $blog =& $manager->getBlog(getBlogIDFromItemID($item_id));\r
-                       $query .= "AND i.itime <= '" . i18n::formatted_datetime('mysql', $blog->getCorrectTime()) ."'";\r
+                       $query .= 'AND i.itime <= ' . DB::formatDateTime($blog->getCorrectTime());\r
                }\r
                \r
                $query .= ' LIMIT 1';\r
-               $result = sql_query($query);\r
+               $result = DB::getResult($query);\r
                \r
-               if ( sql_num_rows($result) == 1 )\r
+               if ( $result->rowCount() == 1 )\r
                {\r
-                       $aItemInfo = sql_fetch_assoc($result);\r
+                       $aItemInfo = $result->fetch(PDO::FETCH_ASSOC);\r
                        $aItemInfo['timestamp'] = strtotime($aItemInfo['itime']);\r
                        return $aItemInfo;\r
                }\r
@@ -165,7 +165,7 @@ class Item
                }\r
                \r
                // create new category if needed\r
-               if ( i18n::strpos($i_catid, 'newcat') )\r
+               if ( i18n::strpos($i_catid, 'newcat') === 0 )\r
                {\r
                        // get blogid\r
                        list($i_blogid) = sscanf($i_catid, "newcat-%d");\r
@@ -313,11 +313,11 @@ class Item
                // update item itself\r
                $query =  'UPDATE ' . sql_table('item')\r
                                . ' SET'\r
-                               . " ibody = '" . sql_real_escape_string($body) . "',"\r
-                               . " ititle = '" . sql_real_escape_string($title) . "',"\r
-                               . " imore = '" . sql_real_escape_string($more) . "',"\r
-                               . " iclosed = " . intval($closed) . ","\r
-                               . " icat = " . intval($catid);\r
+                               . ' ibody = ' . DB::quoteValue($body) . ','\r
+                               . ' ititle = ' . DB::quoteValue($title) . ','\r
+                               . ' imore = ' . DB::quoteValue($more) . ','\r
+                               . ' iclosed = ' . intval($closed) . ','\r
+                               . ' icat = ' . intval($catid);\r
                \r
                // 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)\r
                if ( (!$blog->allowPastPosting()) && ($timestamp < $blog->getCorrectTime()) )\r
@@ -361,20 +361,20 @@ class Item
                {\r
                        $query .= ', idraft = 1';\r
                        // set timestamp back to zero for a draft\r
-                       $query .= ", itime = '" . i18n::formatted_datetime('mysql', $timestamp) ."'";\r
+                       $query .= ', itime = ' . DB::formatDateTime($timestamp);\r
                }\r
                \r
                // update timestamp when needed\r
                if ( $timestamp != 0 )\r
                {\r
-                       $query .= ", itime = '" . i18n::formatted_datetime('mysql', $timestamp) ."'";\r
+                       $query .= ', itime = ' . DB::formatDateTime($timestamp);\r
                }\r
                \r
                // make sure the correct item is updated\r
                $query .= ' WHERE inumber = ' . $itemid;\r
                \r
                // off we go!\r
-               sql_query($query);\r
+               DB::execute($query);\r
                \r
                $manager->notify('PostUpdateItem', array('itemid' => $itemid));\r
                \r
@@ -431,12 +431,12 @@ class Item
                // update item table\r
                $query = "UPDATE %s SET iblog=%d, icat=%d WHERE inumber=%d";\r
                $query = sprintf($query, sql_table('item'), $new_blogid, $new_catid, $itemid);\r
-               sql_query($query);\r
+               DB::execute($query);\r
                \r
                // update comments\r
                $query = "UPDATE %s SET cblog=%d WHERE citem=%d";\r
                $query = sprintf($query, sql_table('comment'), $new_blogid, $itemid);\r
-               sql_query($query);\r
+               DB::execute($query);\r
                \r
                $manager->notify(\r
                        'PostMoveItem',\r
@@ -473,12 +473,12 @@ class Item
                // delete item\r
                $query = "DELETE FROM %s WHERE inumber=%d";\r
                $query = sprintf($query, sql_table('item'), $itemid);\r
-               sql_query($query);\r
+               DB::execute($query);\r
                \r
                // delete the comments associated with the item\r
                $query = "DELETE FROM %s WHERE citem=%d";\r
                $query = sprintf($query, sql_table('comment'), $itemid);\r
-               sql_query($query);\r
+               DB::execute($query);\r
                \r
                // delete all associated plugin options\r
                NucleusPlugin::delete_option_values('item', $itemid);\r
@@ -514,14 +514,14 @@ class Item
                                return 0;\r
                        }\r
                        $blog =& $manager->getBlog($blogid);\r
-                       $query .= " and itime<='" . i18n::formatted_datetime('mysql', $blog->getCorrectTime()) ."'";\r
+                       $query .= ' and itime<=' . DB::formatDateTime($blog->getCorrectTime());\r
                }\r
                if ( !$draft )\r
                {\r
                        $query .= ' and idraft=0';\r
                }\r
-               $result = sql_query($query);\r
-               return ( sql_num_rows($result) != 0 );\r
+               $result = DB::getResult($query);\r
+               return ( $result->rowCount() != 0 );\r
        }\r
        \r
        /**\r
@@ -576,7 +576,7 @@ class Item
                }\r
                \r
                // create new category if needed\r
-               if ( i18n::strpos($catid,'newcat') === 0 )\r
+               if ( i18n::strpos($i_catid,'newcat') === 0 )\r
                {\r
                        // Set in default category\r
                        $blog =& $manager->getBlog($i_blogid);\r
index 81afd2c..333dd81 100644 (file)
@@ -93,15 +93,15 @@ class ItemActions extends BaseActions
                'plugin',
                'query',
                'relevance',
-               'smartbody',
-               'syndicate_description',
-               'syndicate_title',
-               'time',
-               'title',
-       /* actions defined in BodyAction class */
+               'smartbody',\r
+               'syndicate_description',\r
+               'syndicate_title',\r
+               'time',\r
+               'title',\r
+       /* actions defined in BodyAction class */\r
                'image',\r
-               'media',
-               'popup',\r
+               'media',\r
+               'popup'\r
        );\r
        \r
        /**\r
@@ -112,6 +112,7 @@ class ItemActions extends BaseActions
        public function __construct(&$blog)\r
        {\r
                global $catid, $member;\r
+               \r
                // call constructor of superclass first\r
                parent::__construct();
                \r
@@ -162,7 +163,7 @@ class ItemActions extends BaseActions
        {\r
                global $currentitemid;\r
                $this->currentItem =& $item;\r
-               $currentitemid = $this->currentItem->itemid;\r
+               $currentitemid = $this->currentItem['itemid'];\r
                return;\r
        }\r
        \r
@@ -223,7 +224,7 @@ class ItemActions extends BaseActions
         */\r
        public function parse_body()\r
        {\r
-               $this->highlightAndParse($this->currentItem->body);\r
+               $this->highlightAndParse($this->currentItem['body']);\r
                return;\r
        }\r
        \r
@@ -236,7 +237,7 @@ class ItemActions extends BaseActions
         */\r
        public function parse_more()\r
        {\r
-               $this->highlightAndParse($this->currentItem->more);\r
+               $this->highlightAndParse($this->currentItem['more']);\r
                return;\r
        }\r
        \r
@@ -249,7 +250,7 @@ class ItemActions extends BaseActions
         */\r
        public function parse_itemid()\r
        {\r
-               echo $this->currentItem->itemid;\r
+               echo $this->currentItem['itemid'];\r
                return;\r
        }\r
        \r
@@ -262,7 +263,7 @@ class ItemActions extends BaseActions
         */\r
        public function parse_category()\r
        {\r
-               echo $this->currentItem->category;\r
+               echo $this->currentItem['category'];\r
                return;\r
        }\r
        \r
@@ -275,7 +276,7 @@ class ItemActions extends BaseActions
         */\r
        public function parse_categorylink()\r
        {\r
-               echo Link::create_link('category', array('catid' => $this->currentItem->catid, 'name' => $this->currentItem->category));\r
+               echo Link::create_link('category', array('catid' => $this->currentItem['catid'], 'name' => $this->currentItem['category']));\r
                return;\r
        }\r
        \r
@@ -288,7 +289,7 @@ class ItemActions extends BaseActions
         */\r
        public function parse_catid()\r
        {\r
-               echo $this->currentItem->catid;\r
+               echo $this->currentItem['catid'];\r
                return;\r
        }\r
        \r
@@ -301,7 +302,7 @@ class ItemActions extends BaseActions
         */\r
        public function parse_authorid()\r
        {\r
-               echo $this->currentItem->authorid;\r
+               echo $this->currentItem['authorid'];\r
                return;\r
        }\r
        \r
@@ -315,8 +316,8 @@ class ItemActions extends BaseActions
        public function parse_authorlink()\r
        {\r
                $data = array(\r
-                               'memberid' => $this->currentItem->authorid,\r
-                               'name' => $this->currentItem->author,\r
+                               'memberid' => $this->currentItem['authorid'],\r
+                               'name' => $this->currentItem['author'],\r
                                'extra' => $this->linkparams\r
                        );\r
                \r
@@ -347,9 +348,9 @@ class ItemActions extends BaseActions
        public function parse_itemlink()\r
        {\r
                $data = array(\r
-                       'itemid'        => $this->currentItem->itemid,\r
-                       'title'         => $this->currentItem->title,\r
-                       'timestamp'     => $this->currentItem->timestamp,\r
+                       'itemid'        => $this->currentItem['itemid'],\r
+                       'title'         => $this->currentItem['title'],\r
+                       'timestamp'     => $this->currentItem['timestamp'],\r
                        'extra'         => $this->linkparams\r
                );\r
                \r
@@ -379,7 +380,7 @@ class ItemActions extends BaseActions
         */\r
        public function parse_closed()\r
        {\r
-               echo $this->currentItem->closed;\r
+               echo $this->currentItem['closed'];\r
                return;\r
        }\r
        \r
@@ -392,7 +393,7 @@ class ItemActions extends BaseActions
         */\r
        public function parse_relevance()\r
        {\r
-               echo round($this->currentItem->score,2);\r
+               echo round($this->currentItem['score'], 2);\r
                return;\r
        }\r
        \r
@@ -409,10 +410,6 @@ class ItemActions extends BaseActions
                {\r
                        $itemtitle = $this->currentItem['title'];\r
                }\r
-               elseif ( is_object($this->currentItem) )\r
-               {\r
-                       $itemtitle = $this->currentItem->title;\r
-               }\r
                switch ( $format )\r
                {\r
                        case 'xml':\r
@@ -443,7 +440,7 @@ class ItemActions extends BaseActions
                global $manager;\r
                \r
                // get karma object\r
-               $karma =& $manager->getKarma($this->currentItem->itemid);\r
+               $karma =& $manager->getKarma($this->currentItem['itemid']);\r
                \r
                switch ( $type )\r
                {\r
@@ -484,20 +481,20 @@ class ItemActions extends BaseActions
                switch ( $which )\r
                {\r
                        case 'realname':\r
-                               echo $this->currentItem->authorname;\r
+                               echo $this->currentItem['authorname'];\r
                                break;\r
                        case 'id':\r
-                               echo $this->currentItem->authorid;\r
+                               echo $this->currentItem['authorid'];\r
                                break;\r
                        case 'email':\r
-                               echo $this->currentItem->authormail;\r
+                               echo $this->currentItem['authormail'];\r
                                break;\r
                        case 'url':\r
-                               echo $this->currentItem->authorurl;\r
+                               echo $this->currentItem['authorurl'];\r
                                break;\r
                        case 'name':\r
                        default:\r
-                               echo $this->currentItem->author;\r
+                               echo $this->currentItem['author'];\r
                }\r
                return;\r
        }\r
@@ -511,13 +508,13 @@ class ItemActions extends BaseActions
         */\r
        public function parse_smartbody()\r
        {\r
-               if ( !$this->currentItem->more )\r
+               if ( !$this->currentItem['more'] )\r
                {\r
-                       $this->highlightAndParse($this->currentItem->body);\r
+                       $this->highlightAndParse($this->currentItem['body']);\r
                }\r
                else\r
                {\r
-                       $this->highlightAndParse($this->currentItem->more);\r
+                       $this->highlightAndParse($this->currentItem['more']);\r
                }\r
                return;\r
        }\r
@@ -528,7 +525,7 @@ class ItemActions extends BaseActions
         */\r
        public function parse_morelink()\r
        {\r
-               if ( $this->currentItem->more )\r
+               if ( $this->currentItem['more'] )\r
                {\r
                        $this->parser->parse($this->template['MORELINK']);\r
                }\r
@@ -565,7 +562,7 @@ class ItemActions extends BaseActions
                        $offset = $this->blog->getTimeOffset() * 3600;\r
                }\r
                \r
-               echo i18n::formatted_datetime($format, $this->currentItem->timestamp, $offset);\r
+               echo i18n::formatted_datetime($format, $this->currentItem['timestamp'], $offset);\r
                return;\r
        }\r
        \r
@@ -592,7 +589,7 @@ class ItemActions extends BaseActions
                {\r
                        $format = $this->template['FORMAT_TIME'];\r
                }\r
-               echo i18n::formatted_datetime($format, $this->currentItem->timestamp);\r
+               echo i18n::formatted_datetime($format, $this->currentItem['timestamp']);\r
                return;\r
        }\r
        \r
@@ -604,7 +601,7 @@ class ItemActions extends BaseActions
         * @return      string  syndicated      title\r
         */\r
        public function parse_syndicate_title($maxLength = 100) {\r
-               $syndicated = strip_tags($this->currentItem->title);\r
+               $syndicated = strip_tags($this->currentItem['title']);\r
                echo Entity::hsc(Entity::shorten($syndicated,$maxLength,'...'));\r
        }\r
        \r
@@ -618,7 +615,7 @@ class ItemActions extends BaseActions
         */\r
        public function parse_syndicate_description($maxLength = 250, $addHighlight = 0)\r
        {\r
-               $syndicated = strip_tags($this->currentItem->body);\r
+               $syndicated = strip_tags($this->currentItem['body']);\r
                if ( $addHighlight )\r
                {\r
                        $tmp_highlight = Entity::hsc(Entity::shorten($syndicated,$maxLength,'...'));\r
@@ -641,7 +638,7 @@ class ItemActions extends BaseActions
        public function parse_karmaposlink($text = '')\r
        {\r
                global $CONF;\r
-               $link = $CONF['ActionURL'] . '?action=votepositive&amp;itemid=' . $this->currentItem->itemid;\r
+               $link = $CONF['ActionURL'] . '?action=votepositive&amp;itemid=' . $this->currentItem['itemid'];\r
                if ( !$text )\r
                {\r
                        echo '<a href="'.$link.'">' . $text . '</a>';\r
@@ -664,7 +661,7 @@ class ItemActions extends BaseActions
        public function parse_karmaneglink($text = '')\r
        {\r
                global $CONF;\r
-               $link = $CONF['ActionURL'] . '?action=votenegative&amp;itemid='.$this->currentItem->itemid;\r
+               $link = $CONF['ActionURL'] . '?action=votenegative&amp;itemid='.$this->currentItem['itemid'];\r
                \r
                if ( !$text )\r
                {\r
@@ -687,7 +684,7 @@ class ItemActions extends BaseActions
         */\r
        public function parse_new()\r
        {\r
-               if ( ($this->lastVisit != 0) && ($this->currentItem->timestamp > $this->lastVisit) )\r
+               if ( ($this->lastVisit != 0) && ($this->currentItem['timestamp'] > $this->lastVisit) )\r
                {\r
                        echo $this->template['NEW'];\r
                }\r
@@ -703,7 +700,7 @@ class ItemActions extends BaseActions
         */\r
        public function parse_daylink()\r
        {\r
-               echo Link::create_archive_link($this->blog->getID(), i18n::formatted_datetime('%Y-%m-%d', $this->currentItem->timestamp), $this->linkparams);\r
+               echo Link::create_archive_link($this->blog->getID(), i18n::formatted_datetime('%Y-%m-%d', $this->currentItem['timestamp']), $this->linkparams);\r
                return;\r
        }\r
        \r
@@ -724,9 +721,9 @@ class ItemActions extends BaseActions
                // add comments\r
                if ( $this->showComments && $this->blog->commentsEnabled() )\r
                {\r
-                       $comments = new Comments($this->currentItem->itemid);\r
+                       $comments = new Comments($this->currentItem['itemid']);\r
                        $comments->setItemActions($this);\r
-                       $comments->showComments($this->template, $maxToShow, $this->currentItem->closed ? 0 : 1, $this->strHighlight);\r
+                       $comments->showComments($this->template, $maxToShow, $this->currentItem['closed'] ? 0 : 1, $this->strHighlight);\r
                }\r
                return;\r
        }\r
@@ -772,7 +769,7 @@ class ItemActions extends BaseActions
        public function parse_edit()\r
        {\r
                global $member, $CONF;\r
-               if ( $this->allowEditAll || ($member->isLoggedIn() && ($member->getID() == $this->currentItem->authorid)) )\r
+               if ( $this->allowEditAll || ($member->isLoggedIn() && ($member->getID() == $this->currentItem['authorid'])) )\r
                {\r
                        $this->parser->parse($this->template['EDITLINK']);\r
                }\r
@@ -786,7 +783,7 @@ class ItemActions extends BaseActions
        public function parse_editlink()\r
        {\r
                global $CONF;\r
-               echo $CONF['AdminURL'] . 'bookmarklet.php?action=edit&amp;itemid=' . $this->currentItem->itemid;\r
+               echo $CONF['AdminURL'] . 'bookmarklet.php?action=edit&amp;itemid=' . $this->currentItem['itemid'];\r
                return;\r
        }\r
        \r
@@ -850,7 +847,7 @@ class ItemActions extends BaseActions
                                $condition = ($blog && ($blog->getSetting($name) == $value));\r
                                break;\r
                        case 'itemblogsetting':\r
-                               $b =& $manager->getBlog(getBlogIDFromItemID($this->currentItem->itemid));\r
+                               $b =& $manager->getBlog(getBlogIDFromItemID($this->currentItem['itemid']));\r
                                $condition = ($b && ($b->getSetting($name) == $value));\r
                                break;\r
                        case 'loggedin':\r
@@ -923,19 +920,19 @@ class ItemActions extends BaseActions
        {\r
                global $member, $manager;\r
                \r
-               $b =& $manager->getBlog(getBlogIDFromItemID($this->currentItem->itemid));\r
+               $b =& $manager->getBlog(getBlogIDFromItemID($this->currentItem['itemid']));\r
                \r
                // when no parameter is defined, just check if author is current visitor\r
                if ( ($key != 'isadmin' && $key != 'name') || ($key == 'name' && $value == '') )\r
                {\r
-                       return (boolean) ((integer) $member->getID() > 0 && (integer) $member->getID() == (integer) $this->currentItem->authorid);\r
+                       return (boolean) ((integer) $member->getID() > 0 && (integer) $member->getID() == (integer) $this->currentItem['authorid']);\r
                }\r
                \r
                // check author name\r
                if ( $key == 'name' )\r
                {\r
                        $value = strtolower($value);\r
-                       if ( $value == strtolower($this->currentItem->author) )\r
+                       if ( $value == strtolower($this->currentItem['author']) )\r
                        {\r
                                return TRUE;\r
                        }\r
@@ -944,7 +941,7 @@ class ItemActions extends BaseActions
                // check if author is admin\r
                if ( ($key == 'isadmin') )\r
                {\r
-                       $aid = intval($this->currentItem->authorid);\r
+                       $aid = intval($this->currentItem['authorid']);\r
                        $blogid = intval($b->getID());                  \r
                        $amember =& $manager->getMember($aid);\r
                        if ( $amember->isAdmin() )\r
@@ -969,7 +966,7 @@ class ItemActions extends BaseActions
        {\r
                global $catid, $manager;\r
                \r
-               $b =& $manager->getBlog(getBlogIDFromItemID($this->currentItem->itemid));\r
+               $b =& $manager->getBlog(getBlogIDFromItemID($this->currentItem['itemid']));\r
                \r
                // when no parameter is defined, just check if a category is selected\r
                if ( ($key != 'catname' && $key != 'catid') || ($value == '') )\r
@@ -977,7 +974,7 @@ class ItemActions extends BaseActions
                        return (boolean) $b->isValidCategory($catid);\r
                }\r
                \r
-               $icatid = $this->currentItem->catid;\r
+               $icatid = $this->currentItem['catid'];\r
                \r
                // check category name\r
                if ( $key == 'catname' )\r
@@ -1128,4 +1125,4 @@ class ItemActions extends BaseActions
                \r
                return (boolean) call_user_func_array(array(&$plugin, 'doIf'), $params);\r
        }\r
-}
+}
\ No newline at end of file
index 6b96c4a..1c7dcb4 100644 (file)
@@ -86,31 +86,30 @@ class Karma
        // these methods shouldn't be called directly\r
        function readFromDatabase() {\r
                $query = 'SELECT ikarmapos, ikarmaneg FROM '.sql_table('item').' WHERE inumber=' . $this->itemid;\r
-               $res = sql_query($query);\r
-               $obj = sql_fetch_object($res);\r
+               $res = DB::getRow($query);\r
 \r
-               $this->karmapos = $obj->ikarmapos;\r
-               $this->karmaneg = $obj->ikarmaneg;\r
+               $this->karmapos = $res['ikarmapos'];\r
+               $this->karmaneg = $res['ikarmaneg'];\r
                $this->inforead = 1;\r
        }\r
 \r
 \r
        function writeToDatabase() {\r
                $query = 'UPDATE '.sql_table('item').' SET ikarmapos=' . $this->karmapos . ', ikarmaneg='.$this->karmaneg.' WHERE inumber=' . $this->itemid;\r
-               sql_query($query);\r
+               DB::execute($query);\r
        }\r
 \r
        // checks if a vote is still allowed for an IP\r
        function isVoteAllowed($ip) {\r
-               $query = 'SELECT * FROM '.sql_table('karma')." WHERE itemid=$this->itemid and ip='".sql_real_escape_string($ip)."'";\r
-               $res = sql_query($query);\r
-               return (sql_num_rows($res) == 0);\r
+               $query = 'SELECT * FROM '.sql_table('karma')." WHERE itemid={$this->itemid} and ip=". DB::quoteValue($ip);\r
+               $res = DB::getResult($query);\r
+               return ($res->rowCount() == 0);\r
        }\r
 \r
        // save IP in database so no multiple votes are possible\r
        function saveIP() {\r
-               $query = 'INSERT INTO '.sql_table('karma').' (itemid, ip) VALUES ('.$this->itemid.",'".sql_real_escape_string(serverVar('REMOTE_ADDR'))."')";\r
-               sql_query($query);\r
+               $query = 'INSERT INTO ' . sql_table('karma') .' (itemid, ip) VALUES (' . $this->itemid . ','. DB::quoteValue(serverVar('REMOTE_ADDR')) .')';\r
+               DB::execute($query);\r
        }\r
 }\r
 \r
index e8d1a49..e288043 100644 (file)
@@ -154,7 +154,7 @@ class Manager
         */\r
        public function existsCategory($id)\r
        {\r
-               return (quickQuery('SELECT COUNT(*) as result FROM '.sql_table('category').' WHERE catid='.intval($id)) > 0);\r
+               return (DB::getValue('SELECT COUNT(*) as result FROM '.sql_table('category').' WHERE catid='.intval($id)) > 0);\r
        }\r
        \r
        /**\r
@@ -500,10 +500,10 @@ class Manager
                        // 'installedPlugins' = array ($pid => $name)\r
                        case 'installedPlugins':\r
                                $this->cachedInfo['installedPlugins'] = array();\r
-                               $res = sql_query('SELECT pid, pfile FROM ' . sql_table('plugin'));\r
-                               while ( $o = sql_fetch_object($res) )\r
+                               $res = DB::getResult('SELECT pid, pfile FROM ' . sql_table('plugin'));\r
+                               foreach ( $res as $row )\r
                                {\r
-                                       $this->cachedInfo['installedPlugins'][$o->pid] = $o->pfile;\r
+                                       $this->cachedInfo['installedPlugins'][$row['pid']] = $row['pfile'];\r
                                }\r
                                break;\r
                }\r
@@ -575,12 +575,12 @@ class Manager
                       . " FROM %s as e, %s as p"\r
                       . " WHERE e.pid=p.pid ORDER BY p.porder ASC";\r
                $query = sprintf($query, sql_table('plugin_event'), sql_table('plugin'));\r
-               $res = sql_query($query);\r
+               $res = DB::getResult($query);\r
                \r
-               while ( $o = sql_fetch_object($res) )\r
+               foreach ( $res as $row )\r
                {\r
-                       $pluginName = $o->pfile;\r
-                       $eventName = $o->event;\r
+                       $pluginName = $row['pfile'];\r
+                       $eventName = $row['event'];\r
                        $this->subscriptions[$eventName][] = $pluginName;\r
                }\r
                return;\r
@@ -669,7 +669,11 @@ class Manager
                }\r
                \r
                // check if ticket is a valid one\r
-               $query = 'SELECT COUNT(*) as result FROM ' . sql_table('tickets') . ' WHERE member=' . intval($memberId). ' and ticket=\''.sql_real_escape_string($ticket).'\'';\r
+               $query = sprintf('SELECT COUNT(*) as result FROM %s WHERE member=%d and ticket=%s',\r
+                       sql_table('tickets'),\r
+                       intval($memberId),\r
+                       DB::quoteValue($ticket)\r
+               );\r
                \r
                /*\r
                 * NOTE:\r
@@ -678,7 +682,7 @@ class Manager
                 * leaving the keys in the database is not a real problem, since they're member-specific and\r
                 * only valid for a period of one hour]\r
                 */\r
-               if ( quickQuery($query) != 1 )\r
+               if ( DB::getValue($query) != 1 )\r
                {\r
                        return FALSE;\r
                }\r
@@ -699,7 +703,7 @@ class Manager
                $oldTime = time() - 60 * 60;\r
                $query = "DELETE FROM %s WHERE ctime < '%s';";\r
                $query = sprintf($query, sql_table('tickets'), date('Y-m-d H:i:s',$oldTime));\r
-               sql_query($query);\r
+               DB::execute($query);\r
                return;\r
        }\r
        \r
@@ -736,10 +740,10 @@ class Manager
                                \r
                                // add in database as non-active\r
                                $query = "INSERT INTO %s (ticket, member, ctime)"\r
-                                      . " VALUES ('%s', %d, '%s');";\r
-                               $query = sprintf($query, sql_table('tickets'), sql_real_escape_string($ticket), (integer) $memberId, date('Y-m-d H:i:s',time()));\r
+                                      . " VALUES (%s, %d, '%s');";\r
+                               $query = sprintf($query, sql_table('tickets'), DB::quoteValue($ticket), (integer) $memberId, date('Y-m-d H:i:s',time()));\r
                                \r
-                               if ( sql_query($query) )\r
+                               if ( DB::execute($query) !== FALSE )\r
                                {\r
                                        $ok = true;\r
                                }\r
index e545103..f909f3d 100644 (file)
@@ -92,7 +92,7 @@ class Member
         */\r
        public function readFromName($displayname)\r
        {\r
-               return $this->read("mname='".sql_real_escape_string($displayname)."'");\r
+               return $this->read('mname='.DB::quoteValue($displayname));\r
        }\r
        \r
        /**\r
@@ -354,23 +354,22 @@ class Member
                // read info\r
                $query =  'SELECT * FROM '.sql_table('member') . ' WHERE ' . $where;\r
                \r
-               $res = sql_query($query);\r
-               $obj = sql_fetch_object($res);\r
-               \r
-               $this->setRealName($obj->mrealname);\r
-               $this->setEmail($obj->memail);\r
-               $this->password = $obj->mpassword;\r
-               $this->setCookieKey($obj->mcookiekey);\r
-               $this->setURL($obj->murl);\r
-               $this->setDisplayName($obj->mname);\r
-               $this->setAdmin($obj->madmin);\r
-               $this->id = $obj->mnumber;\r
-               $this->setCanLogin($obj->mcanlogin);\r
-               $this->setNotes($obj->mnotes);\r
-               $this->setLocale($obj->mlocale);\r
-               $this->setAutosave($obj->mautosave);\r
-               \r
-               return sql_num_rows($res);\r
+               $row = DB::getRow($query);\r
+               \r
+               $this->setRealName($row['mrealname']);\r
+               $this->setEmail($row['memail']);\r
+               $this->password = $row['mpassword'];\r
+               $this->setCookieKey($row['mcookiekey']);\r
+               $this->setURL($row['murl']);\r
+               $this->setDisplayName($row['mname']);\r
+               $this->setAdmin($row['madmin']);\r
+               $this->id = $row['mnumber'];\r
+               $this->setCanLogin($row['mcanlogin']);\r
+               $this->setNotes($row['mnotes']);\r
+               $this->setLocale($row['mlocale']);\r
+               $this->setAutosave($row['mautosave']);\r
+               \r
+               return $row ? TRUE : FALSE;\r
        }\r
        \r
        /**\r
@@ -387,11 +386,11 @@ class Member
                $query = 'SELECT tadmin FROM '.sql_table('team').' WHERE'\r
                . ' tblog=' . intval($blogid)\r
                . ' and tmember='. $this->getID();\r
-               $res = sql_query($query);\r
-               if ( sql_num_rows($res) == 0 )\r
-                       return 0;\r
+               $res = DB::getValue($query);\r
+               if ( $res )\r
+                       return ($res == 1);\r
                else\r
-                       return ( sql_result($res,0,0) == 1 );\r
+                       return 0;\r
        }\r
        \r
        /**\r
@@ -431,8 +430,8 @@ class Member
                $query = 'SELECT * FROM '.sql_table('team').' WHERE'\r
                           . ' tblog=' . intval($blogid)\r
                           . ' and tmember='. $this->getID();\r
-               $res = sql_query($query);\r
-               return (sql_num_rows($res) != 0);\r
+               $res = DB::getResult($query);\r
+               return ($res->rowCount() != 0);\r
        }\r
        \r
        /**\r
@@ -497,10 +496,9 @@ class Member
                $query =  'SELECT citem as itemid, iblog as blogid, cmember as cauthor, iauthor'\r
                           . ' FROM '.sql_table('comment') .', '.sql_table('item').', '.sql_table('blog')\r
                           . ' WHERE citem=inumber and iblog=bnumber and cnumber=' . intval($commentid);\r
-               $res = sql_query($query);\r
-               $obj = sql_fetch_object($res);\r
+               $res = DB::getRow($query);\r
                \r
-               return ($obj->cauthor == $this->getID()) or $this->isBlogAdmin($obj->blogid) or ($obj->iauthor == $this->getID());\r
+               return ($res['cauthor'] == $this->getID()) or $this->isBlogAdmin($res['blogid']) or ($res['iauthor'] == $this->getID());\r
        }\r
        \r
        /**\r
@@ -519,9 +517,8 @@ class Member
                if ($this->isAdmin()) return 1;\r
                \r
                $query =  'SELECT iblog, iauthor FROM '.sql_table('item').' WHERE inumber=' . intval($itemid);\r
-               $res = sql_query($query);\r
-               $obj = sql_fetch_object($res);\r
-               return ($obj->iauthor == $this->getID()) or $this->isBlogAdmin($obj->iblog);\r
+               $res = DB::getRow($query);\r
+               return ($res['iauthor'] == $this->getID()) or $this->isBlogAdmin($res['iblog']);\r
        }\r
        \r
        /**\r
@@ -534,8 +531,8 @@ class Member
         */\r
        public function canBeDeleted()\r
        {\r
-               $res = sql_query('SELECT * FROM '.sql_table('item').' WHERE iauthor=' . $this->getID());\r
-               return ( sql_num_rows($res) == 0 );\r
+               $res = DB::getResult('SELECT * FROM '.sql_table('item').' WHERE iauthor=' . $this->getID());\r
+               return ( $res->rowCount() == 0 );\r
        }\r
        \r
        /**\r
@@ -570,7 +567,7 @@ class Member
                if ( i18n::strpos($newcat, 'newcat') === 0 )\r
                {\r
                        // get blogid\r
-                       list($blogid) = sscanf($newcat,'newcat-%d');\r
+                       list($blogid) = sscanf($newcat, 'newcat-%d');\r
                        return $this->blogAdminRights($blogid);\r
                }\r
                \r
@@ -590,7 +587,7 @@ class Member
                }\r
                \r
                // not a valid category -> NOK\r
-               $validCat = quickQuery('SELECT COUNT(*) AS result FROM '.sql_table('category').' WHERE catid='.intval($newcat));\r
+               $validCat = DB::getValue('SELECT COUNT(*) AS result FROM '.sql_table('category').' WHERE catid='.intval($newcat));\r
                if ( !$validCat )\r
                {\r
                        return 0;\r
@@ -734,12 +731,12 @@ class Member
                        $query = 'SELECT tblog as blogid from '.sql_table('team').' where tadmin=1 and tmember=' . $this->getID();\r
                }\r
                \r
-               $res = sql_query($query);\r
-               if ( sql_num_rows($res) > 0 )\r
+               $res = DB::getResult($query);\r
+               if ( $res->rowCount() > 0 )\r
                {\r
-                       while ( $obj = sql_fetch_object($res) )\r
+                       foreach ( $res as $row )\r
                        {\r
-                               array_push($blogs, $obj->blogid);\r
+                               array_push($blogs, $row['blogid']);\r
                        }\r
                }\r
                return $blogs;\r
@@ -767,12 +764,12 @@ class Member
                        $query = 'SELECT tblog as blogid from '.sql_table('team').' where tmember=' . $this->getID();\r
                }\r
                \r
-               $res = sql_query($query);\r
-               if ( sql_num_rows($res) > 0 )\r
+               $res = DB::getResult($query);\r
+               if ( $res->rowCount() > 0 )\r
                {\r
-                       while ( $obj = sql_fetch_object($res) )\r
+                       foreach ( $res as $row )\r
                        {\r
-                               array_push($blogs, $obj->blogid);\r
+                               array_push($blogs, $row['blogid']);\r
                        }\r
                }\r
                return $blogs;\r
@@ -812,19 +809,19 @@ class Member
        public function write()\r
        {\r
                $query =  'UPDATE '.sql_table('member')\r
-                       . " SET mname='" . sql_real_escape_string($this->displayname) . "', "\r
-                          . "mrealname='". sql_real_escape_string($this->realname) . "', "\r
-                          . "mpassword='". sql_real_escape_string($this->password) . "', "\r
-                          . "mcookiekey='". sql_real_escape_string($this->cookiekey) . "', "\r
-                          . "murl='" . sql_real_escape_string($this->url) . "', "\r
-                          . "memail='" . sql_real_escape_string($this->email) . "', "\r
-                          . "madmin=" . intval($this->admin) . ", "\r
-                          . "mnotes='" . sql_real_escape_string($this->notes) . "', "\r
-                          . "mcanlogin=" . intval($this->canlogin) . ", "\r
-                          . "mlocale='" . sql_real_escape_string($this->locale) . "', "\r
-                          . "mautosave=" . intval($this->autosave) . " "\r
-                       . "WHERE mnumber=" . intval($this->id);\r
-               sql_query($query);\r
+                       . ' SET mname=' . DB::quoteValue($this->displayname) . ', '\r
+                          . 'mrealname='. DB::quoteValue($this->realname) . ', '\r
+                          . 'mpassword='. DB::quoteValue($this->password) . ', '\r
+                          . 'mcookiekey='. DB::quoteValue($this->cookiekey) . ', '\r
+                          . 'murl=' . DB::quoteValue($this->url) . ', '\r
+                          . 'memail=' . DB::quoteValue($this->email) . ', '\r
+                          . 'madmin=' . intval($this->admin) . ', '\r
+                          . 'mnotes=' . DB::quoteValue($this->notes) . ', '\r
+                          . 'mcanlogin=' . intval($this->canlogin) . ', '\r
+                          . 'mlocale=' . DB::quoteValue($this->locale) . ', '\r
+                          . 'mautosave=' . intval($this->autosave) . ' '\r
+                       . 'WHERE mnumber=' . intval($this->id);\r
+               DB::execute($query);\r
                return;\r
        }\r
        \r
@@ -998,8 +995,8 @@ class Member
         */\r
        public static function exists($name)\r
        {\r
-               $r = sql_query('select * FROM '.sql_table('member')." WHERE mname='".sql_real_escape_string($name)."'");\r
-               return ( sql_num_rows($r) != 0 );\r
+               $r = DB::getResult('SELECT * FROM ' . sql_table('member') . ' WHERE mname=' . DB::quoteValue($name));\r
+               return ( $r->rowCount() != 0 );\r
        }\r
        \r
        /**\r
@@ -1013,8 +1010,8 @@ class Member
         */\r
        public static function existsID($id)\r
        {\r
-               $r = sql_query('select * FROM '.sql_table('member')." WHERE mnumber='".intval($id)."'");\r
-               return (sql_num_rows($r) != 0);\r
+               $r = DB::getResult('SELECT * FROM ' . sql_table('member') . ' WHERE mnumber=' . intval($id));\r
+               return ( $r->rowCount() != 0 );\r
        }\r
        \r
        /**\r
@@ -1088,21 +1085,21 @@ class Member
                        $url = 'http://' . $url;\r
                }\r
                \r
-               $name           = sql_real_escape_string($name);\r
-               $realname       = sql_real_escape_string($realname);\r
+               $name           = DB::quoteValue($name);\r
+               $realname       = DB::quoteValue($realname);\r
                /* NOTE: hashed password is automatically updated if the length is 32 bytes when logging in */\r
-               $password       = sql_real_escape_string(md5($password));\r
-               $email          = sql_real_escape_string($email);\r
-               $url            = sql_real_escape_string($url);\r
+               $password       = DB::quoteValue(md5($password));\r
+               $email          = DB::quoteValue($email);\r
+               $url            = DB::quoteValue($url);\r
                $admin          = (integer) $admin;\r
                $canlogin       = (integer) $canlogin;\r
-               $notes          = sql_real_escape_string($notes);\r
+               $notes          = DB::quoteValue($notes);\r
                \r
                $query = "INSERT INTO %s"\r
                       . " (MNAME,MREALNAME,MPASSWORD,MEMAIL,MURL, MADMIN, MCANLOGIN, MNOTES)"\r
-                      . " VALUES ('%s','%s','%s','%s','%s',%d, %d, '%s')";\r
+                      . " VALUES (%s, %s, %s, %s, %s, %d, %d, %s)";\r
                $query = sprintf($query, sql_table('member'), $name, $realname, $password, $email, $url, $admin, $canlogin, $notes);\r
-               sql_query($query);\r
+               DB::execute($query);\r
                \r
                ActionLog::add(INFO, _ACTIONLOG_NEWMEMBER . ' ' . $name);\r
                \r
@@ -1120,14 +1117,14 @@ class Member
         */\r
        public static function getActivationInfo($key)\r
        {\r
-               $query = 'SELECT * FROM ' . sql_table('activation') . ' WHERE vkey=\'' . sql_real_escape_string($key). '\'';\r
-               $res = sql_query($query);\r
+               $query = 'SELECT * FROM ' . sql_table('activation') . ' WHERE vkey=' . DB::quoteValue($key);\r
+               $res = DB::getResult($query);\r
                \r
-               if ( !$res || (sql_num_rows($res) == 0) )\r
+               if ( !$res || ($res->rowCount() == 0) )\r
                {\r
                        return 0;\r
                }\r
-               return sql_fetch_object($res);\r
+               return $res->fetch();\r
        }\r
        \r
        /**\r
@@ -1149,7 +1146,7 @@ class Member
                \r
                // kill any existing entries for the current member (delete is ok)\r
                // (only one outstanding activation key can be present for a member)\r
-               sql_query('DELETE FROM ' . sql_table('activation') . ' WHERE vmember=' . intval($this->getID()));\r
+               DB::execute('DELETE FROM ' . sql_table('activation') . ' WHERE vmember=' . intval($this->getID()));\r
                \r
                // indicates if the member can log in while the link is active\r
                $canLoginWhileActive = false;\r
@@ -1175,8 +1172,8 @@ class Member
                        // attempt to add entry in database\r
                        // add in database as non-active\r
                        $query = 'INSERT INTO ' . sql_table('activation'). ' (vkey, vtime, vmember, vtype, vextra) ';\r
-                       $query .= 'VALUES (\'' . sql_real_escape_string($key). '\', \'' . date('Y-m-d H:i:s',time()) . '\', \'' . intval($this->getID()). '\', \'' . sql_real_escape_string($type). '\', \'' . sql_real_escape_string($extra). '\')';\r
-                       if ( sql_query($query) )\r
+                       $query .= 'VALUES (' . DB::quoteValue($key). ', \'' . date('Y-m-d H:i:s',time()) . '\', ' . intval($this->getID()). ', ' . DB::quoteValue($type). ', ' . DB::quoteValue($extra). ')';\r
+                       if ( DB::execute($query) !== FALSE )\r
                                $ok = true;\r
                }\r
                \r
@@ -1211,7 +1208,7 @@ class Member
                        return false;\r
                }\r
                \r
-               switch ( $info->vtype )\r
+               switch ( $info['vtype'] )\r
                {\r
                        case 'forgot':\r
                                // nothing to do\r
@@ -1219,17 +1216,17 @@ class Member
                        case 'register':\r
                                // set canlogin value\r
                                global $CONF;\r
-                               sql_query('UPDATE ' . sql_table('member') . ' SET mcanlogin=' . intval($CONF['NewMemberCanLogon']). ' WHERE mnumber=' . intval($info->vmember));\r
+                               DB::execute('UPDATE ' . sql_table('member') . ' SET mcanlogin=' . intval($CONF['NewMemberCanLogon']). ' WHERE mnumber=' . intval($info['vmember']));\r
                                break;\r
                        case 'addresschange':\r
                                // reset old 'canlogin' value\r
-                               list($oldEmail, $oldCanLogin) = preg_split('#/#', $info->vextra);\r
-                               sql_query('UPDATE ' . sql_table('member') . ' SET mcanlogin=' . intval($oldCanLogin). ' WHERE mnumber=' . intval($info->vmember));\r
+                               list($oldEmail, $oldCanLogin) = preg_split('#/#', $info['vextra']);\r
+                               DB::execute('UPDATE ' . sql_table('member') . ' SET mcanlogin=' . intval($oldCanLogin). ' WHERE mnumber=' . intval($info['vmember']));\r
                                break;\r
                }\r
                \r
                // delete from activation table\r
-               sql_query('DELETE FROM ' . sql_table('activation') . ' WHERE vkey=\'' . sql_real_escape_string($key) . '\'');\r
+               DB::execute('DELETE FROM ' . sql_table('activation') . ' WHERE vkey=' . DB::quoteValue($key));\r
                \r
                // success!\r
                return true;\r
@@ -1257,22 +1254,22 @@ class Member
                $boundary = time() - (60 * 60 * 24 * $actdays);\r
                \r
                // 1. walk over all entries, and see if special actions need to be performed\r
-               $res = sql_query('SELECT * FROM ' . sql_table('activation') . ' WHERE vtime < \'' . date('Y-m-d H:i:s',$boundary) . '\'');\r
+               $res = DB::getResult('SELECT * FROM ' . sql_table('activation') . ' WHERE vtime < \'' . date('Y-m-d H:i:s',$boundary) . '\'');\r
                \r
-               while ( $o = sql_fetch_object($res) )\r
+               foreach ( $res as $row )\r
                {\r
-                       switch ( $o->vtype )\r
+                       switch ( $row['vtype'] )\r
                        {\r
                                case 'register':\r
                                        // delete all information about this site member. registration is undone because there was\r
                                        // no timely activation\r
                                        include_once($DIR_LIBS . 'ADMIN.php');\r
-                                       Admin::deleteOneMember(intval($o->vmember));\r
+                                       Admin::deleteOneMember(intval($row['vmember']));\r
                                        break;\r
                                case 'addresschange':\r
                                        // revert the e-mail address of the member back to old address\r
-                                       list($oldEmail, $oldCanLogin) = preg_split('#/#', $o->vextra);\r
-                                       sql_query('UPDATE ' . sql_table('member') . ' SET mcanlogin=' . intval($oldCanLogin). ', memail=\'' . sql_real_escape_string($oldEmail). '\' WHERE mnumber=' . intval($o->vmember));\r
+                                       list($oldEmail, $oldCanLogin) = preg_split('#/#', $row['vextra']);\r
+                                       DB::execute('UPDATE ' . sql_table('member') . ' SET mcanlogin=' . intval($oldCanLogin). ', memail=' . DB::quoteValue($oldEmail). ' WHERE mnumber=' . intval($row['vmember']));\r
                                        break;\r
                                case 'forgot':\r
                                        // delete the activation link and ignore. member can request a new password using the\r
@@ -1282,7 +1279,7 @@ class Member
                }\r
                \r
                // 2. delete activation entries for real\r
-               sql_query('DELETE FROM ' . sql_table('activation') . ' WHERE vtime < \'' . date('Y-m-d H:i:s',$boundary) . '\'');\r
+               DB::execute('DELETE FROM ' . sql_table('activation') . ' WHERE vtime < \'' . date('Y-m-d H:i:s',$boundary) . '\'');\r
                return;\r
        }\r
        \r
index 99586f3..3fb00e2 100644 (file)
@@ -136,7 +136,7 @@ abstract class NucleusPlugin
         *  Name of the feature. See plugin documentation for more info\r
         *   'SqlTablePrefix' -> if the plugin uses the sql_table() method to get table names\r
         *   'HelpPage' -> if the plugin provides a helppage\r
-        *   'SqlApi' -> if the plugin uses the complete sql_* api (must also require nucleuscms 3.5)\r
+        *   'SqlApi' -> if the plugin uses the complete sql_* or DB::* api (must also require nucleuscms 3.5)\r
         */\r
        public function supportsFeature($feature)\r
        {\r
@@ -263,10 +263,10 @@ abstract class NucleusPlugin
                        \r
                        $query =  "SELECT d.oname as name, o.ovalue as value FROM %s o, %s d WHERE d.opid=%d AND d.oid=o.oid;";\r
                        $query = sprintf($query, sql_table('plugin_option'), sql_table('plugin_option_desc'), (integer) $this->plugid);\r
-                       $result = sql_query($query);\r
-                       while ( $row = sql_fetch_object($result) )\r
+                       $result = DB::getResult($query);\r
+                       foreach ( $result as $row )\r
                        {\r
-                               $this->plugin_options[strtolower($row->name)] = $row->value;\r
+                               $this->plugin_options[strtolower($row['name'])] = $row['value'];\r
                        }\r
                }\r
                if ( isset($this->plugin_options[strtolower($name)]) )\r
@@ -462,11 +462,9 @@ abstract class NucleusPlugin
                // retrieve the data and return\r
                $query = "SELECT otype, oextra FROM %s WHERE oid = %d;";\r
                $query = sprintf($query, sql_table('plugin_option_desc'), $oid);\r
-               $result = sql_query($query);\r
+               $row = DB::getRow($query);\r
                \r
-               $o = sql_fetch_array($result);\r
-               \r
-               if ( ($this->optionCanBeNumeric($o['otype'])) && ($o['oextra'] == 'number' ) )\r
+               if ( ($this->optionCanBeNumeric($row['otype'])) && ($row['oextra'] == 'number' ) )\r
                {\r
                        $orderby = 'CAST(ovalue AS SIGNED)';\r
                }\r
@@ -476,12 +474,12 @@ abstract class NucleusPlugin
                }\r
                $query = "SELECT ovalue value, ocontextid id FROM %s WHERE oid = %d ORDER BY %s %s LIMIT 0,%d;";\r
                $query = sprintf($query, sql_table('plugin_option'), $oid, $orderby, $sort, (integer) $amount);\r
-               $result = sql_query($query);\r
+               $result = DB::getResult($query);\r
                \r
                // create the array\r
                $i = 0;\r
                $top = array();\r
-               while( $row = sql_fetch_array($result) )\r
+               foreach( $result as $row )\r
                {\r
                        $top[$i++] = $row;\r
                }\r
@@ -501,14 +499,14 @@ abstract class NucleusPlugin
                $query = 'INSERT INTO ' . sql_table('plugin_option_desc')\r
                                .' (opid, oname, ocontext, odesc, otype, odef, oextra)'\r
                                .' VALUES ('.intval($this->plugid)\r
-                                       .', \''.sql_real_escape_string($name).'\''\r
-                                       .', \''.sql_real_escape_string($context).'\''\r
-                                       .', \''.sql_real_escape_string($desc).'\''\r
-                                       .', \''.sql_real_escape_string($type).'\''\r
-                                       .', \''.sql_real_escape_string($defValue).'\''\r
-                                       .', \''.sql_real_escape_string($typeExtras).'\');';\r
-               sql_query($query);\r
-               $oid = sql_insert_id();\r
+                                       .', '.DB::quoteValue($name)\r
+                                       .', '.DB::quoteValue($context)\r
+                                       .', '.DB::quoteValue($desc)\r
+                                       .', '.DB::quoteValue($type)\r
+                                       .', '.DB::quoteValue($defValue)\r
+                                       .', '.DB::quoteValue($typeExtras).')';\r
+               DB::execute($query);\r
+               $oid = DB::getInsertId();\r
                \r
                $key = $context . '_' . $name;\r
                $this->option_info[$key] = array('oid' => $oid, 'default' => $defValue);\r
@@ -532,12 +530,12 @@ abstract class NucleusPlugin
                // delete all things from plugin_option\r
                $query = "DELETE FROM %s WHERE oid=%d;";\r
                $query = sprintf($query, sql_table('plugin_option'), (integer) $oid);\r
-               sql_query($query);\r
+               DB::execute($query);\r
                \r
                // delete entry from plugin_option_desc\r
                $query = "DELETE FROM %s WHERE oid=%d;";\r
                $query = sprintf($query, sql_table('plugin_option_desc'), $oid);\r
-               sql_query($query);\r
+               DB::execute($query);\r
                \r
                // clear from cache\r
                unset($this->option_info["{$context}_{$name}"]);\r
@@ -599,11 +597,11 @@ abstract class NucleusPlugin
                // update plugin_option\r
                $query = "DELETE FROM %s WHERE oid=%d and ocontextid=%d;";\r
                $query = sprintf($query, sql_table('plugin_option'), (integer) $oid, (integer) $contextid);\r
-               sql_query($query);\r
+               DB::execute($query);\r
                \r
-               $query = "INSERT INTO %s (ovalue, oid, ocontextid) VALUES ('%s', %d, %d);";\r
-               $query = sprintf($query, sql_table('plugin_option'), sql_real_escape_string($value), $oid, $contextid);\r
-               sql_query($query);\r
+               $query = "INSERT INTO %s (ovalue, oid, ocontextid) VALUES (%s, %d, %d);";\r
+               $query = sprintf($query, sql_table('plugin_option'), DB::quoteValue($value), $oid, $contextid);\r
+               DB::execute($query);\r
                \r
                // update cache\r
                $this->option_values["{$oid}_{$contextid}"] = $value;\r
@@ -640,20 +638,20 @@ abstract class NucleusPlugin
                // get from DB\r
                $query = "SELECT ovalue FROM %s WHERE oid=%d and ocontextid=%d;";\r
                $query = sprintf($query, sql_table('plugin_option'), (integer) $oid, (integer) $contextid);\r
-               $result = sql_query($query);\r
+               $result = DB::getResult($query);\r
                \r
-               if ( !$result || (sql_num_rows($result) == 0) )\r
+               if ( !$result || ($result->rowCount() == 0) )\r
                {\r
                        // fill DB with default value\r
                        $this->option_values[$key] = $this->get_default_value($context, $name);\r
-                       $query = "INSERT INTO %s (oid, ocontextid, ovalue) VALUES (%d, %d, '%s');";\r
-                       $query = sprintf($query, sql_table('plugin_option'), (integer) $oid, (integer) $contextid, sql_real_escape_string($this->option_values[$key]));\r
-                       sql_query($query);\r
+                       $query = "INSERT INTO %s (oid, ocontextid, ovalue) VALUES (%d, %d, %s);";\r
+                       $query = sprintf($query, sql_table('plugin_option'), (integer) $oid, (integer) $contextid, DB::quoteValue($defVal));\r
+                       DB::execute($query);\r
                }\r
                else\r
                {\r
-                       $o = sql_fetch_object($result);\r
-                       $this->option_values[$key] = $o->ovalue;\r
+                       $row = $result->fetch();\r
+                       $this->option_values[$key] = $row['ovalue'];\r
                }\r
                \r
                return $this->option_values[$key];\r
@@ -692,21 +690,21 @@ abstract class NucleusPlugin
                                break;\r
                }\r
                \r
-               $result = sql_query($query);\r
+               $result = DB::getResult($query);\r
                if ( $result )\r
                {\r
-                       while ( $o = sql_fetch_object($r) )\r
+                       foreach ( $result as $row )\r
                        {\r
-                               $options[$o->contextid] = $default_value;\r
+                               $options[$row['contextid']] = $default_value;\r
                        }\r
                }\r
                \r
                $query = "SELECT ocontextid, ovalue FROM %s WHERE oid=%d;";\r
                $query = sprintf($query, sql_table('plugin_option'), $oid);\r
-               $result = sql_query($query);\r
-               while ( $o = sql_fetch_object($result) )\r
+               $result = DB::getResult($query);\r
+               foreach ( $result as $row )\r
                {\r
-                       $options[$o->ocontextid] = $o->ovalue;\r
+                       $options[$row['ocontextid']] = $row['ovalue'];\r
                }\r
 \r
                return $options;\r
@@ -737,13 +735,13 @@ abstract class NucleusPlugin
                $this->option_info = array();\r
                $query = "SELECT oid, oname, ocontext, odef FROM %s WHERE opid=%d;";\r
                $query = sprintf($query, sql_table('plugin_option_desc'), $this->plugid);\r
-               $result = sql_query($query);\r
-               while ( $o = sql_fetch_object($result) )\r
+               $result = DB::getResult($query);\r
+               foreach ( $result as $row )\r
                {\r
-                       $k = $o->ocontext . '_' . $o->oname;\r
-                       $this->option_info[$k] = array('oid' => $o->oid, 'default' => $o->odef);\r
+                       $k = $row['ocontext'] . '_' . $row['oname'];\r
+                       $this->option_info[$k] = array('oid' => $row['oid'], 'default' => $row['odef']);\r
                }\r
-               sql_free_result($result);\r
+               $result->closeCursor();\r
                \r
                return $this->option_info[$key]['oid'];\r
        }\r
@@ -774,21 +772,21 @@ abstract class NucleusPlugin
                // delete all associated plugin options\r
                $aOIDs = array();\r
                // find ids\r
-               $query = "SELECT oid FROM %s WHERE ocontext='%s';";\r
-               $query = sprintf($query, sql_table('plugin_option_desc'), sql_real_escape_string($context));\r
+               $query = "SELECT oid FROM %s WHERE ocontext=%s;";\r
+               $query = sprintf($query, sql_table('plugin_option_desc'), DB::quoteValue($context));\r
                \r
-               $result = sql_query($query);\r
-               while ( $o = sql_fetch_object($result) )\r
+               $result = DB::getResult($query);\r
+               foreach ( $result as $row )\r
                {\r
-                       array_push($aOIDs, $o->oid);\r
+                       array_push($aOIDs, $row['oid']);\r
                }\r
-               sql_free_result($result);\r
+               $result->closeCursor();\r
                // delete those options. go go go\r
                if ( count($aOIDs) > 0 )\r
                {\r
                        $query = "DELETE FROM %s WHERE oid in (%s) and ocontextid=%d;";\r
                        $query = sprintf($query, sql_table('plugin_option'), implode(',',$aOIDs), (integer) $contextid);\r
-                       sql_query($query);\r
+                       DB::execute($query);\r
                }\r
                return;\r
        }\r
@@ -853,11 +851,11 @@ abstract class NucleusPlugin
         */\r
        public function subscribtionListIsUptodate()\r
        {\r
-               $res = sql_query('SELECT event FROM '.sql_table('plugin_event').' WHERE pid = '.$this->plugid);\r
+               $res = DB::getResult('SELECT event FROM '.sql_table('plugin_event').' WHERE pid = '.$this->plugid);\r
                $ev = array();\r
-               while( $a = sql_fetch_array($res) )\r
+               foreach ( $res as $row )\r
                {\r
-                       array_push($ev, $a['event']);\r
+                       array_push($ev, $row['event']);\r
                }\r
                if ( count($ev) != count($this->getEventList()) )\r
                {\r
@@ -898,8 +896,8 @@ abstract class NucleusPlugin
                        // get option type info\r
                        $query = "SELECT opid, oname, ocontext, otype, oextra, odef FROM %s WHERE oid=%d;";\r
                        $query = sprintf($query, sql_table('plugin_option_desc'), (integer) $oid);\r
-                       $result = sql_query($query);\r
-                       if ( $info = sql_fetch_object($result) )\r
+                       $result = DB::getRow($query);\r
+                       if ( $result )\r
                        {\r
                                foreach ( $values as $id => $value )\r
                                {\r
@@ -927,7 +925,7 @@ abstract class NucleusPlugin
                                        $value = undoMagic($value);\r
                                        \r
                                        /* validation the value according to its type */\r
-                                       switch ( $info->otype )\r
+                                       switch ( $result['otype'] )\r
                                        {\r
                                                case 'yesno':\r
                                                        if ( ($value != 'yes') && ($value != 'no') )\r
@@ -940,7 +938,7 @@ abstract class NucleusPlugin
                                                        if ( array_key_exists('datatype', $meta)\r
                                                         && ($meta['datatype'] == 'numerical') && ($value != (integer) $value) )\r
                                                        {\r
-                                                               $value = (integer) $info->odef;\r
+                                                               $value = (integer) $result['odef'];\r
                                                        }\r
                                                        break;\r
                                                case 'password':\r
@@ -954,9 +952,9 @@ abstract class NucleusPlugin
                                         * possibility to change/validate the new value for the option\r
                                         */\r
                                        $data = array(\r
-                                               'context'               => $info->ocontext,\r
-                                               'plugid'                => $info->opid,\r
-                                               'optionname'    => $info->oname,\r
+                                               'context'               => $result['ocontext'],\r
+                                               'plugid'                => $result['opid'],\r
+                                               'optionname'    => $result['oname'],\r
                                                'contextid'     => $contextid,\r
                                                'value'         => &$value);\r
                                        $manager->notify('PrePluginOptionsUpdate', $data);\r
@@ -964,16 +962,16 @@ abstract class NucleusPlugin
                                        // delete and insert its fields of table in database\r
                                        $query = "DELETE FROM %s WHERE oid=%d AND ocontextid=%d;";\r
                                        $query = sprintf($query, sql_table('plugin_option'), (integer) $oid, (integer) $contextid);\r
-                                       sql_query($query);\r
-                                       $query = "INSERT INTO %s (oid, ocontextid, ovalue) VALUES (%d, %d, '%s');";\r
-                                       $query = sprintf($query, sql_table('plugin_option'), (integer) $oid, (integer) $contextid, sql_real_escape_string($value));\r
-                                       sql_query($query);\r
+                                       DB::execute($query);\r
+                                       $query = "INSERT INTO %s (oid, ocontextid, ovalue) VALUES (%d, %d, %s);";\r
+                                       $query = sprintf($query, sql_table('plugin_option'), (integer) $oid, (integer) $contextid, DB::quoteValue($value));\r
+                                       DB::execute($query);\r
                                }\r
                        }\r
                        // clear option value cache if the plugin object is already loaded\r
                        if ( is_object($info) )\r
                        {\r
-                               $plugin=& $manager->pidLoaded($info->opid);\r
+                               $plugin=& $manager->pidLoaded($result['opid']);\r
                                if ( $plugin )\r
                                {\r
                                        $plugin->clearOptionValueCache();\r
index 146b5e4..ae28362 100644 (file)
@@ -42,9 +42,9 @@ class Search
                $this->blogs            = array();\r
 \r
                // get all public searchable blogs, no matter what, include the current blog allways.\r
-               $res = sql_query('SELECT bnumber FROM '.sql_table('blog').' WHERE bincludesearch=1 ');\r
-               while ($obj = sql_fetch_object($res))\r
-                       $this->blogs[] = intval($obj->bnumber);\r
+               $res = DB::getResult('SELECT bnumber FROM '.sql_table('blog').' WHERE bincludesearch=1 ');\r
+               foreach ( $res as $row )\r
+                       $this->blogs[] = intval($row['bnumber']);\r
        }\r
 \r
        function  boolean_sql_select($match){\r
@@ -60,8 +60,8 @@ class Search
                   }\r
 \r
                   if(i18n::strlen($stringsum_long)>0){\r
-                               $stringsum_long = sql_real_escape_string($stringsum_long);\r
-                               $stringsum_a[] = " match ($match) against ('$stringsum_long') ";\r
+                               $stringsum_long = DB::quoteValue($stringsum_long);\r
+                               $stringsum_a[] = " match ({$match}) against ({$stringsum_long}) ";\r
                   }\r
 \r
                   $stringsum .= implode("+",$stringsum_a);\r
@@ -134,7 +134,7 @@ class Search
 \r
         if (!is_array($matches)) $match=$matches;\r
 \r
-        else return ' match ('.$match.') against (\''.sql_real_escape_string($matches[1]).'\') > 0 ';\r
+        else return ' match ('.$match.') against ('.DB::quoteValue($matches[1]).') > 0 ';\r
 \r
     }\r
 \r
@@ -144,7 +144,7 @@ class Search
 \r
         if (!is_array($matches)) $match=$matches;\r
 \r
-        else return ' ('.$this->boolean_sql_where_short(sql_real_escape_string($matches[1]),$match).') ';\r
+        else return ' ('.$this->boolean_sql_where_short($matches[1], $match).') ';\r
 \r
     }  \r
 \r
@@ -197,7 +197,7 @@ class Search
        function boolean_sql_where_short($string,$match){\r
                $match_a = preg_split('#,#',$match);\r
                for($ith=0;$ith<count($match_a);$ith++){\r
-                       $like_a[$ith] = " $match_a[$ith] LIKE '% $string %' ";\r
+                       $like_a[$ith] = ' $match_a[$ith] LIKE ' . DB::quoteValue("% {$string} %") . ' ';\r
                }\r
                $like = implode(" OR ",$like_a);\r
 \r
@@ -209,9 +209,9 @@ class Search
                for($ith=0;$ith<count($match_a);$ith++){\r
                        $score_a[$ith] =\r
                                                   " $score_unit_weight*(\r
-                                                  LENGTH(" . sql_real_escape_string($match_a[$ith]) . ") -\r
-                                                  LENGTH(REPLACE(LOWER(" . sql_real_escape_string($match_a[$ith]) . "),LOWER('" . sql_real_escape_string($string) . "'),'')))\r
-                                                  /LENGTH('" . sql_real_escape_string($string) . "') ";\r
+                                                  LENGTH(" . DB::quoteValue($match_a[$ith]) . ") -\r
+                                                  LENGTH(REPLACE(LOWER(" . DB::quoteValue($match_a[$ith]) . "),LOWER(" . DB::quoteValue($string) . "),'')))\r
+                                                  /LENGTH(" . DB::quoteValue($string) . ") ";\r
                }\r
                $score = implode(" + ",$score_a);\r
 \r
index c873d4e..d6b94a5 100644 (file)
@@ -14,7 +14,7 @@
  *\r
  * @license http://nucleuscms.org/license.txt GNU General Public License\r
  * @copyright Copyright (C) 2002-2009 The Nucleus Group\r
- * @version $Id: SKIN.php 1813 2012-05-02 14:41:57Z sakamocchi $\r
+ * @version $Id: SKIN.php 1816 2012-05-03 01:40:10Z sakamocchi $\r
  */\r
 \r
 if ( !function_exists('requestVar') )\r
@@ -82,20 +82,17 @@ class Skin
                // read skin name/description/content type\r
                $query = "SELECT * FROM %s WHERE sdnumber=%d;";\r
                $query = sprintf($query, sql_table('skin_desc'), $this->id);\r
-               $res = sql_query($query);\r
-               $obj = sql_fetch_object($res);\r
-               \r
-               $this->valid = (sql_num_rows($res) > 0);\r
-               if ( !$this->valid )\r
-               {\r
-                       return;\r
+               $res = DB::getRow($query);\r
+               \r
+               $this->valid = !empty($res);\r
+               if ( $this->valid )\r
+               {                       $this->name = $res['sdname'];\r
+                       $this->description = $res['sddesc'];\r
+                       $this->contentType = $res['sdtype'];\r
+                       $this->includeMode = $res['sdincmode'];\r
+                       $this->includePrefix = $res['sdincpref'];\r
                }\r
                \r
-               $this->name = $obj->sdname;\r
-               $this->description = $obj->sddesc;\r
-               $this->contentType = $obj->sdtype;\r
-               $this->includeMode = $obj->sdincmode;\r
-               $this->includePrefix = $obj->sdincpref;\r
                \r
                return;\r
        }\r
@@ -201,9 +198,9 @@ class Skin
         */\r
        static public function exists($name)\r
        {\r
-               $query = "SELECT COUNT(*) AS result FROM %s WHERE sdname='%s';";\r
-               $query = sprintf($query, sql_table('skin_desc'), sql_real_escape_string($name));\r
-               return (quickQuery($query) > 0);\r
+               $query = "SELECT COUNT(*) AS result FROM %s WHERE sdname=%s;";\r
+               $query = sprintf($query, sql_table('skin_desc'), DB::quoteValue($name));\r
+               return (DB::getValue($query) > 0);\r
        }\r
        \r
        /**\r
@@ -218,7 +215,7 @@ class Skin
        {\r
                $query = "SELECT COUNT(*) AS result FROM %s WHERE sdnumber=%d;";\r
                $query = sprintf($query, sql_table('skin_desc'), (integer) $id);\r
-               return (quickQuery($query) > 0);\r
+               return (DB::getValue($query) > 0);\r
        }\r
        \r
        /**\r
@@ -244,11 +241,9 @@ class Skin
         */\r
        static public function getIdFromName($name)\r
        {\r
-               $query = "SELECT sdnumber FROM %s WHERE sdname='%s';";\r
-               $query = sprintf($query, sql_table('skin_desc'), sql_real_escape_string($name));\r
-               $res = sql_query($query);\r
-               $obj = sql_fetch_object($res);\r
-               return $obj->sdnumber;\r
+               $query = "SELECT sdnumber FROM %s WHERE sdname=%s;";\r
+               $query = sprintf($query, sql_table('skin_desc'), DB::quoteValue($name));\r
+               return DB::getValue($query);\r
        }\r
        \r
        /**\r
@@ -263,7 +258,7 @@ class Skin
        {\r
                $query = "SELECT sdname AS result FROM %s WHERE sdnumber=%d;";\r
                $query = sprintf($query, sql_table('skin_desc'), (integer) $id);\r
-               return quickQuery($query);\r
+               return DB::getValue($query);\r
        }\r
        \r
        /**\r
@@ -282,32 +277,32 @@ class Skin
        {\r
                global $manager;\r
                \r
-               $data = array(
-                               'name' => &$name,\r
-                               'description' => &$desc,\r
-                               'type' => &$type,\r
-                               'includeMode' => &$includeMode,\r
-                               'includePrefix' => &$includePrefix\r
+               $data = array(\r
+                       'name'                  => &$name,\r
+                       'description'   => &$desc,\r
+                       'type'                  => &$type,\r
+                       'includeMode'   => &$includeMode,\r
+                       'includePrefix' => &$includePrefix\r
                );\r
                $manager->notify('PreAddSkin', $data);
                \r
-               $query = "INSERT INTO %s (sdname, sddesc, sdtype, sdincmode, sdincpref) VALUES ('%s', '%s', '%s', '%s', '%s');";\r
-               $sdname         = sql_real_escape_string($name);\r
-               $sddesc         = sql_real_escape_string($desc);\r
-               $sdtype         = sql_real_escape_string($type);\r
-               $sdincmode      = sql_real_escape_string($includeMode);\r
-               $sdincpref      = sql_real_escape_string($includePrefix);\r
+               $query = "INSERT INTO %s (sdname, sddesc, sdtype, sdincmode, sdincpref) VALUES (%s, %s, %s, %s, %s);";\r
+               $sdname         = DB::quoteValue($name);\r
+               $sddesc         = DB::quoteValue($desc);\r
+               $sdtype         = DB::quoteValue($type);\r
+               $sdincmode      = DB::quoteValue($includeMode);\r
+               $sdincpref      = DB::quoteValue($includePrefix);\r
                $query = sprintf($query, sql_table('skin_desc'), $sdname, $sddesc, $sdtype, $sdincmode, $sdincpref);\r
-               sql_query($query);\r
-               $newid = sql_insert_id();\r
-               \r
-               $data = array(
-                               'skinid'                => $newid,\r
-                               'name'                  => $name,\r
-                               'description'   => $desc,\r
-                               'type'                  => $type,\r
-                               'includeMode'   => $includeMode,\r
-                               'includePrefix' => $includePrefix\r
+               DB::execute($query);\r
+               $newid = DB::getInsertId();\r
+               \r
+               $data = array(\r
+                       'skinid'                => $newid,\r
+                       'name'                  => $name,\r
+                       'description'   => $desc,\r
+                       'type'                  => $type,\r
+                       'includeMode'   => $includeMode,\r
+                       'includePrefix' => $includePrefix\r
                );\r
                $manager->notify('PostAddSkin', $data);
                
@@ -400,16 +395,11 @@ class Skin
         */\r
        public function getContentFromDB($skintype)\r
        {\r
-               $query = "SELECT scontent FROM %s WHERE sdesc=%d and stype='%s';";\r
-               $query = sprintf($query, sql_table('skin'), (integer) $this->id, sql_real_escape_string($skintype));\r
-               $res = sql_query($query);\r
+               $query = "SELECT scontent FROM %s WHERE sdesc=%d and stype=%s;";\r
+               $query = sprintf($query, sql_table('skin'), (integer) $this->id, DB::quoteValue($skintype));\r
+               $res = DB::getValue($query);\r
                \r
-               if ( sql_num_rows($res) == 0 )\r
-               {\r
-                       return FALSE;\r
-               }\r
-               \r
-               return sql_result($res, 0, 0);\r
+               return $res ? $res : '';\r
        }\r
        \r
        /**\r
@@ -455,11 +445,11 @@ class Skin
        {\r
                global $manager;\r
                \r
-               $query = "SELECT sdesc FROM %s WHERE stype='%s' and sdesc=%d;";\r
-               $query = sprintf($query, sql_table('skin'), sql_real_escape_string($type), (integer) $this->id);\r
-               $res = sql_query($query);\r
+               $query = "SELECT sdesc FROM %s WHERE stype=%s and sdesc=%d;";\r
+               $query = sprintf($query, sql_table('skin'), DB::quoteValue($type), (integer) $this->id);\r
+               $res = DB::getValue($query);\r
                \r
-               $skintypeexists = sql_fetch_object($res);\r
+               $skintypeexists = !empty($res);\r
                $skintypevalue = ($content == true);\r
                \r
                if( $skintypevalue && $skintypeexists )\r
@@ -476,9 +466,9 @@ class Skin
                else if( $skintypevalue && !$skintypeexists )\r
                {\r
                        $data = array(\r
-                               'skinid' => $this->id,\r
-                               'type' => $type,\r
-                               'content' => &$content\r
+                               'skinid'        => $this->id,\r
+                               'type'          => $type,\r
+                               'content'       => &$content\r
                        );\r
                        \r
                        $manager->notify("PreAdd{$this->event_identifier}Part", $data);\r
@@ -486,24 +476,24 @@ class Skin
                else if( !$skintypevalue && $skintypeexists )\r
                {\r
                        $data = array(\r
-                               'skinid' => $this->id,\r
-                               'type' => $type\r
+                               'skinid'        => $this->id,\r
+                               'type'          => $type\r
                        );\r
                        \r
                        $manager->notify("PreDelete{$this->event_identifier}Part", $data);\r
                }\r
                \r
                // delete old thingie\r
-               $query = "DELETE FROM %s WHERE stype='%s' and sdesc=%d";\r
-               $query = sprintf($query, sql_table('skin'), sql_real_escape_string($type), (integer) $this->id);\r
-               sql_query($query);\r
+               $query = "DELETE FROM %s WHERE stype=%s and sdesc=%d";\r
+               $query = sprintf($query, sql_table('skin'), DB::quoteValue($type), (integer) $this->id);\r
+               DB::execute($query);\r
                \r
                // write new thingie\r
                if ( $content )\r
                {\r
-                       $query = "INSERT INTO %s (scontent, stype, sdesc) VALUE ('%s', '%s', %d)";\r
-                       $query = sprintf($query, sql_table('skin'), sql_real_escape_string($content), sql_real_escape_string($type), (integer) $this->id);\r
-                       sql_query($query);\r
+                       $query = "INSERT INTO %s (scontent, stype, sdesc) VALUE (%s, %s, %d)";\r
+                       $query = sprintf($query, sql_table('skin'), DB::quoteValue($content), DB::quoteValue($type), (integer) $this->id);\r
+                       DB::execute($query);\r
                }\r
                \r
                if( $skintypevalue && $skintypeexists )\r
@@ -551,7 +541,7 @@ class Skin
        {\r
                $query = "DELETE FROM %s WHERE sdesc=%d;";\r
                $query = sprintf($query, sql_table('skin'), (integer) $this->id);\r
-               sql_query($query);\r
+               DB::execute($query);\r
        }\r
        \r
        /**\r
@@ -567,16 +557,16 @@ class Skin
         */\r
        public function updateGeneralInfo($name, $desc, $type = 'text/html', $includeMode = 'normal', $includePrefix = '')\r
        {\r
-               $name                   = sql_real_escape_string($name);\r
-               $desc                   = sql_real_escape_string($desc);\r
-               $type                   = sql_real_escape_string($type);\r
-               $includeMode    = sql_real_escape_string($includeMode);\r
-               $includePrefix  = sql_real_escape_string($includePrefix);\r
+               $name                   = DB::quoteValue($name);\r
+               $desc                   = DB::quoteValue($desc);\r
+               $type                   = DB::quoteValue($type);\r
+               $includeMode    = DB::quoteValue($includeMode);\r
+               $includePrefix  = DB::quoteValue($includePrefix);\r
                \r
-               $query ="UPDATE %s SET sdname='%s', sddesc='%s', sdtype='%s', sdincmode='%s', sdincpref='%s' WHERE sdnumber=%d";\r
+               $query ="UPDATE %s SET sdname=%s, sddesc=%s, sdtype=%s, sdincmode=%s, sdincpref=%s WHERE sdnumber=%d";\r
                $query = sprintf($query, sql_table('skin_desc'), $name, $desc, $type, $includeMode, $includePrefix, (integer) $this->id);\r
                \r
-               sql_query($query);\r
+               DB::execute($query);\r
                return;\r
        }\r
        \r
@@ -649,8 +639,8 @@ class Skin
                $in_default = array();\r
                $no_default = array();\r
                \r
-               $res = sql_query($query);\r
-               while ( $row = sql_fetch_array($res) )\r
+               $res = DB::getResult($query);\r
+               foreach ( $res as $row )\r
                {\r
                        if ( !array_key_exists($row['stype'], $default_skintypes) )\r
                        {\r
@@ -669,7 +659,7 @@ class Skin
         * Skin::getAllowedActionsForType()\r
         * Get the allowed actions for a skin type\r
         * returns an array with the allowed actions\r
-        * \r
+        * @return      array   allowed action types\r
         * @param       string  $skintype       type of the skin\r
         * @return      array   allowed action types\r
         */\r
index 5849437..250a921 100644 (file)
@@ -68,12 +68,10 @@ class Template
         */\r
        static public function getIdFromName($name)\r
        {\r
-               $name = sql_real_escape_string($name);\r
-               $query =  "SELECT tdnumber FROM %s WHERE tdname='%s';";\r
+               $name = DB::quoteValue($name);\r
+               $query = "SELECT tdnumber FROM %s WHERE tdname=%s";\r
                $query = sprintf($query, sql_table('template_desc'), $name);\r
-               $res = sql_query($query);\r
-               $obj = sql_fetch_object($res);\r
-               return $obj->tdnumber;\r
+               return DB::getValue($query);\r
        }\r
        \r
        /**\r
@@ -86,9 +84,9 @@ class Template
         */\r
        public function updateGeneralInfo($name, $desc)\r
        {\r
-               $query =  "UPDATE %s SET tdname='%s', tddesc='%s' WHERE tdnumber=%d;";\r
-               $query = sprintf($query, sql_table('template_desc'), sql_real_escape_string($name), sql_real_escape_string($desc), (integer) $this->getID());\r
-               sql_query($query);\r
+               $query =  "UPDATE %s SET tdname=%s, tddesc=%s WHERE tdnumber=%d";\r
+               $query = sprintf($query, sql_table('template_desc'), DB::quoteValue($name), DB::quoteValue($desc), (integer) $this->getID());\r
+               DB::execute($query);\r
                return;\r
        }\r
        \r
@@ -103,16 +101,16 @@ class Template
        public function update($type, $content)\r
        {\r
                // delete old thingie\r
-               $query = "DELETE FROM %s WHERE tpartname='%s' and tdesc=%d";\r
-               $query = sprintf($query, sql_table('template'), sql_real_escape_string($type), (integer) $this->getID());\r
-               sql_query($query);\r
+               $query = "DELETE FROM %s WHERE tpartname=%s and tdesc=%d";\r
+               $query = sprintf($query, sql_table('template'), DB::quoteValue($type), (integer) $this->getID());\r
+               DB::execute($query);\r
                \r
                // write new thingie\r
                if ( $content )\r
                {\r
-                       $query = "INSERT %s (tcontent, tpartname, tdesc) VALUE ('%s', '%s', %d)";\r
-                       $query = sprintf($query, sql_table('template'), sql_real_escape_string($content), sql_real_escape_string($type), (integer) $this->getID());\r
-                       sql_query($query);\r
+                       $query = "INSERT %s (tcontent, tpartname, tdesc) VALUE (%s, %s, %d)";\r
+                       $query = sprintf($query, sql_table('template'), DB::quoteValue($content), DB::quoteValue($type), (integer) $this->getID());\r
+                       DB::execute($query);\r
                }\r
                return;\r
        }\r
@@ -128,7 +126,7 @@ class Template
        {\r
                $query = "DELETE FROM %s WHERE tdesc=%d";\r
                $query = sprintf($query, sql_table('template'), (integer) $this->getID());\r
-               sql_query($query);\r
+               DB::execute($query);\r
                return;\r
        }\r
        \r
@@ -153,8 +151,8 @@ class Template
                        )\r
                );\r
                \r
-               sql_query('INSERT INTO '.sql_table('template_desc')." (tdname, tddesc) VALUES ('" . sql_real_escape_string($name) . "','" . sql_real_escape_string($desc) . "')");\r
-               $newId = sql_insert_id();\r
+               DB::execute('INSERT INTO '.sql_table('template_desc').' (tdname, tddesc) VALUES (' . DB::quoteValue($name) . ',' . DB::quoteValue($desc) . ')');\r
+               $newId = DB::getInsertId();\r
                \r
                $manager->notify(\r
                        'PostAddTemplate',\r
@@ -185,14 +183,14 @@ class Template
                        )\r
                );\r
                \r
-               $query = "SELECT tpartname, tcontent FROM %s, %s WHERE tdesc=tdnumber and tdname='%s'";\r
-               $query = sprintf($query, sql_table('template_desc'), sql_table('template'), sql_real_escape_string($name));\r
-               $res = sql_query($query);\r
+               $query = "SELECT tpartname, tcontent FROM %s, %s WHERE tdesc=tdnumber and tdname=%s";\r
+               $query = sprintf($query, sql_table('template_desc'), sql_table('template'), DB::quoteValue($name));\r
+               $res = DB::getResult($query);\r
 \r
                $template = array();\r
-               while ($obj = sql_fetch_object($res))\r
+               foreach ( $res as $row )\r
                {\r
-                       $template[$obj->tpartname] = $obj->tcontent;\r
+                       $template[$row['tpartname']] = $row['tcontent'];\r
                }\r
                \r
                /*\r
@@ -243,10 +241,10 @@ class Template
         */\r
        static public function exists($name)\r
        {\r
-               $query = "SELECT * FROM %s WHERE tdname='%s';";\r
-               $query = sprintf($query, sql_table('template_desc'), sql_real_escape_string($name));\r
-               $r = sql_query($query);\r
-               return (sql_num_rows($r) != 0);\r
+               $query = "SELECT * FROM %s WHERE tdname=%s";\r
+               $query = sprintf($query, sql_table('template_desc'), DB::quoteValue($name));\r
+               $r = DB::getResult($query);\r
+               return ($r->rowCount() != 0);\r
        }\r
        \r
        /**\r
@@ -259,10 +257,10 @@ class Template
         */\r
        static public function existsID($id)\r
        {\r
-               $query = "SELECT * FROM %s WHERE tdnumber=%d;";\r
+               $query = "SELECT * FROM %s WHERE tdnumber=%d";\r
                $query = sprintf($query, sql_table('template_desc'), (integer) $id);\r
-               $r = sql_query($query);\r
-               return (sql_num_rows($r) != 0);\r
+               $r = DB::getResult($query);\r
+               return ($r->rowCount() != 0);\r
        }\r
        \r
        /**\r
@@ -276,7 +274,7 @@ class Template
        {\r
                $query = "SELECT tdname as result FROM %s WHERE tdnumber=%d";\r
                $query = sprintf($query, sql_table('template_desc'), (integer) $id);\r
-               return quickQuery($query);\r
+               return DB::getValue($query);\r
        }\r
        \r
        /**\r
@@ -288,10 +286,8 @@ class Template
         */\r
        static public function getDesc($id)\r
        {\r
-               $query = "SELECT tddesc FROM %s WHERE tdnumber=%d;";\r
+               $query = "SELECT tddesc FROM %s WHERE tdnumber=%d";\r
                $query = sprintf($query, sql_table('template_desc'), (integer) $id);\r
-               $res = sql_query($query);\r
-               $obj = sql_fetch_object($res);\r
-               return $obj->tddesc;\r
+               return DB::getValue($query);\r
        }\r
 }\r
index 9147a71..64ae2da 100644 (file)
@@ -75,10 +75,11 @@ class Backup
                // add tables that plugins want to backup to the list\r
                // catch all output generated by plugins\r
                ob_start();\r
-               $res = sql_query('SELECT pfile FROM ' . sql_table('plugin'));\r
-               while ( $plugName = sql_fetch_object($res) )\r
+               $query = sprintf('SELECT pfile FROM %s', sql_table('plugin'));\r
+               $res = DB::getResult($query);\r
+               foreach ( $res as $row )\r
                {\r
-                       $plug =& $manager->getPlugin($plugName->pfile);\r
+                       $plug =& $manager->getPlugin($row['pfile']);\r
                        if ( $plug )\r
                        {\r
                                $tables = array_merge($tables, (array) $plug->getTableList());\r
@@ -178,10 +179,9 @@ class Backup
        static private function dump_structure($tablename)\r
        {\r
                // add command to drop table on restore\r
-               echo "DROP TABLE IF EXISTS `$tablename`;\n\n";\r
-               $result = sql_query("SHOW CREATE TABLE $tablename");\r
-               $create = sql_fetch_assoc($result);\r
-               echo $create['Create Table'];\r
+               echo "DROP TABLE IF EXISTS {$tablename};\n\n";\r
+               $result = DB::getRow("SHOW CREATE TABLE {$tablename}");\r
+               echo $result['Create Table'];\r
                echo ";\n\n";\r
                return;\r
        }\r
@@ -202,7 +202,8 @@ class Backup
                $fields = array();\r
                for ( $j = 0; $j < $num_fields; $j++ )\r
                {\r
-                       $fields[] = sql_field_name($result, $j);\r
+                       $col = $result->getColumnMeta($j);\r
+                       $fields[] = $col['name'];\r
                }\r
 \r
                return '(' . implode(', ', $fields) . ')';\r
@@ -222,9 +223,9 @@ class Backup
                /*\r
                 * Grab the data from the table.\r
                */\r
-               $result = sql_query("SELECT * FROM $tablename");\r
+               $result = DB::getResult("SELECT * FROM $tablename");\r
 \r
-               if ( sql_num_rows($result) > 0 )\r
+               if ( $result->rowCount() > 0 )\r
                {\r
                        echo "\n";\r
                        echo "/*\n";\r
@@ -232,7 +233,7 @@ class Backup
                        echo " */\n";\r
                }\r
 \r
-               $num_fields = sql_num_fields($result);\r
+               $num_fields = $result->columnCount();\r
 \r
                /*\r
                 * Compose fieldname list\r
@@ -242,10 +243,10 @@ class Backup
                /*\r
                 * Loop through the resulting rows and build the sql statement.\r
                */\r
-               while ( $row = sql_fetch_array($result) )\r
+               foreach ( $result as $row )\r
                {\r
                        // Start building the SQL statement.\r
-                       echo "INSERT INTO ".$tablename." $tablename_list VALUES(";\r
+                       echo 'INSERT INTO ' . $tablename . ' ' . $tablename_list . ' VALUES(';\r
 \r
                        // Loop through the rows and fill in data for each column\r
                        for ( $j = 0; $j < $num_fields; $j++ )\r
@@ -258,7 +259,7 @@ class Backup
                                elseif ( $row[$j] != '' )\r
                                {\r
                                        // data\r
-                                       echo " '" . sql_real_escape_string($row[$j]) . "'";\r
+                                       echo ' ' . DB::quoteValue($row[$j]);\r
                                }\r
                                else\r
                                {\r
@@ -269,7 +270,7 @@ class Backup
                                // only add comma when not last column\r
                                if ( $j != ($num_fields - 1) )\r
                                {\r
-                                       echo ",";\r
+                                       echo ',';\r
                                }\r
                        }\r
                        echo ");\n";\r
@@ -367,9 +368,10 @@ class Backup
                /* execute sql statements */\r
                foreach ( $queries as $query )\r
                {\r
-                       if ( !sql_query($query) )\r
+                       if ( DB::execute($query) === FALSE )\r
                        {\r
-                               debug('SQL Error: ' . sql_error());\r
+                               $error = DB::getError();\r
+                               debug('SQL Error: ' . $error[2]);\r
                                break;\r
                        }\r
                        continue;\r
index 6cf9616..4db7221 100644 (file)
@@ -2,7 +2,7 @@
 \r
 /*\r
  * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)\r
- * Copyright (C) 2002-2012 The Nucleus Group\r
+ * Copyright (C) 2002-2009 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
@@ -12,8 +12,8 @@
  */\r
 /**\r
  * @license http://nucleuscms.org/license.txt GNU General Public License\r
- * @copyright Copyright (C) 2002-2012 The Nucleus Group\r
- * @version $Id: globalfunctions.php 1727 2012-04-07 02:54:22Z sakamocchi $\r
+ * @copyright Copyright (C) 2002-2009 The Nucleus Group\r
+ * @version $Id: globalfunctions.php 1825 2012-05-04 16:56:35Z sakamocchi $\r
  */\r
 \r
 /* needed if we include globalfunctions from install.php */\r
@@ -22,14 +22,28 @@ global $nucleus, $CONF, $DIR_LIBS, $DIR_LOCALES, $manager, $member;
 $nucleus['version'] = 'v4.00 SVN';\r
 $nucleus['codename'] = '';\r
 \r
+/*\r
+ * make sure there's no unnecessary escaping:\r
+ * set_magic_quotes_runtime(0);\r
+ */\r
+if ( version_compare(PHP_VERSION, '5.3.0', '<') )\r
+{\r
+       ini_set('magic_quotes_runtime', '0');\r
+}\r
+\r
 /* check and die if someone is trying to override internal globals (when register_globals turn on) */\r
 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'));\r
 \r
-/* debug mode */\r
 if ( !isset($CONF) )\r
 {\r
        $CONF = array();\r
 }\r
+\r
+/* debug mode */\r
+if ( array_key_exists('debug', $CONF) && $CONF['debug'] )\r
+{\r
+       $CONF = array();\r
+}\r
 if ( array_key_exists('debug', $CONF) && $CONF['debug'] )\r
 {\r
        /* report all errors! */\r
@@ -42,63 +56,23 @@ else
 }\r
 \r
 /*\r
- * FIXME: This is for compatibility since 4.0, should be obsoleted at future release.\r
- */\r
-if ( !isset($DIR_LOCALES) )\r
-{\r
-       $DIR_LOCALES = $DIR_NUCLEUS . 'locales/';\r
-}\r
-global $DIR_LANG;\r
-if ( !isset($DIR_LANG) )\r
-{\r
-       $DIR_LANG = $DIR_LOCALES;\r
-}\r
-\r
-/*\r
- * load and initialize i18n class\r
- */\r
-if (!class_exists('i18n', FALSE))\r
-{\r
-       include($DIR_LIBS . 'i18n.php');\r
-}\r
-if ( !i18n::init('UTF-8', $DIR_LOCALES) )\r
-{\r
-       exit('Fail to initialize i18n class.');\r
-}\r
-/*\r
- * FIXME: This is for compatibility since 4.0, should be obsoleted at future release.\r
- */\r
-define('_CHARSET', i18n::get_current_charset());\r
-\r
-/*\r
- * Indicates when Nucleus should display startup errors. Set to 1 if you want\r
- * the error enabled (default), false otherwise\r
- *\r
  * alertOnHeadersSent\r
  *  Displays an error when visiting a public Nucleus page and headers have\r
  *  been sent out to early. This usually indicates an error in either a\r
  *  configuration file or a translation file, and could cause Nucleus to\r
  *  malfunction\r
- * alertOnSecurityRisk\r
- * Displays an error only when visiting the admin area, and when one or\r
- *  more of the installation files (install.php, install.sql, upgrades/\r
- *  directory) are still on the server.\r
  */\r
 if ( !array_key_exists('alertOnHeadersSent', $CONF) || $CONF['alertOnHeadersSent'] !== 0 )\r
 {\r
        $CONF['alertOnHeadersSent'] = 1;\r
 }\r
-$CONF['alertOnSecurityRisk'] = 1;\r
 /*\r
- * NOTE: this should be removed when releasing 4.0\r
-$CONF['ItemURL']           = $CONF['Self'];\r
-$CONF['ArchiveURL']          = $CONF['Self'];\r
-$CONF['ArchiveListURL']      = $CONF['Self'];\r
-$CONF['MemberURL']           = $CONF['Self'];\r
-$CONF['SearchURL']           = $CONF['Self'];\r
-$CONF['BlogURL']             = $CONF['Self'];\r
-$CONF['CategoryURL']         = $CONF['Self'];\r
-*/\r
+ * alertOnSecurityRisk\r
+ * Displays an error only when visiting the admin area, and when one or\r
+ *  more of the installation files (install.php, install.sql, upgrades/\r
+ *  directory) are still on the server.\r
+ */\r
+$CONF['alertOnSecurityRisk'] = 1;\r
 \r
 /*\r
  * Set these to 1 to allow viewing of future items or draft items\r
@@ -115,60 +89,80 @@ if ( getNucleusPatchLevel() > 0 )
 }\r
 \r
 /* Avoid notices */\r
-if ( !isset($CONF['installscript']) )\r
+if ( !array_key_exists('installscript', $CONF) || empty($CONF['installscript']) )\r
 {\r
        $CONF['installscript'] = 0;\r
 }\r
-\r
-/* we will use postVar, getVar, ... methods instead of $_GET, $_POST ...*/\r
-if ( $CONF['installscript'] != 1 )\r
+if ( !array_key_exists('UsingAdminArea', $CONF) )\r
 {\r
-       /* vars were already included in install.php */\r
-       include_once($DIR_LIBS . 'vars4.1.0.php');\r
+       $CONF['UsingAdminArea'] = 0;\r
 }\r
 \r
-/* sanitize option */\r
-$bLoggingSanitizedResult=0;\r
-$bSanitizeAndContinue=0;\r
+if ( !headers_sent() )\r
+{\r
+       header('Generator: Nucleus CMS ' . $nucleus['version']);\r
+}\r
 \r
-$orgRequestURI = serverVar('REQUEST_URI');\r
-sanitizeParams();\r
 \r
-/* get all variables that can come from the request and put them in the global scope */\r
-$blogid       = requestVar('blogid');\r
-$itemid       = intRequestVar('itemid');\r
-$catid        = intRequestVar('catid');\r
-$skinid       = requestVar('skinid');\r
-$memberid     = requestVar('memberid');\r
-$archivelist  = requestVar('archivelist');\r
-$imagepopup   = requestVar('imagepopup');\r
-$archive      = requestVar('archive');\r
-$query        = requestVar('query');\r
-$highlight    = requestVar('highlight');\r
-$amount       = requestVar('amount');\r
-$action       = requestVar('action');\r
-$nextaction   = requestVar('nextaction');\r
-$maxresults   = requestVar('maxresults');\r
-$startpos     = intRequestVar('startpos');\r
-$errormessage = '';\r
-$error        = '';\r
-$special      = requestVar('special');\r
-$virtualpath  = ((getVar('virtualpath') != null) ? getVar('virtualpath') : serverVar('PATH_INFO'));\r
+/* TODO: This is for compatibility since 4.0, should be obsoleted at future release. */\r
+if ( !isset($DIR_LOCALES) )\r
+{\r
+       $DIR_LOCALES = $DIR_NUCLEUS . 'locales/';\r
+}\r
+global $DIR_LANG;\r
+if ( !isset($DIR_LANG) )\r
+{\r
+       $DIR_LANG = $DIR_LOCALES;\r
+}\r
 \r
-if ( !headers_sent() )\r
+/* load and initialize i18n class */\r
+if (!class_exists('i18n', FALSE))\r
 {\r
-       header('Generator: Nucleus CMS ' . $nucleus['version']);\r
+       include($DIR_LIBS . 'i18n.php');\r
 }\r
+if ( !i18n::init('UTF-8', $DIR_LOCALES) )\r
+{\r
+       exit('Fail to initialize i18n class.');\r
+}\r
+\r
+/* TODO: This is just for compatibility since 4.0, should be obsoleted at future release. */\r
+define('_CHARSET', i18n::get_current_charset());\r
+\r
 \r
 /*\r
  * NOTE: Since 4.0 release, Entity class becomes to be important class\r
  *  with some wrapper functions for htmlspechalchars/htmlentity PHP's built-in function\r
-*/\r
+ */\r
 include($DIR_LIBS . 'ENTITY.php');\r
 \r
+/* we will use postVar, getVar, ... methods instead of $_GET, $_POST ... */\r
+if ( $CONF['installscript'] != 1 )\r
+{\r
+       /* vars were already included in install.php */\r
+       include_once($DIR_LIBS . 'vars4.1.0.php');\r
+       \r
+       /* added for 4.0 DB::* wrapper and compatibility sql_* */\r
+       include_once($DIR_LIBS . 'sql/sql.php');\r
+}\r
+\r
 /* include core classes that are needed for login & plugin handling */\r
-include_once($DIR_LIBS . 'mysql.php');\r
-/* added for 3.5 sql_* wrapper */\r
+include($DIR_LIBS . 'MEMBER.php');\r
+include($DIR_LIBS . 'ACTIONLOG.php');\r
+include($DIR_LIBS . 'MANAGER.php');\r
+include($DIR_LIBS . 'PLUGIN.php');\r
+\r
+$manager =& MANAGER::instance();\r
+\r
+/* only needed when updating logs */\r
+if ( $CONF['UsingAdminArea'] )\r
+{\r
+       /* XML-RPC client classes */\r
+       include($DIR_LIBS . 'xmlrpc.inc.php');\r
+       include($DIR_LIBS . 'ADMIN.php');\r
+}\r
+\r
+\r
+/* connect to database */\r
 global $MYSQL_HANDLER;\r
 if ( !isset($MYSQL_HANDLER) )\r
 {\r
@@ -178,50 +172,61 @@ if ( $MYSQL_HANDLER[0] == '' )
 {\r
        $MYSQL_HANDLER[0] = 'mysql';\r
 }\r
-include_once($DIR_LIBS . 'sql/'.$MYSQL_HANDLER[0].'.php');\r
-/* end new for 3.5 sql_* wrapper */\r
-include($DIR_LIBS . 'MEMBER.php');\r
-include($DIR_LIBS . 'ACTIONLOG.php');\r
-include($DIR_LIBS . 'MANAGER.php');\r
-include($DIR_LIBS . 'PLUGIN.php');\r
+DB::setConnectionInfo($MYSQL_HANDLER[1], $MYSQL_HOST, $MYSQL_USER, $MYSQL_PASSWORD, $MYSQL_DATABASE);\r
 \r
-$manager =& Manager::instance();\r
 \r
-/*\r
- * make sure there's no unnecessary escaping:\r
- * set_magic_quotes_runtime(0);\r
- */\r
-if ( version_compare(PHP_VERSION, '5.3.0', '<') )\r
+/* force locale or charset */\r
+$locale = '';\r
+$charset = i18n::get_current_charset();\r
+\r
+$data = array(\r
+       'locale'        => &$locale,\r
+       'charset'       => &$charset\r
+);\r
+$manager->notify('ForceLocale', $data);\r
+\r
+if ( $data['locale'] !== '' )\r
 {\r
-       ini_set('magic_quotes_runtime', '0');\r
+       i18n::set_forced_locale($data['locale']);\r
 }\r
-\r
-/* Avoid notices */\r
-if ( !array_key_exists('UsingAdminArea', $CONF) )\r
+if ( $data['charset'] !== '' )\r
 {\r
-       $CONF['UsingAdminArea'] = 0;\r
+       i18n::set_forced_charset($data['charset']);\r
 }\r
+unset($locale);\r
+unset($charset);\r
 \r
-/* only needed when updating logs */\r
-if ( $CONF['UsingAdminArea'] )\r
+\r
+/* convert forced charset to current charset */\r
+if ( i18n::get_forced_charset() != i18n::get_current_charset() )\r
 {\r
-       /* XML-RPC client classes */\r
-       include($DIR_LIBS . 'xmlrpc.inc.php');\r
-       include_once($DIR_LIBS . 'ADMIN.php');\r
+       $_POST          = i18n::convert_array($_POST, i18n::get_forced_charset());\r
+       $_GET           = i18n::convert_array($_GET, i18n::get_forced_charset());\r
+       $_REQUEST       = i18n::convert_array($_REQUEST, i18n::get_forced_charset());\r
+       $_COOKIE        = i18n::convert_array($_COOKIE, i18n::get_forced_charset());\r
+       $_FILES         = i18n::convert_array($_FILES, i18n::get_forced_charset());\r
+       \r
+       if ( session_id() !== '' )\r
+       {\r
+               $_SESSION = i18n::convert_array($_SESSION, i18n::get_forced_charset());\r
+       }\r
 }\r
 \r
-/* connect to database */\r
-sql_connect();\r
-$SQLCount = 0;\r
+\r
+/* sanitize option */\r
+$bLoggingSanitizedResult = 0;\r
+$bSanitizeAndContinue = 0;\r
+$orgRequestURI = serverVar('REQUEST_URI');\r
+sanitizeParams();\r
 \r
 /* logs sanitized result if need */\r
-if ( $orgRequestURI!==serverVar('REQUEST_URI') )\r
+if ( $orgRequestURI !== serverVar('REQUEST_URI') )\r
 {\r
        $msg = "Sanitized [" . serverVar('REMOTE_ADDR') . "] ";\r
        $msg .= $orgRequestURI . " -> " . serverVar('REQUEST_URI');\r
        if ( $bLoggingSanitizedResult )\r
        {\r
-       addToLog(WARNING, $msg);\r
+               addToLog(WARNING, $msg);\r
        }\r
        if ( !$bSanitizeAndContinue )\r
        {\r
@@ -229,25 +234,31 @@ if ( $orgRequestURI!==serverVar('REQUEST_URI') )
        }\r
 }\r
 \r
-/* makes sure database connection gets closed on script termination */\r
-register_shutdown_function('sql_disconnect');\r
+/* get all variables that can come from the request and put them in the global scope */\r
+$blogid                = requestVar('blogid');\r
+$itemid                = intRequestVar('itemid');\r
+$catid         = intRequestVar('catid');\r
+$skinid                = requestVar('skinid');\r
+$memberid      = requestVar('memberid');\r
+$archivelist = requestVar('archivelist');\r
+$imagepopup    = requestVar('imagepopup');\r
+$archive       = requestVar('archive');\r
+$query         = requestVar('query');\r
+$highlight     = requestVar('highlight');\r
+$amount                = requestVar('amount');\r
+$action                = requestVar('action');\r
+$nextaction    = requestVar('nextaction');\r
+$maxresults    = requestVar('maxresults');\r
+$startpos      = intRequestVar('startpos');\r
+$errormessage = '';\r
+$error         = '';\r
+$special       = requestVar('special');\r
+$virtualpath = ((getVar('virtualpath') != NULL) ? getVar('virtualpath') : serverVar('PATH_INFO'));\r
+\r
 \r
 /* read config */\r
 getConfig();\r
 \r
-/*\r
- * FIXME: This is for backward compatibility, should be obsoleted near future.\r
- */\r
-if ( !preg_match('#^(.+)_(.+)_(.+)$#', $CONF['Locale'])\r
-  && ($CONF['Locale'] = i18n::convert_old_language_file_name_to_locale($CONF['Locale'])) === FALSE )\r
-{\r
-       $CONF['Locale'] = 'en_Latn_US';\r
-}\r
-if ( !array_key_exists('Language', $CONF) )\r
-{\r
-       $CONF['Language'] = i18n::convert_locale_to_old_language_file_name($CONF['Locale']);\r
-}\r
-$locale = $CONF['Locale'];\r
 \r
 /* Properly set $CONF['Self'] and others if it's not set...\r
  * usually when we are access from admin menu\r
@@ -262,13 +273,13 @@ if ( !array_key_exists('Self', $CONF) )
        }\r
 }\r
 \r
-$CONF['ItemURL'] = $CONF['Self'];\r
-$CONF['ArchiveURL'] = $CONF['Self'];\r
-$CONF['ArchiveListURL'] = $CONF['Self'];\r
-$CONF['MemberURL'] = $CONF['Self'];\r
-$CONF['SearchURL'] = $CONF['Self'];\r
-$CONF['BlogURL'] = $CONF['Self'];\r
-$CONF['CategoryURL'] = $CONF['Self'];\r
+$CONF['ItemURL']               = $CONF['Self'];\r
+$CONF['ArchiveURL']            = $CONF['Self'];\r
+$CONF['ArchiveListURL']        = $CONF['Self'];\r
+$CONF['MemberURL']             = $CONF['Self'];\r
+$CONF['SearchURL']             = $CONF['Self'];\r
+$CONF['BlogURL']               = $CONF['Self'];\r
+$CONF['CategoryURL']   = $CONF['Self'];\r
 \r
 /*\r
  *switch URLMode back to normal when $CONF['Self'] ends in .php\r
@@ -307,14 +318,39 @@ else
        $member->cookielogin();\r
 }\r
 \r
+\r
+/* TODO: This is for backward compatibility, should be obsoleted near future. */\r
+if ( !preg_match('#^(.+)_(.+)_(.+)$#', $CONF['Locale'])\r
+  && ($CONF['Locale'] = i18n::convert_old_language_file_name_to_locale($CONF['Locale'])) === FALSE )\r
+{\r
+       $CONF['Locale'] = 'en_Latn_US';\r
+}\r
+if ( !array_key_exists('Language', $CONF) )\r
+{\r
+       $CONF['Language'] = i18n::convert_locale_to_old_language_file_name($CONF['Locale']);\r
+}\r
+$locale = $CONF['Locale'];\r
+\r
+\r
 /* NOTE: include translation file and set locale */\r
-if ( $member->isLoggedIn() && $member->getLocale())\r
+if ( $member->isLoggedIn() )\r
 {\r
-       $locale = $member->getLocale();\r
+       if ( $member->getLocale() )\r
+       {\r
+               $locale = $member->getLocale();\r
+       }\r
+}\r
+else\r
+{\r
+       if ( i18n::get_forced_locale() !== '' )\r
+       {\r
+               $locale = i18n::get_forced_locale();\r
+       }\r
 }\r
 include_translation($locale);\r
 i18n::set_current_locale($locale);\r
 \r
+\r
 /* login completed */\r
 $manager->notify('PostAuthentication', array('loggedIn' => $member->isLoggedIn() ) );\r
 \r
@@ -511,20 +547,38 @@ if ( $CONF['URLMode'] == 'pathinfo' )
  * the values of something like catid or itemid\r
  * New in 3.60\r
  */\r
-$manager->notify(\r
-       'PostParseURL',\r
-       array(\r
-               /* e.g. item, blog, ... */\r
-               'type' => basename(serverVar('SCRIPT_NAME') ),\r
-               'info' => $virtualpath\r
-       )\r
+$data = array(\r
+       'type' => basename(serverVar('SCRIPT_NAME')),\r
+       'info' => $virtualpath\r
 );\r
+$manager->notify('PostParseURL', $data);\r
 \r
 /*\r
  * NOTE: Here is the end of initialization\r
  */\r
 \r
-       /**\r
+/**\r
+ * Errors before the database connection has been made\r
+ * \r
+ * @param      string  $msg    message to notify\r
+ * @param      string  $title  page title\r
+ * @return     void\r
+ */\r
+function startUpError($msg, $title)\r
+{\r
+       header('Content-Type: text/xml; charset=' . i18n::get_current_charset());\r
+       echo "<html xmlns=\"http://www.w3.org/1999/xhtml\">\n";\r
+       echo "<head>\n";\r
+       echo '<title>'. Entity::hsc($title) . "</title></head>\n";\r
+       echo "<body>\n";\r
+       echo '<h1>' . Entity::hsc($title) . "</h1>\n";\r
+       echo $msg;\r
+       echo "</body>\n";\r
+       echo "</html>\n";\r
+       exit;\r
+}\r
+\r
+/**\r
         * This function includes or requires the specified library file\r
         * @param string $file\r
         * @param bool $once use the _once() version\r
@@ -735,51 +789,72 @@ $manager->notify(
        }\r
 \r
 \r
-       /**\r
-        * TODO: This function should be changed to send_content_type() per the Coding Guidelines. Ensure this change is compatible with rest of core.\r
-        *\r
-        * This function sends the Content-Type header if headers have not already been sent\r
-        * It also determines if the browser can accept application/xhtml+xml and sends it only to those that can.\r
-        * @param string $content_type\r
-        * @param string $page_type\r
-        * @param string $charset Deprecated. This has no meaning.\r
-        */\r
-       function sendContentType($content_type, $page_type = '', $charset = _CHARSET)\r
+/**\r
+ * sendContentType()\r
+ * This function sends the Content-Type header if headers have not already been sent\r
+ * It also determines if the browser can accept application/xhtml+xml and sends it only to those that can.\r
+ * \r
+ * if content type is application/xhtml+xml, only send it to browsers\r
+ * that can handle it (IE6 cannot). Otherwise, send text/html\r
+ *\r
+ * v2.5:\r
+ * For admin area pages, keep sending text/html (unless it's a debug version)\r
+ * application/xhtml+xml still causes too much problems with the javascript implementations\r
+ *\r
+ * v3.3:\r
+ * ($CONF['UsingAdminArea'] && !$CONF['debug']) gets removed,\r
+ * application/xhtml+xml seems to be working, so we're going to use it if we can.\r
+ * \r
+ * @param      string  $content_type   MIME media type registered to IANA, http://www.iana.org/assignments/media-types/index.html\r
+ * @param      string  $page_type              \r
+ * @param      string  $charset                Deprecated. This has no meaning.\r
+ * @return     void\r
+ * \r
+ */\r
+function sendContentType($content_type, $page_type = '', $charset = '')\r
+{\r
+       global $manager, $CONF;\r
+       \r
+       if ( headers_sent() )\r
        {\r
-               global $manager, $CONF;\r
-               \r
-               if ( !headers_sent() )\r
-               {\r
-                       // if content type is application/xhtml+xml, only send it to browsers\r
-                       // that can handle it (IE6 cannot). Otherwise, send text/html\r
-\r
-                       // v2.5: For admin area pages, keep sending text/html (unless it's a debug version)\r
-                       //       application/xhtml+xml still causes too much problems with the javascript implementations\r
-\r
-                       // v3.3: ($CONF['UsingAdminArea'] && !$CONF['debug']) gets removed,\r
-                       //       application/xhtml+xml seems to be working, so we're going to use it if we can.\r
-\r
-                       if ( ($content_type == 'application/xhtml+xml')\r
-                               && (!stristr(serverVar('HTTP_ACCEPT'), 'application/xhtml+xml') ) )\r
-                       {\r
-                               $content_type = 'text/html';\r
-                       } // end if\r
-\r
-                       $manager->notify(\r
-                               'PreSendContentType',\r
-                               array(\r
-                                       'contentType' => &$content_type,\r
-                                       'charset' => i18n::get_current_charset(),\r
-                                       'pageType' => $page_type\r
-                               )\r
-                       );\r
-\r
-                       // strip strange characters\r
-                       $content_type = preg_replace('|[^a-z0-9-+./]|i', '', $content_type);\r
-                       header('Content-Type: ' . $content_type . '; charset=' . i18n::get_current_charset());\r
-               } // end if\r
-\r
+               return;\r
        }\r
+       \r
+       /* NOTE: MIME Media Type */\r
+       if ( ($content_type == 'application/xhtml+xml')\r
+               && (!stristr(serverVar('HTTP_ACCEPT'), 'application/xhtml+xml') ) )\r
+       {\r
+               $content_type = 'text/html';\r
+       }\r
+       \r
+       /* NOTE: generate event */\r
+       $data = array(\r
+               'pageType'              =>  $page_type,\r
+               'contentType'   => &$content_type\r
+       );\r
+       $manager->notify('PreSendContentType', $data);\r
+       \r
+       /* NOTE: confirm MIME Media Type */\r
+       $content_type = preg_replace('#[^a-zA-Z0-9-+./]#', '', $content_type);\r
+       \r
+       /* NOTE: confirm character set */\r
+       $charset = i18n::get_current_charset();\r
+       if ( i18n::get_forced_charset() !== '' )\r
+       {\r
+               $charset = i18n::get_forced_charset();\r
+       }\r
+       \r
+       /* NOTE: send HTTP 1.1 header */\r
+       header("Content-Type: {$content_type}; charset={$charset}");\r
+       \r
+       /* NOTE: set handler for translating character set */\r
+       if ( $charset != i18n::get_current_charset() )\r
+       {\r
+               ob_start(array('i18n', 'convert_handler'));\r
+       }\r
+       \r
+       return;\r
+}\r
 \r
 \r
        /**\r
@@ -828,7 +903,8 @@ $manager->notify(
         */\r
        function getBlogIDFromName($name)\r
        {\r
-               return quickQuery('SELECT bnumber AS result FROM ' . sql_table('blog') . ' WHERE bshortname = "' . sql_real_escape_string($name) . '"');\r
+               $query = sprintf('SELECT bnumber AS result FROM %s WHERE bshortname=%s', sql_table('blog'), DB::quoteValue($name));\r
+               return DB::getValue($query);\r
        }\r
 \r
 \r
@@ -839,7 +915,8 @@ $manager->notify(
         */\r
        function getBlogNameFromID($id)\r
        {\r
-               return quickQuery('SELECT bname AS result FROM ' . sql_table('blog') . ' WHERE bnumber = ' . intval($id));\r
+               $query = sprintf('SELECT bname AS result FROM %s WHERE bnumber=%d', sql_table('blog'), intval($id));\r
+               return DB::getValue($query);\r
        }\r
 \r
 \r
@@ -850,7 +927,8 @@ $manager->notify(
         */\r
        function getBlogIDFromItemID($item_id)\r
        {\r
-               return quickQuery('SELECT iblog AS result FROM ' . sql_table('item') . ' WHERE inumber = ' . intval($item_id));\r
+               $query = sprintf('SELECT iblog AS result FROM %s WHERE inumber=%d', sql_table('item'), intval($item_id));\r
+               return DB::getValue($query);\r
        }\r
 \r
 \r
@@ -861,7 +939,8 @@ $manager->notify(
         */\r
        function getBlogIDFromCommentID($comment_id)\r
        {\r
-               return quickQuery('SELECT cblog AS result FROM ' . sql_table('comment') . ' WHERE cnumber = ' . intval($comment_id));\r
+               $query = sprintf('SELECT cblog AS result FROM %s WHERE cnumber=%d', sql_table('comment'), intval($comment_id));\r
+               return DB::getValue($query);\r
        }\r
 \r
 \r
@@ -872,7 +951,8 @@ $manager->notify(
         */\r
        function getBlogIDFromCatID($category_id)\r
        {\r
-               return quickQuery('SELECT cblog AS result FROM ' . sql_table('category') . ' WHERE catid = ' . intval($category_id));\r
+               $query = sprintf('SELECT cblog AS result FROM %s WHERE catid=%d', sql_table('category'), intval($category_id));\r
+               return DB::getValue($query);\r
        }\r
 \r
 \r
@@ -883,26 +963,25 @@ $manager->notify(
         */\r
        function getCatIDFromName($name)\r
        {\r
-               return quickQuery('SELECT catid AS result FROM ' . sql_table('category') . ' WHERE cname = "' . sql_real_escape_string($name) . '"');\r
+               $query = sprintf('SELECT catid AS result FROM %s WHERE cname=%s', sql_table('category'), DB::quoteValue($name));\r
+               return DB::getValue($query);\r
        }\r
 \r
 \r
        /**\r
         * This function performs a quick SQL query\r
+        * @deprecated\r
         * @param string $query\r
         * @return object\r
         */\r
        function quickQuery($query)\r
        {\r
-               $res = sql_query($query);\r
-               $obj = sql_fetch_object($res);\r
-               return (is_object($obj)) ? $obj->result : FALSE;\r
+               $row = DB::getRow($query);\r
+               return $row['result'];\r
        }\r
-\r
 function getPluginNameFromPid($pid) {\r
-    $res = sql_query('SELECT pfile FROM ' . sql_table('plugin') . ' WHERE pid=' . intval($pid) );\r
-    $obj = sql_fetch_object($res);\r
-    return $obj->pfile;\r
+    $query = sprintf('SELECT pfile FROM %s WHERE pid=%d', sql_table('plugin'), intval($pid));\r
+    return DB::getValue($query);\r
 //    return isset($obj->pfile) ? $obj->pfile : false;\r
 }\r
 \r
@@ -972,69 +1051,64 @@ function selector()
                \r
                // 1. get timestamp, blogid and catid for item\r
                $query = 'SELECT itime, iblog, icat FROM %s WHERE inumber=%d';\r
-               $query = sprintf($query, sql_table('item'), (integer) $itemid);\r
-               $res = sql_query($query);\r
-               $obj = sql_fetch_object($res);\r
+               $query = sprintf($query, sql_table('item'), intval($itemid));\r
+               $row = DB::getRow($query);\r
                \r
                // if a different blog id has been set through the request or selectBlog(),\r
                // deny access\r
                \r
-               if ( $blogid && (intval($blogid) != $obj->iblog) )\r
+               if ( $blogid && (intval($blogid) != $row['iblog']) )\r
                {\r
                        doError(_ERROR_NOSUCHITEM);\r
                }\r
                \r
                // if a category has been selected which doesn't match the item, ignore the\r
                // category. #85\r
-               if ( ($catid != 0) && ($catid != $obj->icat) )\r
+               if ( ($catid != 0) && ($catid != $row['icat']) )\r
                {\r
                        $catid = 0;\r
                }\r
                \r
-               $blogid = $obj->iblog;\r
-               $timestamp = strtotime($obj->itime);\r
+               $blogid = $row['iblog'];\r
+               $timestamp = strtotime($row['itime']);\r
                \r
                $b =& $manager->getBlog($blogid);\r
                \r
                if ( !$b->isValidCategory($catid) )\r
                {\r
-                       $query = "SELECT inumber, ititle FROM %s WHERE itime<'%s' AND idraft=0 AND iblog=%d ORDER BY itime DESC LIMIT 1";\r
-                       $query = sprintf($query, sql_table('item'), i18n::formatted_datetime('mysql', $timestamp), $blogid);\r
+                       $query = "SELECT inumber, ititle FROM %s WHERE itime<%s AND idraft=0 AND iblog=%d ORDER BY itime DESC LIMIT 1";\r
+                       $query = sprintf($query, sql_table('item'), DB::formatDateTime($timestamp), intval($blogid));\r
                }\r
                else\r
                {\r
-                       $query = "SELECT inumber, ititle FROM %s WHERE itime<'%s' AND idraft=0 AND iblog=%d AND icat=%d ORDER BY itime DESC LIMIT 1";\r
-                       $query = sprintf($query, sql_table('item'), i18n::formatted_datetime('mysql', $timestamp), $blogid, $catid);\r
+                       $query = "SELECT inumber, ititle FROM %s WHERE itime<%s AND idraft=0 AND iblog=%d AND icat=%d ORDER BY itime DESC LIMIT 1";\r
+                       $query = sprintf($query, sql_table('item'), DB::formatDateTime($timestamp), intval($blogid), intval($catid));\r
                }\r
+               $row = DB::getRow($query);\r
                \r
-               $res = sql_query($query);\r
-               $obj = sql_fetch_object($res);\r
-               \r
-               if ( $obj )\r
+               if ( $row )\r
                {\r
-                       $itemidprev = $obj->inumber;\r
-                       $itemtitleprev = $obj->ititle;\r
+                       $itemidprev = $row['inumber'];\r
+                       $itemtitleprev = $row['ititle'];\r
                }\r
                \r
                // get next itemid and title\r
                if ( !$b->isValidCategory($catid) )\r
                {\r
-                       $query = "SELECT inumber, ititle FROM %s WHERE itime>'%s' AND itime<='%s' AND idraft=0 AND iblog=%d ORDER BY itime ASC LIMIT 1";\r
-                       $query = sprintf($query, sql_table('item'), i18n::formatted_datetime('mysql', $timestamp), i18n::formatted_datetime('mysql', $b->getCorrectTime()), $blogid);\r
+                       $query = "SELECT inumber, ititle FROM %s WHERE itime>%s AND itime<=%s AND idraft=0 AND iblog=%d ORDER BY itime ASC LIMIT 1";\r
+                       $query = sprintf($query, sql_table('item'), DB::formatDateTime($timestamp), DB::formatDateTime($b->getCorrectTime()), intval($blogid));\r
                }\r
                else\r
                {\r
-                       $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";\r
-                       $query = sprintf($query, sql_table('item'), i18n::formatted_datetime('mysql', $timestamp), i18n::formatted_datetime('mysql', $b->getCorrectTime()), $blogid, $catid);\r
+                       $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";\r
+                       $query = sprintf($query, sql_table('item'), DB::formatDateTime($timestamp), DB::formatDateTime($b->getCorrectTime()), intval($blogid), intval($catid));\r
                }\r
-               $res = sql_query($query);\r
+               $row = DB::getRow($query);\r
                \r
-               $obj = sql_fetch_object($res);\r
-               \r
-               if ( $obj )\r
+               if ( $row )\r
                {\r
-                       $itemidnext = $obj->inumber;\r
-                       $itemtitlenext = $obj->ititle;\r
+                       $itemidnext = $row['inumber'];\r
+                       $itemtitlenext = $row['ititle'];\r
                }\r
        }\r
        elseif ( $archive )\r
@@ -1046,10 +1120,10 @@ function selector()
                global $archivenext, $archiveprev, $archivetype, $archivenextexists, $archiveprevexists;\r
                \r
                // sql queries for the timestamp of the first and the last published item\r
-               $query = "SELECT UNIX_TIMESTAMP(itime) as result FROM ".sql_table('item')." WHERE idraft=0 ORDER BY itime ASC";\r
-               $first_timestamp=quickQuery ($query);\r
-               $query = "SELECT UNIX_TIMESTAMP(itime) as result FROM ".sql_table('item')." WHERE idraft=0 ORDER BY itime DESC";\r
-               $last_timestamp=quickQuery ($query);\r
+               $query = sprintf('SELECT UNIX_TIMESTAMP(itime) as result FROM %s WHERE idraft=0 ORDER BY itime ASC', sql_table('item'));\r
+               $first_timestamp = DB::getValue($query);\r
+               $query = sprintf('SELECT UNIX_TIMESTAMP(itime) as result FROM %s WHERE idraft=0 ORDER BY itime DESC', sql_table('item'));\r
+               $last_timestamp = DB::getValue($query);\r
                \r
                sscanf($archive, '%d-%d-%d', $y, $m, $d);\r
                \r
@@ -1309,11 +1383,12 @@ function doError($msg, $skin = '')
 function getConfig() {\r
     global $CONF;\r
 \r
-    $query = 'SELECT * FROM ' . sql_table('config');\r
-    $res = sql_query($query);\r
+    $query = sprintf('SELECT * FROM %s', sql_table('config'));\r
+    $res = DB::getResult($query);\r
 \r
-    while ($obj = sql_fetch_object($res) ) {\r
-        $CONF[$obj->name] = $obj->value;\r
+    foreach ( $res as $row )\r
+    {\r
+       $CONF[$row['name']] = $row['value'];\r
     }\r
 }\r
 \r
@@ -1408,7 +1483,7 @@ function selectItem($id) {
 function parseFile($filename, $includeMode = 'normal', $includePrefix = '')\r
 {\r
        global $skinid;\r
-\r
+       \r
        if ( !$skinid || !existsID($skinid) )\r
        {\r
                $skin = new Skin($CONF['BaseSkin']);\r
@@ -1416,16 +1491,16 @@ function parseFile($filename, $includeMode = 'normal', $includePrefix = '')
        else\r
        {\r
                $skin = new Skin($skinid);\r
-    }\r
-\r
+       }\r
+       \r
        $oldIncludeMode = Parser::getProperty('IncludeMode');\r
        $oldIncludePrefix = Parser::getProperty('IncludePrefix');\r
-\r
+       \r
        $skin->parse('fileparse', $filename);\r
-\r
+       \r
        Parser::setProperty('IncludeMode', $oldIncludeMode);\r
        Parser::setProperty('IncludePrefix', $oldIncludePrefix);\r
-\r
+       \r
        return;\r
 }\r
 \r
@@ -1583,52 +1658,42 @@ function checkVars($aVars) {
 \r
 \r
 /**\r
+ * sanitizeParams()\r
  * Sanitize parameters such as $_GET and $_SERVER['REQUEST_URI'] etc.\r
- * to avoid XSS\r
+ * to avoid XSS.\r
+ * \r
+ * @param      void\r
+ * @return     void\r
  */\r
 function sanitizeParams()\r
 {\r
-    global $HTTP_SERVER_VARS;\r
-\r
-    $array = array();\r
-    $str = '';\r
-    $frontParam = '';\r
-\r
-    // REQUEST_URI of $HTTP_SERVER_VARS\r
-    $str =& $HTTP_SERVER_VARS["REQUEST_URI"];\r
-    serverStringToArray($str, $array, $frontParam);\r
-    sanitizeArray($array);\r
-    arrayToServerString($array, $frontParam, $str);\r
-\r
-    // QUERY_STRING of $HTTP_SERVER_VARS\r
-    $str =& $HTTP_SERVER_VARS["QUERY_STRING"];\r
-    serverStringToArray($str, $array, $frontParam);\r
-    sanitizeArray($array);\r
-    arrayToServerString($array, $frontParam, $str);\r
-\r
-    if (phpversion() >= '4.1.0') {\r
-        // REQUEST_URI of $_SERVER\r
-        $str =& $_SERVER["REQUEST_URI"];\r
-        serverStringToArray($str, $array, $frontParam);\r
-        sanitizeArray($array);\r
-        arrayToServerString($array, $frontParam, $str);\r
-\r
-        // QUERY_STRING of $_SERVER\r
-        $str =& $_SERVER["QUERY_STRING"];\r
-        serverStringToArray($str, $array, $frontParam);\r
-        sanitizeArray($array);\r
-        arrayToServerString($array, $frontParam, $str);\r
-    }\r
-\r
-    // $_GET\r
-    convArrayForSanitizing($_GET, $array);\r
-    sanitizeArray($array);\r
-    revertArrayForSanitizing($array, $_GET);\r
-\r
-    // $_REQUEST (only GET param)\r
-    convArrayForSanitizing($_REQUEST, $array);\r
-    sanitizeArray($array);\r
-    revertArrayForSanitizing($array, $_REQUEST);\r
+       $array = array();\r
+       $str = '';\r
+       $frontParam = '';\r
+       \r
+       // REQUEST_URI of $_SERVER\r
+       $str =& $_SERVER["REQUEST_URI"];\r
+       serverStringToArray($str, $array, $frontParam);\r
+       sanitizeArray($array);\r
+       arrayToServerString($array, $frontParam, $str);\r
+       \r
+       // QUERY_STRING of $_SERVER\r
+       $str =& $_SERVER["QUERY_STRING"];\r
+       serverStringToArray($str, $array, $frontParam);\r
+       sanitizeArray($array);\r
+       arrayToServerString($array, $frontParam, $str);\r
+       \r
+       // $_GET\r
+       convArrayForSanitizing($_GET, $array);\r
+       sanitizeArray($array);\r
+       revertArrayForSanitizing($array, $_GET);\r
+       \r
+       // $_REQUEST (only GET param)\r
+       convArrayForSanitizing($_REQUEST, $array);\r
+       sanitizeArray($array);\r
+       revertArrayForSanitizing($array, $_REQUEST);\r
+       \r
+       return;\r
 }\r
 \r
 /**\r
@@ -1686,16 +1751,16 @@ function ticketForPlugin()
        \r
        // Solve the plugin name.\r
        $plugins = array();\r
-       $query = 'SELECT pfile FROM '.sql_table('plugin');\r
-       $res = sql_query($query);\r
+       $query = sprintf('SELECT pfile FROM %s', sql_table('plugin'));\r
+       $res = DB::getResult($query);\r
        \r
-       while($row = sql_fetch_row($res) )\r
+       foreach ( $res as $row )\r
        {\r
-               $name = i18n::substr($row[0], 3);\r
+               $name = i18n::substr($row['pfile'], 3);\r
                $plugins[strtolower($name)] = $name;\r
        }\r
        \r
-       sql_free_result($res);\r
+       $res->closeCursor();\r
        \r
        if (array_key_exists($path, $plugins))\r
        {\r
@@ -1829,55 +1894,85 @@ function _addInputTags(&$keys,$prefix=''){
  * Convert the server string such as $_SERVER['REQUEST_URI']\r
  * to arry like arry['blogid']=1 and array['page']=2 etc.\r
  * \r
- * @param      string  $str            string\r
- * @param      string  $array          \r
- * @param      string  $frontParam     \r
+ * @param      string   $uri                           string\r
+ * @param      string  &$query_elements        elements of query according to application/x-www-form-urlencoded\r
+ * @param      string  &$hier_part                     hierarchical part includes path\r
+ * \r
+ * NOTE:\r
+ * RFC 3986: Uniform Resource Identifiers (URI): Generic Syntax\r
+ * 3.  Syntax Components\r
+ * http://www.ietf.org/rfc/rfc3986.txt\r
+ * \r
+ * Hypertext Markup Language - 2.0\r
+ * 8.2.1. The form-urlencoded Media Type\r
+ * http://tools.ietf.org/html/rfc1866#section-8.2.1\r
+ * \r
+ * $_SERVER > Language Reference > Predefined Variables > PHP Manual\r
+ * http://www.php.net/manual/en/reserved.variables.server.php\r
  */\r
-function serverStringToArray($str, &$array, &$frontParam)\r
+function serverStringToArray($uri, &$query_elements, &$hier_part)\r
 {\r
        // init param\r
-       $array = array();\r
-       $frontParam = "";\r
+       $query_elements = array();\r
+       $hier_part = "";\r
        \r
-       // split front param, e.g. /index.php, and others, e.g. blogid=1&page=2\r
-       if ( i18n::strpos($str, "?") > 0 )\r
+       // split hierarchical part, e.g. /index.php, query and fragment, e.g. blogid=1&page=2#section1\r
+       if ( i18n::strpos($uri, "?") > 0 )\r
        {\r
-               list($frontParam, $args) = preg_split("#\?#", $str, 2);\r
+               list($hier_part, $query_and_fragment) = preg_split("#\?#", $uri, 2);\r
        }\r
        else\r
        {\r
-               $args = $str;\r
-               $frontParam = "";\r
+               $query_and_fragment = $uri;\r
+               $hier_part = '';\r
        }\r
        \r
-       // If there is no args like blogid=1&page=2, return\r
-       if ( i18n::strpos($str, "=") == FALSE && !i18n::strlen($frontParam) )\r
+       // If there is no query like blogid=1&page=2, return\r
+       if ( i18n::strpos($uri, "=") == FALSE && !i18n::strlen($hier_part) )\r
        {\r
-               $frontParam = $str;\r
+               $hier_part = $uri;\r
                return;\r
        }\r
        \r
-       $array = preg_split("#&#", $args);\r
+       $query_elements = preg_split("#&#", $query_and_fragment);\r
        return;\r
 }\r
 \r
 /**\r
+ * arrayToServerString()\r
  * Convert array like array['blogid'] to server string\r
  * such as $_SERVER['REQUEST_URI']\r
+ * \r
+ * @param      array    $query_elements        elements of query according to application/x-www-form-urlencoded\r
+ * @param      string   $hier_part                     hier-part defined in RFC3986\r
+ * @param      string  &$uri                           return value\r
+ * @return     void\r
+ * \r
+ * NOTE:\r
+ * RFC 3986: Uniform Resource Identifiers (URI): Generic Syntax\r
+ * 3.  Syntax Components\r
+ * http://www.ietf.org/rfc/rfc3986.txt\r
+ * \r
+ * Hypertext Markup Language - 2.0\r
+ * 8.2.1. The form-urlencoded Media Type\r
+ * http://tools.ietf.org/html/rfc1866#section-8.2.1\r
+ * \r
+ * $_SERVER > Language Reference > Predefined Variables > PHP Manual\r
+ * http://www.php.net/manual/en/reserved.variables.server.php\r
  */\r
-function arrayToServerString($array, $frontParam, &$str)\r
+function arrayToServerString($query_elements, $hier_part, &$uri)\r
 {\r
-       if ( i18n::strpos($str, "?") !== FALSE )\r
+       if ( i18n::strpos($uri, "?") !== FALSE )\r
        {\r
-               $str = $frontParam . "?";\r
+               $uri = $hier_part . "?";\r
        }\r
        else\r
        {\r
-               $str = $frontParam;\r
+               $uri = $hier_part;\r
        }\r
-       if ( count($array) )\r
+       if ( count($query_elements) > 0 )\r
        {\r
-               $str .= implode("&", $array);\r
+               $uri .= implode("&", $query_elements);\r
        }\r
        return;\r
 }\r
@@ -1889,7 +1984,7 @@ function arrayToServerString($array, $frontParam, &$str)
  * - check key if it inclues " (double quote),  remove from array\r
  * - check value if it includes \ (escape sequece), remove remaining string\r
  * \r
- * @param      array   &$array \r
+ * @param      array   &$array elements of query according to application/x-www-form-urlencoded\r
  * @return     void\r
  */\r
 function sanitizeArray(&$array)\r
@@ -1911,6 +2006,7 @@ function sanitizeArray(&$array)
                {\r
                        $val = stripslashes($val);\r
                }\r
+               \r
                // note that we must use addslashes here because this function is called before the db connection is made\r
                // and sql_real_escape_string needs a db connection\r
                $val = addslashes($val);\r
@@ -1919,7 +2015,7 @@ function sanitizeArray(&$array)
                if ( !in_array($key, $excludeListForSanitization) )\r
                {\r
                        // check value\r
-                       if ( i18n::strpos($val, '\\') )\r
+                       if ( i18n::strpos($val, '\\') > 0 )\r
                        {\r
                                list($val, $tmp) = preg_split('#\\\\#', $val);\r
                        }\r
@@ -1928,7 +2024,7 @@ function sanitizeArray(&$array)
                        $val = strtr($val, "\0\r\n<>'\"", "       ");\r
                        \r
                        // check key\r
-                       if ( preg_match('#\"#', $key) )\r
+                       if ( preg_match('#\"#', $key) > 0 )\r
                        {\r
                                unset($array[$k]);\r
                                continue;\r
@@ -1942,27 +2038,45 @@ function sanitizeArray(&$array)
 }\r
 \r
 /**\r
+ * convArrayForSanitizing()\r
  * Convert array for sanitizeArray function\r
+ * \r
+ * @param      string  $src    array to be sanitized\r
+ * @param      array   &$array array to be temporarily stored\r
+ * @return     void\r
  */\r
 function convArrayForSanitizing($src, &$array)\r
 {\r
-    $array = array();\r
-    foreach ($src as $key => $val) {\r
-        if (key_exists($key, $_GET)) {\r
-            array_push($array, sprintf("%s=%s", $key, $val));\r
-        }\r
-    }\r
+       $array = array();\r
+       foreach ( $src as $key => $val )\r
+       {\r
+               if ( !key_exists($key, $_GET) )\r
+               {\r
+                       continue;\r
+               }\r
+               $array[] = sprintf("%s=%s", $key, $val);\r
+               continue;\r
+       }\r
+       return;\r
 }\r
 \r
 /**\r
+ * revertArrayForSanitizing()\r
  * Revert array after sanitizeArray function\r
+ * \r
+ * @param      array   $array  element of query according to application/x-www-form-urlencoded\r
+ * @param      array   &$dst   combination of key and value\r
+ * @return     void\r
  */\r
 function revertArrayForSanitizing($array, &$dst)\r
 {\r
-    foreach ($array as $v) {\r
-        list($key, $val) = preg_split("/=/", $v, 2);\r
-        $dst[$key] = $val;\r
-    }\r
+       foreach ( $array as $v )\r
+       {\r
+               list($key, $val) = preg_split("#=#", $v, 2);\r
+               $dst[$key] = $val;\r
+               continue;\r
+       }\r
+       return;\r
 }\r
 \r
 /**\r
@@ -2035,10 +2149,9 @@ function ifset(&$var) {
  * @return number of subscriber(s)\r
  */\r
 function numberOfEventSubscriber($event) {\r
-    $query = 'SELECT COUNT(*) as count FROM ' . sql_table('plugin_event') . ' WHERE event=\'' . $event . '\'';\r
-    $res = sql_query($query);\r
-    $obj = sql_fetch_object($res);\r
-    return $obj->count;\r
+    $query = sprintf('SELECT COUNT(*) as count FROM %s WHERE event=%s', sql_table('plugin_event'), DB::quoteValue($event));\r
+    $res = DB::getValue($query);\r
+    return $res;\r
 }\r
 \r
 /**\r
@@ -2152,10 +2265,13 @@ function formatDate($format, $timestamp, $default_format, &$blog)
        }\r
        return i18n::formatted_datetime($format, $timestamp, $offset, $default_format);\r
 }\r
-/* NOTE: use i18n::formatted_datetime() directly instead of this */\r
+/**\r
+ * NOTE: use DB::formatDateTime() directly instead of this\r
+ * @deprecated\r
+ */\r
 function mysqldate($timestamp)\r
 {\r
-       return '"' . i18n::formatted_datetime('mysql', $timestamp) . '"';\r
+       return DB::formatDateTime($timestamp);\r
  }\r
 /**\r
  * Centralisation of the functions that generate links\r
index 6e89097..aebcc25 100644 (file)
@@ -20,13 +20,19 @@ class i18n
 {\r
        static private $mode = FALSE;\r
        \r
-       static private $charset = '';\r
-       static private $language = '';\r
-       static private $script = '';\r
-       static private $region = '';\r
+       static private $current_charset = '';\r
+       static private $current_language = '';\r
+       static private $current_script = '';\r
+       static private $current_region = '';\r
+       \r
        static private $locale_list = array();\r
        static private $timezone = 'UTC';\r
        \r
+       static private $forced_charset = '';\r
+       static private $forced_language = '';\r
+       static private $forced_script = '';\r
+       static private $forced_region = '';\r
+       \r
        /**\r
         * i18n::init\r
         * Initializing i18n class\r
@@ -68,7 +74,7 @@ class i18n
                         && iconv_set_encoding('output_encoding', $charset)\r
                         && iconv_set_encoding('internal_encoding', $charset) )\r
                        {\r
-                               self::$charset = $charset;\r
+                               self::$current_charset = $charset;\r
                                self::$mode = 'iconv';\r
                        }\r
                }\r
@@ -79,7 +85,7 @@ class i18n
                         && mb_internal_encoding($charset)\r
                         && mb_regex_encoding($charset) )\r
                        {\r
-                               self::$charset = $charset;\r
+                               self::$current_charset = $charset;\r
                                self::$mode = 'mbstring';\r
                        }\r
                }\r
@@ -110,7 +116,7 @@ class i18n
         */\r
        static public function get_current_charset()\r
        {\r
-               return self::$charset;\r
+               return self::$current_charset;\r
        }\r
        \r
        /**\r
@@ -131,9 +137,9 @@ class i18n
        {\r
                if ( preg_match('#^(.+)_(.+)_(.+)$#', $locale, $match) )\r
                {\r
-                       self::$language = $match[1];\r
-                       self::$script   = $match[2];\r
-                       self::$region   = $match[3];\r
+                       self::$current_language = $match[1];\r
+                       self::$current_script   = $match[2];\r
+                       self::$current_region   = $match[3];\r
                        return TRUE;\r
                }\r
                return FALSE;\r
@@ -149,11 +155,78 @@ class i18n
         */\r
        static public function get_current_locale()\r
        {\r
-               $elements = array(self::$language, self::$script, self::$region);\r
+               $elements = array(self::$current_language, self::$current_script, self::$current_region);\r
+               return implode('_', $elements);\r
+       }\r
+       \r
+       /**\r
+        * i18n::set_forced_locale()\r
+        * Set forced locale\r
+        * \r
+        * @static\r
+        * @param       string  $forced_locale\r
+        * @return      bool    TRUE/FALSE\r
+        * \r
+        */\r
+       static public function set_forced_locale($forced_locale)\r
+       {\r
+               if ( preg_match('#^(.+)_(.+)_(.+)$#', $forced_locale, $match) )\r
+               {\r
+                       self::$forced_language  = $match[1];\r
+                       self::$forced_script    = $match[2];\r
+                       self::$forced_region    = $match[3];\r
+                       return TRUE;\r
+               }\r
+               return FALSE;\r
+       }\r
+       \r
+       /**\r
+        * i18n::get_forced_locale\r
+        * Get forced locale\r
+        * \r
+        * @static\r
+        * @param       void\r
+        * @return      $forced_locale\r
+        */\r
+       static public function get_forced_locale()\r
+       {\r
+               if ( !self::$forced_language )\r
+               {\r
+                       return;\r
+               }\r
+               \r
+               $elements = array(self::$forced_language, self::$forced_script, self::$forced_region);\r
                return implode('_', $elements);\r
        }\r
        \r
        /**\r
+        * i18n::set_forced_charset\r
+        * return forced charset\r
+        * \r
+        * @static\r
+        * @param       void    $charset        forced character set\r
+        * @return      void\r
+        */\r
+       static public function set_forced_charset($forced_charset)\r
+       {\r
+               self::$forced_charset = $forced_charset;\r
+               return;\r
+       }\r
+       \r
+       /**\r
+        * i18n::get_forced_charset\r
+        * return forced charset\r
+        * \r
+        * @static\r
+        * @param       void\r
+        * @return      string  $charset        forced character set\r
+        */\r
+       static public function get_forced_charset()\r
+       {\r
+               return self::$forced_charset;\r
+       }\r
+       \r
+       /**\r
         * i18n::confirm_default_date_timezone\r
         * to avoid E_NOTICE or E_WARNING generated when every calling to a date/time function.\r
         * \r
@@ -205,10 +278,14 @@ class i18n
        {\r
                if ( $to == '' )\r
                {\r
-                       $to = self::$charset;\r
+                       $to = self::$current_charset;\r
                }\r
                \r
-               if ( self::$mode == 'iconv' )\r
+               if ( $from == $to )\r
+               {\r
+                       /* do nothing */\r
+               }\r
+               else if ( self::$mode == 'iconv' )\r
                {\r
                        $string = iconv($from, $to.'//TRANSLIT', $string);\r
                }\r
@@ -220,6 +297,51 @@ class i18n
        }\r
        \r
        /**\r
+        * i18n::convert_handler\r
+        * callable handler for character set converter\r
+        * \r
+        * @static\r
+        * @param       string  $string target string binary\r
+        * @return      void\r
+        */\r
+       static public function convert_handler($string)\r
+       {\r
+               return self::convert($string, self::$current_charset, self::$forced_charset);\r
+       }\r
+       \r
+       /**\r
+        * i18n::convert_array\r
+        * recursively converting array\r
+        * \r
+        * @static\r
+        * @param       array   $array  array to convert\r
+        * @return      void\r
+        */\r
+       static public function convert_array($array, $from, $to='')\r
+       {\r
+               if ( !is_array($array) )\r
+               {\r
+                       $array = self::convert($array, $from, $to);\r
+               }\r
+               else\r
+               {\r
+                       foreach ( $array as $key => $value )\r
+                       {\r
+                               if ( !is_array($value) )\r
+                               {\r
+                                       $array[$key] = self::convert($value, $from, $to);\r
+                               }\r
+                               else\r
+                               {\r
+                                       self::convert_array($array[$key]);\r
+                               }\r
+                       }\r
+               }\r
+               \r
+               return $array;\r
+       }\r
+       \r
+       /**\r
         * i18n::strlen\r
         * strlen wrapper\r
         * \r
@@ -232,11 +354,11 @@ class i18n
                $length = 0;\r
                if ( self::$mode == 'iconv' )\r
                {\r
-                       $length = iconv_strlen($string, self::$charset);\r
+                       $length = iconv_strlen($string, self::$current_charset);\r
                }\r
                else if ( self::$mode == 'mbstring' )\r
                {\r
-                       $length = mb_strlen($string, self::$charset);\r
+                       $length = mb_strlen($string, self::$current_charset);\r
                }\r
                else\r
                {\r
@@ -260,11 +382,11 @@ class i18n
                $position = 0;\r
                if ( self::$mode == 'iconv' )\r
                {\r
-                       $position = iconv_strpos($haystack, $needle, $offset, self::$charset);\r
+                       $position = iconv_strpos($haystack, $needle, $offset, self::$current_charset);\r
                }\r
                else if ( self::$mode == 'mbstring' )\r
                {\r
-                       $position = mb_strpos($haystack, $needle, $offset, self::$charset);\r
+                       $position = mb_strpos($haystack, $needle, $offset, self::$current_charset);\r
                }\r
                else\r
                {\r
@@ -292,11 +414,11 @@ class i18n
                $position = 0;\r
                if ( self::$mode == 'iconv' )\r
                {\r
-                       $position = iconv_strrpos($haystack, $needle, self::$charset);\r
+                       $position = iconv_strrpos($haystack, $needle, self::$current_charset);\r
                }\r
                else if ( self::$mode == 'mbstring' )\r
                {\r
-                       $position = mb_strrpos($haystack, $needle, 0, self::$charset);\r
+                       $position = mb_strrpos($haystack, $needle, 0, self::$current_charset);\r
                }\r
                else\r
                {\r
@@ -325,11 +447,11 @@ class i18n
                $return = '';\r
                if ( self::$mode == 'iconv' )\r
                {\r
-                       $return = iconv_substr($string, $start, $length, self::$charset);\r
+                       $return = iconv_substr($string, $start, $length, self::$current_charset);\r
                }\r
                else if ( self::$mode == 'mbstring' )\r
                {\r
-                       $return = mb_substr($string, $start, $length, self::$charset);\r
+                       $return = mb_substr($string, $start, $length, self::$current_charset);\r
                }\r
                else\r
                {\r
@@ -349,42 +471,10 @@ class i18n
         */\r
        static public function strftime($format, $timestamp='')\r
        {\r
-               $formatted = '';\r
-               \r
-               if ( $timestamp == '' )\r
-               {\r
-                       $timestamp = time();\r
-               }\r
-               \r
-               if ( $format == '%%' )\r
-               {\r
-                       return '%';\r
-               }\r
-               else if ( preg_match('#%[^%]#', $format) === 0 )\r
-               {\r
-                       return $format;\r
-               }\r
-               \r
-               $format = trim(preg_replace('#(%[^%])#', ',$1,', $format), ',');\r
-               $elements = preg_split('#,#', $format);\r
-               \r
-               foreach ( $elements as $element )\r
-               {\r
-                       if ( preg_match('#(%[^%])#', $element) )\r
-                       {\r
-                               $formatted .= strftime($element, $timestamp);\r
-                       }\r
-                       else if ( $element == '%%' )\r
-                       {\r
-                               $formatted .= '%';\r
-                       }\r
-                       else\r
-                       {\r
-                               $formatted .= $element;\r
-                       }\r
-               }\r
-               \r
-               return (string) $formatted;\r
+               return preg_replace_callback('/(%[a-z%])/i',\r
+                       create_function('$matches', 'return strftime($matches[1], ' . intval($timestamp) . ');'),\r
+                       $format\r
+               );\r
        }\r
        \r
        /**\r
@@ -505,7 +595,7 @@ class i18n
                {\r
                        if ( preg_match('#-#', $language) )\r
                        {\r
-                               if ( $target_locale . '.' . self::$charset == $locale )\r
+                               if ( $target_locale . '.' . self::$current_charset == $locale )\r
                                {\r
                                        $target_language = $language;\r
                                        break;\r
index b677c02..d23b98a 100644 (file)
@@ -42,24 +42,24 @@ function showlist($query, $type, $vars, $templateName = '')
        }\r
        else\r
        {\r
-               $res = sql_query($query);\r
+               $res = DB::getResult($query);\r
                \r
                // don't do anything if there are no results\r
-               $numrows = sql_num_rows($res);\r
+               $numrows = $res->rowCount();\r
                if ( $numrows == 0 )\r
                {\r
                        return 0;\r
                }\r
                call_user_func("listplug_{$type}", $vars, 'HEAD', $templateName);\r
                \r
-               while( $vars['current'] = sql_fetch_object($res) )\r
+               while( $vars['current'] = $res->fetchObject() )\r
                {\r
                        call_user_func("listplug_{$type}", $vars, 'BODY', $templateName);\r
                }\r
                \r
                call_user_func("listplug_{$type}", $vars, 'FOOT', $templateName);\r
                \r
-               sql_free_result($res);\r
+               $res->closeCursor();\r
                \r
                // return amount of results\r
                return $numrows;\r
@@ -532,10 +532,10 @@ function listplug_table_pluginlist($vars, $type, $templateName = '')
                                }\r
                                /* check dependency */\r
                                $req = array();\r
-                               $res = sql_query('SELECT pfile FROM ' . sql_table('plugin'));\r
-                               while( $o = sql_fetch_object($res) )\r
+                               $res = DB::getResult('SELECT pfile FROM ' . sql_table('plugin'));\r
+                               foreach ( $res as $row )\r
                                {\r
-                                       $preq =& $manager->getPlugin($o->pfile);\r
+                                       $preq =& $manager->getPlugin($row['pfile']);\r
                                        if ( $preq )\r
                                        {\r
                                                $depList = $preq->getPluginDep();\r
@@ -543,7 +543,7 @@ function listplug_table_pluginlist($vars, $type, $templateName = '')
                                                {\r
                                                        if ( $current->pfile == $depName )\r
                                                        {\r
-                                                               $req[] = $o->pfile;\r
+                                                               $req[] = $row['pfile'];\r
                                                        }\r
                                                }\r
                                        }\r
@@ -660,7 +660,7 @@ function listplug_table_pluginlist($vars, $type, $templateName = '')
                                  . 'WHERE '\r
                                  . '    ocontext = "global" '\r
                                  . 'AND opid     = %d';\r
-                       $pOptions = quickQuery(sprintf($optQuery, $current->pid));\r
+                       $pOptions = DB::getValue(sprintf($optQuery, $current->pid));\r
                        if ( $pOptions > 0 )\r
                        {\r
                                if ( !array_key_exists('SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL', $templates) || empty($templates['SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL']) )\r
@@ -1988,7 +1988,7 @@ function listplug_table_adminskinlist($vars, $type, $templateName = '')
                        );\r
                        \r
                        // use a special style for the default skin\r
-                       if ( $current->sdnumber != $CONF['DefaultAdminSkin'] )\r
+                       if ( $current->sdnumber != $CONF['AdminSkin'] )\r
                        {\r
                                $data['skinname'] = Entity::hsc($current->sdname);\r
                        }\r
index f685e02..e15d0bd 100644 (file)
@@ -703,11 +703,11 @@ class SkinExport
                        echo "\t" . '<skin name="' . Entity::hsc($skinName) . '" type="' . Entity::hsc($skinObj->getContentType()) . '" includeMode="' . Entity::hsc($skinObj->getIncludeMode()) . '" includePrefix="' . Entity::hsc($skinObj->getIncludePrefix()) . '">' . "\n";\r
                        echo "\t\t<description>" . Entity::hsc($skinObj->getDescription()) . "</description>\n";\r
                        \r
-                       $res = sql_query('SELECT stype, scontent FROM '. sql_table('skin') .' WHERE sdesc=' . $skinId);\r
-                       while ( $partObj = sql_fetch_object($res) )\r
+                       $res = DB::getResult('SELECT stype, scontent FROM '. sql_table('skin') .' WHERE sdesc=' . $skinId);\r
+                       foreach ( $res as $row )\r
                        {\r
-                               echo "\t\t" . '<part name="',Entity::hsc($partObj->stype) . '">';\r
-                               echo '<![CDATA[' . $this->escapeCDATA($partObj->scontent) . ']]>';\r
+                               echo "\t\t" . '<part name="',Entity::hsc($row['stype']) . '">';\r
+                               echo '<![CDATA[' . $this->escapeCDATA($row['scontent']) . ']]>';\r
                                echo "</part>\n\n";\r
                        }\r
                        echo "\t</skin>\n\n\n";\r
@@ -721,11 +721,11 @@ class SkinExport
                        echo "\t" . '<template name="' . Entity::hsc($templateName) . '">' . "\n";\r
                        echo "\t\t<description>" . Entity::hsc(Template::getDesc($templateId)) . "</description>\n";\r
                        \r
-                       $res = sql_query('SELECT tpartname, tcontent FROM '. sql_table('template') .' WHERE tdesc=' . $templateId);\r
-                       while ( $partObj = sql_fetch_object($res) )\r
+                       $res = DB::getResult('SELECT tpartname, tcontent FROM '. sql_table('template') .' WHERE tdesc=' . $templateId);\r
+                       foreach ( $res as $row )\r
                        {\r
-                               echo "\t\t" . '<part name="' . Entity::hsc($partObj->tpartname) . '">';\r
-                               echo '<![CDATA[' . $this->escapeCDATA($partObj->tcontent) . ']]>';\r
+                               echo "\t\t" . '<part name="' . Entity::hsc($row['tpartname']) . '">';\r
+                               echo '<![CDATA[' . $this->escapeCDATA($row['tcontent']) . ']]>';\r
                                echo "</part>\n\n";\r
                        }\r
                        \r
diff --git a/nucleus/libs/sql/DB.php b/nucleus/libs/sql/DB.php
new file mode 100644 (file)
index 0000000..27b76bc
--- /dev/null
@@ -0,0 +1,258 @@
+<?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\'';
+       
+       /**
+        * 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;
+       }
+
+       /**
+        * Disconnect the connection to the database.
+        */
+       public static function disConnect()
+       {
+               self::$dbh = null;
+       }
+
+       /**
+        * To get the number of times you run the statement.
+        * @return int Number of executions
+        */
+       public static function getExecCount()
+       {
+               return self::$execCount;
+       }
+
+       /**
+        * 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
+               );
+       }
+       
+       /**
+        * 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++;
+               $stmt = &self::$dbh->query($statement);
+               if ( $result = $stmt->fetch(PDO::FETCH_NUM) )
+               {
+                       return $result[0];
+               }
+               return FALSE;
+       }
+
+       /**
+        * 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++;
+               return self::$dbh->query($statement)->fetch(PDO::FETCH_BOTH);
+       }
+
+       /**
+        * 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::$dbh->query($statement);
+       }
+
+       /**
+        * 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.
+        */
+       public static function execute($statement)
+       {
+               if ( self::$dbh == null ) return FALSE;
+               self::$execCount++;
+               return self::$dbh->exec($statement);
+       }
+       
+       /**
+        * 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();
+       }
+
+       /**
+        * 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);
+       }
+
+       /**
+        * 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();
+       }
+
+       /**
+        * 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);
+       }
+       
+}
diff --git a/nucleus/libs/sql/MYSQLPDO.php b/nucleus/libs/sql/MYSQLPDO.php
new file mode 100644 (file)
index 0000000..a6941b1
--- /dev/null
@@ -0,0 +1,662 @@
+<?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;
+       }
+}
diff --git a/nucleus/libs/sql/mysql.php b/nucleus/libs/sql/mysql.php
deleted file mode 100644 (file)
index f24b14d..0000000
+++ /dev/null
@@ -1,454 +0,0 @@
-<?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: mysql.php 1750 2012-04-13 14:41:10Z sakamocchi $\r
- */\r
-/*\r
- * complete sql_* wrappers for mysql functions\r
- *\r
- * functions moved from globalfunctions.php: sql_connect, sql_disconnect, sql_query\r
- */\r
-\r
-$MYSQL_CONN = 0;\r
-\r
-if ( function_exists('mysql_query') && !function_exists('sql_fetch_assoc') )\r
-{\r
-       /**\r
-        * Errors before the database connection has been made\r
-        */\r
-       function startUpError($msg, $title)\r
-       {\r
-               echo "<html xmlns=\"http://www.w3.org/1999/xhtml\">\n";\r
-               echo '<head><title>' . Entity::hsc($title) . "</title></head>\n";\r
-               echo "<body>\n";\r
-               echo '<h1>' . Entity::hsc($title) . "</h1>\n";\r
-               echo "<p>{$msg}</p>\n";\r
-               echo "</body>\n";\r
-               echo "</html>\n";\r
-               exit;\r
-       }\r
-       \r
-       /**\r
-        * Connects to mysql server with arguments\r
-        */\r
-       function sql_connect_args($mysql_host = 'localhost', $mysql_user = '', $mysql_password = '', $mysql_database = '', $new_link = FALSE)\r
-       {\r
-               $CONN = @mysql_connect($mysql_host, $mysql_user, $mysql_password, $new_link);\r
-               \r
-               if ( $mysql_database )\r
-               {\r
-                       mysql_select_db($mysql_database,$CONN);\r
-                       sql_set_charset('utf8');\r
-               }\r
-               \r
-               /*\r
-               // For debugging\r
-               $result = sql_query('SHOW VARIABLES LIKE \'char%\';');\r
-               while(FALSE !== ($row = sql_fetch_row($result)))\r
-               {\r
-                       echo "{$row[0]}: {$row[1]}\n";\r
-               }\r
-               */\r
-               \r
-               return $CONN;\r
-       }\r
-       \r
-       /**\r
-        * Connects to mysql server\r
-        */\r
-       function sql_connect()\r
-       {\r
-               global $MYSQL_HOST, $MYSQL_USER, $MYSQL_PASSWORD, $MYSQL_DATABASE, $MYSQL_CONN;\r
-               \r
-               $MYSQL_CONN = @mysql_connect($MYSQL_HOST, $MYSQL_USER, $MYSQL_PASSWORD) or startUpError('<p>Could not connect to MySQL database.</p>', 'Connect Error');\r
-               mysql_select_db($MYSQL_DATABASE) or startUpError('<p>Could not select database: ' . mysql_error() . '</p>', 'Connect Error');\r
-               \r
-               sql_set_charset('utf8');\r
-               \r
-               /*\r
-               // For debugging\r
-               $result = sql_query('SHOW VARIABLES LIKE \'char%\';');\r
-               while(FALSE !== ($row = sql_fetch_row($result)))\r
-               {\r
-                       echo "{$row[0]}: {$row[1]}\n";\r
-               }\r
-               */\r
-               \r
-               return $MYSQL_CONN;\r
-       }\r
-       \r
-       /**\r
-        * disconnects from SQL server\r
-        */\r
-       function sql_disconnect($conn = false)\r
-       {\r
-               global $MYSQL_CONN;\r
-               if ( !$conn )\r
-               {\r
-                       $conn = $MYSQL_CONN;\r
-               }\r
-               @mysql_close($conn);\r
-       }\r
-       \r
-       /**\r
-        * sql_close()\r
-        * use sql_disconnect() instead of this\r
-        * \r
-        * @deprecated\r
-        * @param       resource        $conn   resource of mySQL connection\r
-        * @return      void\r
-        */\r
-       function sql_close($conn = false)\r
-       {\r
-               global $MYSQL_CONN;\r
-               if ( !$conn )\r
-               {\r
-                       $conn = $MYSQL_CONN;\r
-               }\r
-               @mysql_close($conn);\r
-               return;
-       }\r
-       \r
-       /**\r
-        * executes an SQL query\r
-        */\r
-       function sql_query($query,$conn = false)\r
-       {\r
-               global $SQLCount,$MYSQL_CONN;\r
-               if ( !$conn )\r
-               {\r
-                       $conn = $MYSQL_CONN;\r
-               }\r
-               $SQLCount++;\r
-               $res = mysql_query($query,$conn) or print("mySQL error with query $query: " . mysql_error($conn) . '<p />');\r
-               return $res;\r
-       }\r
-       \r
-       /**\r
-        * executes an SQL error\r
-        */\r
-       function sql_error($conn = false)\r
-       {\r
-               global $MYSQL_CONN;\r
-               if ( !$conn )\r
-               {\r
-                       $conn = $MYSQL_CONN;\r
-               }\r
-               return mysql_error($conn);\r
-       }\r
-       \r
-       /**\r
-        * executes an SQL db select\r
-        */\r
-       function sql_select_db($db,$conn = false)\r
-       {\r
-               global $MYSQL_CONN;\r
-               if ( !$conn )\r
-               {\r
-                       $conn = $MYSQL_CONN;\r
-               }\r
-               return mysql_select_db($db,$conn);\r
-       }\r
-       \r
-       /**\r
-        * executes an SQL real escape\r
-        */\r
-       function sql_real_escape_string($val, $conn = false)\r
-       {\r
-               global $MYSQL_CONN;\r
-               if (!$conn)\r
-               {\r
-                       $conn =& $MYSQL_CONN;\r
-               }\r
-               return mysql_real_escape_string($val, $conn);\r
-       }\r
-       \r
-       /**\r
-        * executes an PDO::quote() like escape, ie adds quotes arround the string and escapes chars as needed\r
-        */\r
-       function sql_quote_string($val, $conn = false)\r
-       {\r
-               global $MYSQL_CONN;\r
-               if ( !$conn )\r
-               {\r
-                       $conn = $MYSQL_CONN;\r
-               }\r
-               return "'".mysql_real_escape_string($val,$conn)."'";\r
-       }\r
-       \r
-       /**\r
-        * executes an SQL insert id\r
-        */\r
-       function sql_insert_id($conn = false)\r
-       {\r
-               global $MYSQL_CONN;\r
-               if ( !$conn )\r
-               {\r
-                       $conn = $MYSQL_CONN;\r
-               }\r
-               return mysql_insert_id($conn);\r
-       }\r
-       \r
-       /**\r
-        * executes an SQL result request\r
-        */\r
-       function sql_result($res, $row, $col)\r
-       {\r
-               return mysql_result($res,$row,$col);\r
-       }\r
-       \r
-       /**\r
-        * frees sql result resources\r
-        */\r
-       function sql_free_result($res)\r
-       {\r
-               return mysql_free_result($res);\r
-       }\r
-       \r
-       /**\r
-        * returns number of rows in SQL result\r
-        */\r
-       function sql_num_rows($res)\r
-       {\r
-               return mysql_num_rows($res);\r
-       }\r
-       \r
-       /**\r
-        * returns number of rows affected by SQL query\r
-        */\r
-       function sql_affected_rows($conn = false)\r
-       {\r
-               global $MYSQL_CONN;\r
-               if ( !$conn )\r
-               {\r
-                       $conn = $MYSQL_CONN;\r
-               }\r
-               return mysql_affected_rows($conn);\r
-       }\r
-       \r
-       /**\r
-        * Get number of fields in result\r
-        */\r
-       function sql_num_fields($res)\r
-       {\r
-               return mysql_num_fields($res);\r
-       }\r
-       \r
-       /**\r
-        * fetches next row of SQL result as an associative array\r
-        */\r
-       function sql_fetch_assoc($res)\r
-       {\r
-               return mysql_fetch_assoc($res);\r
-       }\r
-       \r
-       /**\r
-        * Fetch a result row as an associative array, a numeric array, or both\r
-        */\r
-       function sql_fetch_array($res)\r
-       {\r
-               return mysql_fetch_array($res);\r
-       }\r
-       \r
-       /**\r
-        * fetches next row of SQL result as an object\r
-        */\r
-       function sql_fetch_object($res)\r
-       {\r
-               return mysql_fetch_object($res);\r
-       }\r
-       \r
-       /**\r
-        * Get a result row as an enumerated array\r
-        */\r
-       function sql_fetch_row($res)\r
-       {\r
-               return mysql_fetch_row($res);\r
-       }\r
-       \r
-       /**\r
-        * Get column information from a result and return as an object\r
-        */\r
-       function sql_fetch_field($res,$offset = 0)\r
-       {\r
-               return mysql_fetch_field($res,$offset);\r
-       }\r
-       \r
-       /**\r
-        * Get current system status (returns string)\r
-        */\r
-       function sql_stat($conn=false)\r
-       {\r
-               global $MYSQL_CONN;\r
-               if ( !$conn )\r
-               {\r
-                       $conn = $MYSQL_CONN;\r
-               }\r
-               return mysql_stat($conn);\r
-       }\r
-       \r
-       /**\r
-        * Returns the name of the character set\r
-        */\r
-       function sql_client_encoding($conn=false)\r
-       {\r
-               global $MYSQL_CONN;\r
-               if ( !$conn )\r
-               {\r
-                       $conn = $MYSQL_CONN;\r
-               }\r
-               return mysql_client_encoding($conn);\r
-       }\r
-       \r
-       /**\r
-        * Get SQL client version\r
-        */\r
-       function sql_get_client_info()\r
-       {\r
-               return mysql_get_client_info();\r
-       }\r
-       \r
-       /**\r
-        * Get SQL server version\r
-        */\r
-       function sql_get_server_info($conn=false)\r
-       {\r
-               global $MYSQL_CONN;\r
-               if ( !$conn )\r
-               {\r
-                       $conn = $MYSQL_CONN;\r
-               }\r
-               return mysql_get_server_info($conn);\r
-       }\r
-       \r
-       /**\r
-        * Returns a string describing the type of SQL connection in use for the connection or FALSE on failure\r
-        */\r
-       function sql_get_host_info($conn=false)\r
-       {\r
-               global $MYSQL_CONN;\r
-               if ( !$conn )\r
-               {\r
-                       $conn = $MYSQL_CONN;\r
-               }\r
-               return mysql_get_host_info($conn);\r
-       }\r
-       \r
-       /**\r
-        * Returns the SQL protocol on success, or FALSE on failure.\r
-        */\r
-       function sql_get_proto_info($conn=false)\r
-       {\r
-               global $MYSQL_CONN;\r
-               if ( !$conn )\r
-               {\r
-                       $conn = $MYSQL_CONN;\r
-               }\r
-               return mysql_get_proto_info($conn);\r
-       }\r
-       \r
-       /**\r
-        * Get the name of the specified field in a result\r
-        */\r
-       function sql_field_name($res, $offset = 0)\r
-       {\r
-               return mysql_field_name($res, $offset);\r
-       }\r
-       \r
-       /**\r
-        * Set character encodings in each fields related to MySQL connection.\r
-        */\r
-       function sql_set_charset($charset)\r
-       {\r
-               global $MYSQL_CONN;\r
-               \r
-               /*\r
-                * NOTE:\r
-                *\r
-                * We decided to ignore which character encodings is set in each text field of MySQL table!\r
-                *\r
-                * There are differences between "SET NAMES xxx;" and "SET CHARACTER SET xxx;"\r
-                *  according MySQL version.\r
-                * http://dev.mysql.com/doc/refman/4.1/en/charset-connection.html\r
-                * http://dev.mysql.com/doc/refman/5.1/en/charset-connection.html\r
-                *\r
-                * And mysql_set_charset() execute "SET NAMES xxx;" internally and set mysql->charset as xxx.\r
-                *  refering to  MySQL C API.\r
-                * http://dev.mysql.com/doc/refman/5.1/ja/mysql-set-character-set.html\r
-                * http://php.net/manual/en/function.mysql-set-charset.php\r
-                *\r
-                * mysql_real_escape_string() is affected by mysql->charset,\r
-                *  refering to  MySQL C API.\r
-                * http://dev.mysql.com/doc/refman/5.1/en/mysql-real-escape-string.html\r
-                * http://php.net/manual/en/function.mysql-real-escape-string.php\r
-                *\r
-                * But using the same character encoding in character_set_client and the strings is\r
-                *  more important than mysql->charset\r
-                *  because mysql_real_escape_string() escape some characters in ASCII character set.\r
-                *\r
-                */\r
-               $charset = strtolower($charset);\r
-               $mysql_version = preg_replace('#^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{1,2})(.*)$#', '$1.$2.$3', sql_get_server_info($MYSQL_CONN));\r
-               \r
-               if ( version_compare($mysql_version, '5.0.7', '>=') && function_exists('mysql_set_charset') )\r
-               {\r
-                       $result = mysql_set_charset($charset);\r
-               }\r
-               else if ( version_compare($mysql_version, '5.0.7', '<') )\r
-               {\r
-                       $result = sql_query("SET CHARACTER SET {$charset};");\r
-               }\r
-               else\r
-               {\r
-                       $result = sql_query("SET NAMES {$charset};");\r
-               }\r
-               \r
-               return $result;\r
-       }\r
-\r
-/**************************************************************************\r
-Unimplemented mysql_* functions\r
-\r
-# mysql_ data_ seek (maybe useful)\r
-# mysql_ errno (maybe useful)\r
-# mysql_ fetch_ lengths (maybe useful)\r
-# mysql_ field_ flags (maybe useful)\r
-# mysql_ field_ len (maybe useful)\r
-# mysql_ field_ seek (maybe useful)\r
-# mysql_ field_ table (maybe useful)\r
-# mysql_ field_ type (maybe useful)\r
-# mysql_ info (maybe useful)\r
-# mysql_ list_ processes (maybe useful)\r
-# mysql_ ping (maybe useful)\r
-# mysql_ set_ charset (maybe useful, requires php >=5.2.3 and mysql >=5.0.7)\r
-# mysql_ thread_ id (maybe useful)\r
-\r
-# mysql_ db_ name (useful only if working on multiple dbs which we do not do)\r
-# mysql_ list_ dbs (useful only if working on multiple dbs which we do not do)\r
-\r
-# mysql_ pconnect (probably not useful and could cause some unintended performance issues)\r
-# mysql_ unbuffered_ query (possibly useful, but complicated and not supported by all database drivers (pdo))\r
-\r
-# mysql_ change_ user (deprecated)\r
-# mysql_ create_ db (deprecated)\r
-# mysql_ db_ query (deprecated)\r
-# mysql_ drop_ db (deprecated)\r
-# mysql_ escape_ string (deprecated)\r
-# mysql_ list_ fields (deprecated)\r
-# mysql_ list_ tables (deprecated)\r
-# mysql_ tablename (deprecated)\r
-\r
-*******************************************************************/\r
-}\r
diff --git a/nucleus/libs/sql/pdo.php b/nucleus/libs/sql/pdo.php
deleted file mode 100644 (file)
index 56c351c..0000000
+++ /dev/null
@@ -1,675 +0,0 @@
-<?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$\r
- */\r
\r
-/*\r
- * complete sql_* wrappers for mysql functions\r
- *\r
- * functions moved from globalfunctions.php: sql_connect, sql_disconnect, sql_query\r
- */\r
\r
-\r
-$MYSQL_CONN = 0;\r
-global $SQL_DBH;\r
-$SQL_DBH = NULL;\r
-\r
-if (!function_exists('sql_fetch_assoc'))\r
-{\r
-       /**\r
-        * Errors before the database connection has been made\r
-        */\r
-       function startUpError($msg, $title) {\r
-               ?>\r
-               <html xmlns="http://www.w3.org/1999/xhtml">\r
-                       <head><title><?php echo Entity::hsc($title)?></title></head>\r
-                       <body>\r
-                               <h1><?php echo Entity::hsc($title)?></h1>\r
-                               <?php echo $msg?>\r
-                       </body>\r
-               </html>\r
-               <?php   exit;\r
-       }\r
-       \r
-       /**\r
-         * Connects to mysql server\r
-         */\r
-       function sql_connect_args($mysql_host = 'localhost', $mysql_user = '', $mysql_password = '', $mysql_database = '') {\r
-               global $MYSQL_HANDLER;\r
-               \r
-               try {\r
-                       if (i18n::strpos($mysql_host,':') === false) {\r
-                               $host = $mysql_host;\r
-                               $port = '';\r
-                               $portnum = '';\r
-                       }\r
-                       else {\r
-                               list($host,$port) = preg_split("#:#", $mysql_host);\r
-                               if (isset($port)) {\r
-                                       $portnum = $port;\r
-                                       $port = ';port='.trim($port);\r
-                               }\r
-                               else {\r
-                                       $port = '';\r
-                                       $portnum = '';\r
-                               }\r
-                       }\r
-                       \r
-                       switch ($MYSQL_HANDLER[1]) {\r
-                               case 'sybase':\r
-                               case 'dblib':\r
-                                       if (is_numeric($portnum)) $port = ':'.intval($portnum);\r
-                                       else $port = '';\r
-                                       $DBH = new PDO($MYSQL_HANDLER[1].':host='.$host.$port.';dbname='.$mysql_database, $mysql_user, $mysql_password);\r
-                               break;\r
-                               case 'mssql':\r
-                                       if (is_numeric($portnum)) $port = ','.intval($portnum);\r
-                                       else $port = '';\r
-                                       $DBH = new PDO($MYSQL_HANDLER[1].':host='.$host.$port.';dbname='.$mysql_database, $mysql_user, $mysql_password);\r
-                               break;\r
-                               case 'oci':\r
-                                       if (is_numeric($portnum)) $port = ':'.intval($portnum);\r
-                                       else $port = '';\r
-                                       $DBH = new PDO($MYSQL_HANDLER[1].':dbname=//'.$host.$port.'/'.$mysql_database, $mysql_user, $mysql_password);\r
-                               break;\r
-                               case 'odbc':\r
-                                       if (is_numeric($portnum)) $port = ';PORT='.intval($portnum);\r
-                                       else $port = '';\r
-                                       $DBH = new PDO($MYSQL_HANDLER[1].':DRIVER={IBM DB2 ODBC DRIVER};HOSTNAME='.$host.$port.';DATABASE='.$mysql_database.';PROTOCOL=TCPIP;UID='.$mysql_user.';PWD='.$mysql_password);\r
-\r
-                               break;\r
-                               case 'pgsql':\r
-                                       if (is_numeric($portnum)) $port = ';port='.intval($portnum);\r
-                                       else $port = '';\r
-                                       $DBH = new PDO($MYSQL_HANDLER[1].':host='.$host.$port.';dbname='.$mysql_database, $mysql_user, $mysql_password);\r
-                               break;\r
-                               case 'sqlite':\r
-                               case 'sqlite2':\r
-                                       if (is_numeric($portnum)) $port = ':'.intval($portnum);\r
-                                       else $port = '';\r
-                                       $DBH = new PDO($MYSQL_HANDLER[1].':'.$mysql_database, $mysql_user, $mysql_password);\r
-                                       if ($DBH)\r
-                                       {\r
-                                               $DBH->sqliteCreateFunction('SUBSTRING', 'substr', 3);\r
-                                               $DBH->sqliteCreateFunction('UNIX_TIMESTAMP', 'strtotime', 1);\r
-                                       } \r
-                               break;\r
-                               default:\r
-                                       //mysql\r
-                                       $DBH = new PDO($MYSQL_HANDLER[1].':host='.$host.$port.';dbname='.$mysql_database, $mysql_user, $mysql_password);\r
-                               break;\r
-                       }\r
-       \r
-                       \r
-                                               \r
-               } catch (PDOException $e) {\r
-                       $DBH =NULL;\r
-                       startUpError('<p>a1 Error!: ' . $e->getMessage() . '</p>', 'Connect Error');\r
-               }\r
-               \r
-               if ( $mysql_database )\r
-               {\r
-                       sql_set_charset('utf8');\r
-               }\r
-               \r
-               /*\r
-               // For debugging\r
-               echo '<hr />DBH: '.print_r($SQL_DBH,true).'<hr />';\r
-               $result = sql_query('SHOW VARIABLES LIKE \'char%\';');\r
-               while(FALSE !== ($row = sql_fetch_row($result)))\r
-               {\r
-                       echo "{$row[0]}: {$row[1]}\n";\r
-               }\r
-               */\r
-               \r
-               return $DBH;\r
-       }\r
-       \r
-       /**\r
-         * Connects to mysql server\r
-         */\r
-       function sql_connect() {\r
-               global $MYSQL_HOST, $MYSQL_USER, $MYSQL_PASSWORD, $MYSQL_DATABASE, $MYSQL_CONN, $MYSQL_HANDLER, $SQL_DBH;\r
-               $SQL_DBH = NULL;\r
-               try {\r
-                       if (i18n::strpos($MYSQL_HOST,':') === false) {\r
-                               $host = $MYSQL_HOST;\r
-                               $port = '';\r
-                               $portnum = ''; \r
-                       }\r
-                       else {\r
-                               list($host,$port) = preg_split("#:#", $MYSQL_HOST);\r
-                               if (isset($port)) {\r
-                                       $portnum = $port;\r
-                                       $port = ';port='.trim($port);\r
-                               }\r
-                               else {\r
-                                       $port = '';\r
-                                       $portnum = '';\r
-                               }\r
-                       }\r
-                       \r
-                       switch ($MYSQL_HANDLER[1]) {\r
-                               case 'sybase':\r
-                               case 'dblib':\r
-                                       if (is_numeric($portnum)) $port = ':'.intval($portnum);\r
-                                       else $port = '';\r
-                                       $SQL_DBH = new PDO($MYSQL_HANDLER[1].':host='.$host.$port.';dbname='.$MYSQL_DATABASE, $MYSQL_USER, $MYSQL_PASSWORD);\r
-                               break;\r
-                               case 'mssql':\r
-                                       if (is_numeric($portnum)) $port = ','.intval($portnum);\r
-                                       else $port = '';\r
-                                       $SQL_DBH = new PDO($MYSQL_HANDLER[1].':host='.$host.$port.';dbname='.$MYSQL_DATABASE, $MYSQL_USER, $MYSQL_PASSWORD);\r
-                               break;\r
-                               case 'oci':\r
-                                       if (is_numeric($portnum)) $port = ':'.intval($portnum);\r
-                                       else $port = '';\r
-                                       $SQL_DBH = new PDO($MYSQL_HANDLER[1].':dbname=//'.$host.$port.'/'.$MYSQL_DATABASE, $MYSQL_USER, $MYSQL_PASSWORD);\r
-                               break;\r
-                               case 'odbc':\r
-                                       if (is_numeric($portnum)) $port = ';PORT='.intval($portnum);\r
-                                       else $port = '';\r
-                                       $SQL_DBH = new PDO($MYSQL_HANDLER[1].':DRIVER={IBM DB2 ODBC DRIVER};HOSTNAME='.$host.$port.';DATABASE='.$MYSQL_DATABASE.';PROTOCOL=TCPIP;UID='.$MYSQL_USER.';PWD='.$MYSQL_PASSWORD);\r
-\r
-                               break;\r
-                               case 'pgsql':\r
-                                       if (is_numeric($portnum)) $port = ';port='.intval($portnum);\r
-                                       else $port = '';\r
-                                       $SQL_DBH = new PDO($MYSQL_HANDLER[1].':host='.$host.$port.';dbname='.$MYSQL_DATABASE, $MYSQL_USER, $MYSQL_PASSWORD);\r
-                               break;\r
-                               case 'sqlite':\r
-                               case 'sqlite2':\r
-                                       if (is_numeric($portnum)) $port = ':'.intval($portnum);\r
-                                       else $port = '';\r
-                                       $SQL_DBH = new PDO($MYSQL_HANDLER[1].':'.$MYSQL_DATABASE, $MYSQL_USER, $MYSQL_PASSWORD);\r
-                                       if ($SQL_DBH)\r
-                                       {\r
-                                               $SQL_DBH->sqliteCreateFunction('SUBSTRING', 'substr', 3);\r
-                                               $SQL_DBH->sqliteCreateFunction('UNIX_TIMESTAMP', 'strtotime', 1);\r
-                                       } \r
-                               break;\r
-                               default:\r
-                                       //mysql\r
-                                       $SQL_DBH = new PDO($MYSQL_HANDLER[1].':host='.$host.$port.';dbname='.$MYSQL_DATABASE, $MYSQL_USER, $MYSQL_PASSWORD);\r
-                               break;\r
-                       }\r
-                       \r
-                       //$SQL_DBH = new PDO($MYSQL_HANDLER[1].':host='.$host.$port.';dbname='.$MYSQL_DATABASE, $MYSQL_USER, $MYSQL_PASSWORD);\r
-                                               \r
-               } catch (PDOException $e) {\r
-                       $SQL_DBH = NULL;\r
-                       startUpError('<p>a2 Error!: ' . $e->getMessage() . '</p>', 'Connect Error');\r
-               }\r
-               \r
-               if ( $MYSQL_DATABASE )\r
-               {\r
-                       sql_set_charset('utf8');\r
-               }\r
-               \r
-               /*\r
-               // For debugging\r
-               echo '<hr />DBH: '.print_r($SQL_DBH,true).'<hr />';\r
-               $result = sql_query('SHOW VARIABLES LIKE \'char%\';');\r
-               while(FALSE !== ($row = sql_fetch_row($result)))\r
-               {\r
-                       echo "{$row[0]}: {$row[1]}\n";\r
-               }\r
-               */\r
-               \r
-               $MYSQL_CONN =& $SQL_DBH;\r
-//             echo '<hr />DBH: '.print_r($SQL_DBH,true).'<hr />';             \r
-               $MYSQL_CONN =& $SQL_DBH;\r
-               return $SQL_DBH;\r
-\r
-       }\r
-\r
-       /**\r
-         * disconnects from SQL server\r
-         */\r
-       function sql_disconnect(&$dbh=NULL) {\r
-               global $SQL_DBH;\r
-               if (is_null($dbh)) $SQL_DBH = NULL;\r
-               else $dbh = NULL;\r
-       }\r
-       \r
-       /**\r
-        * sql_close()\r
-        * use sql_disconnect() instead of this\r
-        * \r
-        * @deprecated\r
-        * @param       resource        $conn   resource of mySQL connection\r
-        * @return      void\r
-        */\r
-       function sql_close(&$dbh=NULL)\r
-       {\r
-               global $SQL_DBH;\r
-               if ( is_null($dbh) )\r
-               {\r
-                       $SQL_DBH = NULL;\r
-               }\r
-               else\r
-               {\r
-                       $dbh = NULL;\r
-               }\r
-               return;\r
-       }\r
-       \r
-       /**\r
-         * executes an SQL query\r
-         */\r
-       function sql_query($query,$dbh=NULL) {\r
-               global $SQLCount,$SQL_DBH;\r
-               $SQLCount++;\r
-//echo '<hr />SQL_DBH: ';\r
-//print_r($SQL_DBH);\r
-//echo '<hr />DBH: ';\r
-//print_r($dbh);\r
-//echo '<hr />';\r
-//echo $query.'<hr />';\r
-               if (is_null($dbh)) $res = $SQL_DBH->query($query);\r
-               else $res = $dbh->query($query);\r
-               //if ($res->errorCode() != '00000') {\r
-               //      $errors = $res->errorInfo();\r
-               if (($res === false) || ($res->errorCode() != '00000') ) {\r
-                       $errors = ($res !== false) ? $res->errorInfo() : ( is_object($dbh) ? $dbh->errorInfo() : $SQL_DBH->errorInfo());\r
-                       print("SQL error with query $query: " . $errors[0].'-'.$errors[1].' '.$errors[2] . '<p />');\r
-               }\r
-               \r
-               return $res;\r
-       }\r
-       \r
-       /**\r
-         * executes an SQL error\r
-         */\r
-       function sql_error($dbh=NULL)\r
-       {\r
-               global $SQL_DBH;\r
-               if (is_null($dbh)) $error = $SQL_DBH->errorInfo();\r
-               else $error = $dbh->errorInfo();\r
-               if ($error[0] != '00000') {\r
-                       return $error[0].'-'.$error[1].' '.$error[2];\r
-               }\r
-               else return '';\r
-       }\r
-       \r
-       /**\r
-         * executes an SQL db select\r
-         */\r
-       function sql_select_db($db,&$dbh=NULL)\r
-       {\r
-               global $MYSQL_HOST, $MYSQL_USER, $MYSQL_PASSWORD, $MYSQL_DATABASE, $MYSQL_CONN, $MYSQL_HANDLER, $SQL_DBH;\r
-//echo '<hr />'.print_r($dbh,true).'<hr />';\r
-//exit;\r
-               if (is_null($dbh)) { \r
-                       try {\r
-                               $SQL_DBH = NULL;\r
-                               list($host,$port) = preg_split("#:#", $MYSQL_HOST);\r
-                               if (isset($port)) {\r
-                                       $portnum = $port;\r
-                                       $port = ';port='.trim($port);\r
-                               }\r
-                               else {\r
-                                       $port = '';\r
-                                       $portnum = '';\r
-                               }\r
-                               //$SQL_DBH = new PDO($MYSQL_HANDLER[1].':host='.trim($host).$port.';dbname='.$db, $MYSQL_USER, $MYSQL_PASSWORD);\r
-                               //$SQL_DBH = sql_connect();\r
-                               switch ($MYSQL_HANDLER[1]) {\r
-                                       case 'sybase':\r
-                                       case 'dblib':\r
-                                               if (is_numeric($portnum)) $port = ':'.intval($portnum);\r
-                                               else $port = '';\r
-                                               $SQL_DBH = new PDO($MYSQL_HANDLER[1].':host='.$host.$port.';dbname='.$db, $MYSQL_USER, $MYSQL_PASSWORD);\r
-                                       break;\r
-                                       case 'mssql':\r
-                                               if (is_numeric($portnum)) $port = ','.intval($portnum);\r
-                                               else $port = '';\r
-                                               $SQL_DBH = new PDO($MYSQL_HANDLER[1].':host='.$host.$port.';dbname='.$db, $MYSQL_USER, $MYSQL_PASSWORD);\r
-                                       break;\r
-                                       case 'oci':\r
-                                               if (is_numeric($portnum)) $port = ':'.intval($portnum);\r
-                                               else $port = '';\r
-                                               $SQL_DBH = new PDO($MYSQL_HANDLER[1].':dbname=//'.$host.$port.'/'.$db, $MYSQL_USER, $MYSQL_PASSWORD);\r
-                                       break;\r
-                                       case 'odbc':\r
-                                               if (is_numeric($portnum)) $port = ';PORT='.intval($portnum);\r
-                                               else $port = '';\r
-                                               $SQL_DBH = new PDO($MYSQL_HANDLER[1].':DRIVER={IBM DB2 ODBC DRIVER};HOSTNAME='.$host.$port.';DATABASE='.$db.';PROTOCOL=TCPIP;UID='.$MYSQL_USER.';PWD='.$MYSQL_PASSWORD);\r
-\r
-                                       break;\r
-                                       case 'pgsql':\r
-                                               if (is_numeric($portnum)) $port = ';port='.intval($portnum);\r
-                                               else $port = '';\r
-                                               $SQL_DBH = new PDO($MYSQL_HANDLER[1].':host='.$host.$port.';dbname='.$db, $MYSQL_USER, $MYSQL_PASSWORD);\r
-                                       break;\r
-                                       case 'sqlite':\r
-                                       case 'sqlite2':\r
-                                               if (is_numeric($portnum)) $port = ':'.intval($portnum);\r
-                                               else $port = '';\r
-                                               $SQL_DBH = new PDO($MYSQL_HANDLER[1].':'.$db, $MYSQL_USER, $MYSQL_PASSWORD);\r
-                                       break;\r
-                                       default:\r
-                                               //mysql\r
-                                               $SQL_DBH = new PDO($MYSQL_HANDLER[1].':host='.$host.$port.';dbname='.$db, $MYSQL_USER, $MYSQL_PASSWORD);\r
-                                       break;\r
-                               }\r
-                               return 1;\r
-                       } catch (PDOException $e) {\r
-                               startUpError('<p>a3 Error!: ' . $e->getMessage() . '</p>', 'Connect Error');\r
-                               return 0;\r
-                       }\r
-               }\r
-               else {\r
-                       if ($dbh->exec("USE $db") !== false) return 1;\r
-                       else return 0;\r
-               }\r
-       }\r
-       \r
-       /**\r
-         * executes an SQL real escape \r
-         */\r
-       function sql_real_escape_string($val,$dbh=NULL)\r
-       {\r
-               global $MYSQL_HANDLER;\r
-               if (stripos($MYSQL_HANDLER[1] , 'sqlite') !== false)\r
-               {\r
-                       return sqlite_escape_string($val); \r
-               }\r
-               else \r
-               {\r
-                       return addslashes($val);\r
-               }\r
-       }\r
-       \r
-       /**\r
-         * executes an PDO::quote() like escape, ie adds quotes arround the string and escapes chars as needed \r
-         */\r
-       function sql_quote_string($val,$dbh=NULL) {\r
-               global $SQL_DBH;\r
-               if (is_null($dbh))\r
-                       return $SQL_DBH->quote($val);\r
-               else\r
-                       return $dbh->quote($val);\r
-       }\r
-       \r
-       /**\r
-         * executes an SQL insert id\r
-         */\r
-       function sql_insert_id($dbh=NULL)\r
-       {       \r
-               global $SQL_DBH;\r
-               if (is_null($dbh))\r
-                       return $SQL_DBH->lastInsertId();\r
-               else\r
-                       return $dbh->lastInsertId();\r
-       }\r
-       \r
-       /**\r
-         * executes an SQL result request\r
-         */\r
-       function sql_result($res, $row = 0, $col = 0)\r
-       {\r
-               $results = array();\r
-               if (intval($row) < 1) {\r
-                       $results = $res->fetch(PDO::FETCH_BOTH);\r
-                       return $results[$col];\r
-               }\r
-               else {\r
-                       for ($i = 0; $i < intval($row); $i++) {\r
-                               $results = $res->fetch(PDO::FETCH_BOTH);\r
-                       }\r
-                       $results = $res->fetch(PDO::FETCH_BOTH);\r
-                       return $results[$col];\r
-               }\r
-       }\r
-       \r
-       /**\r
-         * frees sql result resources\r
-         */\r
-       function sql_free_result($res)\r
-       {\r
-               $res = NULL;\r
-               return true;\r
-       }\r
-       \r
-       /**\r
-         * returns number of rows in SQL result\r
-         */\r
-       function sql_num_rows($res)\r
-       {\r
-               return $res->rowCount();\r
-       }\r
-       \r
-       /**\r
-         * returns number of rows affected by SQL query\r
-         */\r
-       function sql_affected_rows($res)\r
-       {\r
-               return $res->rowCount();\r
-       }\r
-       \r
-       /**\r
-         * Get number of fields in result\r
-         */\r
-       function sql_num_fields($res)\r
-       {\r
-               return $res->columnCount();\r
-       }\r
-       \r
-       /**\r
-         * fetches next row of SQL result as an associative array\r
-         */\r
-       function sql_fetch_assoc($res)\r
-       {\r
-               $results = array();\r
-               $results = $res->fetch(PDO::FETCH_ASSOC);       \r
-               return $results;\r
-       }\r
-       \r
-       /**\r
-         * Fetch a result row as an associative array, a numeric array, or both\r
-         */\r
-       function sql_fetch_array($res)\r
-       {\r
-               $results = array();\r
-               $results = $res->fetch(PDO::FETCH_BOTH);\r
-               return $results;\r
-       }\r
-       \r
-       /**\r
-         * fetches next row of SQL result as an object\r
-         */\r
-       function sql_fetch_object($res)\r
-       {\r
-               $results = NULL;\r
-               $results = $res->fetchObject(); \r
-               return $results;\r
-       }\r
-       \r
-       /**\r
-         * Get a result row as an enumerated array\r
-         */\r
-       function sql_fetch_row($res)\r
-       {\r
-               $results = array();\r
-               $results = $res->fetch(PDO::FETCH_NUM); \r
-               return $results;\r
-       }\r
-       \r
-       /**\r
-         * Get column information from a result and return as an object\r
-         */\r
-       function sql_fetch_field($res,$offset = 0)\r
-       {\r
-               $results = array();\r
-               $obj = NULL;\r
-               $results = $res->getColumnMeta($offset);\r
-               foreach($results as $key=>$value) {\r
-                       $obj->$key = $value;\r
-               }\r
-               return $obj;\r
-       }\r
-       \r
-       /**\r
-         * Get current system status (returns string)\r
-         */\r
-       function sql_stat($dbh=NULL)\r
-       {\r
-               //not implemented\r
-               global $SQL_DBH;\r
-               if (is_null($dbh))\r
-                       return '';\r
-               else\r
-                       return '';\r
-       }\r
-       \r
-       /**\r
-         * Returns the name of the character set\r
-         */\r
-       function sql_client_encoding($dbh=NULL)\r
-       {\r
-               //not implemented\r
-               global $SQL_DBH;\r
-               if (is_null($dbh))\r
-                       return '';\r
-               else\r
-                       return '';\r
-       }\r
-       \r
-       /**\r
-         * Get SQL client version\r
-         */\r
-       function sql_get_client_info()\r
-       {\r
-               global $SQL_DBH;\r
-               return $SQL_DBH->getAttribute(constant("PDO::ATTR_CLIENT_VERSION"));\r
-       }\r
-       \r
-       /**\r
-         * Get SQL server version\r
-         */\r
-       function sql_get_server_info($dbh=NULL)\r
-       {\r
-               global $SQL_DBH;\r
-               if (is_null($dbh))\r
-                       return $SQL_DBH->getAttribute(constant("PDO::ATTR_SERVER_VERSION"));\r
-               else\r
-                       return $dbh->getAttribute(constant("PDO::ATTR_SERVER_VERSION"));\r
-       }\r
-       \r
-       /**\r
-         * Returns a string describing the type of SQL connection in use for the connection or FALSE on failure\r
-         */\r
-       function sql_get_host_info($dbh=NULL)\r
-       {\r
-               global $SQL_DBH;\r
-               if (is_null($dbh))\r
-                       return $SQL_DBH->getAttribute(constant("PDO::ATTR_SERVER_INFO"));\r
-               else\r
-                       return $dbh->getAttribute(constant("PDO::ATTR_SERVER_INFO"));\r
-       }\r
-       \r
-       /**\r
-         * Returns the SQL protocol on success, or FALSE on failure. \r
-         */\r
-       function sql_get_proto_info($dbh=NULL)\r
-       {\r
-               //not implemented\r
-               global $SQL_DBH;\r
-               if (is_null($dbh))\r
-                       return false;\r
-               else\r
-                       return false;\r
-       }\r
-\r
-       /**\r
-        * Get the name of the specified field in a result\r
-        */\r
-       function sql_field_name($res, $offset = 0)\r
-       {\r
-               $column = $res->getColumnMeta($offset);\r
-               if ($column) {\r
-                       return $column['name'];\r
-               }\r
-               return false;\r
-       }\r
-       \r
-       /**\r
-        * Set character encodings in each fields\r
-        */\r
-       function sql_set_charset($charset)\r
-       {\r
-               global $MYSQL_HANDLER, $SQL_DBH;\r
-               \r
-               $result = TRUE;\r
-               \r
-               if ( $MYSQL_HANDLER[0] == '' || in_array('mysql', $MYSQL_HANDLER) )\r
-               {\r
-                       /*\r
-                        * NOTE:\r
-                        * It's great help to you refering the same function in mysql.php.\r
-                        * PDO::MySQL has no function as same as mysql_set_charset().\r
-                        */\r
-                       $charset = strtolower($charset);\r
-                       $mysql_version = preg_replace('#^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{1,2})(.*)$#', '$1.$2.$3', sql_get_server_info($SQL_DBH));\r
-                       \r
-                       if ( version_compare($mysql_version, '5.0.7', '<') )\r
-                       {\r
-                               $result = sql_query("SET CHARACTER SET {$charset};");\r
-                       }\r
-                       else\r
-                       {\r
-                               $result = sql_query("SET NAMES {$charset};");\r
-                       }\r
-               }\r
-               return $result;\r
-       }\r
-       \r
-/**************************************************************************\r
-Unimplemented mysql_* functions\r
-\r
-# mysql_ data_ seek (maybe useful)\r
-# mysql_ errno (maybe useful)\r
-# mysql_ fetch_ lengths (maybe useful)\r
-# mysql_ field_ flags (maybe useful)\r
-# mysql_ field_ len (maybe useful)\r
-# mysql_ field_ seek (maybe useful)\r
-# mysql_ field_ table (maybe useful)\r
-# mysql_ field_ type (maybe useful)\r
-# mysql_ info (maybe useful)\r
-# mysql_ list_ processes (maybe useful)\r
-# mysql_ ping (maybe useful)\r
-# mysql_ set_ charset (maybe useful, requires php >=5.2.3 and mysql >=5.0.7)\r
-# mysql_ thread_ id (maybe useful)\r
-\r
-# mysql_ db_ name (useful only if working on multiple dbs which we do not do)\r
-# mysql_ list_ dbs (useful only if working on multiple dbs which we do not do)\r
-\r
-# mysql_ pconnect (probably not useful and could cause some unintended performance issues)\r
-# mysql_ unbuffered_ query (possibly useful, but complicated and not supported by all database drivers (pdo))\r
-\r
-# mysql_ change_ user (deprecated)\r
-# mysql_ create_ db (deprecated)\r
-# mysql_ db_ query (deprecated)\r
-# mysql_ drop_ db (deprecated)\r
-# mysql_ escape_ string (deprecated)\r
-# mysql_ list_ fields (deprecated)\r
-# mysql_ list_ tables (deprecated)\r
-# mysql_ tablename (deprecated)\r
-\r
-*******************************************************************/\r
-\r
-}\r
diff --git a/nucleus/libs/sql/sql.php b/nucleus/libs/sql/sql.php
new file mode 100644 (file)
index 0000000..b50858c
--- /dev/null
@@ -0,0 +1,316 @@
+<?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;
+}
index 73ea19b..beeeb8c 100644 (file)
@@ -48,8 +48,8 @@ if (!$member->isLoggedIn()) {
 
 // check if member is on at least one teamlist
 $query = 'SELECT * FROM ' . sql_table('team'). ' WHERE tmember=' . $member->getID();
-$teams = sql_query($query);
-if (sql_num_rows($teams) == 0 && !$member->isAdmin())
+$teams = DB::getResult($query);
+if ($teams->rowCount() == 0 && !$member->isAdmin())
        media_doError(_ERROR_DISALLOWEDUPLOAD);
 
 // get action
index e5f140d..794aec8 100644 (file)
@@ -85,7 +85,7 @@ class NP_SecurityEnforcer extends NucleusPlugin
                $this->createOption('login_lockout',            '_SECURITYENFORCER_OPT_LOGIN_LOCKOUT',          'text', '15');
                
                // create needed tables
-               sql_query("CREATE TABLE IF NOT EXISTS ". sql_table('plug_securityenforcer').
+               DB::execute('CREATE TABLE IF NOT EXISTS '. sql_table('plug_securityenforcer').
                                        " (login varchar(255),
                                           fails int(11) NOT NULL default '0',
                                           lastfail bigint NOT NULL default '0',
@@ -98,7 +98,7 @@ class NP_SecurityEnforcer extends NucleusPlugin
                // if requested, delete the data table
                if ( $this->getOption('del_uninstall_data') == 'yes' )
                {
-                       sql_query('DROP TABLE '.sql_table('plug_securityenforcer'));
+                       DB::execute('DROP TABLE '.sql_table('plug_securityenforcer'));
                }
                return;
        }
@@ -203,13 +203,13 @@ class NP_SecurityEnforcer extends NucleusPlugin
                global $_SERVER;
                $login = $data['login'];
                $ip = $_SERVER['REMOTE_ADDR'];
-               sql_query("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='" . sql_real_escape_string($login) . "'";
-               $flogin = quickQuery($query); 
-               $query = "SELECT fails as result FROM " . sql_table('plug_securityenforcer') . " ";
-               $query .= "WHERE login='" . sql_real_escape_string($ip) . "'";
-               $fip = quickQuery($query); 
+               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);
+               $fip = DB::getValue($query); 
                
                if ( $flogin >= $this->max_failed_login || $fip >= $this->max_failed_login )
                {
@@ -231,8 +231,8 @@ class NP_SecurityEnforcer extends NucleusPlugin
                global $_SERVER;
                $login = $data['username'];
                $ip = $_SERVER['REMOTE_ADDR'];
-               sql_query("DELETE FROM " . sql_table('plug_securityenforcer') . " WHERE login='" . sql_real_escape_string($login) . "'");
-               sql_query("DELETE FROM " . sql_table('plug_securityenforcer') . " WHERE login='" . sql_real_escape_string($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));
                return;
        }
        
@@ -246,23 +246,23 @@ class NP_SecurityEnforcer extends NucleusPlugin
                global $_SERVER;
                $login = $data['username'];
                $ip = $_SERVER['REMOTE_ADDR'];
-               $lres = sql_query("SELECT * FROM " . sql_table('plug_securityenforcer') . " WHERE login='" . sql_real_escape_string($login) . "'");
-               if ( sql_num_rows($lres) )
+               $lres = DB::getResult('SELECT * FROM ' . sql_table('plug_securityenforcer') . ' WHERE login=' . DB::quoteValue($login));
+               if ( $lres->rowCount() > 0 )
                {
-                       sql_query("UPDATE " . sql_table('plug_securityenforcer') . " SET fails=fails+1, lastfail=" . time() . " WHERE login='" . sql_real_escape_string($login) . "'");
+                       DB::execute('UPDATE ' . sql_table('plug_securityenforcer') . ' SET fails=fails+1, lastfail=' . time() . ' WHERE login=' . DB::quoteValue($login));
                }
                else
                {
-                       sql_query("INSERT INTO " . sql_table('plug_securityenforcer') . " (login,fails,lastfail) VALUES ('" . sql_real_escape_string($login) . "',1," . time() . ")");
+                       DB::execute('INSERT INTO ' . sql_table('plug_securityenforcer') . ' (login,fails,lastfail) VALUES (' . DB::quoteValue($login) . ',1,' . time() . ')');
                }
-               $lres = sql_query("SELECT * FROM " . sql_table('plug_securityenforcer') . " WHERE login='" . sql_real_escape_string($ip) . "'");
-               if ( sql_num_rows($lres) )
+               $lres = DB::getResult('SELECT * FROM ' . sql_table('plug_securityenforcer') . ' WHERE login=' . DB::quoteValue($ip));
+               if ( $lres->rowCount() > 0 )
                {
-                       sql_query("UPDATE " . sql_table('plug_securityenforcer') . " SET fails=fails+1, lastfail=" . time() . " WHERE login='" . sql_real_escape_string($ip) . "'");
+                       DB::execute('UPDATE ' . sql_table('plug_securityenforcer') . ' SET fails=fails+1, lastfail=' . time() . ' WHERE login=' . DB::quoteValue($ip));
                }
                else
                {
-                       sql_query("INSERT INTO " . sql_table('plug_securityenforcer') . " (login,fails,lastfail) VALUES ('" . sql_real_escape_string($ip) . "',1," . time() . ")");
+                       DB::execute('INSERT INTO ' . sql_table('plug_securityenforcer') . ' (login,fails,lastfail) VALUES (' . DB::quoteValue($ip) . ',1,' . time() . ')');
                }
                return;
        }
@@ -286,10 +286,10 @@ class NP_SecurityEnforcer extends NucleusPlugin
                        $complexity = 4;
                }
                
-               $ucchars        = "[A-Z]";
-               $lcchars        = "[a-z]";
-               $numchars       = "[0-9]";
-               $ochars         = "[-~!@#$%^&*()_+=,.<>?:;|]";
+               $ucchars        = '[A-Z]';
+               $lcchars        = '[a-z]';
+               $numchars       = '[0-9]';
+               $ochars         = '[-~!@#$%^&*()_+=,.<>?:;|]';
                $chartypes      = array($ucchars, $lcchars, $numchars, $ochars);
                $tot            = array(0,0,0,0);
                $i                      = 0;
index 09b9162..fd9b436 100644 (file)
@@ -25,7 +25,7 @@ include_libs('PLUGINADMIN.php');
 // some functions
 function SE_unlockLogin($login)
 {
-       sql_query("DELETE FROM ".sql_table('plug_securityenforcer')." WHERE login='".sql_real_escape_string($login)."'");
+       DB::execute('DELETE FROM '.sql_table('plug_securityenforcer').' WHERE login='.DB::quoteValue($login));
 }
        
 // create the admin area page
@@ -71,10 +71,10 @@ echo '<table>';
 echo '<tr><th>'._SECURITYENFORCER_ENTITY.'</th><th>'._SECURITYENFORCER_UNLOCK.'?</th></tr>';
 echo '<tr><td colspan="2" class="submit"><input type="submit" value="'._SECURITYENFORCER_UNLOCK.'" /></td></tr>';
 // do query to get all entries, loop
-$result = sql_query("SELECT * FROM ".sql_table("plug_securityenforcer")." WHERE fails >= ".$plug->max_failed_login);
-if ( sql_num_rows($result) )
+$result = DB::getResult("SELECT * FROM ".sql_table("plug_securityenforcer")." WHERE fails >= ".$plug->max_failed_login);
+if ( $result->rowCount() )
 {
-       while( $row = sql_fetch_assoc($result) )
+       foreach ( $result as $row )
        {
                echo '<tr>';
                echo '<td>'.Entity::hsc($row['login']).'</td>';
index 85efc71..2a2a5d1 100644 (file)
 }
 
 /* markup buttons */
-.jsbutton {
-       text-align: center; 
+.jsbuttonbar {
+       height: 30px;
+       cursor: default;
+}
 
+.jsbutton {
+       float: left;
        padding: 3px;
+       margin-right: 4px;
+       height: 16px;
+       width: 16px;
        border: 1px solid #dddddd;
+       background-color: white;
 }
 
 .jsbuttonspacer {
-       padding-right: 10px;
-}
-
-.jsbuttonbar {
-       padding: 3px;
-       cursor: default;
+       float: left;
+       width: 10px;
 }
-
index 46a8686..e477d43 100644 (file)
@@ -269,7 +269,9 @@ div#content table tbody tr:hover {
        background-color:       #F5F5F5;
 }
 
-div#content table thead tr th {
+div#content table thead tr th,
+div#content table tfoot tr th,
+div#content table tbody tr th {
        border: none;
        background-color: #BBBBCC;
        color: #000000;
@@ -277,17 +279,23 @@ div#content table thead tr th {
 }
 
 div#content table thead th,
+div#content table thead td,
+div#content table tfoot th,
+div#content table tfoot td,
 div#content table tbody td {
        padding: 4px;
        empty-cells: show;
 }
 
 /* systemconfig column */
-div#content table.systemoverview thead th,
+div#content table.systemoverview thead td,
+div#content table.systemoverview tfoot td,
 div#content table.systemoverview tbody td {
        width:  50%;
 }
 
+div#content table thead tr td,
+div#content table tfoot tr td,
 div#content table tbody tr td {
        border: 1px solid #ddd;
        font-size: small;
index cc1e820..c8a67c0 100644 (file)
@@ -21,7 +21,7 @@
         */
 
        /*************************************************************
-        *     NOTE: With upgrade to 3.6, need to set this to use sql_* API
+        * NOTE: With upgrade to 4.0, need to set this to use DB::* API
         **************************************************************/
 
        include('../../config.php');
                        break;
                }
 
-               $result = mysql_query($query);
-               $installed = ( $result != 0 ) && (mysql_num_rows($result) >= $minrows);
+               $result = DB::getResult($query);
+               $installed = ( $result !== FALSE ) && ($result->rowCount() >= $minrows);
 
                return $installed;
        }
                echo "<li> $friendly &mdash; ";
 
                # execute the query
-               $result = @mysql_query($query);
+               $result = @DB::execute($query);
 
                // begin if: error executing query
                if ( $result === FALSE )
                {
                        echo '<span class="warning"> FAILED </span> <br />';
-                       echo 'Error: <code>', mysql_error(), '</code>';
+                       $err = DB::getError();
+                       echo 'Error: <code>', $err[2], '</code>';
                        $upgrade_failures++;
                }
                // else: query was successful
                $indices = array();
 
                $query = 'SHOW INDEX FROM ' . sql_table($table);
-               $result = @mysql_query($query);
+               $result = @DB::getResult($query);
 
                // begin loop: each result object
-               while ( $object = mysql_fetch_object($result) )
+               foreach ( $result as $row )
                {
 
                        // begin if: key has not been added to the indeces array yet
-                       if ( !isset($indices[$object->Key_name]) )
+                       if ( !isset($indices[$row['Key_name']]) )
                        {
-                               $indices[$object->Key_name] = array();
+                               $indices[$row['Key_name']] = array();
                        } // end if
 
-                       array_push($indices[$object->Key_name], $object->Column_name);
+                       array_push($indices[$row['Key_name']], $row['Column_name']);
                }
 
                // compare each index with parameter
        function upgrade_checkIfTableExists($table)
        {
                $query = 'SHOW TABLES LIKE ' . sql_table($table);
-               $result = @mysql_query($query);
+               $result = DB::getResult($query);
 
                // begin if: query executed successfully and one row was returned
-               if ( ($result !== FALSE) && (@mysql_num_rows($result) == 1) )
+               if ( ($result !== FALSE) && ($result->rowCount() == 1) )
                {
                        return TRUE;
                }
        function upgrade_checkIfCVExists($value)
        {
                $query = 'SELECT name FROM ' . sql_table('config') . ' WHERE name = "' . $value . '"';
-               $result = @mysql_query($query);
+               $result = DB::getResult($query);
 
                // begin if: query executed successfully and one row was returned
-               if ( ($result !== FALSE) && (@mysql_num_rows($result) == 1) )
+               if ( ($result !== FALSE) && ($result->rowCount() == 1) )
                {
                        return TRUE;
                }
        function upgrade_checkIfColumnExists($table, $column)
        {
                $query = 'DESC ' . sql_table($table) . ' ' . $column;
-               $result = @mysql_query($query);
+               $result = DB::getResult($query);
 
                // begin if: query executed successfully and one row was returned
-               if ( ($result !== FALSE) && (@mysql_num_rows($result) == 1) )
+               if ( ($result !== FALSE) && ($result->rowCount() == 1) )
                {
                        return TRUE;
                }
index 6991c9a..d0bf3f1 100644 (file)
@@ -74,17 +74,15 @@ function upgrade_do96() {
        // 6. add 'imagepopup' skincontents in skin 'default'
        
        $query = 'SELECT sdnumber FROM '.sql_table('skin_desc')." WHERE sdname='default'";
-       $res = sql_query($query);
-       $obj = mysql_fetch_object($res);
-       $skinid = $obj->sdnumber;
-       $query = 'INSERT INTO '.sql_table('skin')." VALUES (" . $skinid . ", 'imagepopup', '<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<head>\r\n  <title><%imagetext%></title>\r\n  <style type=\"text/css\">\r\n   img { border: none; }\r\n  </style>\r\n</head>\r\n<body>\r\n  <a href=\"javascript:window.close();\"><%image%></a>\r\n</body>\r\n</html>');";
+       $res = DB::getValue($query);
+       $query = 'INSERT INTO '.sql_table('skin')." VALUES (" . $res . ", 'imagepopup', '<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<head>\r\n  <title><%imagetext%></title>\r\n  <style type=\"text/css\">\r\n   img { border: none; }\r\n  </style>\r\n</head>\r\n<body>\r\n  <a href=\"javascript:window.close();\"><%image%></a>\r\n</body>\r\n</html>');";
        upgrade_query("Adding 'imagepopup' skinparts",$query);
        
        // 7. add POPUP_CODE, MEDIA_CODE, IMAGE_CODE to ALL templates
        $query = 'SELECT tdnumber FROM '.sql_table('template_desc');
-       $res = sql_query($query);       // get all template ids
-       while ($obj = mysql_fetch_object($res)) {
-               $tid = $obj->tdnumber;  // template id
+       $res = DB::getResult($query);   // get all template ids
+       foreach ( $res as $row ) {
+               $tid = $row['tdnumber'];        // template id
        
                $query = 'INSERT INTO '.sql_table('template')." VALUES ($tid, 'POPUP_CODE', '<%popuplink%>');";
                $query2 = 'INSERT INTO '.sql_table('template')." VALUES ($tid, 'MEDIA_CODE', '<%media%>');";
index 27f103c..a8e96d0 100644 (file)
@@ -51,11 +51,11 @@ function upgrade_do100() {
                if ($res) {
                        // 5. for all members: hash their password and also copy it to mcookiekey
                        $query = 'SELECT * FROM '.sql_table('member');
-                       $res = mysql_query($query);
-                       while ($current = mysql_fetch_object($res)) {
-                               $hashedpw = md5($current->mpassword);
-                               $updquery = 'UPDATE '.sql_table('member')." SET mpassword='$hashedpw' WHERE mnumber=" . $current->mnumber;
-                               upgrade_query("Encrypting password for member " . $current->mnumber,$updquery);
+                       $res = DB::getResult($query);
+                       foreach ( $res as $current ) {
+                               $hashedpw = md5($current['mpassword']);
+                               $updquery = 'UPDATE '.sql_table('member')." SET mpassword='$hashedpw' WHERE mnumber=" . $current['mnumber'];
+                               upgrade_query("Encrypting password for member " . $current['mnumber'], $updquery);
                        }
                }
        }else{
index f85e204..6403ab4 100644 (file)
@@ -71,9 +71,9 @@ function upgrade_do110() {
                // 4. add 'general' categories for all blogs, and update nucleus_item
                $catid = 1;     // generate catids ourself
                $query = 'SELECT bnumber FROM '.sql_table('blog');
-               $res = mysql_query($query);
-               while ($current = mysql_fetch_object($res)) {
-                       $blogid = $current->bnumber;
+               $res = DB::getResult($query);
+               foreach ( $res as $current ) {
+                       $blogid = $current['bnumber'];
                        
                        $query = 'INSERT INTO '.sql_table('category')." (catid, cblog, cname, cdesc) VALUES ($catid, $blogid, 'General', 'Items that do not fit in other categories')";
                        $r = upgrade_query("Adding category 'general' for blog " . $blogid, $query);
@@ -92,9 +92,9 @@ function upgrade_do110() {
                
                // 5. add template parts for category lists to all templates
                $query = 'SELECT tdnumber FROM '.sql_table('template_desc');
-               $res = sql_query($query);       // get all template ids
-               while ($obj = mysql_fetch_object($res)) {
-                       $tid = $obj->tdnumber;  // template id
+               $res = DB::getResult($query);   // get all template ids
+               foreach ( $res as $row ) {
+                       $tid = $row['tdnumber'];        // template id
                
                        $query = 'INSERT INTO '.sql_table('template')." VALUES ($tid, 'CATLIST_HEADER', '<ul><li><a href=\"<%blogurl%>\">All</a></li>');";
                        $query2 = 'INSERT INTO '.sql_table('template')." VALUES ($tid, 'CATLIST_LISTITEM', '<li><a href=\"<%catlink%>\"><%catname%></a></li>');";
index ec6cd70..e55881f 100644 (file)
@@ -54,11 +54,11 @@ function upgrade_do150() {
                upgrade_query('Adding cblog column in table nucleus_comment',$query);
 
                $query = 'SELECT inumber, iblog FROM '.sql_table('item').', '.sql_table('comment').' WHERE inumber=citem AND cblog=0';
-               $res = sql_query($query);
+               $res = DB::getResult($query);
 
-               while($o = mysql_fetch_object($res)) {
-                       $query = 'UPDATE '.sql_table('comment')." SET cblog='".$o->iblog."' WHERE citem='".$o->inumber."'";
-                       upgrade_query('Filling cblog column for item ' . $o->inumber, $query);
+               foreach ( $res as $row ) {
+                       $query = 'UPDATE '.sql_table('comment')." SET cblog='".$row['iblog']."' WHERE citem='".$row['inumber']."'";
+                       upgrade_query('Filling cblog column for item ' . $row['inumber'], $query);
                }
        }       
        
@@ -72,9 +72,9 @@ function upgrade_do150() {
        
        // add 'EDITLINK' to all templates
        $query = 'SELECT tdnumber FROM '.sql_table('template_desc');
-       $res = sql_query($query);       // get all template ids
-       while ($obj = mysql_fetch_object($res)) {
-               $tid = $obj->tdnumber;  // template id
+       $res = DB::getResult($query);   // get all template ids
+       foreach ( $res as $row ) {
+               $tid = $row['tdnumber'];        // template id
        
                $query = 'INSERT INTO '.sql_table('template')." VALUES ($tid, 'EDITLINK', '<a href=\"<%editlink%>\" onclick=\"<%editpopupcode%>\">edit</a>');";
                upgrade_query("Adding editlink code to template $tid",$query);
@@ -82,21 +82,22 @@ function upgrade_do150() {
        }
        
        // in templates: update DATE_HEADER templates
-       $res = sql_query('SELECT * FROM '.sql_table('template').' WHERE tpartname=\'DATE_HEADER\'');
-       while ($o = mysql_fetch_object($res)) {
-               $newval = str_replace('<%daylink%>','<%%daylink%%>',$o->tcontent);
-               $query = 'UPDATE '.sql_table('template').' SET tcontent=\''. addslashes($newval).'\' WHERE tdesc=' . $o->tdesc . ' AND tpartname=\'DATE_HEADER\'';
-               upgrade_query('Updating DATE_HEADER part in template ' . $o->tdesc, $query);
+       $res = DB::getResult('SELECT * FROM '.sql_table('template').' WHERE tpartname=\'DATE_HEADER\'');
+       foreach ( $res as $row ) {
+               $newval = str_replace('<%daylink%>','<%%daylink%%>',$row['tcontent']);
+               $query = 'UPDATE '.sql_table('template').' SET tcontent='. DB::quoteValue($newval).' WHERE tdesc=' . $row['tdesc'] . ' AND tpartname=\'DATE_HEADER\'';
+               upgrade_query('Updating DATE_HEADER part in template ' . $row['tdesc'], $query);
        }
        
        // in templates: add 'comments'-templatevar to all non-empty ITEM templates     
-       $res = sql_query('SELECT * FROM '.sql_table('template').' WHERE tpartname=\'ITEM\'');
-       while ($o = mysql_fetch_object($res)) {
-               if ( i18n::strpos($o->tcontent,'<%comments%>') === FALSE)
+       $res = DB::getResult('SELECT * FROM '.sql_table('template').' WHERE tpartname=\'ITEM\'');
+       foreach ( $res as $row )
+       {
+               if ( i18n::strpos($row['tcontent'],'<%comments%>') === FALSE )
                {
-                       $newval = $o->tcontent . '<%comments%>';
-                       $query = 'UPDATE '.sql_table('template').' SET tcontent=\''. addslashes($newval).'\' WHERE tdesc=' . $o->tdesc . ' AND tpartname=\'ITEM\'';
-                       upgrade_query('Updating ITEM part in template ' . $o->tdesc, $query);
+                       $newval = $row['tcontent'] . '<%comments%>';
+                       $query = 'UPDATE '.sql_table('template').' SET tcontent='. DB::quoteValue($newval).' WHERE tdesc=' . $row['tdesc'] . ' AND tpartname=\'ITEM\'';
+                       upgrade_query('Updating ITEM part in template ' . $row['tdesc'], $query);
                }
        }
 
index 78f4813..6f1a949 100644 (file)
@@ -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 7432429..298fce9 100644 (file)
@@ -47,23 +47,23 @@ function upgrade_do250() {
                        $query = 'DELETE FROM ' . sql_table('plugin_option_desc');
                        upgrade_query('Flushing plugin option descriptions', $query);
                        $query = 'SELECT * FROM ' . sql_table('plugin_option') .' ORDER BY oid ASC';
-                       $res = sql_query($query);
+                       $res = DB::getResult($query);
                        $aValues = array();
-                       while ($o = mysql_fetch_object($res)) {
+                       foreach ( $res as $row) {
                                $query = 'INSERT INTO ' . sql_table('plugin_option_desc')
                                           .' (opid, oname, ocontext, odesc, otype)'
                                           ." VALUES ("
-                                                       ."'".addslashes($o->opid)."',"
-                                                       ."'".addslashes($o->oname) ."',"
+                                                       .DB::quoteValue($row['opid']).','
+                                                       .DB::quoteValue($row['oname']) .','
                                                        ."'global',"
-                                                       ."'".addslashes($o->odesc) ."',"
-                                                       ."'".addslashes($o->otype) ."')";
-                               upgrade_query('Moving option description for '.i18n::hsc($o->oname).' to ' . sql_table('plugin_option_desc'), $query);
+                                                       .DB::quoteValue($row['odesc']) .','
+                                                       .DB::quoteValue($row['otype']) .')';
+                               upgrade_query('Moving option description for '.i18n::hsc($row['oname']).' to ' . sql_table('plugin_option_desc'), $query);
        
                                // store new id
                                $aValues[] = array ( 
-                                                               'id' => mysql_insert_id(),
-                                                               'value' => $o->ovalue
+                                                               'id' => DB::getInsertId(),
+                                                               'value' => $row['ovalue']
                                                        );
                        }
                }
@@ -90,7 +90,7 @@ function upgrade_do250() {
                                foreach ($aValues as $aInfo) {
                                        $query = 'INSERT INTO ' . sql_table('plugin_option') 
                                                   .' (oid, ocontextid, ovalue)'
-                                                  ." VALUES (".$aInfo['id'].",'0','".addslashes($aInfo['value'])."')";
+                                                  ." VALUES (".$aInfo['id'].",'0',".DB::quoteValue($aInfo['value']).')';
                                        upgrade_query('Re-filling ' . sql_table('plugin_option') . ' ('.$aInfo['id'].')', $query);
                                }
                        }       
index 0bc20f6..64fd207 100644 (file)
@@ -35,7 +35,7 @@ function upgrade_do330() {
        }
 
        // check cmail column to separate to URL and cemail
-       mysql_query(
+       DB::execute(
                'UPDATE ' . sql_table('comment') . ' ' . 
                "SET cemail = cmail, cmail = '' " .
                "WHERE cmail LIKE '%@%'"
@@ -61,8 +61,8 @@ function upgrade_do330() {
 
        // check to see if user turn on Weblogs.com ping, if so, suggest to install the plugin
        $query = "SELECT bsendping FROM " . sql_table('blog') . " WHERE bsendping='1'"; 
-       $res = mysql_query($query);
-       if (mysql_num_rows($res) > 0) {
+       $res = DB::getResult($query);
+       if ($res->rowCount() > 0) {
                echo "<li>Note: The weblogs.com ping function is improved and moved into a plugin. To activate this function in v3.3, please go to plugin menu and install NP_Ping plugin. Also, NP_Ping is replacing NP_PingPong. If you have NP_PingPing installed, please also remove it.</li>";
        }
 }
index 602061d..8896fbf 100644 (file)
@@ -25,10 +25,10 @@ function upgrade_do400()
        /* config.Language to config.Locale  */
        if ( !upgrade_checkIfColumnExists('config','Locale') )
        {
-               $res = sql_query("SELECT * FROM " . sql_table('config') . " WHERE name='Language'");
-               while ( $o = mysql_fetch_object($res) )
+               $res = DB::getResult("SELECT * FROM " . sql_table('config') . " WHERE name='Language'");
+               foreach ( $res as $row )
                {
-                       $locale = $o->Language;
+                       $locale = $row['Language'];
                }
                $query = 'INSERT INTO ' . sql_table('config') . " (name, value) VALUE('Locale', '{$locale}');";
                upgrade_query("Renaming Language for configs to Locale", $query);
index a6d3880..ce28e0c 100644 (file)
                           ." WHERE iblog=$blogid and icat=catid and iauthor=mnumber"
                           ." ORDER BY itime DESC"
                           ." LIMIT $amount";
-               $r = sql_query($query);
+               $r = DB::getResult($query);
 
-               while ($row = sql_fetch_assoc($r)) {
+               foreach ( $r as $row ) {
 
                        // remove linebreaks if needed
                        if ($blog->convertBreaks())
index 42129ee..6bdeba1 100644 (file)
                           ." WHERE iblog=$blogid and icat=catid and iauthor=mnumber"
                           ." ORDER BY itime DESC"
                           ." LIMIT $amount";
-               $r = sql_query($query);
+               $r = DB::getResult($query);
 
-               while ($row = sql_fetch_assoc($r)) {
+               foreach ( $r as $row ) {
 
                        // remove linebreaks if needed
                        if ($blog->convertBreaks()) {
                                . ' FROM '.sql_table('category')
                                . " WHERE cblog=" . intval($blogid)
                                . " ORDER BY cname";
-               $r = sql_query($query);
+               $r = DB::getResult($query);
 
-               while ($obj = sql_fetch_object($r)) {
+               foreach ( $r as $row ) {
 
-                       $categorystruct[$obj->cname] = new xmlrpcval(
+                       $categorystruct[$row['cname']] = new xmlrpcval(
                                array(
-                                       "description" => new xmlrpcval($obj->cdesc,"string"),
-                                       "htmlUrl" => new xmlrpcval($b->getURL() . "?catid=" . $obj->catid ,"string"),
+                                       "description" => new xmlrpcval($row['cdesc'],"string"),
+                                       "htmlUrl" => new xmlrpcval($b->getURL() . "?catid=" . $row['catid'] ,"string"),
                                        "rssUrl" => new xmlrpcval("","string")
                                )
                        ,'struct');
index ced6825..a68887e 100644 (file)
                                . ' FROM '.sql_table('category')
                                . " WHERE cblog=" . intval($blogid)
                                . " ORDER BY cname";
-               $r = sql_query($query);
+               $r = DB::getResult($query);
 
-               while ($obj = sql_fetch_object($r)) {
+               foreach ( $r as $row ) {
 
                        $categorystruct[] = new xmlrpcval(
                                array(
-                                       "categoryName" => new xmlrpcval($obj->cname,"string"),
-                                       "categoryId" => new xmlrpcval($obj->cname,"string")
+                                       "categoryName" => new xmlrpcval($row['cname'],"string"),
+                                       "categoryId" => new xmlrpcval($row['cname'],"string")
                                )
                        ,'struct');
 
                           ." WHERE iblog=$blogid"
                           ." ORDER BY itime DESC"
                           ." LIMIT $iAmount";
-               $r = sql_query($query);
+               $r = DB::getResult($query);
 
-               while ($row = sql_fetch_assoc($r)) {
+               foreach ( $r as $row ) {
 
                        $newstruct = new xmlrpcval(array(
                                "dateCreated" => new xmlrpcval(iso8601_encode(strtotime($row['itime'])),"dateTime.iso8601"),
index 0f4702f..06219a4 100644 (file)
                           ." WHERE iblog=$blogid"
                           ." ORDER BY itime DESC"
                           ." LIMIT $amount";
-               $r = sql_query($query);
-               while ($obj = sql_fetch_object($r)) {
+               $r = DB::getResult($query);
+               foreach ( $r as $row ) {
                        $newstruct = new xmlrpcval(array(
-                               "publishDate" => new xmlrpcval(iso8601_encode(strtotime($obj->itime)),"dateTime.iso8601"),
-                               "userid" => new xmlrpcval($obj->iauthor,"string"),
+                               "publishDate" => new xmlrpcval(iso8601_encode(strtotime($row['itime'])),"dateTime.iso8601"),
+                               "userid" => new xmlrpcval($row['iauthor'],"string"),
                                "blogid" => new xmlrpcval($blogid,"string"),
-                               "title" => new xmlrpcval($obj->ititle,"string"),
-                               "body" => new xmlrpcval($obj->ibody,"string"),
-                               "more" => new xmlrpcval($obj->imore,"string"),
-                               "draft" => new xmlrpcval($obj->idraft,"boolean"),
-                               "closed" => new xmlrpcval($obj->iclosed,"boolean"),
+                               "title" => new xmlrpcval($row['ititle'],"string"),
+                               "body" => new xmlrpcval($row['ibody'],"string"),
+                               "more" => new xmlrpcval($row['imore'],"string"),
+                               "draft" => new xmlrpcval($row['idraft'],"boolean"),
+                               "closed" => new xmlrpcval($row['iclosed'],"boolean"),
                        ),'struct');
                        array_push($structarray, $newstruct);
                }
index 1633b3e..992e668 100644 (file)
@@ -184,22 +184,31 @@ function _getUsersBlogs($username, $password) {
                        . ' FROM '.sql_table('blog').', '.sql_table('team')
                        . " WHERE tblog=bnumber and tmember=" . $mem->getID()
                        . " ORDER BY bname";
-       $r = sql_query($query);
-
-       while ($obj = sql_fetch_object($r)) {
-               if ($obj->burl)
+       $r = DB::getResult($query);
+       
+       foreach ( $r as $row )
+       {
+               if ( $row['burl'] )
+               {
+                       $blogurl = $row['burl'];
+               }
+               if ( $obj->burl )
+               {
                        $blogurl = $obj->burl;
+               }
                else
+               {
                        $blogurl = 'http://';
-
+               }
+               
                $newstruct = new xmlrpcval(array(
-                       "url" => new xmlrpcval($blogurl,"string"),
-                       "blogid" => new xmlrpcval($obj->bnumber,"string"),
-                       "blogName" => new xmlrpcval($obj->bname,"string")
+                       "url"           => new xmlrpcval($blogurl, "string"),
+                       "blogid"        => new xmlrpcval($row['bnumber'], "string"),
+                       "blogName"      => new xmlrpcval($row['bname'], "string")
                ),'struct');
                array_push($structarray, $newstruct);
        }
-
+       
        return new xmlrpcresp(new xmlrpcval( $structarray , "array"));
 }
 
similarity index 96%
rename from skins/admin/defaultadmin/javascripts/admin.js
rename to skins/admin/bookmarklet/javascripts/admin.js
index 9dc989b..7f637b1 100644 (file)
@@ -1,59 +1,59 @@
-/**\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
-  * Some JavaScript code for the admin area\r
-  *\r
-  * $Id: admin.js 1388 2009-07-18 06:31:28Z shizuki $\r
-  */\r
-\r
-function help(url) {\r
-       popup = window.open(url,'helpwindow','status=no,toolbar=yes,scrollbars=yes,resizable=yes,width=500,height=500,top=0,left=0');\r
-       if (popup.focus) popup.focus();\r
-       if (popup.GetAttention) popup.GetAttention();\r
-       return false;\r
-}                              \r
-\r
-var oldCellColor = "#000";\r
-function focusRow(row) {\r
-       var cells = row.cells;\r
-       if (!cells) return;\r
-       oldCellColor = cells[0].style.backgroundColor;\r
-       for (var i=0;i<cells.length;i++) {\r
-               cells[i].style.backgroundColor='whitesmoke';\r
-       }\r
-}\r
-function blurRow(row) {\r
-       var cells = row.cells;\r
-       if (!cells) return;\r
-       for (var i=0;i<cells.length;i++) {\r
-               cells[i].style.backgroundColor=oldCellColor;\r
-       }\r
-}\r
-function batchSelectAll(what) {\r
-       var i = 0;\r
-       var el;\r
-       while (el = document.getElementById('batch' + i)) {\r
-               el.checked = what?'checked':'';\r
-               i++;\r
-       }\r
-       return false;                                   \r
-}\r
-function selectCanLogin(flag) {\r
-       if (flag) {\r
-               window.document.memberedit.canlogin[0].checked=true;\r
-\r
-               // don't disable canlogin[0], otherwise the value won't be passed.\r
-//             window.document.memberedit.canlogin[0].disabled=true;\r
-               window.document.memberedit.canlogin[1].disabled=true;\r
-       } else {\r
-               window.document.memberedit.canlogin[0].disabled=false;\r
-               window.document.memberedit.canlogin[1].disabled=false;\r
-       }\r
-}\r
+/**
+  * 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)
+  *  
+  * Some JavaScript code for the admin area
+  *
+  * $Id: admin.js 1388 2009-07-18 06:31:28Z shizuki $
+  */
+
+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;
+}                              
+
+var oldCellColor = "#000";
+function focusRow(row) {
+       var cells = row.cells;
+       if (!cells) return;
+       oldCellColor = cells[0].style.backgroundColor;
+       for (var i=0;i<cells.length;i++) {
+               cells[i].style.backgroundColor='whitesmoke';
+       }
+}
+function blurRow(row) {
+       var cells = row.cells;
+       if (!cells) return;
+       for (var i=0;i<cells.length;i++) {
+               cells[i].style.backgroundColor=oldCellColor;
+       }
+}
+function batchSelectAll(what) {
+       var i = 0;
+       var el;
+       while (el = document.getElementById('batch' + i)) {
+               el.checked = what?'checked':'';
+               i++;
+       }
+       return false;                                   
+}
+function selectCanLogin(flag) {
+       if (flag) {
+               window.document.memberedit.canlogin[0].checked=true;
+
+               // don't disable canlogin[0], otherwise the value won't be passed.
+//             window.document.memberedit.canlogin[0].disabled=true;
+               window.document.memberedit.canlogin[1].disabled=true;
+       } else {
+               window.document.memberedit.canlogin[0].disabled=false;
+               window.document.memberedit.canlogin[1].disabled=false;
+       }
+}
@@ -1,70 +1,70 @@
-/**\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
-  * Some JavaScript code for the bookmarklets\r
-  *\r
-  * $Id: bookmarklet.js 1388 2009-07-18 06:31:28Z shizuki $\r
-  */\r
-\r
-/**\r
- * On browsers that have DOM support, the non-visible tabs of the bookmarklet are \r
- * initially hidden. This is not defined in the CSS stylesheet since this causes \r
- * problems with Opera (which does not seem to be sending form data for input\r
- * fields which are in a hidden block)\r
- */\r
-function initStyles() {\r
-       hideBlock('more');\r
-       hideBlock('options');\r
-       hideBlock('preview');\r
-       \r
-       // in browsers that do not support DOM (like opera), the buttons used\r
-       // to switch tabs are useless and can be hidden\r
-       document.getElementById('switchbuttons').style.display = 'inline';\r
-}\r
-\r
-/**\r
- * To be called with id='body','more','options' or 'preview'\r
- * Hides all other tabs and makes the chosen one visible\r
- */\r
-function flipBlock(id) {\r
-\r
-       showBlock(id);\r
-       \r
-       if (id != 'body')\r
-               hideBlock('body');\r
-       if (id != 'more')\r
-               hideBlock('more');\r
-       if (id != 'options')\r
-               hideBlock('options');\r
-       if (id != 'preview')\r
-               hideBlock('preview');           \r
-       \r
-}\r
-\r
-/**\r
- * Hides one element (tab)\r
- */\r
-function hideBlock(id) {\r
-       document.getElementById(id).style.display = "none";\r
-}\r
-\r
-/**\r
- * Makes an element (tab) visible\r
- */\r
-function showBlock(id) {\r
-       document.getElementById(id).style.display = "block";\r
-}\r
-\r
-function help(url) {\r
-       popup = window.open(url,'helpwindow','status=no,toolbar=yes,scrollbars=yes,resizable=yes,width=500,height=500,top=0,left=0');\r
-       if (popup.focus) popup.focus();\r
-       if (popup.GetAttention) popup.GetAttention();\r
-       return false;\r
-}\r
+/**
+  * 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)
+  *  
+  * Some JavaScript code for the bookmarklets
+  *
+  * $Id: bookmarklet.js 1388 2009-07-18 06:31:28Z shizuki $
+  */
+
+/**
+ * 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;
+}
@@ -1,33 +1,33 @@
-/**\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
-  *    Javascript code to make sure that:\r
-  *  - javascript still works when sending pages as application/xhtml+xml\r
-  *  - this doesn't break functionality in IE\r
-  *\r
-  * How to use:\r
-  *            - Include this file\r
-  *            - Use createElement() instead of document.createElement()\r
-  *\r
-  * That's basically it :)\r
-  *\r
-  * $Id: compatibility.js 1388 2009-07-18 06:31:28Z shizuki $\r
-  */\r
-\r
-// to get the script working when page is sent as application/xhtml+xml\r
-function createElement(element) {\r
-  if (document.createElementNS) {\r
-       return document.createElementNS('http://www.w3.org/1999/xhtml', element);\r
-  }\r
-  if (document.createElement) {\r
-       return document.createElement(element);\r
-  }\r
-  return false;\r
-}\r
+/**
+  * 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)
+  *
+  *    Javascript code to make sure that:
+  *  - javascript still works when sending pages as application/xhtml+xml
+  *  - this doesn't break functionality in IE
+  *
+  * How to use:
+  *            - Include this file
+  *            - Use createElement() instead of document.createElement()
+  *
+  * That's basically it :)
+  *
+  * $Id: compatibility.js 1388 2009-07-18 06:31:28Z shizuki $
+  */
+
+// to get the script working when page is sent as application/xhtml+xml
+function createElement(element) {
+  if (document.createElementNS) {
+       return document.createElementNS('http://www.w3.org/1999/xhtml', element);
+  }
+  if (document.createElement) {
+       return document.createElement(element);
+  }
+  return false;
+}
similarity index 95%
rename from skins/admin/defaultadmin/javascripts/edit.js
rename to skins/admin/bookmarklet/javascripts/edit.js
index 110aa29..0faa6da 100644 (file)
-/**\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
-  * This file contains functions to allow adding items from inside the weblog.\r
-  * Also contains code to avoid submitting form data twice.\r
-  *\r
-  * $Id: edit.js 1388 2009-07-18 06:31:28Z shizuki $\r
-  */\r
-\r
-var nucleusConvertBreaks = true;\r
-var nucleusMediaPopupURL = '';\r
-var nucleusMediaURL = 'media/';\r
-var nucleusAuthorId = 0;\r
-var scrollTop = -1;\r
-\r
-function setConvertBreaks(newval) {    nucleusConvertBreaks = newval; }\r
-function setMediaUrl(url) { nucleusMediaURL = url; }\r
-function setAuthorId(id) { nucleusAuthorId = id; }\r
-\r
-function preview(id, value) {\r
-       elem = document.getElementById(id);\r
-       if (!elem) return;\r
-\r
-       var preview = nucleusConvertBreaks ? str_replace("\n","<br />",value)+"&#160;" : value+"&#160;";\r
-\r
-       // expand the media commands (without explicit collection)\r
-       preview = preview.replace(/\<\%image\(([^\/\|]*)\|([^\|]*)\|([^\|]*)\|([^)]*)\)\%\>/g,"<img src='"+nucleusMediaURL+nucleusAuthorId+"/$1' width='$2' height='$3' alt=\"$4\" />");\r
-\r
-       // expand the media commands (with collection)\r
-       preview = preview.replace(/\<\%image\(([^\|]*)\|([^\|]*)\|([^\|]*)\|([^)]*)\)\%\>/g,"<img src='"+nucleusMediaURL+"$1' width='$2' height='$3' alt=\"$4\" />");\r
-       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>");\r
-       preview = preview.replace(/\<\%media\(([^\|]*)\|([^)]*)\)\%\>/g,"<a href='' title='media link'>$2</a>");\r
-\r
-       elem.innerHTML = preview;\r
-}\r
-\r
-function showedit() {\r
-       prevval = document.getElementById('edit').style.display;\r
-       if (prevval == "block")\r
-               newval = "none";\r
-       else\r
-               newval = "block";\r
-       document.getElementById('edit').style.display = newval;\r
-\r
-       if (newval == "block")\r
-               updAllPreviews();\r
-}\r
-\r
-function updAllPreviews() {\r
-       updPreview('title');\r
-       updPreview('body');\r
-       updPreview('more');\r
-}\r
-\r
-function isEditVisible() {\r
-       var editform = document.getElementById('edit');\r
-       if (!editform) return true;\r
-       var prevval = editform.style.display;\r
-       return (prevval == "none") ? false : true;\r
-}\r
-\r
-function updPreview(id) {\r
-       // don't update when preview is hidden\r
-       if (!isEditVisible()) return;\r
-\r
-       var inputField = document.getElementById('input' + id);\r
-       if (!inputField) return;\r
-       preview('prev' + id, inputField.value);\r
-}\r
-\r
-// replace a in s by b (taken from milov.nl)\r
-function str_replace(a, b, s)\r
-{\r
-       if (a == b || !s.length || !a.length) return s;\r
-       if ((p=s.indexOf(a)) == -1) { return s; }\r
-       else { ns = s.substring(0,p) + b + s.substring(p+a.length,s.length); }\r
-       return (s.indexOf(a) != -1) ? str_replace(a, b, ns) : ns;\r
-}\r
-\r
-function shortCuts() {\r
-       if (!event || (event.ctrlKey != true)) return;\r
-\r
-       switch (event.keyCode) {\r
-               case 1:\r
-                       ahrefThis(); break; // ctrl-shift-a\r
-               case 2:\r
-                       boldThis(); break; // ctrl-shift-b\r
-               case 9:\r
-                       italicThis(); break; // ctrl-shift-i\r
-               case 13:\r
-                       addMedia(); break; // ctrl-shift-m\r
-               default:\r
-                       return;\r
-       }\r
-       return;\r
-}\r
-\r
-function cutThis() { execAndUpdate('cut'); }\r
-function copyThis() { execAndUpdate('copy'); }\r
-function pasteThis() { execAndUpdate('paste'); }\r
-function boldThis() { insertAroundCaret('<b>','</b>'); }\r
-function italicThis() { insertAroundCaret('<i>','</i>'); }\r
-function leftThis() { insertAroundCaret('<div class="leftbox">','</div>'); }\r
-function rightThis() { insertAroundCaret('<div class="rightbox">','</div>'); }\r
-function alignleftThis() { insertAroundCaret('<div style="text-align: left">','</div>'); }\r
-function alignrightThis() { insertAroundCaret('<div style="text-align: right">','</div>'); }\r
-function aligncenterThis() { insertAroundCaret('<div style="text-align: center">','</div>'); }\r
-\r
-\r
-function ahrefThis() {\r
-       if (document.selection)\r
-               strSelection = document.selection.createRange().text;\r
-       else\r
-               strSelection = '';\r
-\r
-       strHref = prompt("Create a link to:","http://");\r
-       if (strHref == null) return;\r
-\r
-       var textpre = "<a href=\"" + strHref.replace(/&/g,'&amp;') + "\">";\r
-       insertAroundCaret(textpre, "</a>");\r
-}\r
-\r
-function execAndUpdate(action) {\r
-       lastSelected.caretPos.execCommand(action);\r
-       updAllPreviews();\r
-}\r
-\r
-\r
-var nonie_FormType = 'body';\r
-\r
-// Add media to new item\r
-function addMedia() {\r
-\r
-       var mediapopup = window.open(nucleusMediaPopupURL + 'media.php','name',\r
-               'status=yes,toolbar=no,scrollbars=yes,resizable=yes,width=500,height=450,top=0,left=0');\r
-\r
-       return;\r
-}\r
-\r
-\r
-function setMediaPopupURL(url) {\r
-       nucleusMediaPopupURL = url;\r
-}\r
-\r
-function includeImage(collection, filename, type, width, height) {\r
-       if (isCaretEmpty()) {\r
-               text = prompt("Text to display ?",filename);\r
-       } else {\r
-               text = getCaretText();\r
-       }\r
-\r
-       // add collection name when not private collection (or editing a message that's not your)\r
-       var fullName;\r
-       if (isNaN(collection) || (nucleusAuthorId != collection)) {\r
-               fullName = collection + '/' + filename;\r
-       } else {\r
-               fullName = filename;\r
-       }\r
-\r
-\r
-       var replaceBy;\r
-       switch(type) {\r
-               case 'popup':\r
-                       replaceBy = '<%popup(' +  fullName + '|'+width+'|'+height+'|' + text +')%>';\r
-                       break;\r
-               case 'inline':\r
-               default:\r
-                       replaceBy = '<%image(' +  fullName + '|'+width+'|'+height+'|' + text +')%>';\r
-       }\r
-\r
-       insertAtCaret(replaceBy);\r
-       updAllPreviews();\r
-\r
-}\r
-\r
-\r
-function includeOtherMedia(collection, filename) {\r
-       if (isCaretEmpty()) {\r
-               text = prompt("Text to display ?",filename);\r
-       } else {\r
-               text = getCaretText();\r
-       }\r
-\r
-       // add collection name when not private collection (or editing a message that's not your)\r
-       var fullName;\r
-       if (isNaN(collection) || (nucleusAuthorId != collection)) {\r
-               fullName = collection + '/' + filename;\r
-       } else {\r
-               fullName = filename;\r
-       }\r
-\r
-       var replaceBy = '<%media(' +  fullName + '|' + text +')%>';\r
-\r
-       insertAtCaret(replaceBy);\r
-       updAllPreviews();\r
-}\r
-\r
-\r
-\r
-// function to prevent submitting form data twice\r
-var submitcount=0;\r
-function checkSubmit() {\r
-       if (submitcount == 0) {\r
-               submitcount++;\r
-               return true;\r
-       } else {\r
-               return false;\r
-       }\r
-}\r
-\r
-\r
-// code to store the caret (cursor) position of a text field/text area\r
-// taken from javascript.faqts and modified\r
-// http://www.faqts.com/knowledge_base/view.phtml/aid/1052/fid/130\r
-\r
-// stores the caret\r
-function storeCaret (textEl) {\r
-\r
-       // store caret\r
-       if (textEl.createTextRange)\r
-               textEl.caretPos = document.selection.createRange().duplicate();\r
-\r
-       // also store lastselectedelement\r
-       lastSelected = textEl;\r
-\r
-       nonie_FormType = textEl.name;\r
-\r
-       scrollTop = textEl.scrollTop;\r
-}\r
-\r
-var lastSelected;\r
-\r
- // inserts text at caret (overwriting selection)\r
-function insertAtCaret (text) {\r
-       var textEl = lastSelected;\r
-       if (textEl && textEl.createTextRange && textEl.caretPos) {\r
-               var caretPos = textEl.caretPos;\r
-               caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text + ' ' : text;\r
-       } else if (!document.all && document.getElementById) {\r
-               mozReplace(document.getElementById('input' + nonie_FormType), text);\r
-               if(scrollTop>-1) {\r
-                       document.getElementById('input' + nonie_FormType).scrollTop = scrollTop;\r
-               }\r
-       } else if (textEl) {\r
-               textEl.value  += text;\r
-       } else {\r
-               document.getElementById('input' + nonie_FormType).value += text;\r
-               if(scrollTop>-1) {\r
-                       document.getElementById('input' + nonie_FormType).scrollTop = scrollTop;\r
-               }\r
-       }\r
-       updAllPreviews();\r
-}\r
-\r
- // inserts a tag around the selected text\r
-function insertAroundCaret (textpre, textpost) {\r
-       var textEl = lastSelected;\r
-\r
-       if (textEl && textEl.createTextRange && textEl.caretPos) {\r
-               var caretPos = textEl.caretPos;\r
-               caretPos.text = textpre + caretPos.text + textpost;\r
-       } else if (!document.all && document.getElementById) {\r
-               mozWrap(document.getElementById('input' + nonie_FormType), textpre, textpost);\r
-               if(scrollTop>-1) {\r
-                       document.getElementById('input' + nonie_FormType).scrollTop = scrollTop;\r
-               }\r
-       } else {\r
-               document.getElementById('input' + nonie_FormType).value += textpre + textpost;\r
-               if(scrollTop>-1) {\r
-                       document.getElementById('input' + nonie_FormType).scrollTop = scrollTop;\r
-               }\r
-       }\r
-\r
-       updAllPreviews();\r
-}\r
-\r
-/* some methods to get things working in Mozilla as well */\r
-function mozWrap(txtarea, lft, rgt) {\r
-       var selLength = txtarea.textLength;\r
-       var selStart = txtarea.selectionStart;\r
-       var selEnd = txtarea.selectionEnd;\r
-       if (selEnd==1 || selEnd==2) selEnd=selLength;\r
-       var s1 = (txtarea.value).substring(0,selStart);\r
-       var s2 = (txtarea.value).substring(selStart, selEnd)\r
-       var s3 = (txtarea.value).substring(selEnd, selLength);\r
-       txtarea.value = s1 + lft + s2 + rgt + s3;\r
-}\r
-function mozReplace(txtarea, newText) {\r
-       var selLength = txtarea.textLength;\r
-       var selStart = txtarea.selectionStart;\r
-       var selEnd = txtarea.selectionEnd;\r
-       if (selEnd==1 || selEnd==2) selEnd=selLength;\r
-       var s1 = (txtarea.value).substring(0,selStart);\r
-       var s2 = (txtarea.value).substring(selStart, selEnd)\r
-       var s3 = (txtarea.value).substring(selEnd, selLength);\r
-       txtarea.value = s1 + newText + s3;\r
-}\r
-function mozSelectedText() {\r
-       var txtarea = document.getElementById('input' + nonie_FormType);\r
-       var selLength = txtarea.textLength;\r
-       var selStart = txtarea.selectionStart;\r
-       var selEnd = txtarea.selectionEnd;\r
-       if (selEnd==1 || selEnd==2) selEnd=selLength;\r
-       return (txtarea.value).substring(selStart, selEnd);\r
-}\r
-\r
-function getCaretText() {\r
-       if (!document.all && document.getElementById)\r
-               return mozSelectedText();\r
-       else\r
-               return lastSelected.caretPos.text;\r
-}\r
-\r
-function isCaretEmpty() {\r
-       if (lastSelected && lastSelected.createTextRange && lastSelected.caretPos)\r
-               return (lastSelected.caretPos.text == '');\r
-       else if (!document.all && document.getElementById)\r
-               return (mozSelectedText() == '');\r
-       else\r
-               return true;\r
-}\r
-\r
-function BtnHighlight(el) {\r
-       with(el.style){\r
-               borderLeft="1px solid gray";\r
-               borderRight="1px solid #e9e9e9";\r
-               borderTop="1px solid gray";\r
-               borderBottom="1px solid #e9e9e9";\r
-       }\r
-}\r
-\r
-function BtnNormal(el) {\r
-       with(el.style){\r
-               padding="3px";\r
-               border="1px solid #dddddd";\r
-       }\r
-}\r
-\r
+/**
+  * 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 file contains functions to allow adding items from inside the weblog.
+  * Also contains code to avoid submitting form data twice.
+  *
+  * $Id: edit.js 1388 2009-07-18 06:31:28Z shizuki $
+  */
+
+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() {
+
+       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;
+}
+
+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";
+       }
+}
+
@@ -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
+<!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
@@ -1,36 +1,36 @@
-/**\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
-  * script the check (on the clientside) if a entered value\r
-  * is a valid number and remove the invalid chars\r
-  *\r
-  * $Id: numbercheck.js 1388 2009-07-18 06:31:28Z shizuki $\r
-  */\r
-\r
-function checkNumeric(f)\r
-{\r
-       newval='';\r
-       dot = false;\r
-       for (i = 0; i < f.value.length; i++) {\r
-               c = f.value.substring(i,i+1);\r
-               if (isInteger(c) || ((c == '.')&&(dot == false)) || ((i == 0)&&(c == '-'))) {\r
-                       newval += c;\r
-                       if (c == '.') {\r
-                               dot = true;\r
-                       }\r
-               }\r
-       }\r
-       f.value = newval;\r
-}\r
-\r
-function isInteger(value)\r
-{\r
-       return (parseInt(value) == value);\r
-}\r
+/**
+  * 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)
+  *
+  * script the check (on the clientside) if a entered value
+  * is a valid number and remove the invalid chars
+  *
+  * $Id: numbercheck.js 1388 2009-07-18 06:31:28Z shizuki $
+  */
+
+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);
+}
@@ -1,62 +1,62 @@
-/*\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
- * $Id: opennew.js 1388 2009-07-18 06:31:28Z shizuki $\r
- *\r
- * JavaScript to open non-local links in a new window.\r
- *\r
- * How to use:\r
- *  in the <head>...</head> section of your page, add the following line:\r
- *\r
- *  <script type="text/javascript" src="nucleus/javascript/opennew.js"></script>\r
- *\r
- *  Then, add the following to your <body> tag:\r
- *\r
- *  <body ... onload="setOpenNewWindow(true);">\r
- *\r
- *  And you're all done.\r
- *\r
- * Variables that can be overridden if necessary:\r
- *     local = something to recognize local URLs (by default, if your page is something like\r
- *              http://www.example.com/path/page.html, then local will be automatically set to\r
- *              http://www.example.com/path/)\r
- *      exception = something to recognize exceptions to the local check. You might need this\r
- *                  when you use a 'click-through' type of script (e.g. when\r
- *                  http://www.example.com/path/click.php?http://otherpage.com/ would \r
- *                  auto-redirect to otherpage.com and record a click in your logs)\r
- *                  In most of the cases, this variable is unneeded and can be left empty\r
- *      destinationFrame = name of the destination frame (by default this is "_blank" to spawn a\r
- *                         new window for each link clicked)\r
- */\r
-\r
-\r
-var local = document.URL.substring(0,document.URL.lastIndexOf('/'));\r
-var exception = "";\r
-var destinationFrame = "_blank";\r
-\r
-function setOpenNewWindow(newWin) {\r
-       if (newWin) {\r
-               from = ""; to = destinationFrame;\r
-       } else {\r
-               from = destinationFrame; to = "";\r
-       }\r
-\r
-       for (var i=0; i<=(document.links.length-1); i++) {\r
-               if (document.links[i].target == from) {\r
-\r
-                       var href = document.links[i].href;\r
-                       var isLocal = (href.indexOf(local) != -1);\r
-                       if (isLocal && ((exception=="") || (href.indexOf(exception) != -1)))\r
-                               isLocal = false;\r
-                       if (!isLocal)\r
-                               document.links[i].target = to;\r
-               }\r
-       }\r
+/*
+ * 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)
+ *
+ * $Id: opennew.js 1388 2009-07-18 06:31:28Z shizuki $
+ *
+ * JavaScript to open non-local links in a new window.
+ *
+ * How to use:
+ *  in the <head>...</head> section of your page, add the following line:
+ *
+ *  <script type="text/javascript" src="nucleus/javascript/opennew.js"></script>
+ *
+ *  Then, add the following to your <body> tag:
+ *
+ *  <body ... onload="setOpenNewWindow(true);">
+ *
+ *  And you're all done.
+ *
+ * Variables that can be overridden if necessary:
+ *     local = something to recognize local URLs (by default, if your page is something like
+ *              http://www.example.com/path/page.html, then local will be automatically set to
+ *              http://www.example.com/path/)
+ *      exception = something to recognize exceptions to the local check. You might need this
+ *                  when you use a 'click-through' type of script (e.g. when
+ *                  http://www.example.com/path/click.php?http://otherpage.com/ would 
+ *                  auto-redirect to otherpage.com and record a click in your logs)
+ *                  In most of the cases, this variable is unneeded and can be left empty
+ *      destinationFrame = name of the destination frame (by default this is "_blank" to spawn a
+ *                         new window for each link clicked)
+ */
+
+
+var local = document.URL.substring(0,document.URL.lastIndexOf('/'));
+var exception = "";
+var destinationFrame = "_blank";
+
+function setOpenNewWindow(newWin) {
+       if (newWin) {
+               from = ""; to = destinationFrame;
+       } else {
+               from = destinationFrame; to = "";
+       }
+
+       for (var i=0; i<=(document.links.length-1); i++) {
+               if (document.links[i].target == from) {
+
+                       var href = document.links[i].href;
+                       var isLocal = (href.indexOf(local) != -1);
+                       if (isLocal && ((exception=="") || (href.indexOf(exception) != -1)))
+                               isLocal = false;
+                       if (!isLocal)
+                               document.links[i].target = to;
+               }
+       }
 }
\ No newline at end of file
@@ -1,66 +1,66 @@
-/**\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
-  *    Javascript code to hide empty textareas when editing templates.\r
-  *\r
-  * @require compatibility.js\r
-  *\r
-  * $Id: templateEdit.js 1388 2009-07-18 06:31:28Z shizuki $\r
-  */\r
-\r
-var amountOfFields = 1;\r
-var editText = 'empty field (click to edit)';\r
-\r
-function hideUnused() {\r
-       while (document.getElementById('textarea' + amountOfFields)) \r
-               amountOfFields++;\r
-       amountOfFields--;\r
-\r
-       for (var i=1;i<=amountOfFields;i++) {\r
-               var el = document.getElementById('textarea' + i);\r
-\r
-               // hide textareas when empty, and add onclick event\r
-               // to make them visible again\r
-               if (el.value == '') {\r
-                       el.style.display = 'none';\r
-                       var tdEl = document.getElementById('td' + i);\r
-                       \r
-                       var aHref = createElement('a');\r
-                       aHref.href = '';\r
-                       aHref.className = "expandLink";\r
-                       aHref.id = "expandLink" + i;\r
-                       aHref.onclick = new Function("return makeVisible("+i+")");\r
-                       aHref.tabIndex = el.tabIndex;\r
-                       aHref.title = editText;\r
-                       aHref.appendChild(document.createTextNode(editText));\r
-\r
-                       tdEl.appendChild(aHref);\r
-                       \r
-               }\r
-       }\r
-\r
-}\r
-\r
-function setTemplateEditText(newText) {\r
-       editText = newText;\r
-}\r
-\r
-function makeVisible(i) {\r
-       var textareaEl = document.getElementById('textarea' + i);\r
-       var expandEl = document.getElementById('expandLink' + i);\r
-\r
-       textareaEl.style.display = 'block';\r
-       expandEl.style.display = 'none';\r
-\r
-       textareaEl.focus();\r
-       return false;\r
-}\r
-\r
+/**
+  * 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)
+  *
+  *    Javascript code to hide empty textareas when editing templates.
+  *
+  * @require compatibility.js
+  *
+  * $Id: templateEdit.js 1388 2009-07-18 06:31:28Z shizuki $
+  */
+
+var amountOfFields = 1;
+var editText = 'empty field (click to edit)';
+
+function hideUnused() {
+       while (document.getElementById('textarea' + amountOfFields)) 
+               amountOfFields++;
+       amountOfFields--;
+
+       for (var i=1;i<=amountOfFields;i++) {
+               var el = document.getElementById('textarea' + i);
+
+               // hide textareas when empty, and add onclick event
+               // to make them visible again
+               if (el.value == '') {
+                       el.style.display = 'none';
+                       var tdEl = document.getElementById('td' + i);
+                       
+                       var aHref = createElement('a');
+                       aHref.href = '';
+                       aHref.className = "expandLink";
+                       aHref.id = "expandLink" + i;
+                       aHref.onclick = new Function("return makeVisible("+i+")");
+                       aHref.tabIndex = el.tabIndex;
+                       aHref.title = editText;
+                       aHref.appendChild(document.createTextNode(editText));
+
+                       tdEl.appendChild(aHref);
+                       
+               }
+       }
+
+}
+
+function setTemplateEditText(newText) {
+       editText = newText;
+}
+
+function makeVisible(i) {
+       var textareaEl = document.getElementById('textarea' + i);
+       var expandEl = document.getElementById('expandLink' + i);
+
+       textareaEl.style.display = 'block';
+       expandEl.style.display = 'none';
+
+       textareaEl.focus();
+       return false;
+}
+
 window.onload = hideUnused;    
\ No newline at end of file
-/**\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
-  * This page contains xmlHTTPRequest functions for:\r
-  * - AutoSaveDraft\r
-  *\r
-  *\r
-  * Usage:\r
-  * - Add in the page before the form open tag:\r
-  *     <script type="text/javascript" src="javascript/xmlhttprequest.js"></script>\r
-  * - Add in the page behind the form close tag:\r
-  *     var xmlhttprequest = new Array();\r
-  *     xmlhttprequest[0] = createHTTPHandler(); // AutoDraft handler\r
-  *     xmlhttprequest[1] = createHTTPHandler(); // UpdateTicket handler\r
-  *     var seconds = now(); // Last AutoDraft time\r
-  *     var checks = 0; // Number of checks since last AutoDraft\r
-  *     var addform = document.getElementById('addform'); // The form id\r
-  *     var goal = document.getElementById('lastsaved'); // The html div id where 'Last saved: date time' must come\r
-  *     var goalurl = 'action.php'; // The PHP file where the content must be posted to (action.php)\r
-  *     var lastsavedtext = 'Last saved'; // The language variable for 'Last saved'\r
-  *     var formtype = 'add'; // Add or edit form\r
-  * - Add to the form tag:\r
-  *     id="addform"\r
-  * - Add to the textarea's and text fields:\r
-  *     onkeyup="doMonitor();"\r
-  * - Add tot the selectboxes and radio buttons\r
-  *     onchange="doMonitor();"\r
-  * - Add to the form:\r
-  *     <input type="hidden" name="draftid" value="0" />\r
-  * - Optionally a autosave now button can be add:\r
-  *     <input type="button" name="autosavenow" value="AutoSave now" onclick="autoSaveDraft();" />\r
-  *\r
-  *\r
-  * $Id: xmlhttprequest.js 1388 2009-07-18 06:31:28Z shizuki $\r
-  */\r
-\r
-/**\r
- * Creates the xmlHTTPRequest handler\r
- */\r
-function createHTTPHandler() {\r
-       var httphandler = false;\r
-       /*@cc_on @*/\r
-       /*@if (@_jscript_version >= 5)\r
-               // JScript gives us Conditional compilation, we can cope with old IE versions.\r
-               // and security blocked creation of the objects.\r
-               try {\r
-                       httphandler = new ActiveXObject("Msxml2.XMLHTTP");\r
-               }\r
-               catch (e) {\r
-                       try {\r
-                               httphandler = new ActiveXObject("Microsoft.XMLHTTP");\r
-                       }\r
-                       catch (E) {\r
-                               httphandler = false;\r
-                       }\r
-               }\r
-       @end @*/\r
-       if (!httphandler && typeof XMLHttpRequest != 'undefined') {\r
-               httphandler = new XMLHttpRequest();\r
-       }\r
-       return httphandler;\r
-}\r
-\r
-/**\r
- * Auto saves as draft\r
- */\r
-function autoSaveDraft() {\r
-       checks = 0;\r
-       seconds = now();\r
-\r
-       var title = encodeURIComponen(addform.title.value);\r
-       var body = encodeURIComponen(addform.body.value);\r
-       var catid = addform.catid.options[addform.catid.selectedIndex].value;\r
-       var more = encodeURIComponen(addform.more.value);\r
-       var closed = 0;\r
-       if (addform.closed[0].checked) {\r
-               closed = addform.closed[0].value;\r
-       }\r
-       else if (addform.closed[1].checked) {\r
-               closed = addform.closed[1].value;\r
-       }\r
-       var ticket = addform.ticket.value;\r
-\r
-       var querystring = 'action=autodraft';\r
-       querystring += '&title=' + title;\r
-       querystring += '&body=' + body;\r
-       querystring += '&catid=' + catid;\r
-       querystring += '&more=' + more;\r
-       querystring += '&closed=' + closed;\r
-       querystring += '&ticket=' + ticket;\r
-       if (formtype == 'edit') {\r
-               querystring += '&itemid=' + addform.itemid.value;\r
-               querystring += '&type=edit';\r
-       }\r
-       else {\r
-               querystring += '&blogid=' + addform.blogid.value;\r
-               querystring += '&type=add';\r
-       }\r
-       if (addform.draftid.value > 0) {\r
-               querystring += '&draftid=' + addform.draftid.value;\r
-       }\r
-\r
-       xmlhttprequest[0].open('POST', goalurl, true);\r
-       xmlhttprequest[0].onreadystatechange = checkMonitor;\r
-       xmlhttprequest[0].setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\r
-       xmlhttprequest[0].send(querystring);\r
-\r
-       var querystring = 'action=updateticket&ticket=' + ticket;\r
-\r
-       xmlhttprequest[1].open('POST', goalurl, true);\r
-       xmlhttprequest[1].onreadystatechange = updateTicket;\r
-       xmlhttprequest[1].setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\r
-       xmlhttprequest[1].send(querystring);\r
-}\r
-\r
-/**\r
- * Monitors the edits\r
- */\r
-function doMonitor() {\r
-       if (checks * (now() - seconds) > 120 * 1000 * 50) {\r
-               autoSaveDraft();\r
-       }\r
-       else {\r
-               checks++;\r
-       }\r
-}\r
-\r
-/**\r
- * Checks the process of the saving\r
- */\r
-function checkMonitor() {\r
-       if (xmlhttprequest[0].readyState == 4) {\r
-               if (xmlhttprequest[0].responseText) {\r
-                       if (xmlhttprequest[0].responseText.substr(0, 4) == 'err:') {\r
-                               goal.innerHTML = xmlhttprequest[0].responseText.substr(4) + ' (' + formattedDate() + ')';\r
-                       }\r
-                       else {\r
-                               addform.draftid.value = xmlhttprequest[0].responseText;\r
-                               goal.innerHTML = lastsavedtext + ' ' + formattedDate();\r
-                       }\r
-               }\r
-       }\r
-}\r
-\r
-/**\r
- * Checks the process of the ticket updating\r
- */\r
-function updateTicket() {\r
-       if (xmlhttprequest[1].readyState == 4) {\r
-               if (xmlhttprequest[1].responseText) {\r
-                       if (xmlhttprequest[1].responseText.substr(0, 4) == 'err:') {\r
-                               goal.innerHTML = xmlhttprequest[1].responseText.substr(4) + ' (' + formattedDate() + ')';\r
-                       }\r
-                       else {\r
-                               addform.ticket.value = xmlhttprequest[1].responseText;\r
-                       }\r
-               }\r
-       }\r
-}\r
-\r
-/**\r
- * Gets now in milliseconds\r
- */\r
-function now() {\r
-       var now = new Date();\r
-       return now.getTime();\r
-}\r
-\r
-/**\r
- * Gets now in the local dateformat\r
- */\r
-function formattedDate() {\r
-       var now = new Date();\r
-       return now.toLocaleDateString() + ' ' + now.toLocaleTimeString();\r
+/**
+  * 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 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 1388 2009-07-18 06:31:28Z shizuki $
+  */
+
+/**
+ * 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 = encodeURIComponen(addform.title.value);
+       var body = encodeURIComponen(addform.body.value);
+       var catid = addform.catid.options[addform.catid.selectedIndex].value;
+       var more = encodeURIComponen(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
index 67bb1f5..1280657 100644 (file)
        <html xmlns="http://www.w3.org/1999/xhtml">\r
        <head>\r
        <title><%title%></title>\r
-       <link rel="stylesheet" type="text/css" href="<%skinfile(styles/bookmarklet.css)%>" /> \r
-       <link rel="stylesheet" type="text/css" href="<%skinfile(styles/addedit.css)%>" />\r
-       <script type="text/javascript" src="<%skinfile(javascript/bookmarklet.js)%>"></script>\r
-       <script type="text/javascript" src="<%skinfile(javascript/edit.js)%>"></script>\r
-       <script type="text/javascript" src="<%skinfile(javascript/numbercheck.js)%>"></script>\r
+       <link rel="stylesheet" type="text/css" href="<%skinfile(/styles/bookmarklet.css)%>" /> \r
+       <link rel="stylesheet" type="text/css" href="<%skinfile(/styles/addedit.css)%>" />\r
+       <script type="text/javascript" src="<%skinfile(/javascripts/bookmarklet.js)%>"></script>\r
+       <script type="text/javascript" src="<%skinfile(/javascripts/edit.js)%>"></script>\r
+       <script type="text/javascript" src="<%skinfile(/javascripts/numbercheck.js)%>"></script>\r
        \r
        <%if(autosave)%>\r
-       <script type="text/javascript" src="<%skinfile(javascript/xmlhttprequest.js)%>"></script>\r
+       <script type="text/javascript" src="<%skinfile(/javascripts/xmlhttprequest.js)%>"></script>\r
        <%endif%>\r
        \r
        <%init%>\r
similarity index 77%
rename from skins/admin/defaultadmin/styles/addedit.css
rename to skins/admin/bookmarklet/styles/addedit.css
index c3cf0a3..f8749f1 100644 (file)
@@ -1,39 +1,46 @@
-/*\r
-       This stylesheet serves to make item previews look nicer, and to markup the \r
-       buttonbar\r
-       \r
-       $Id: addedit.css 757 2005-08-12 07:29:40Z dekarma $\r
-*/\r
-\r
-.leftbox, .rightbox {\r
-       margin: 3px;\r
-       padding: 3px;\r
-       font-size: larger;\r
-       width: 20%;\r
-}\r
-.leftbox {\r
-       float: left;\r
-       border-right: 2px solid #888;   \r
-}\r
-.rightbox {\r
-       float: right;\r
-       border-left: 2px solid #888;    \r
-}\r
-\r
-/* markup buttons */\r
-.jsbutton {\r
-       text-align: center; \r
-\r
-       padding: 3px;\r
-       border: 1px solid #dddddd;\r
-}\r
-\r
-.jsbuttonspacer {\r
-       padding-right: 10px;\r
-}\r
-\r
-.jsbuttonbar {\r
-       padding: 3px;\r
-       cursor: default;\r
-}\r
-\r
+/*
+       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 {
+       padding: 3px;
+       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;
+}
+
+.jsbuttonend {
+       clear: both;
+}
-/*@charset 'UTF-8';*/\r
-\r
-/*\r
-       admin area style\r
-       \r
-       $Id: admin.css 1261 2008-05-22 20:32:43Z kaigreve $\r
-*/\r
-\r
-body {\r
-       background: #fff url(contemporary/background.png) repeat-x;\r
-}\r
-\r
-body, td, th, a, li, ul, textarea {\r
-       color: #333\r
-       font-family: "Trebuchet MS", "Bitstream Vera Sans", verdana, lucida, arial, helvetica, sans-serif;\r
-}\r
-\r
-/* basic link appearance */\r
-a:link, a:visited {\r
-       color: #1D3565;\r
-       font-weight: bold;\r
-       text-decoration: none;\r
-}\r
-\r
-a:hover {\r
-       text-decoration: underline;\r
-}\r
-\r
-/* textareas */\r
-textarea {\r
-       font-size: small;\r
-       width: 95%;\r
-}\r
-\r
-/* textareas for skin/template editing have monospace fonts */\r
-textarea.skinedit, textarea.templateedit {\r
-       font-family: monospace;\r
-       font-size: medium;\r
-}\r
-\r
-/* images */\r
-img    {\r
-       border: none;\r
-}\r
-\r
-img.skinpreview {\r
-       border: 1px solid #ccc;\r
-}\r
-\r
-/* forms */\r
-form {\r
-       margin-bottom: 0px;\r
-}\r
-\r
-label {\r
-       cursor: pointer;\r
-}\r
-\r
-input.transparent {\r
-       background-color: transparent;\r
-}\r
-\r
-/* preformatted text */\r
-pre {\r
-       margin-left: 10px;\r
-}\r
-\r
-/* a div that has an indent */\r
-div.indent {\r
-       margin-left: 40px;\r
-}\r
-\r
-.skip {\r
-       display: none;\r
-}\r
-\r
-.error {\r
-       color: red;\r
-       font-size: 1.2em;\r
-}\r
-\r
-/* header */\r
-h1 {\r
-       text-align: right;\r
-       font-size: 30px;\r
-       font-weight: 900;\r
-       letter-spacing: 0.1em;\r
-       /*color: #0001AA;       */\r
-       color: #596d9d;\r
-       margin: 0 0 5px 135px;\r
-       height: 35px;\r
-       /*display: none;        hide the header if you don't want it*/\r
-\r
-}\r
-\r
-/* quick menu on left */\r
-/* \r
-       It's a real pain getting this absolute positioning to work correctly\r
-       in all browsers. IE in particular seems to have a lot of trouble, even\r
-       when a valid doctype is present. Because of the way it is solved currently,\r
-       the top of the quickmenu and the contents will not line up\r
-*/\r
-#quickmenu {\r
-       position: absolute;\r
-       overflow: hidden;\r
-       \r
-       top: 10px;\r
-       left: 10px;\r
-\r
-       width: 150px;\r
-       margin: 0px;\r
-       padding: 0px;\r
-       \r
-       font-size:9pt;/*add yotaka 090323*/\r
-       color:#333;/* add */\r
-       \r
-       border-width: 1px;\r
-       border-style: solid;\r
-       border-color: #bbb;\r
-\r
-       background: #ffffff url(quickb.jpg) top left fixed repeat-y; \r
-}\r
-\r
-#quickmenu ul {\r
-       list-style-type: none;\r
-       margin: 0;\r
-       padding: 0;\r
-}\r
-\r
-#quickmenu li {\r
-       padding: 0;\r
-       margin: 0;\r
-       text-align: center;\r
-       border-bottom: 1px solid #ccc;\r
-}\r
-\r
-#quickmenu p {\r
-       padding: 5px;\r
-       margin: 0px;\r
-       text-align: justify;\r
-}\r
-\r
-#quickmenu a {\r
-       display: block;\r
-       padding: 5px;\r
-       font-size: 1em;\r
-       line-height: 1.5;\r
-       text-decoration: none;\r
-}\r
-\r
-#quickmenu a:hover {\r
-       background: #ffffff url(quickb-hover.jpg) top left fixed repeat-y; \r
-       color: #333;\r
-       letter-spacing: 1px;\r
-}\r
-\r
-#quickmenu h2 {\r
-       font-size: small;\r
-       text-align: center;\r
-       padding: 1px 0px 1px 0px;\r
-       margin: 0px;\r
-       border-bottom: 1px solid #bbb;  \r
-       background-color: #ddd;\r
-       color: #333;\r
-}\r
-\r
-#quickmenu form {\r
-       margin: 0;\r
-       padding: 5px;\r
-       text-align: center;\r
-}\r
-\r
-#quickmenu option {\r
-       font-size: 0.9em;\r
-}\r
-\r
-.loginname {\r
-       float: right;\r
-       font-size: small;\r
-       text-align: right;\r
-       line-height: normal;\r
-       padding-left: 5px;\r
-       background-color: white;\r
-}\r
-\r
-/* page content */\r
-#content {\r
-       margin-left: 163px;\r
-       font-style: normal;\r
-       text-decoration: none;\r
-       color: #333;\r
-       text-align: justify;\r
-       line-height: 13pt;\r
-\r
-       border-width: 1px;\r
-       border-style: solid;\r
-       border-color: #bbb;\r
-       \r
-       /* rounded borders in gecko-based browsers? why not :) */\r
-       -moz-border-radius: 10px;       \r
-\r
-       -webkit-border-radius: 10px;\r
-       border-radius: 10px;\r
-       padding: 10px 10px 0 10px;      \r
-       \r
-       background-color: white;\r
-       \r
-}\r
-\r
-#content h2 {\r
-       color: #596d9d; \r
-\r
-       border-color: gray;\r
-       border-style: dashed;\r
-       border-width: 0px 0px 1px 0px;\r
-\r
-       font-size: large;\r
-       line-height: 120%;\r
-\r
-       text-decoration: none;\r
-       font-weight: bold; \r
-}\r
-\r
-#content h3 {\r
-       border-color: gray;\r
-       border-style: dotted;\r
-       border-width: 0px 0px 1px 0px;\r
-       font-size: medium;\r
-       font-weight: normal;\r
-       line-height: 120%;\r
-\r
-       color: gray;\r
-       padding-left: 20px;\r
-}\r
-\r
-#content .note, pre {\r
-       background-color: #ddd;\r
-       padding: 5px;\r
-}\r
-\r
-/* \r
-       font size tricks, to make it work in all browsers\r
-       \r
-       See: \r
-       http://diveintoaccessibility.org/day_26_using_relative_font_sizes.html\r
-\r
-       (netscape 4 trick is left out, Nucleus doesn't work anyway in that browser)     \r
-       #content should be 'small' (in standard-compliant browsers)\r
-       \r
-*/\r
-\r
-#content {\r
-  font-size: small;\r
-  voice-family: "\"}\"";\r
-  voice-family: inherit;\r
-  font-size: small;\r
-}\r
-html>body #content { font-size: small; }\r
-\r
-/* tables */\r
-div#content table {\r
-       border: none;\r
-       width: 100%;\r
-       border-collapse: collapse;\r
-       margin-bottom: 10px;\r
-       margin-top: 10px;\r
-}\r
-\r
-div#content table tbody tr {\r
-       background-color: #FFFFFF;\r
-}\r
-\r
-div#content table tbody tr:hover {\r
-       background-color:       #F5F5F5;\r
-}\r
-\r
-div#content table thead tr th {\r
-       border: none;\r
-       background-color: #BBBBCC;\r
-       color: #000000;\r
-       font-size: small;\r
-}\r
-\r
-div#content table thead th,\r
-div#content table tbody td {\r
-       padding: 4px;\r
-       empty-cells: show;\r
-}\r
-\r
-div#content table.systemoverview thead th,\r
-div#content table.systemoverview tbody td {\r
-       width:  50%;\r
-}\r
-\r
-div#content table tbody tr td {\r
-       border: 1px solid #ddd;\r
-       font-size: small;\r
-       vertical-align: top;\r
-       text-align: left;\r
-}\r
-\r
-div#content table tbody tr td a:link,\r
-div#content table tbody tr td a:visited {\r
-       text-decoration: underline;\r
-       color: black;\r
-       font-weight: normal;\r
-}\r
-\r
-div#content table tbody tr td a:hover {\r
-       color: #1D3565;\r
-       text-decoration: underline;\r
-}\r
-\r
-div#content table tbody tr td.draft,\r
-div#content table tbody tr td.future {\r
-       background-color: #FFFFEE;\r
-}\r
-\r
-div#content table.navigation td,\r
-div#content table.navigation th {\r
-       border: none;\r
-}\r
-\r
-div#content table tbody td h3 {\r
-       padding:        0px;\r
-       margin: 0px 0px 2em 0px;\r
-       border: 0px;\r
-       color:  #000000;\r
-       font-size:      small;\r
-       font-weight:    normal;\r
-       line-height:    13pt;\r
-}\r
-\r
-div#content table tbody td h3#base_skin {\r
-       font-weight:    bold;\r
-}\r
-\r
-/* definitive list */\r
-div#content table tbody tr td dl {\r
-       margin: 0px;\r
-       padding:        0px;\r
-}\r
-\r
-div#content table tbody tr td:first-child dl dt {\r
-       margin: 0px;\r
-       padding:        0px 5px 0px 0px;\r
-       display:        inline;\r
-       float:  left;\r
-       clear:  both;\r
-}\r
-\r
-div#content table tbody tr td:first-child dl dd {\r
-       margin: 0px;\r
-       padding:        0px;\r
-       display:        block;\r
-}\r
-\r
-div#content table tbody tr td dl dd {\r
-       margin: 0px 0px 1em 0px;\r
-}\r
-\r
-/* unorderd list */\r
-div#content table tbody tr td ul {\r
-       margin: 0px;\r
-       padding:        0px;\r
-       list-style:     none;\r
-}\r
-\r
-div#content table tbody tr td ul li {\r
-       margin: 0px;\r
-       padding:        0px;\r
-       white-space:    nowrap;\r
-}\r
-\r
-.batchoperations {\r
-       background-color: #EEEEFF;\r
-       width: auto;\r
-       padding: 5px;\r
-       text-align: right;\r
-}\r
-\r
-/* footer */\r
-div.foot {\r
-       padding: 2px 0px 2px 10px;\r
-       margin:10px -10px 0 -10px;\r
-       text-align: center;\r
-}\r
+/*@charset 'UTF-8';*/
+
+/*
+       admin area style
+       
+       $Id: admin.css 1261 2008-05-22 20:32:43Z kaigreve $
+*/
+
+body {
+       background: #fff url(contemporary/background.png) repeat-x;
+}
+
+body, td, th, a, li, ul, textarea {
+       color: #333
+       font-family: "Trebuchet MS", "Bitstream Vera Sans", verdana, lucida, arial, helvetica, sans-serif;
+}
+
+/* basic link appearance */
+a:link, a:visited {
+       color: #1D3565;
+       font-weight: bold;
+       text-decoration: none;
+}
+
+a:hover {
+       text-decoration: underline;
+}
+
+/* textareas */
+textarea {
+       font-size: small;
+       width: 95%;
+}
+
+/* textareas for skin/template editing have monospace fonts */
+textarea.skinedit, textarea.templateedit {
+       font-family: monospace;
+       font-size: medium;
+}
+
+/* images */
+img    {
+       border: none;
+}
+
+img.skinpreview {
+       border: 1px solid #ccc;
+}
+
+/* forms */
+form {
+       margin-bottom: 0px;
+}
+
+label {
+       cursor: pointer;
+}
+
+input.transparent {
+       background-color: transparent;
+}
+
+/* preformatted text */
+pre {
+       margin-left: 10px;
+}
+
+/* a div that has an indent */
+div.indent {
+       margin-left: 40px;
+}
+
+.skip {
+       display: none;
+}
+
+.error {
+       color: red;
+       font-size: 1.2em;
+}
+
+/* header */
+h1 {
+       text-align: right;
+       font-size: 30px;
+       font-weight: 900;
+       letter-spacing: 0.1em;
+       /*color: #0001AA;       */
+       color: #596d9d;
+       margin: 0 0 5px 135px;
+       height: 35px;
+       /*display: none;        hide the header if you don't want it*/
+
+}
+
+/* quick menu on left */
+/* 
+       It's a real pain getting this absolute positioning to work correctly
+       in all browsers. IE in particular seems to have a lot of trouble, even
+       when a valid doctype is present. Because of the way it is solved currently,
+       the top of the quickmenu and the contents will not line up
+*/
+#quickmenu {
+       position: absolute;
+       overflow: hidden;
+       
+       top: 10px;
+       left: 10px;
+
+       width: 150px;
+       margin: 0px;
+       padding: 0px;
+       
+       font-size:9pt;/*add yotaka 090323*/
+       color:#333;/* add */
+       
+       border-width: 1px;
+       border-style: solid;
+       border-color: #bbb;
+
+       background: #ffffff url(quickb.jpg) top left fixed repeat-y; 
+}
+
+#quickmenu ul {
+       list-style-type: none;
+       margin: 0;
+       padding: 0;
+}
+
+#quickmenu li {
+       padding: 0;
+       margin: 0;
+       text-align: center;
+       border-bottom: 1px solid #ccc;
+}
+
+#quickmenu p {
+       padding: 5px;
+       margin: 0px;
+       text-align: justify;
+}
+
+#quickmenu a {
+       display: block;
+       padding: 5px;
+       font-size: 1em;
+       line-height: 1.5;
+       text-decoration: none;
+}
+
+#quickmenu a:hover {
+       background: #ffffff url(quickb-hover.jpg) top left fixed repeat-y; 
+       color: #333;
+       letter-spacing: 1px;
+}
+
+#quickmenu h2 {
+       font-size: small;
+       text-align: center;
+       padding: 1px 0px 1px 0px;
+       margin: 0px;
+       border-bottom: 1px solid #bbb;  
+       background-color: #ddd;
+       color: #333;
+}
+
+#quickmenu form {
+       margin: 0;
+       padding: 5px;
+       text-align: center;
+}
+
+#quickmenu option {
+       font-size: 0.9em;
+}
+
+.loginname {
+       float: right;
+       font-size: small;
+       text-align: right;
+       line-height: normal;
+       padding-left: 5px;
+       background-color: white;
+}
+
+/* page content */
+#content {
+       margin-left: 163px;
+       font-style: normal;
+       text-decoration: none;
+       color: #333;
+       text-align: justify;
+       line-height: 13pt;
+
+       border-width: 1px;
+       border-style: solid;
+       border-color: #bbb;
+       
+       /* rounded borders in gecko-based browsers? why not :) */
+       -moz-border-radius: 10px;       
+
+       -webkit-border-radius: 10px;
+       border-radius: 10px;
+       padding: 10px 10px 0 10px;      
+       
+       background-color: white;
+       
+}
+
+#content h2 {
+       color: #596d9d; 
+
+       border-color: gray;
+       border-style: dashed;
+       border-width: 0px 0px 1px 0px;
+
+       font-size: large;
+       line-height: 120%;
+
+       text-decoration: none;
+       font-weight: bold; 
+}
+
+#content h3 {
+       border-color: gray;
+       border-style: dotted;
+       border-width: 0px 0px 1px 0px;
+       font-size: medium;
+       font-weight: normal;
+       line-height: 120%;
+
+       color: gray;
+       padding-left: 20px;
+}
+
+#content .note, pre {
+       background-color: #ddd;
+       padding: 5px;
+}
+
+/* 
+       font size tricks, to make it work in all browsers
+       
+       See: 
+       http://diveintoaccessibility.org/day_26_using_relative_font_sizes.html
+
+       (netscape 4 trick is left out, Nucleus doesn't work anyway in that browser)     
+       #content should be 'small' (in standard-compliant browsers)
+       
+*/
+
+#content {
+  font-size: small;
+  voice-family: "\"}\"";
+  voice-family: inherit;
+  font-size: small;
+}
+html>body #content { font-size: small; }
+
+/* tables */
+div#content table {
+       border: none;
+       width: 100%;
+       border-collapse: collapse;
+       margin-bottom: 10px;
+       margin-top: 10px;
+}
+
+div#content table tbody tr {
+       background-color: #FFFFFF;
+}
+
+div#content table tbody tr:hover {
+       background-color:       #F5F5F5;
+}
+
+div#content table thead tr th {
+       border: none;
+       background-color: #BBBBCC;
+       color: #000000;
+       font-size: small;
+}
+
+div#content table thead th,
+div#content table tbody td {
+       padding: 4px;
+       empty-cells: show;
+}
+
+div#content table.systemoverview thead th,
+div#content table.systemoverview tbody td {
+       width:  50%;
+}
+
+div#content table tbody tr td {
+       border: 1px solid #ddd;
+       font-size: small;
+       vertical-align: top;
+       text-align: left;
+}
+
+div#content table tbody tr td a:link,
+div#content table tbody tr td a:visited {
+       text-decoration: underline;
+       color: black;
+       font-weight: normal;
+}
+
+div#content table tbody tr td a:hover {
+       color: #1D3565;
+       text-decoration: underline;
+}
+
+div#content table tbody tr td.draft,
+div#content table tbody tr td.future {
+       background-color: #FFFFEE;
+}
+
+div#content table.navigation td,
+div#content table.navigation th {
+       border: none;
+}
+
+div#content table tbody td h3 {
+       padding:        0px;
+       margin: 0px 0px 2em 0px;
+       border: 0px;
+       color:  #000000;
+       font-size:      small;
+       font-weight:    normal;
+       line-height:    13pt;
+}
+
+div#content table tbody td h3#base_skin {
+       font-weight:    bold;
+}
+
+/* definitive list */
+div#content table tbody tr td dl {
+       margin: 0px;
+       padding:        0px;
+}
+
+div#content table tbody tr td:first-child dl dt {
+       margin: 0px;
+       padding:        0px 5px 0px 0px;
+       display:        inline;
+       float:  left;
+       clear:  both;
+}
+
+div#content table tbody tr td:first-child dl dd {
+       margin: 0px;
+       padding:        0px;
+       display:        block;
+}
+
+div#content table tbody tr td dl dd {
+       margin: 0px 0px 1em 0px;
+}
+
+/* unorderd list */
+div#content table tbody tr td ul {
+       margin: 0px;
+       padding:        0px;
+       list-style:     none;
+}
+
+div#content table tbody tr td ul li {
+       margin: 0px;
+       padding:        0px;
+       white-space:    nowrap;
+}
+
+.batchoperations {
+       background-color: #EEEEFF;
+       width: auto;
+       padding: 5px;
+       text-align: right;
+}
+
+/* footer */
+div.foot {
+       padding: 2px 0px 2px 10px;
+       margin:10px -10px 0 -10px;
+       text-align: center;
+}
-@charset 'UTF-8';\r
-\r
-/*\r
-       admin area style\r
-       \r
-       $Id$\r
-       $NucleusJP: admin.css,v 1.6 2006/07/17 20:03:45 kimitake Exp $\r
-*/\r
-\r
-body {\r
-       background: #ffffff url(contemporary_jp/background.png) repeat-x;\r
-\r
-}\r
-\r
-body, td, th, a, li, ul, textarea {\r
-/*     color: #000; modify */\r
-       color: #333;\r
-/*     font-family: "Trebuchet MS", "Bitstream Vera Sans", verdana, lucida, arial, helvetica, sans-serif;*/\r
-/*     font-family: "Hiragino Kaku Gothic Pro W3", "Meiryo", "MS PGothic", "Osaka", "IPA UIGothic", "IPA mona UIGothic", "VL PGothic", "Sazanami Gothic", "DynaLab-dfghsgothic w5-jisx0208.1990-0", "DynaLab-dfggothic w5-iso8859-1", "Trebuchet MS", "Bitstream Vera Sans", verdana, lucida, arial, helvetica, sans-serif; */\r
-       font-family: "メイリオ", "Meiryo", "ヒラギノ角ゴ Pro W3", "Hiragino Kaku Gothic Pro", "Osaka", "MS Pゴシック", "MS PGothic", "IPA UIGothic", "IPA mona UIGothic", "VL PGothic", "Sazanami Gothic", "DynaLab-dfghsgothic w5-jisx0208.1990-0", "DynaLab-dfggothic w5-iso8859-1", "Trebuchet MS", "Bitstream Vera Sans", verdana, lucida, arial, helvetica, sans-serif;\r
-}\r
-\r
-/* basic link appearance */\r
-a:link, a:visited {\r
-       color: #1D3565;\r
-       font-weight: bold;\r
-       text-decoration: none;\r
-}\r
-\r
-a:hover {\r
-       text-decoration: underline;\r
-}\r
-\r
-/* textareas */\r
-textarea {\r
-/*  font-size: small;*//*mod yotaka 090323*/\r
-       font-size: 9pt;/*add yotaka 090323*/\r
-  \r
-       line-height:145%;/* add */\r
-       padding:5px;/* add */\r
-       \r
-/*  font-family: "Hiragino Kaku Gothic Pro W3", "MS PGothic", "Osaka", sans-serif;\r
-}\r
-\r
-*>textarea {*/\r
-  width: 95%;\r
-}\r
-\r
-/* textareas for skin/template editing have monospace fonts */\r
-textarea.skinedit, textarea.templateedit {\r
-/*     font-family: "Hiragino Kaku Gothic Pro W3", "MS PGothic", "Osaka", monospace;\r
-/* except MacIE \*//*\r
-       font-family: monospace;\r
-/* end */\r
-/*     font-size: medium;*//*mod yotaka 090323*/\r
-       font-size: 9pt;/*add yotaka 090323*/\r
-}\r
-\r
-/* add start */\r
-textarea#inputbody,textarea#inputmore {\r
-       width:500px;\r
-       margin:5px 3px;\r
-}\r
-\r
-textarea.pluginoption {\r
-       width:420px;\r
-}\r
-/* add end */\r
-\r
-/* images */\r
-img {\r
-       border: none; \r
-}\r
-\r
-img.skinpreview {\r
-       border: 1px solid #ccc;\r
-}\r
-\r
-/* forms */\r
-form {\r
-       margin-bottom: 0px;\r
-}\r
-\r
-label {\r
-       cursor: pointer; \r
-}\r
-\r
-input.transparent {\r
-       background-color: transparent;\r
-}\r
-\r
-/* preformatted text */\r
-pre {\r
-       margin-left: 10px;\r
-}\r
-\r
-/* a div that has an indent */\r
-div.indent {\r
-       margin-left: 40px;\r
-}\r
-\r
-.skip {\r
-       display: none; \r
-}\r
-\r
-.error {\r
-       color: red;\r
-       /*font-size: 1.2em;*//*mod yotaka 090323*/\r
-       font-size: 14pt; /*add yotaka 090323*/\r
-}\r
-\r
-/* header */\r
-h1 {\r
-       text-align: right;\r
-/*     font-size: 30px;*//*mod yotaka 090323*/\r
-       font-size:24pt;/*add yotaka 090323*/\r
-       font-weight: 900;\r
-       letter-spacing: 0.1em;\r
-/*     color: #0001AA;*/\r
-       color: #596d9d;\r
-       margin: 0 0 5px 135px;\r
-       height: 35px;\r
-/*     display: none;  hide the header if you don't want it*/\r
-\r
-}\r
-\r
-/* quick menu on left */\r
-/* \r
-       It's a real pain getting this absolute positioning to work correctly\r
-       in all browsers. IE in particular seems to have a lot of trouble, even\r
-       when a valid doctype is present. Because of the way it is solved currently,\r
-       the top of the quickmenu and the contents will not line up\r
-*/\r
-#quickmenu {\r
-       position: absolute;\r
-       overflow: hidden;\r
-       \r
-       top: 10px;\r
-       left: 10px;\r
-\r
-       width: 150px;\r
-       margin: 0px;\r
-       padding: 0px;\r
-       \r
-/*     font-size: 70%;*/\r
-/*     font-size: small;*//*mod yotaka 090323*/\r
-       font-size:9pt;/*add yotaka 090323*/\r
-       color:#333;/* add */\r
-       \r
-       border-width: 1px;\r
-       border-style: solid;\r
-/*     border-color: black; modify */\r
-       border-color: #bbb;\r
-\r
-       background: #ffffff url(contemporary_jp/quickb.jpg) top left fixed repeat-y; \r
-}\r
-\r
-#quickmenu ul {\r
-       list-style-type: none;\r
-       margin: 0;\r
-       padding: 0;\r
-}\r
-\r
-#quickmenu li {\r
-       padding: 0;\r
-       margin: 0;\r
-       text-align: center;\r
-       border-bottom: 1px solid #ccc;\r
-}\r
-\r
-#quickmenu p {\r
-       padding: 5px;\r
-       margin: 0px;\r
-       text-align: justify;\r
-}\r
-\r
-#quickmenu a {\r
-       display: block;\r
-       padding: 5px;\r
-       /*font-size: 1em;*//*mod yotaka 090323*/\r
-       font-size: 9pt;/*add yotaka 090323*/\r
-       line-height: 1.5em;\r
-       text-decoration: none;\r
-/*     font-family: verdana, lucida, arial, helvetica, sans-serif;\r
-}\r
-\r
-*>#quickmenu a {\r
-       font-family: "Trebuchet MS", "Bitstream Vera Sans", verdana, lucida, arial, helvetica, sans-serif;\r
-*/\r
-}\r
-\r
-#quickmenu a:hover {\r
-       background: #ffffff url(contemporary_jp/quickb-hover.jpg) top left fixed repeat-y; \r
-/*     color: #000; modify */\r
-       color: #333;\r
-       letter-spacing: 1px;\r
-       white-space: nowrap; /* add */\r
-}\r
-\r
-#quickmenu h2 {\r
-       /*font-size: small;*//*mod yotaka 090323*/\r
-       font-size: 9pt;/*add yotaka 090323*/\r
-       text-align: center;\r
-       padding: 1px 0px 1px 0px;\r
-       margin: 0px;\r
-       border-bottom: 1px solid #bbb;  \r
-       background-color: #ddd;\r
-/*     color: #000; modify */\r
-       color: #333;\r
-}\r
-\r
-#quickmenu form {\r
-       margin: 0;\r
-       padding: 5px;\r
-       text-align: center;\r
-}\r
-\r
-#quickmenu option {\r
-/*     font-size: 0.9em;*//*mod yotaka 090323*/\r
-       font-size: 8pt;/*add yotaka 090323*/\r
-}\r
-\r
-.loginname {\r
-       float: right;\r
-/*     font-size: small;*//*mod yotaka 090323*/\r
-       font-size: 9pt;/*add yotaka 090323*/\r
-       text-align: right;\r
-       line-height: normal;\r
-       padding-left: 5px;\r
-       background-color: white;\r
-}\r
-\r
-/* page content */\r
-#content {\r
-   margin-left:163px;\r
-       font-style: normal;\r
-       text-decoration: none;\r
-/*     color: black; modify */\r
-       color: #333;\r
-       text-align: justify;\r
-       line-height: 13pt;\r
-\r
-       border-width: 1px;\r
-       border-style: solid;\r
-/*     border-color: black; modify */\r
-       border-color: #bbb;\r
-       \r
-/*     rounded borders in gecko-based browsers? why not :) */\r
-       -moz-border-radius: 10px;\r
-\r
-/*     rounded borders in webkit-based browsers? why not :) */\r
-       -webkit-border-radius: 10px;\r
-\r
-/*     rounded borders in css3-based browsers? why not :) */\r
-       border-radius: 10px;\r
-\r
-       padding: 10px 10px 0 10px;\r
-\r
-       background-color: white;\r
-\r
-}\r
-\r
-#content h2 {\r
-       color: #596d9d; \r
-\r
-       border-color: gray;\r
-       border-style: dashed;\r
-       border-width: 0px 0px 1px 0px;\r
-\r
-       /*font-size: large;\r
-       line-height: 120%;*//*mod yotaka 090323*/\r
-       font-size: 10pt;/*add yotaka 090323*/\r
-       line-height: 20px;/*add yotaka 090323*/\r
-\r
-       text-decoration: none;\r
-       font-weight: bold; \r
-       letter-spacing: 2px;/* add */\r
-       margin-top:20px;/*add yotaka 090323*/\r
-}\r
-\r
-#content h3 {\r
-/*     border-color: gray;\r
-       border-style: dotted;\r
-       border-width: 0px 0px 1px 0px; modify */\r
-\r
-       border-color: #596d9d;\r
-       border-style: solid;\r
-       border-width: 0px 0px 0px 5px;\r
-\r
-/*     font-size: medium;*/\r
-       font-size: 10pt;\r
-       font-weight: normal;\r
-       line-height: 120%;\r
-\r
-/*     color: gray;\r
-       padding-left: 20px;\r
-       letter-spacing: 2; modify */\r
-\r
-       color: #596d9d;\r
-       padding-left: 8px;\r
-       letter-spacing: 2px;\r
-       margin-left:5px;/* add */\r
-}\r
-\r
-/* add start */\r
-#content ul {\r
-       line-height:1.5em;\r
-/*     list-style-type:square;*/\r
-       margin:0 0 0.5em 30px;\r
-       padding:0;\r
-       list-style-image:url(contemporary_jp/bullet.gif);\r
-}\r
-/* add end */\r
-\r
-#content .note, pre {\r
-       background-color: #ddd;\r
-       padding: 5px;\r
-}\r
-\r
-#content li a{\r
-       font-size: 9pt;/*add yotaka 090323*/\r
-}\r
-\r
-/* \r
-       font size tricks, to make it work in all browsers\r
-\r
-       See:\r
-       http://diveintoaccessibility.org/day_26_using_relative_font_sizes.html\r
-\r
-       (netscape 4 trick is left out, Nucleus doesn't work anyway in that browser)     \r
-       #content should be 'small' (in standard-compliant browsers)\r
-\r
-*/\r
-\r
-#content {\r
-/*     font-size: small;*//*mod yotaka 090323*/\r
-       font-size: 9pt;/*add yotaka 090323*/\r
-       voice-family: "\"}\"";\r
-       voice-family: inherit;\r
-       /*font-size: small;*//*mod yotaka 090323*/\r
-       font-size: 9pt;/*add yotaka 090323*/\r
-}\r
-html>body #content {\r
-       /*font-size: small;*//*mod yotaka 090323*/\r
-       font-size: 9pt;/*add yotaka 090323*/\r
-}\r
-\r
-/* tables */\r
-table {\r
-       border: none;\r
-       width: 100%;\r
-       border-collapse: collapse;\r
-       margin-bottom: 10px;\r
-       margin-top: 10px;       \r
-}\r
-\r
-th {\r
-/*     background-color: #bbc; modify */\r
-       background-color: #ddd;\r
-/*     color: #000; modify */\r
-       color: #333;\r
-       /*font-size: small;*//*mod yotaka 090323*/\r
-       font-size: 9pt;/*add yotaka 090323*/\r
-       letter-spacing:1px;/* add */\r
-}\r
-\r
-th, td {\r
-       padding: 4px;\r
-       empty-cells: show;      \r
-       border: 1px solid #ddd; /* add */\r
-}\r
-\r
-td {\r
-       background-color: #fff;\r
-/*     border: 1px solid #ddd;*/\r
-/*     font-size: small;*//*mod yotaka 090323*/\r
-       font-size: 9pt;/*add yotaka 090323*/\r
-       vertical-align: top;\r
-       text-align: left;\r
-}\r
-\r
-td a:link, td a:visited { \r
-       text-decoration: underline;\r
-/*     color: black; modify */\r
-       color: #333;\r
-       font-weight: normal;\r
-}\r
-\r
-td a:hover {\r
-       color: #1D3565;\r
-       text-decoration: underline;\r
-}\r
-td.draft {\r
-       background-color: #ffe;\r
-}\r
-td.future {\r
-       background-color: #fff7f1;\r
-}\r
-tr.highlighted td {\r
-       background-color: green;\r
-}\r
-\r
-table.navigation td, table.navigation th {\r
-       border: none;\r
-}\r
-\r
-.batchoperations {\r
-       background-color: #ebebf2;\r
-       width: auto;\r
-       padding: 5px;\r
-       text-align: right;\r
-}\r
-\r
-/* plugin list */\r
-#content table ul.list_comment_info,\r
-#content table ul.list_item_info,\r
-#content table ul.list_item_action,\r
-#content table ul.plugin_info,\r
-#content table ul.pluginlist_actions {\r
-       list-style-type: none;\r
-       list-style-image: none;\r
-       margin: 0 0 0.5em 5px;\r
-       line-height:1.1em;\r
-}\r
-\r
-.plugin_name {\r
-       font-weight: bold;\r
-}\r
-\r
-.plugin_desc h4 {\r
-       margin: 0;\r
-}\r
-\r
-.plugin_desc p {\r
-       margin-top: 0;\r
-}\r
-\r
-/* item list */\r
-#content table label.list_item_title {\r
-/*     font-size: 1.1em;*//*mod yotaka 090323*/\r
-       font-size: 10pt;/*mod yotaka 090323*/\r
-       font-weight: bold;\r
-}\r
-\r
-.list_item_info_th {\r
-       width: 130px;\r
-}\r
-\r
-/* footer */\r
-.foot {\r
-       padding: 2px 0px 2px 10px;\r
-       margin:10px -10px 0 -10px;\r
-       text-align: center;\r
-}\r
-\r
-table .availableSkinTypes ul li {\r
-       list-style: none;\r
-}\r
+@charset 'UTF-8';
+
+/*
+       admin area style
+       
+       $Id$
+       $NucleusJP: admin.css,v 1.6 2006/07/17 20:03:45 kimitake Exp $
+*/
+
+body {
+       background: #ffffff url(contemporary_jp/background.png) repeat-x;
+
+}
+
+body, td, th, a, li, ul, textarea {
+/*     color: #000; modify */
+       color: #333;
+/*     font-family: "Trebuchet MS", "Bitstream Vera Sans", verdana, lucida, arial, helvetica, sans-serif;*/
+/*     font-family: "Hiragino Kaku Gothic Pro W3", "Meiryo", "MS PGothic", "Osaka", "IPA UIGothic", "IPA mona UIGothic", "VL PGothic", "Sazanami Gothic", "DynaLab-dfghsgothic w5-jisx0208.1990-0", "DynaLab-dfggothic w5-iso8859-1", "Trebuchet MS", "Bitstream Vera Sans", verdana, lucida, arial, helvetica, sans-serif; */
+       font-family: "メイリオ", "Meiryo", "ヒラギノ角ゴ Pro W3", "Hiragino Kaku Gothic Pro", "Osaka", "MS Pゴシック", "MS PGothic", "IPA UIGothic", "IPA mona UIGothic", "VL PGothic", "Sazanami Gothic", "DynaLab-dfghsgothic w5-jisx0208.1990-0", "DynaLab-dfggothic w5-iso8859-1", "Trebuchet MS", "Bitstream Vera Sans", verdana, lucida, arial, helvetica, sans-serif;
+}
+
+/* basic link appearance */
+a:link, a:visited {
+       color: #1D3565;
+       font-weight: bold;
+       text-decoration: none;
+}
+
+a:hover {
+       text-decoration: underline;
+}
+
+/* textareas */
+textarea {
+/*  font-size: small;*//*mod yotaka 090323*/
+       font-size: 9pt;/*add yotaka 090323*/
+  
+       line-height:145%;/* add */
+       padding:5px;/* add */
+       
+/*  font-family: "Hiragino Kaku Gothic Pro W3", "MS PGothic", "Osaka", sans-serif;
+}
+
+*>textarea {*/
+  width: 95%;
+}
+
+/* textareas for skin/template editing have monospace fonts */
+textarea.skinedit, textarea.templateedit {
+/*     font-family: "Hiragino Kaku Gothic Pro W3", "MS PGothic", "Osaka", monospace;
+/* except MacIE \*//*
+       font-family: monospace;
+/* end */
+/*     font-size: medium;*//*mod yotaka 090323*/
+       font-size: 9pt;/*add yotaka 090323*/
+}
+
+/* add start */
+textarea#inputbody,textarea#inputmore {
+       width:500px;
+       margin:5px 3px;
+}
+
+textarea.pluginoption {
+       width:420px;
+}
+/* add end */
+
+/* images */
+img {
+       border: none; 
+}
+
+img.skinpreview {
+       border: 1px solid #ccc;
+}
+
+/* forms */
+form {
+       margin-bottom: 0px;
+}
+
+label {
+       cursor: pointer; 
+}
+
+input.transparent {
+       background-color: transparent;
+}
+
+/* preformatted text */
+pre {
+       margin-left: 10px;
+}
+
+/* a div that has an indent */
+div.indent {
+       margin-left: 40px;
+}
+
+.skip {
+       display: none; 
+}
+
+.error {
+       color: red;
+       /*font-size: 1.2em;*//*mod yotaka 090323*/
+       font-size: 14pt; /*add yotaka 090323*/
+}
+
+/* header */
+h1 {
+       text-align: right;
+/*     font-size: 30px;*//*mod yotaka 090323*/
+       font-size:24pt;/*add yotaka 090323*/
+       font-weight: 900;
+       letter-spacing: 0.1em;
+/*     color: #0001AA;*/
+       color: #596d9d;
+       margin: 0 0 5px 135px;
+       height: 35px;
+/*     display: none;  hide the header if you don't want it*/
+
+}
+
+/* quick menu on left */
+/* 
+       It's a real pain getting this absolute positioning to work correctly
+       in all browsers. IE in particular seems to have a lot of trouble, even
+       when a valid doctype is present. Because of the way it is solved currently,
+       the top of the quickmenu and the contents will not line up
+*/
+#quickmenu {
+       position: absolute;
+       overflow: hidden;
+       
+       top: 10px;
+       left: 10px;
+
+       width: 150px;
+       margin: 0px;
+       padding: 0px;
+       
+/*     font-size: 70%;*/
+/*     font-size: small;*//*mod yotaka 090323*/
+       font-size:9pt;/*add yotaka 090323*/
+       color:#333;/* add */
+       
+       border-width: 1px;
+       border-style: solid;
+/*     border-color: black; modify */
+       border-color: #bbb;
+
+       background: #ffffff url(contemporary_jp/quickb.jpg) top left fixed repeat-y; 
+}
+
+#quickmenu ul {
+       list-style-type: none;
+       margin: 0;
+       padding: 0;
+}
+
+#quickmenu li {
+       padding: 0;
+       margin: 0;
+       text-align: center;
+       border-bottom: 1px solid #ccc;
+}
+
+#quickmenu p {
+       padding: 5px;
+       margin: 0px;
+       text-align: justify;
+}
+
+#quickmenu a {
+       display: block;
+       padding: 5px;
+       /*font-size: 1em;*//*mod yotaka 090323*/
+       font-size: 9pt;/*add yotaka 090323*/
+       line-height: 1.5em;
+       text-decoration: none;
+/*     font-family: verdana, lucida, arial, helvetica, sans-serif;
+}
+
+*>#quickmenu a {
+       font-family: "Trebuchet MS", "Bitstream Vera Sans", verdana, lucida, arial, helvetica, sans-serif;
+*/
+}
+
+#quickmenu a:hover {
+       background: #ffffff url(contemporary_jp/quickb-hover.jpg) top left fixed repeat-y; 
+/*     color: #000; modify */
+       color: #333;
+       letter-spacing: 1px;
+       white-space: nowrap; /* add */
+}
+
+#quickmenu h2 {
+       /*font-size: small;*//*mod yotaka 090323*/
+       font-size: 9pt;/*add yotaka 090323*/
+       text-align: center;
+       padding: 1px 0px 1px 0px;
+       margin: 0px;
+       border-bottom: 1px solid #bbb;  
+       background-color: #ddd;
+/*     color: #000; modify */
+       color: #333;
+}
+
+#quickmenu form {
+       margin: 0;
+       padding: 5px;
+       text-align: center;
+}
+
+#quickmenu option {
+/*     font-size: 0.9em;*//*mod yotaka 090323*/
+       font-size: 8pt;/*add yotaka 090323*/
+}
+
+.loginname {
+       float: right;
+/*     font-size: small;*//*mod yotaka 090323*/
+       font-size: 9pt;/*add yotaka 090323*/
+       text-align: right;
+       line-height: normal;
+       padding-left: 5px;
+       background-color: white;
+}
+
+/* page content */
+#content {
+   margin-left:163px;
+       font-style: normal;
+       text-decoration: none;
+/*     color: black; modify */
+       color: #333;
+       text-align: justify;
+       line-height: 13pt;
+
+       border-width: 1px;
+       border-style: solid;
+/*     border-color: black; modify */
+       border-color: #bbb;
+       
+/*     rounded borders in gecko-based browsers? why not :) */
+       -moz-border-radius: 10px;
+
+/*     rounded borders in webkit-based browsers? why not :) */
+       -webkit-border-radius: 10px;
+
+/*     rounded borders in css3-based browsers? why not :) */
+       border-radius: 10px;
+
+       padding: 10px 10px 0 10px;
+
+       background-color: white;
+
+}
+
+#content h2 {
+       color: #596d9d; 
+
+       border-color: gray;
+       border-style: dashed;
+       border-width: 0px 0px 1px 0px;
+
+       /*font-size: large;
+       line-height: 120%;*//*mod yotaka 090323*/
+       font-size: 10pt;/*add yotaka 090323*/
+       line-height: 20px;/*add yotaka 090323*/
+
+       text-decoration: none;
+       font-weight: bold; 
+       letter-spacing: 2px;/* add */
+       margin-top:20px;/*add yotaka 090323*/
+}
+
+#content h3 {
+/*     border-color: gray;
+       border-style: dotted;
+       border-width: 0px 0px 1px 0px; modify */
+
+       border-color: #596d9d;
+       border-style: solid;
+       border-width: 0px 0px 0px 5px;
+
+/*     font-size: medium;*/
+       font-size: 10pt;
+       font-weight: normal;
+       line-height: 120%;
+
+/*     color: gray;
+       padding-left: 20px;
+       letter-spacing: 2; modify */
+
+       color: #596d9d;
+       padding-left: 8px;
+       letter-spacing: 2px;
+       margin-left:5px;/* add */
+}
+
+/* add start */
+#content ul {
+       line-height:1.5em;
+/*     list-style-type:square;*/
+       margin:0 0 0.5em 30px;
+       padding:0;
+       list-style-image:url(contemporary_jp/bullet.gif);
+}
+/* add end */
+
+#content .note, pre {
+       background-color: #ddd;
+       padding: 5px;
+}
+
+#content li a{
+       font-size: 9pt;/*add yotaka 090323*/
+}
+
+/* 
+       font size tricks, to make it work in all browsers
+
+       See:
+       http://diveintoaccessibility.org/day_26_using_relative_font_sizes.html
+
+       (netscape 4 trick is left out, Nucleus doesn't work anyway in that browser)     
+       #content should be 'small' (in standard-compliant browsers)
+
+*/
+
+#content {
+/*     font-size: small;*//*mod yotaka 090323*/
+       font-size: 9pt;/*add yotaka 090323*/
+       voice-family: "\"}\"";
+       voice-family: inherit;
+       /*font-size: small;*//*mod yotaka 090323*/
+       font-size: 9pt;/*add yotaka 090323*/
+}
+html>body #content {
+       /*font-size: small;*//*mod yotaka 090323*/
+       font-size: 9pt;/*add yotaka 090323*/
+}
+
+/* tables */
+table {
+       border: none;
+       width: 100%;
+       border-collapse: collapse;
+       margin-bottom: 10px;
+       margin-top: 10px;       
+}
+
+th {
+/*     background-color: #bbc; modify */
+       background-color: #ddd;
+/*     color: #000; modify */
+       color: #333;
+       /*font-size: small;*//*mod yotaka 090323*/
+       font-size: 9pt;/*add yotaka 090323*/
+       letter-spacing:1px;/* add */
+}
+
+th, td {
+       padding: 4px;
+       empty-cells: show;      
+       border: 1px solid #ddd; /* add */
+}
+
+td {
+       background-color: #fff;
+/*     border: 1px solid #ddd;*/
+/*     font-size: small;*//*mod yotaka 090323*/
+       font-size: 9pt;/*add yotaka 090323*/
+       vertical-align: top;
+       text-align: left;
+}
+
+td a:link, td a:visited { 
+       text-decoration: underline;
+/*     color: black; modify */
+       color: #333;
+       font-weight: normal;
+}
+
+td a:hover {
+       color: #1D3565;
+       text-decoration: underline;
+}
+td.draft {
+       background-color: #ffe;
+}
+td.future {
+       background-color: #fff7f1;
+}
+tr.highlighted td {
+       background-color: green;
+}
+
+table.navigation td, table.navigation th {
+       border: none;
+}
+
+.batchoperations {
+       background-color: #ebebf2;
+       width: auto;
+       padding: 5px;
+       text-align: right;
+}
+
+/* plugin list */
+#content table ul.list_comment_info,
+#content table ul.list_item_info,
+#content table ul.list_item_action,
+#content table ul.plugin_info,
+#content table ul.pluginlist_actions {
+       list-style-type: none;
+       list-style-image: none;
+       margin: 0 0 0.5em 5px;
+       line-height:1.1em;
+}
+
+.plugin_name {
+       font-weight: bold;
+}
+
+.plugin_desc h4 {
+       margin: 0;
+}
+
+.plugin_desc p {
+       margin-top: 0;
+}
+
+/* item list */
+#content table label.list_item_title {
+/*     font-size: 1.1em;*//*mod yotaka 090323*/
+       font-size: 10pt;/*mod yotaka 090323*/
+       font-weight: bold;
+}
+
+.list_item_info_th {
+       width: 130px;
+}
+
+/* footer */
+.foot {
+       padding: 2px 0px 2px 10px;
+       margin:10px -10px 0 -10px;
+       text-align: center;
+}
+
+table .availableSkinTypes ul li {
+       list-style: none;
+}
-/*\r
-       admin area style\r
-\r
-       $Id: admin_original.css 1652 2012-02-11 06:02:05Z sakamocchi $\r
-*/\r
-\r
-body {\r
-       background: #ffffff;\r
-}\r
-\r
-body, td, th, a, li, ul, textarea {\r
-       color: #000;\r
-       font-family: "Trebuchet MS", "Bitstream Vera Sans", verdana, lucida, arial, helvetica, sans-serif;\r
-}\r
-\r
-/* basic link appearance */\r
-a:link, a:visited {\r
-       color: #1D3565;\r
-       font-weight: bold;\r
-       text-decoration: none;\r
-}\r
-\r
-a:hover {\r
-       text-decoration: underline;\r
-}\r
-\r
-/* textareas */\r
-textarea {\r
-       font-size: small;\r
-       width: 95%;\r
-}\r
-\r
-/* textareas for skin/template editing have monospace fonts */\r
-textarea.skinedit, textarea.templateedit {\r
-       font-family: monospace;\r
-       font-size: medium;\r
-}\r
-\r
-/* images */\r
-img    {\r
-       border: none;\r
-}\r
-\r
-img.skinpreview {\r
-       border: 1px solid #ccc;\r
-}\r
-\r
-/* forms */\r
-form {\r
-       margin-bottom: 0px;\r
-}\r
-\r
-label {\r
-       cursor: pointer;\r
-}\r
-\r
-input.transparent {\r
-       background-color: transparent;\r
-}\r
-\r
-/* preformatted text */\r
-pre {\r
-       margin-left: 10px;\r
-}\r
-\r
-/* a div that has an indent */\r
-div.indent {\r
-       margin-left: 40px;\r
-}\r
-\r
-.skip {\r
-       display: none;\r
-}\r
-\r
-.error {\r
-       color: red;\r
-       font-size: 1.2em;\r
-}\r
-\r
-/* header */\r
-h1 {\r
-       text-align: right;\r
-       font-size: 30px;\r
-       font-weight: 900;\r
-       letter-spacing: 0.1em;\r
-       /*color: #0001AA;       */\r
-       color: #596d9d;\r
-       margin: 0 0 5px 135px;\r
-       height: 35px;\r
-       /*display: none;        hide the header if you don't want it*/\r
-}\r
-\r
-/* quick menu on left */\r
-/*\r
-       It's a real pain getting this absolute positioning to work correctly\r
-       in all browsers. IE in particular seems to have a lot of trouble, even\r
-       when a valid doctype is present. Because of the way it is solved currently,\r
-       the top of the quickmenu and the contents will not line up\r
-*/\r
-#quickmenu {\r
-       position: absolute;\r
-       overflow: hidden;\r
-\r
-       top: 10px;\r
-       left: 10px;\r
-\r
-       width: 110px;\r
-       margin: 0px;\r
-       padding: 0px;\r
-\r
-       font-size: 70%;\r
-\r
-       border-width: 1px;\r
-       border-style: solid;\r
-       border-color: black;\r
-\r
-       background: #ffffff url(quickb.jpg) top left fixed repeat-y;\r
-}\r
-\r
-#quickmenu ul {\r
-       list-style-type: none;\r
-       margin: 0;\r
-       padding: 0;\r
-}\r
-\r
-#quickmenu li {\r
-       padding: 0;\r
-       margin: 0;\r
-       text-align: center;\r
-       border-bottom: 1px solid #ccc;\r
-}\r
-\r
-#quickmenu p {\r
-       padding: 5px;\r
-       margin: 0px;\r
-       text-align: justify;\r
-}\r
-\r
-#quickmenu a {\r
-       display: block;\r
-       padding: 5px;\r
-       font-size: 1em;\r
-       line-height: 1.5em;\r
-       text-decoration: none;\r
-}\r
-\r
-#quickmenu a:hover {\r
-       background: #ffffff url(quickb-hover.jpg) top left fixed repeat-y;\r
-       color: #000;\r
-       letter-spacing: 1px;\r
-}\r
-\r
-#quickmenu h2 {\r
-       font-size: small;\r
-       text-align: center;\r
-       padding: 1px 0px 1px 0px;\r
-       margin: 0px;\r
-       border-bottom: 1px solid #bbb;\r
-       background-color: #ddd;\r
-       color: #000;\r
-}\r
-\r
-#quickmenu form {\r
-       margin: 0;\r
-       padding: 5px;\r
-       text-align: center;\r
-}\r
-\r
-#quickmenu option {\r
-       font-size: 0.9em;\r
-}\r
-\r
-.loginname {\r
-       float: right;\r
-       font-size: small;\r
-       text-align: right;\r
-       line-height: normal;\r
-       padding-left: 5px;\r
-       background-color: white;\r
-}\r
-\r
-/* page content */\r
-#content {\r
-       margin-left: 135px;\r
-       font-style: normal;\r
-       text-decoration: none;\r
-       color: black;\r
-       text-align: justify;\r
-       line-height: 13pt;\r
-\r
-       border-width: 1px;\r
-       border-style: solid;\r
-       border-color: black;\r
-\r
-       /* rounded borders */\r
-       -webkit-border-radius: 10px;\r
-       -moz-border-radius: 10px;\r
-       border-radius: 10px;\r
-\r
-       padding: 10px 10px 0 10px;\r
-\r
-       background-color: white;\r
-}\r
-\r
-#content h2 {\r
-       color: #596d9d;\r
-\r
-       border-color: gray;\r
-       border-style: dashed;\r
-       border-width: 0px 0px 1px 0px;\r
-\r
-       font-size: large;\r
-       line-height: 120%;\r
-\r
-       text-decoration: none;\r
-       font-weight: bold;\r
-}\r
-\r
-#content h3 {\r
-       border-color: gray;\r
-       border-style: dotted;\r
-       border-width: 0px 0px 1px 0px;\r
-       font-size: medium;\r
-       font-weight: normal;\r
-       line-height: 120%;\r
-\r
-       color: gray;\r
-       padding-left: 20px;\r
-}\r
-\r
-#content .note, pre {\r
-       background-color: #ddd;\r
-       padding: 5px;\r
-}\r
-\r
-/*\r
-       font size tricks, to make it work in all browsers\r
-\r
-       See:\r
-       http://diveintoaccessibility.org/day_26_using_relative_font_sizes.html\r
-\r
-       (netscape 4 trick is left out, Nucleus doesn't work anyway in that browser)\r
-       #content should be 'small' (in standard-compliant browsers)\r
-\r
-*/\r
-\r
-#content {\r
-  font-size: small;\r
-  voice-family: "\"}\"";\r
-  voice-family: inherit;\r
-  font-size: small;\r
-}\r
-html>body #content { font-size: small; }\r
-\r
-/* tables */\r
-div#content table {\r
-       border: none;\r
-       width: 100%;\r
-       border-collapse: collapse;\r
-       margin-bottom: 10px;\r
-       margin-top: 10px;\r
-}\r
-\r
-div#content table tbody tr {\r
-       background-color: #FFFFFF;\r
-}\r
-\r
-div#content table tbody tr:hover {\r
-       background-color:       #F5F5F5;\r
-}\r
-\r
-div#content table thead tr th {\r
-       border: none;\r
-       background-color: #BBBBCC;\r
-       color: #000000;\r
-       font-size: small;\r
-}\r
-\r
-div#content table thead th,\r
-div#content table tbody td {\r
-       padding: 4px;\r
-       empty-cells: show;\r
-}\r
-\r
-/* systemconfig column */\r
-div#content table.systemoverview thead th,\r
-div#content table.systemoverview tbody td {\r
-       width:  50%;\r
-}\r
-\r
-div#content table tbody tr td {\r
-       border: 1px solid #ddd;\r
-       font-size: small;\r
-       vertical-align: top;\r
-       text-align: left;\r
-}\r
-\r
-div#content table tbody tr td a:link,\r
-div#content table tbody tr td a:visited {\r
-       text-decoration: underline;\r
-       color: black;\r
-       font-weight: normal;\r
-}\r
-\r
-div#content table tbody tr td a:hover {\r
-       color: #1D3565;\r
-       text-decoration: underline;\r
-}\r
-\r
-div#content table tbody tr td.draft,\r
-div#content table tbody tr td.future {\r
-       background-color: #FFFFEE;\r
-}\r
-\r
-div#content table.navigation td,\r
-div#content table.navigation th {\r
-       border: none;\r
-}\r
-\r
-div#content table tbody td h3 {\r
-       padding:        0px;\r
-       margin: 0px 0px 2em 0px;\r
-       border: 0px;\r
-       color:  #000000;\r
-       font-size:      small;\r
-       font-weight:    normal;\r
-       line-height:    13pt;\r
-}\r
-\r
-div#content table tbody td h3#base_skin {\r
-       font-weight:    bold;\r
-}\r
-\r
-/* definitive list */\r
-div#content table tbody tr td dl {\r
-       margin: 0px;\r
-       padding:        0px;\r
-}\r
-\r
-div#content table tbody tr td:first-child dl dt {\r
-       margin: 0px;\r
-       padding:        0px 5px 0px 0px;\r
-       display:        inline;\r
-       float:  left;\r
-       clear:  both;\r
-}\r
-\r
-div#content table tbody tr td:first-child dl dd {\r
-       margin: 0px;\r
-       padding:        0px;\r
-       display:        block;\r
-}\r
-\r
-div#content table tbody tr td dl dd {\r
-       margin: 0px 0px 1em 0px;\r
-}\r
-\r
-/* unorderd list */\r
-div#content table tbody tr td ul {\r
-       margin: 0px;\r
-       padding:        0px;\r
-       list-style:     none;\r
-}\r
-\r
-div#content table tbody tr td ul li {\r
-       margin: 0px;\r
-       padding:        0px;\r
-       white-space:    nowrap;\r
-}\r
-\r
-.batchoperations {\r
-       background-color: #EEEEFF;\r
-       width: auto;\r
-       padding: 5px;\r
-       text-align: right;\r
-}\r
-\r
-/* footer */\r
-div.foot {\r
-       padding: 2px 0px 2px 10px;\r
-       margin:10px -10px 0 -10px;\r
-       text-align: center;\r
-}\r
+/*
+       admin area style
+
+       $Id: admin_original.css 1652 2012-02-11 06:02:05Z sakamocchi $
+*/
+
+body {
+       background: #ffffff;
+}
+
+body, td, th, a, li, ul, textarea {
+       color: #000;
+       font-family: "Trebuchet MS", "Bitstream Vera Sans", verdana, lucida, arial, helvetica, sans-serif;
+}
+
+/* basic link appearance */
+a:link, a:visited {
+       color: #1D3565;
+       font-weight: bold;
+       text-decoration: none;
+}
+
+a:hover {
+       text-decoration: underline;
+}
+
+/* textareas */
+textarea {
+       font-size: small;
+       width: 95%;
+}
+
+/* textareas for skin/template editing have monospace fonts */
+textarea.skinedit, textarea.templateedit {
+       font-family: monospace;
+       font-size: medium;
+}
+
+/* images */
+img    {
+       border: none;
+}
+
+img.skinpreview {
+       border: 1px solid #ccc;
+}
+
+/* forms */
+form {
+       margin-bottom: 0px;
+}
+
+label {
+       cursor: pointer;
+}
+
+input.transparent {
+       background-color: transparent;
+}
+
+/* preformatted text */
+pre {
+       margin-left: 10px;
+}
+
+/* a div that has an indent */
+div.indent {
+       margin-left: 40px;
+}
+
+.skip {
+       display: none;
+}
+
+.error {
+       color: red;
+       font-size: 1.2em;
+}
+
+/* header */
+h1 {
+       text-align: right;
+       font-size: 30px;
+       font-weight: 900;
+       letter-spacing: 0.1em;
+       /*color: #0001AA;       */
+       color: #596d9d;
+       margin: 0 0 5px 135px;
+       height: 35px;
+       /*display: none;        hide the header if you don't want it*/
+}
+
+/* quick menu on left */
+/*
+       It's a real pain getting this absolute positioning to work correctly
+       in all browsers. IE in particular seems to have a lot of trouble, even
+       when a valid doctype is present. Because of the way it is solved currently,
+       the top of the quickmenu and the contents will not line up
+*/
+#quickmenu {
+       position: absolute;
+       overflow: hidden;
+
+       top: 10px;
+       left: 10px;
+
+       width: 110px;
+       margin: 0px;
+       padding: 0px;
+
+       font-size: 70%;
+
+       border-width: 1px;
+       border-style: solid;
+       border-color: black;
+
+       background: #ffffff url(quickb.jpg) top left fixed repeat-y;
+}
+
+#quickmenu ul {
+       list-style-type: none;
+       margin: 0;
+       padding: 0;
+}
+
+#quickmenu li {
+       padding: 0;
+       margin: 0;
+       text-align: center;
+       border-bottom: 1px solid #ccc;
+}
+
+#quickmenu p {
+       padding: 5px;
+       margin: 0px;
+       text-align: justify;
+}
+
+#quickmenu a {
+       display: block;
+       padding: 5px;
+       font-size: 1em;
+       line-height: 1.5em;
+       text-decoration: none;
+}
+
+#quickmenu a:hover {
+       background: #ffffff url(quickb-hover.jpg) top left fixed repeat-y;
+       color: #000;
+       letter-spacing: 1px;
+}
+
+#quickmenu h2 {
+       font-size: small;
+       text-align: center;
+       padding: 1px 0px 1px 0px;
+       margin: 0px;
+       border-bottom: 1px solid #bbb;
+       background-color: #ddd;
+       color: #000;
+}
+
+#quickmenu form {
+       margin: 0;
+       padding: 5px;
+       text-align: center;
+}
+
+#quickmenu option {
+       font-size: 0.9em;
+}
+
+.loginname {
+       float: right;
+       font-size: small;
+       text-align: right;
+       line-height: normal;
+       padding-left: 5px;
+       background-color: white;
+}
+
+/* page content */
+#content {
+       margin-left: 135px;
+       font-style: normal;
+       text-decoration: none;
+       color: black;
+       text-align: justify;
+       line-height: 13pt;
+
+       border-width: 1px;
+       border-style: solid;
+       border-color: black;
+
+       /* rounded borders */
+       -webkit-border-radius: 10px;
+       -moz-border-radius: 10px;
+       border-radius: 10px;
+
+       padding: 10px 10px 0 10px;
+
+       background-color: white;
+}
+
+#content h2 {
+       color: #596d9d;
+
+       border-color: gray;
+       border-style: dashed;
+       border-width: 0px 0px 1px 0px;
+
+       font-size: large;
+       line-height: 120%;
+
+       text-decoration: none;
+       font-weight: bold;
+}
+
+#content h3 {
+       border-color: gray;
+       border-style: dotted;
+       border-width: 0px 0px 1px 0px;
+       font-size: medium;
+       font-weight: normal;
+       line-height: 120%;
+
+       color: gray;
+       padding-left: 20px;
+}
+
+#content .note, pre {
+       background-color: #ddd;
+       padding: 5px;
+}
+
+/*
+       font size tricks, to make it work in all browsers
+
+       See:
+       http://diveintoaccessibility.org/day_26_using_relative_font_sizes.html
+
+       (netscape 4 trick is left out, Nucleus doesn't work anyway in that browser)
+       #content should be 'small' (in standard-compliant browsers)
+
+*/
+
+#content {
+  font-size: small;
+  voice-family: "\"}\"";
+  voice-family: inherit;
+  font-size: small;
+}
+html>body #content { font-size: small; }
+
+/* tables */
+div#content table {
+       border: none;
+       width: 100%;
+       border-collapse: collapse;
+       margin-bottom: 10px;
+       margin-top: 10px;
+}
+
+div#content table tbody tr {
+       background-color: #FFFFFF;
+}
+
+div#content table tbody tr:hover {
+       background-color:       #F5F5F5;
+}
+
+div#content table thead tr th {
+       border: none;
+       background-color: #BBBBCC;
+       color: #000000;
+       font-size: small;
+}
+
+div#content table thead th,
+div#content table tbody td {
+       padding: 4px;
+       empty-cells: show;
+}
+
+/* systemconfig column */
+div#content table.systemoverview thead th,
+div#content table.systemoverview tbody td {
+       width:  50%;
+}
+
+div#content table tbody tr td {
+       border: 1px solid #ddd;
+       font-size: small;
+       vertical-align: top;
+       text-align: left;
+}
+
+div#content table tbody tr td a:link,
+div#content table tbody tr td a:visited {
+       text-decoration: underline;
+       color: black;
+       font-weight: normal;
+}
+
+div#content table tbody tr td a:hover {
+       color: #1D3565;
+       text-decoration: underline;
+}
+
+div#content table tbody tr td.draft,
+div#content table tbody tr td.future {
+       background-color: #FFFFEE;
+}
+
+div#content table.navigation td,
+div#content table.navigation th {
+       border: none;
+}
+
+div#content table tbody td h3 {
+       padding:        0px;
+       margin: 0px 0px 2em 0px;
+       border: 0px;
+       color:  #000000;
+       font-size:      small;
+       font-weight:    normal;
+       line-height:    13pt;
+}
+
+div#content table tbody td h3#base_skin {
+       font-weight:    bold;
+}
+
+/* definitive list */
+div#content table tbody tr td dl {
+       margin: 0px;
+       padding:        0px;
+}
+
+div#content table tbody tr td:first-child dl dt {
+       margin: 0px;
+       padding:        0px 5px 0px 0px;
+       display:        inline;
+       float:  left;
+       clear:  both;
+}
+
+div#content table tbody tr td:first-child dl dd {
+       margin: 0px;
+       padding:        0px;
+       display:        block;
+}
+
+div#content table tbody tr td dl dd {
+       margin: 0px 0px 1em 0px;
+}
+
+/* unorderd list */
+div#content table tbody tr td ul {
+       margin: 0px;
+       padding:        0px;
+       list-style:     none;
+}
+
+div#content table tbody tr td ul li {
+       margin: 0px;
+       padding:        0px;
+       white-space:    nowrap;
+}
+
+.batchoperations {
+       background-color: #EEEEFF;
+       width: auto;
+       padding: 5px;
+       text-align: right;
+}
+
+/* footer */
+div.foot {
+       padding: 2px 0px 2px 10px;
+       margin:10px -10px 0 -10px;
+       text-align: center;
+}
-/* \r
-       style definitions for the bookmarklet \r
-       \r
-       $Id: bookmarklet.css 1277 2008-10-22 08:43:59Z shizuki $\r
-*/\r
-\r
-body {\r
-       font-size: small;\r
-       background: #fff;\r
-       color: #000;\r
-    font-family: "Trebuchet MS",Trebuchet,"Bitstream Vera Sans",verdana,lucida,arial,helvetica,sans-serif\r
-}              \r
-\r
-h1 {\r
-       border-bottom: 1px dotted gray;\r
-       font-size: medium;\r
-       color: #596d9d;\r
-}\r
-\r
-/* \r
-       Hide switch buttons initially, we'll enable them again if we are sure\r
-       the browser supports DOM\r
-*/\r
-#switchbuttons {\r
-       display: none;\r
-}\r
-/*\r
-       Hide preview also when no DOM is supported\r
-*/\r
-#preview {\r
-       display: none;\r
-}\r
-\r
-.buttonbar {\r
-   margin-bottom: 5px;\r
-   background: rgb(187, 187, 204);\r
-   padding: 3px;\r
-}\r
-\r
-.buttonbar input {\r
-   background: #C5C5D3;\r
-    border: 1px solid #CACAD7;\r
-    border-right: 2px solid #8E8EAB;\r
-    border-bottom: 2px solid #8E8EAB;\r
-    color: #000000;\r
-    font-family: "Trebuchet MS",Trebuchet,"Bitstream Vera Sans",verdana,lucida,arial,helvetica,sans-serif;\r
-    font-weight: bold;   \r
-}\r
-\r
-.contentblock {\r
-       /*background: #ddd;*/\r
-/*     height: 400px;*/\r
-       height: 450px;\r
-       overflow: auto; /* temporary removed, to make the select box work in Mozilla */\r
-       padding: 1px;\r
-    margin: 0px;\r
-       vertical-align: top;\r
-}\r
-\r
-.shortcuts {\r
-       float: right; \r
-       text-align: right;\r
-       font-size: x-small;\r
-}\r
-\r
-#options {\r
-   margin-top:-15px;\r
-   }\r
-#options h2 {\r
-   margin:15px 0 0 0;\r
-}\r
-\r
-h2 {\r
-   font-size: 1.5em;\r
-   color: gray;\r
-    margin-top: 0px;\r
-    padding-top: 0px;\r
-    padding-bottom: 0px;\r
-    margin-top: 0px;\r
-}\r
-\r
-a:link, a:visited {\r
-       color: #1D3565; \r
-       font-weight: bold;\r
-       text-decoration: none;\r
-}\r
-\r
-a:hover {\r
-       text-decoration: underline;\r
-}                      \r
-\r
-img { \r
-       border: none;\r
-}\r
-\r
-.indent {\r
-       margin-left: 40px;\r
-}\r
-\r
-label          { cursor: pointer; }\r
-\r
-table {\r
-       border: none;\r
-       width: 95%;\r
-       border-collapse: collapse;\r
-       margin-bottom: 10px;\r
-       margin-top: 10px;       \r
-}\r
-\r
-th {\r
-       background: #bbc;\r
-       color: #000;\r
-       font-size: small;\r
-}\r
-\r
-th, td {\r
-       padding: 4px;\r
-       empty-cells: show;      \r
-}\r
-\r
-td {\r
-       background: #fff;\r
-       border: 1px solid #ddd;\r
-       font-size: small;\r
-       vertical-align: top;\r
-       text-align: left;\r
-}\r
-\r
-td a:link, td a:visited { \r
-       text-decoration: underline;\r
-       color: black;\r
-       font-weight: normal;\r
-}\r
-td a:hover {\r
-       color: #1D3565;\r
-       text-decoration: underline;\r
-}\r
-\r
-td.draft, td.future {\r
-       background: #ffe;\r
-}\r
-\r
-tr.highlighted td {\r
-       background: green;\r
-}\r
-\r
-ul.nobullets {\r
-       list-style-type: none;\r
-       padding: 0;\r
-       margin: 0;\r
+/* 
+       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;
+}
+
+#options {
+   margin-top:-15px;
+   }
+#options h2 {
+   margin:15px 0 0 0;
+}
+
+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
similarity index 92%
rename from skins/admin/defaultadmin/styles/manual.css
rename to skins/admin/bookmarklet/styles/manual.css
index f49a257..72ced08 100644 (file)
-/*\r
-       documentation style\r
-       \r
-       $Id: manual.css 757 2005-08-12 07:29:40Z dekarma $\r
-*/\r
-\r
-body {\r
-       background-color: #fff;\r
-       color: #000;\r
-       font-family: verdana, arial;\r
-       font-size: small;\r
-}\r
-\r
-@media screen {\r
-       body {\r
-               margin-left: 10%;\r
-               margin-right: 10%;\r
-       }\r
-}\r
-\r
-@media print {\r
-       pre, .note, td, th {\r
-               border: 1px dashed gray;\r
-       }\r
-}\r
-\r
-img {\r
-       border: none;\r
-}\r
-\r
-a:link, a:visited {\r
-       color: #1D3565; \r
-       font-weight: bold;\r
-       text-decoration: none;\r
-}\r
-a: hover {\r
-       text-decoration: underline;\r
-}\r
-\r
-.heading {\r
-       text-align: center;\r
-       font-size: xx-large;\r
-       font-weight: bold;\r
-       color: gray;    \r
-}\r
-\r
-.heading i {\r
-       position: absolute;\r
-       top: 5px;\r
-       right: 5px;\r
-       font-size: small;\r
-       font-style: normal;\r
-       font-weight: normal;\r
-}\r
-\r
-p:first-letter {\r
-       font-size: large;\r
-}\r
-\r
-p {\r
-       text-indent: 20px;\r
-}\r
-\r
-h1 {\r
-       border-bottom: 1px dotted gray;\r
-       font-size: x-large;\r
-       color: #596d9d;\r
-}\r
-\r
-h2 {\r
-       color: gray;\r
-       font-size: large;\r
-       margin-left: 20px;\r
-       text-indent: 10px;\r
-       border-bottom: 1px solid #ddd;\r
-}\r
-\r
-pre, .note, .faq .answer {\r
-       background-color: #ddd;\r
-       padding: 10px;\r
-       font-size: small;\r
-}\r
-\r
-.screenshot {\r
-       text-align: center;\r
-       background-color: #ddd;\r
-       padding: 10px;\r
-}\r
-\r
-.faq .question {\r
-       font-weight: bold;\r
-       margin-bottom: 0px;\r
-}\r
-\r
-.faq .answer {\r
-\r
-}\r
-\r
-.faq {\r
-       margin-bottom: 20px;\r
-}\r
-\r
-table {\r
-       border: none;\r
-}\r
-\r
-th {\r
-       background-color: linen;\r
-       font-size: medium;\r
-}\r
-\r
-th, td {\r
-       padding: 5px;\r
-}\r
-\r
-td {\r
-       background-color: #dddddd;\r
-       font-size: small;\r
-       vertical-align: top;\r
-       text-align: left;\r
-}\r
-\r
-input, select, option, textarea {\r
-       background-color: transparent;\r
-}\r
-\r
-.deprecated {\r
-       border: 3px solid red;\r
-       padding: 5px;\r
-       font-size: medium;\r
-}\r
-\r
-tt, code, samp {\r
-       font-size: small;\r
-}\r
-\r
-.warning {\r
-       color: red;\r
-}\r
-.ok {\r
-       color: green;\r
-}\r
-\r
-acronym, abbr {\r
-       border-bottom: 1px dotted gray;\r
-       cursor: help;\r
-}\r
-\r
-label {\r
-       cursor: hand;\r
-}\r
+/*
+       documentation style
+       
+       $Id: manual.css 757 2005-08-12 07:29:40Z dekarma $
+*/
+
+body {
+       background-color: #fff;
+       color: #000;
+       font-family: verdana, arial;
+       font-size: small;
+}
+
+@media screen {
+       body {
+               margin-left: 10%;
+               margin-right: 10%;
+       }
+}
+
+@media print {
+       pre, .note, td, th {
+               border: 1px dashed gray;
+       }
+}
+
+img {
+       border: none;
+}
+
+a:link, a:visited {
+       color: #1D3565; 
+       font-weight: bold;
+       text-decoration: none;
+}
+a: hover {
+       text-decoration: underline;
+}
+
+.heading {
+       text-align: center;
+       font-size: xx-large;
+       font-weight: bold;
+       color: gray;    
+}
+
+.heading i {
+       position: absolute;
+       top: 5px;
+       right: 5px;
+       font-size: small;
+       font-style: normal;
+       font-weight: normal;
+}
+
+p:first-letter {
+       font-size: large;
+}
+
+p {
+       text-indent: 20px;
+}
+
+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;
+}
+
+pre, .note, .faq .answer {
+       background-color: #ddd;
+       padding: 10px;
+       font-size: small;
+}
+
+.screenshot {
+       text-align: center;
+       background-color: #ddd;
+       padding: 10px;
+}
+
+.faq .question {
+       font-weight: bold;
+       margin-bottom: 0px;
+}
+
+.faq .answer {
+
+}
+
+.faq {
+       margin-bottom: 20px;
+}
+
+table {
+       border: none;
+}
+
+th {
+       background-color: linen;
+       font-size: medium;
+}
+
+th, td {
+       padding: 5px;
+}
+
+td {
+       background-color: #dddddd;
+       font-size: small;
+       vertical-align: top;
+       text-align: left;
+}
+
+input, select, option, textarea {
+       background-color: transparent;
+}
+
+.deprecated {
+       border: 3px solid red;
+       padding: 5px;
+       font-size: medium;
+}
+
+tt, code, samp {
+       font-size: small;
+}
+
+.warning {
+       color: red;
+}
+.ok {
+       color: green;
+}
+
+acronym, abbr {
+       border-bottom: 1px dotted gray;
+       cursor: help;
+}
+
+label {
+       cursor: hand;
+}
similarity index 92%
rename from skins/admin/defaultadmin/styles/popups.css
rename to skins/admin/bookmarklet/styles/popups.css
index a25e72b..7b6592d 100644 (file)
-/*\r
-       media library popup\r
-       \r
-       $Id: popups.css 757 2005-08-12 07:29:40Z dekarma $\r
-*/\r
-\r
-body {\r
-       font-family: verdana, arial;\r
-       font-size: small;\r
-       background-color: #fff;\r
-       color: #000;\r
-}\r
-\r
-img {\r
-       border: none;\r
-}\r
-\r
-a:link, a:visited {\r
-       color: #1D3565; \r
-       font-weight: bold;\r
-       text-decoration: none;\r
-}\r
-a:hover {\r
-       text-decoration: underline;\r
-}\r
-\r
-.heading {\r
-       text-align: center;\r
-       font-size: xx-large;\r
-       font-weight: bold;\r
-       color: gray;    \r
-}\r
-\r
-.heading i {\r
-       position: absolute;\r
-       top: 5px;\r
-       right: 5px;\r
-       font-size: small;\r
-       font-style: normal;\r
-       font-weight: normal;\r
-}\r
-\r
-p {\r
-       text-indent: 20px;\r
-}\r
-\r
-h1 {\r
-       border-bottom: 1px dotted gray;\r
-       font-size: x-large;\r
-       color: #596d9d;\r
-}\r
-\r
-h2 {\r
-       color: gray;\r
-       font-size: large;\r
-       margin-left: 20px;\r
-       text-indent: 10px;\r
-       border-bottom: 1px solid #ddd;\r
-}\r
-\r
-pre, .note, .faq .answer {\r
-       background-color: #ddd;\r
-       padding: 10px;\r
-       font-size: small;\r
-}\r
-\r
-.faq .question {\r
-       font-weight: bold;\r
-       margin-bottom: 0px;\r
-}\r
-\r
-.faq .answer {\r
-\r
-}\r
-\r
-.faq {\r
-       margin-bottom: 20px;\r
-}\r
-\r
-table {\r
-       border: none;\r
-}\r
-\r
-th {\r
-       background-color: linen;\r
-       font-size: medium;\r
-}\r
-\r
-th, td {\r
-       padding: 5px;\r
-}\r
-\r
-td {\r
-       background-color: #dddddd;\r
-       font-size: small;\r
-       vertical-align: top;\r
-       text-align: left;\r
-}\r
-\r
-label {\r
-       cursor: pointer;\r
+/*
+       media library popup
+       
+       $Id: popups.css 757 2005-08-12 07:29:40Z dekarma $
+*/
+
+body {
+       font-family: verdana, arial;
+       font-size: small;
+       background-color: #fff;
+       color: #000;
+}
+
+img {
+       border: none;
+}
+
+a:link, a:visited {
+       color: #1D3565; 
+       font-weight: bold;
+       text-decoration: none;
+}
+a:hover {
+       text-decoration: underline;
+}
+
+.heading {
+       text-align: center;
+       font-size: xx-large;
+       font-weight: bold;
+       color: gray;    
+}
+
+.heading i {
+       position: absolute;
+       top: 5px;
+       right: 5px;
+       font-size: small;
+       font-style: normal;
+       font-weight: normal;
+}
+
+p {
+       text-indent: 20px;
+}
+
+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;
+}
+
+pre, .note, .faq .answer {
+       background-color: #ddd;
+       padding: 10px;
+       font-size: small;
+}
+
+.faq .question {
+       font-weight: bold;
+       margin-bottom: 0px;
+}
+
+.faq .answer {
+
+}
+
+.faq {
+       margin-bottom: 20px;
+}
+
+table {
+       border: none;
+}
+
+th {
+       background-color: linen;
+       font-size: medium;
+}
+
+th, td {
+       padding: 5px;
+}
+
+td {
+       background-color: #dddddd;
+       font-size: small;
+       vertical-align: top;
+       text-align: left;
+}
+
+label {
+       cursor: pointer;
 }
\ 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
diff --git a/skins/admin/default/images/globe.gif b/skins/admin/default/images/globe.gif
new file mode 100644 (file)
index 0000000..03f2a47
Binary files /dev/null and b/skins/admin/default/images/globe.gif differ
diff --git a/skins/admin/default/javascripts/admin.js b/skins/admin/default/javascripts/admin.js
new file mode 100644 (file)
index 0000000..7f637b1
--- /dev/null
@@ -0,0 +1,59 @@
+/**
+  * 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)
+  *  
+  * Some JavaScript code for the admin area
+  *
+  * $Id: admin.js 1388 2009-07-18 06:31:28Z shizuki $
+  */
+
+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;
+}                              
+
+var oldCellColor = "#000";
+function focusRow(row) {
+       var cells = row.cells;
+       if (!cells) return;
+       oldCellColor = cells[0].style.backgroundColor;
+       for (var i=0;i<cells.length;i++) {
+               cells[i].style.backgroundColor='whitesmoke';
+       }
+}
+function blurRow(row) {
+       var cells = row.cells;
+       if (!cells) return;
+       for (var i=0;i<cells.length;i++) {
+               cells[i].style.backgroundColor=oldCellColor;
+       }
+}
+function batchSelectAll(what) {
+       var i = 0;
+       var el;
+       while (el = document.getElementById('batch' + i)) {
+               el.checked = what?'checked':'';
+               i++;
+       }
+       return false;                                   
+}
+function selectCanLogin(flag) {
+       if (flag) {
+               window.document.memberedit.canlogin[0].checked=true;
+
+               // don't disable canlogin[0], otherwise the value won't be passed.
+//             window.document.memberedit.canlogin[0].disabled=true;
+               window.document.memberedit.canlogin[1].disabled=true;
+       } else {
+               window.document.memberedit.canlogin[0].disabled=false;
+               window.document.memberedit.canlogin[1].disabled=false;
+       }
+}
diff --git a/skins/admin/default/javascripts/bookmarklet.js b/skins/admin/default/javascripts/bookmarklet.js
new file mode 100644 (file)
index 0000000..f33d46e
--- /dev/null
@@ -0,0 +1,70 @@
+/**
+  * 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)
+  *  
+  * Some JavaScript code for the bookmarklets
+  *
+  * $Id: bookmarklet.js 1388 2009-07-18 06:31:28Z shizuki $
+  */
+
+/**
+ * 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;
+}
diff --git a/skins/admin/default/javascripts/compatibility.js b/skins/admin/default/javascripts/compatibility.js
new file mode 100644 (file)
index 0000000..5feeb5a
--- /dev/null
@@ -0,0 +1,33 @@
+/**
+  * 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)
+  *
+  *    Javascript code to make sure that:
+  *  - javascript still works when sending pages as application/xhtml+xml
+  *  - this doesn't break functionality in IE
+  *
+  * How to use:
+  *            - Include this file
+  *            - Use createElement() instead of document.createElement()
+  *
+  * That's basically it :)
+  *
+  * $Id: compatibility.js 1388 2009-07-18 06:31:28Z shizuki $
+  */
+
+// to get the script working when page is sent as application/xhtml+xml
+function createElement(element) {
+  if (document.createElementNS) {
+       return document.createElementNS('http://www.w3.org/1999/xhtml', element);
+  }
+  if (document.createElement) {
+       return document.createElement(element);
+  }
+  return false;
+}
diff --git a/skins/admin/default/javascripts/edit.js b/skins/admin/default/javascripts/edit.js
new file mode 100644 (file)
index 0000000..0faa6da
--- /dev/null
@@ -0,0 +1,345 @@
+/**
+  * 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 file contains functions to allow adding items from inside the weblog.
+  * Also contains code to avoid submitting form data twice.
+  *
+  * $Id: edit.js 1388 2009-07-18 06:31:28Z shizuki $
+  */
+
+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() {
+
+       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;
+}
+
+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";
+       }
+}
+
diff --git a/skins/admin/default/javascripts/index.html b/skins/admin/default/javascripts/index.html
new file mode 100644 (file)
index 0000000..3974d80
--- /dev/null
@@ -0,0 +1,11 @@
+<!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..e3e14ad
--- /dev/null
@@ -0,0 +1,36 @@
+/**
+  * 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)
+  *
+  * script the check (on the clientside) if a entered value
+  * is a valid number and remove the invalid chars
+  *
+  * $Id: numbercheck.js 1388 2009-07-18 06:31:28Z shizuki $
+  */
+
+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);
+}
diff --git a/skins/admin/default/javascripts/opennew.js b/skins/admin/default/javascripts/opennew.js
new file mode 100644 (file)
index 0000000..e6247c8
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * 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)
+ *
+ * $Id: opennew.js 1388 2009-07-18 06:31:28Z shizuki $
+ *
+ * JavaScript to open non-local links in a new window.
+ *
+ * How to use:
+ *  in the <head>...</head> section of your page, add the following line:
+ *
+ *  <script type="text/javascript" src="nucleus/javascript/opennew.js"></script>
+ *
+ *  Then, add the following to your <body> tag:
+ *
+ *  <body ... onload="setOpenNewWindow(true);">
+ *
+ *  And you're all done.
+ *
+ * Variables that can be overridden if necessary:
+ *     local = something to recognize local URLs (by default, if your page is something like
+ *              http://www.example.com/path/page.html, then local will be automatically set to
+ *              http://www.example.com/path/)
+ *      exception = something to recognize exceptions to the local check. You might need this
+ *                  when you use a 'click-through' type of script (e.g. when
+ *                  http://www.example.com/path/click.php?http://otherpage.com/ would 
+ *                  auto-redirect to otherpage.com and record a click in your logs)
+ *                  In most of the cases, this variable is unneeded and can be left empty
+ *      destinationFrame = name of the destination frame (by default this is "_blank" to spawn a
+ *                         new window for each link clicked)
+ */
+
+
+var local = document.URL.substring(0,document.URL.lastIndexOf('/'));
+var exception = "";
+var destinationFrame = "_blank";
+
+function setOpenNewWindow(newWin) {
+       if (newWin) {
+               from = ""; to = destinationFrame;
+       } else {
+               from = destinationFrame; to = "";
+       }
+
+       for (var i=0; i<=(document.links.length-1); i++) {
+               if (document.links[i].target == from) {
+
+                       var href = document.links[i].href;
+                       var isLocal = (href.indexOf(local) != -1);
+                       if (isLocal && ((exception=="") || (href.indexOf(exception) != -1)))
+                               isLocal = false;
+                       if (!isLocal)
+                               document.links[i].target = to;
+               }
+       }
+}
\ No newline at end of file
diff --git a/skins/admin/default/javascripts/templateEdit.js b/skins/admin/default/javascripts/templateEdit.js
new file mode 100644 (file)
index 0000000..a99fbf6
--- /dev/null
@@ -0,0 +1,66 @@
+/**
+  * 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)
+  *
+  *    Javascript code to hide empty textareas when editing templates.
+  *
+  * @require compatibility.js
+  *
+  * $Id: templateEdit.js 1388 2009-07-18 06:31:28Z shizuki $
+  */
+
+var amountOfFields = 1;
+var editText = 'empty field (click to edit)';
+
+function hideUnused() {
+       while (document.getElementById('textarea' + amountOfFields)) 
+               amountOfFields++;
+       amountOfFields--;
+
+       for (var i=1;i<=amountOfFields;i++) {
+               var el = document.getElementById('textarea' + i);
+
+               // hide textareas when empty, and add onclick event
+               // to make them visible again
+               if (el.value == '') {
+                       el.style.display = 'none';
+                       var tdEl = document.getElementById('td' + i);
+                       
+                       var aHref = createElement('a');
+                       aHref.href = '';
+                       aHref.className = "expandLink";
+                       aHref.id = "expandLink" + i;
+                       aHref.onclick = new Function("return makeVisible("+i+")");
+                       aHref.tabIndex = el.tabIndex;
+                       aHref.title = editText;
+                       aHref.appendChild(document.createTextNode(editText));
+
+                       tdEl.appendChild(aHref);
+                       
+               }
+       }
+
+}
+
+function setTemplateEditText(newText) {
+       editText = newText;
+}
+
+function makeVisible(i) {
+       var textareaEl = document.getElementById('textarea' + i);
+       var expandEl = document.getElementById('expandLink' + i);
+
+       textareaEl.style.display = 'block';
+       expandEl.style.display = 'none';
+
+       textareaEl.focus();
+       return false;
+}
+
+window.onload = hideUnused;    
\ No newline at end of file
diff --git a/skins/admin/default/javascripts/xmlhttprequest.js b/skins/admin/default/javascripts/xmlhttprequest.js
new file mode 100644 (file)
index 0000000..6c0b934
--- /dev/null
@@ -0,0 +1,183 @@
+/**
+  * 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 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 1388 2009-07-18 06:31:28Z shizuki $
+  */
+
+/**
+ * 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 = encodeURIComponen(addform.title.value);
+       var body = encodeURIComponen(addform.body.value);
+       var catid = addform.catid.options[addform.catid.selectedIndex].value;
+       var more = encodeURIComponen(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
similarity index 97%
rename from skins/admin/defaultadmin/skinbackup.xml
rename to skins/admin/default/skinbackup.xml
index f721dea..db0e99f 100644 (file)
-<?xml version="1.0"?>\r
-<nucleusskin>\r
-  <meta>\r
-    <skin name="admin/default"/>\r
-    <template name="admin/default"/>\r
-    <info><![CDATA[20120414]]></info>\r
-  </meta>\r
-  <skin name="admin/default" type="text/html" includeMode="skin" includePrefix="admin/defaultadmin">\r
-    <description><![CDATA[ADMIN Area Default skin]]></description>\r
-    <part name="actionlog"><![CDATA[<p><a href="<%adminurl%>index.php?action=manage">(<%text(_BACKTOMANAGE)%>)</a></p>\r
-        <h2><%text(_ACTIONLOG_CLEAR_TITLE)%></h2>\r
-        <p><a href="<%adminurl%><%addtickettourl(index.php?action=clearactionlog)%>"><%text(_ACTIONLOG_CLEAR_TEXT)%></a></p>\r
-        <h2><%text(_ACTIONLOG_TITLE)%></h2>\r
-        <%actionloglist%>]]></part>\r
-    <part name="activate"><![CDATA[<h2><%activationmessage(title)%></h2>\r
-             <p><%activationmessage(text)%></p>\r
-             <p class="error"><%headmessage%></p>\r
-             <%if(bechangepass)%><div>\r
-                <form action="<%adminurl%>index.php" method="post">\r
-                    <input type="hidden" name="action" value="activatesetpwd" />\r
-                    <%ticket%>\r
-                    <input type="hidden" name="key" value="<%activationmessage(ackey)%>" />\r
-                    <table>\r
-                        <tr>\r
-                            <td><%text(_MEMBERS_PWD)%></td>\r
-                            <td><input type="password" maxlength="40" size="16" name="password" /></td>\r
-                        </tr><tr>\r
-                            <td><%text(_MEMBERS_REPPWD)%></td>\r
-                            <td><input type="password" maxlength="40" size="16" name="repeatpassword" /></td>\r
-                            <%eventformextra(activation)%>\r
-                        </tr><tr>\r
-                            <td><%text(_MEMBERS_SETPWD)%></td>\r
-                            <td><input type="submit" value="<%text(_MEMBERS_SETPWD_BTN)%>" /></td>\r
-                        </tr>\r
-                    </table>\r
-                </form>\r
-             </div><%endif%>]]></part>\r
-    <part name="activatesetpwd"><![CDATA[<h2><%text(_ACTIVATE_SUCCESS_TITLE)%></h2>\r
-<p><%text(_ACTIVATE_SUCCESS_TEXT)%></p>]]></part>\r
-    <part name="addnewlog"><![CDATA[<h2><%text(_BLOGCREATED_TITLE)%></h2>\r
-        <p><%sprinttext(_BLOGCREATED_ADDEDTXT,<|%createdblogsetting(name)%|>)%></p>\r
-        <ol>\r
-            <li><a href="#index_php"><%sprinttext(_BLOGCREATED_SIMPLEWAY,<|%getblogsetting(short)%|>)%></a></li>\r
-            <li><a href="#skins"><%text(_BLOGCREATED_ADVANCEDWAY)%></a></li>\r
-        </ol>\r
-        <h3><a id="index_php"><%sprinttext(_BLOGCREATED_SIMPLEDESC1,<|%getblogsetting(short)%|>)%></a></h3>\r
-        <p><%sprinttext(_BLOGCREATED_SIMPLEDESC2,<|%getblogsetting(short)%|>)%></p>\r
-<pre><code>&lt;?php\r
-\r
-$CONF['Self'] = '<b><%blogsetting(short)%>.php</b>';\r
-\r
-include('<i>./config.php</i>');\r
-\r
-selectBlog('<b><%blogsetting(short)%></b>');\r
-selector();\r
-\r
-?&gt;</code></pre>\r
-        <p><%text(_BLOGCREATED_SIMPLEDESC3)%></p>\r
-        <p><%text(_BLOGCREATED_SIMPLEDESC4)%></p>\r
-        <form action="<%adminurl%>index.php" method="post">\r
-            <div>\r
-                <input type="hidden" name="action" value="addnewlog2" />\r
-                <%ticket%>\r
-                <input type="hidden" name="blogid" value="<%requestblogid%>" />\r
-                <table>\r
-                    <tr>\r
-                        <td><%text(_EBLOG_URL)%></td>\r
-                        <td><input name="url" maxlength="100" size="40" value="<%sitevar(url)%><%blogsetting(short)%>.php" /></td>\r
-                    </tr><tr>\r
-                        <td><%text(_EBLOG_CREATE)%></td>\r
-                        <td><input type="submit" value="<%text(_EBLOG_CREATE_BTN)%>" onclick="return checkSubmit();" /></td>\r
-                    </tr>\r
-                </table>\r
-            </div>\r
-        </form>\r
-        <h3><a id="skins"><%text(_BLOGCREATED_ADVANCEDWAY2)%></a></h3>\r
-        <p><%text(_BLOGCREATED_ADVANCEDWAY3)%></p>\r
-        <form action="<%adminurl%>index.php" method="post">\r
-            <div>\r
-                <input type="hidden" name="action" value="addnewlog2" />\r
-                <%ticket%>\r
-                <input type="hidden" name="blogid" value="<%requestblogid%>" />\r
-                <table>\r
-                    <tr>\r
-                        <td><%text(_EBLOG_URL)%></td>\r
-                        <td><input name="url" maxlength="100" size="40" /></td>\r
-                    </tr><tr>\r
-                        <td><%text(_EBLOG_CREATE)%></td>\r
-                        <td><input type="submit" value="<%text(_EBLOG_CREATE_BTN)%>" onclick="return checkSubmit();" /></td>\r
-                    </tr>\r
-                </table>\r
-            </div>\r
-        </form>]]></part>\r
-    <part name="adminerrorpage"><![CDATA[        <h2>Error!</h2>\r
-        <%headmessage%>\r
-        <br />\r
-        <a href="<%adminurl%>index.php" onclick="history.back()"><%text(_BACK)%></a>\r
-]]></part>\r
-    <part name="adminskindelete"><![CDATA[<h2><%text(_DELETE_CONFIRM)%></h2>\r
-            <p><%text(_CONFIRMTXT_SKIN)%><b><%editadminskintype(name)%></b> (<%editadminskintype(desc)%>)</p>\r
-            <form method="post" action="<%adminurl%>index.php">\r
-                <div>\r
-                    <input type="hidden" name="action" value="adminskindeleteconfirm" />\r
-                    <%ticket%>\r
-                    <input type="hidden" name="skinid" value="<%editadminskintype(id)%>" />\r
-                    <input type="submit" tabindex="10" value="<%text(_DELETE_CONFIRM_BTN)%>" />\r
-                </div>\r
-            </form>]]></part>\r
-    <part name="adminskinedit"><![CDATA[<p><a href="<%adminurl%>index.php?action=adminskinoverview">(<%text(_SKIN_BACK)%>)</a></p>\r
-        <h2><%text(_SKIN_EDITONE_TITLE)%> '<%editadminskin(name)%>'</h2>\r
-        <h3><%text(_SKIN_PARTS_TITLE)%></h3>\r
-        <%text(_SKIN_PARTS_MSG)%>\r
-<%defaultadminskintypes(10,defaultadmin)%>\r
-        <h3><%text(_SKIN_PARTS_SPECIAL)%></h3>\r
-        <form method="get" action="<%adminurl%>index.php">\r
-            <input type="hidden" name="action" value="adminskinedittype" />\r
-            <input type="hidden" name="skinid" value="<%editadminskin(id)%>" />\r
-            <input name="type" tabindex="89" size="30" maxlength="64" />\r
-            <input type="submit" tabindex="140" value="<%text(_SKIN_CREATE)%>" onclick="return checkSubmit();" />\r
-        </form>\r
-        <%adminspecialskinlist(defaultadmin)%>\r
-        <h3><%text(_SKIN_GENSETTINGS_TITLE)%></h3>\r
-        <form method="post" action="<%adminurl%>index.php">\r
-            <div>\r
-                <input type="hidden" name="action" value="adminskineditgeneral" />\r
-                <%ticket%>\r
-                <input type="hidden" name="skinid" value="<%editadminskin(id)%>" />\r
-                <table>\r
-                    <tr>\r
-                        <td><%text(_SKIN_NAME)%> <%helplink(shortnames)%></td>\r
-                        <td><input name="name" tabindex="90" value="<%editadminskin(name)%>" maxlength="64" size="30" /></td>\r
-                    </tr><tr>\r
-                        <td><%text(_SKIN_DESC)%></td>\r
-                        <td><input name="desc" tabindex="100" value="<%editadminskin(desc)%>" maxlength="200" size="50" /></td>\r
-                </tr><tr>\r
-                    <td><%text(_SKIN_TYPE)%></td>\r
-                    <td><input name="type" tabindex="110" value="<%editadminskin(type)%>" maxlength="40" size="20" /></td>\r
-                </tr><tr>\r
-                    <td><%text(_SKIN_INCLUDE_MODE)%> <%helplink(includemode)%></td>\r
-                    <td><%editadminskin(mode)%></td>\r
-                </tr><tr>\r
-                    <td><%text(_SKIN_INCLUDE_PREFIX)%> <%helplink(includeprefix)%></td>\r
-                    <td><input name="inc_prefix" tabindex="130" value="<%editadminskin(prefix)%>" maxlength="40" size="20" /></td>\r
-                </tr><tr>\r
-                    <td><%text(_SKIN_CHANGE)%></td>\r
-                    <td><input type="submit" tabindex="140" value="<%text(_SKIN_CHANGE_BTN)%>" onclick="return checkSubmit();" /></td>\r
-                </tr></table>\r
-            </div>\r
-        </form>]]></part>\r
-    <part name="adminskinedittype"><![CDATA[<p>(<a href="<%adminurl%>index.php?action=adminskinoverview"><%text(_SKIN_GOBACK)%></a>)</p>\r
-        <h2><%text(_SKIN_EDITPART_TITLE)%> '<%editadminskintype(name)%>': <%editadminskintype(skintype)%></h2>\r
-        <%headmessage%>\r
-        <form method="post" action="<%adminurl%>index.php">\r
-            <div>\r
-                <input type="hidden" name="action" value="adminskinupdate" />\r
-                <%ticket%>\r
-                <input type="hidden" name="skinid" value="<%editadminskintype(id)%>" />\r
-                <input type="hidden" name="type" value="<%editadminskintype(skintyperaw)%>" />\r
-                <input type="submit" value="<%text(_SKIN_UPDATE_BTN)%>" onclick="return checkSubmit();" />\r
-                <input type="reset" value="<%text(_SKIN_RESET_BTN)%>" />\r
-                (skin type: <%editadminskintype(skintype)%>)<%skintypehelp%><br />\r
-                <textarea class="skinedit" tabindex="10" rows="20" cols="80" name="content"><%editadminskintype(content)%></textarea><br />\r
-                <input type="submit" tabindex="20" value="<%text(_SKIN_UPDATE_BTN)%>" onclick="return checkSubmit();" />\r
-                <input type="reset" value="<%text(_SKIN_RESET_BTN)%>" />\r
-                (skin type: <%editadminskintype(skintype)%>)\r
-                <br /><br />\r
-                <%text(_SKIN_ALLOWEDVARS)%>\r
-                <%allowedadminskinactions%><br /><br />\r
-                <%text(_SKINEDIT_ALLOWEDTEMPLATESS)%>\r
-                <%adminskineditallowedlist(template)%><br />\r
-            </div>\r
-        </form>]]></part>\r
-    <part name="adminskiniedoimport"><![CDATA[<p><a href="<%adminurl%>index.php?action=manage">(<%text(_BACKTOMANAGE)%>)</a></p>\r
-        <h2><%text(_SKINIE_DONE)%></h2>\r
-\r
-        <ul>\r
-            <li><p><strong><%text(_SKINIE_INFO_GENERAL)%></strong> <%importskininfo(info)%></p></li>\r
-            <li><p><strong><%text(_SKINIE_INFO_IMPORTEDSKINS)%></strong> <%importskininfo(snames)%></p></li>\r
-            <li><p><strong><%text(_SKINIE_INFO_IMPORTEDTEMPLS)%></strong> <%importskininfo(tnames)%></p></li>\r
-        </ul>]]></part>\r
-    <part name="adminskinieimport"><![CDATA[<p><a href="<%adminurl%>index.php?action=adminskinieoverview">(<%text(_BACK)%>)</a></p>\r
-        <h2><%text(_SKINIE_CONFIRM_TITLE)%></h2>\r
-\r
-        <ul>\r
-            <li><p><strong><%text(_SKINIE_INFO_GENERAL)%></strong> <%importskininfo(info)%></p></li>\r
-            <li><p><strong><%text(_SKINIE_INFO_SKINS)%></strong> <%importskininfo(snames)%></p></li>\r
-            <li><p><strong><%text(_SKINIE_INFO_TEMPLATES)%></strong> <%importskininfo(tnames)%></p></li>\r
-            <%if(nameclashes)%><li><p><strong style="color: red;"><%text(_SKINIE_INFO_SKINCLASH)%></strong> <%importskininfo(sclashes)%></p></li>\r
-            <li><p><strong style="color: red;"><%text(_SKINIE_INFO_TEMPLCLASH)%></strong> <%importskininfo(tclashes)%></p></li><%endif%>\r
-        </ul>\r
-\r
-        <form method="post" action="<%adminurl%>index.php"><div>\r
-            <input type="hidden" name="action" value="adminskiniedoimport" />\r
-            <%ticket%>\r
-            <input type="hidden" name="skinfile" value="<%importskininfo(skinfile)%>" />\r
-            <input type="hidden" name="mode" value="<%importskininfo(mode)%>" />\r
-            <input type="submit" value="<%text(_SKINIE_CONFIRM_IMPORT)%>" />\r
-            <%if(nameclashes)%><br />\r
-            <input type="checkbox" name="overwrite" value="1" id="cb_overwrite" /><label for="cb_overwrite"><%text(_SKINIE_CONFIRM_OVERWRITE)%></label><%endif%>\r
-        </div></form>]]></part>\r
-    <part name="adminskinieoverview"><![CDATA[<p><a href="<%adminurl%>index.php?action=manage">(<%text(_BACKTOMANAGE)%>)</a></p>\r
-        <h2><%text(_SKINIE_TITLE_IMPORT)%></h2>\r
-        <p>\r
-            <label for="skinie_import_local"><%text(_SKINIE_LOCAL)%></label>\r
-            <%if(superadmin)%><form method="post" action="<%adminurl%>index.php">\r
-                <div>\r
-                    <input type="hidden" name="action" value="adminskinieimport" />\r
-                    <%ticket%>\r
-                    <input type="hidden" name="mode" value="file" />\r
-                    <select name="skinfile" id="skinie_import_local">\r
-                        <%selectlocaladminskinfiles%>\r
-                    </select>\r
-                    <input type="submit" value="<%text(_SKINIE_BTN_IMPORT)%>" />\r
-                </div>\r
-            </form><%else%><%text(_SKINIE_NOCANDIDATES)%><%endif%>\r
-        </p>\r
-        <p><em><%text(_OR)%></em></p>\r
-        <form method="post" action="<%adminurl%>index.php">\r
-            <p>\r
-                <%ticket%>\r
-                <input type="hidden" name="action" value="adminskinieimport" />\r
-                <input type="hidden" name="mode" value="url" />\r
-                <label for="skinie_import_url"><%text(_SKINIE_FROMURL)%></label>\r
-                <input type="text" name="skinfile" id="skinie_import_url" size="60" value="http://" />\r
-                <input type="submit" value="<%text(_SKINIE_BTN_IMPORT)%>" />\r
-            </p>\r
-        </form>\r
-        <h2><%text(_SKINIE_TITLE_EXPORT)%></h2>\r
-        <form method="post" action="<%adminurl%>index.php">\r
-            <div>\r
-                <input type="hidden" name="action" value="adminskinieexport" />\r
-                <%ticket%>\r
-                <p><%text(_SKINIE_EXPORT_INTRO)%></p>\r
-                <table>\r
-                    <tr>\r
-                        <th colspan="2"><%text(_SKINIE_EXPORT_SKINS)%></th>\r
-                    </tr><tr>\r
-                        <%adminskinielist(skin,defaultadmin)%>\r
-                        <th colspan="2"><%text(_SKINIE_EXPORT_TEMPLATES)%></th>\r
-                    </tr><tr>\r
-                        <%adminskinielist(template,defaultadmin)%>\r
-                        <th colspan="2"><%text(_SKINIE_EXPORT_EXTRA)%></th>\r
-                    </tr><tr>\r
-                        <td colspan="2"><textarea cols="40" rows="5" name="info"></textarea></td>\r
-                    </tr><tr>\r
-                        <th colspan="2"><%text(_SKINIE_TITLE_EXPORT)%></th>\r
-                    </tr><tr>\r
-                        <td colspan="2"><input type="submit" value="<%text(_SKINIE_BTN_EXPORT)%>" /></td>\r
-                    </tr>\r
-                </table>\r
-            </div>\r
-        </form>]]></part>\r
-    <part name="adminskinoverview"><![CDATA[<p><a href="<%adminurl%>index.php?action=manage">(<%text(_BACKTOMANAGE)%>)</a></p>\r
-        <h2><%text(_SKIN_EDIT_TITLE)%></h2>\r
-        <h3><%text(_SKIN_AVAILABLE_TITLE)%></h3>\r
-        <%adminskinoverview%>\r
-        <h3><%text(_SKIN_NEW_TITLE)%></h3>\r
-        <form method="post" action="<%adminurl%>index.php">\r
-            <div>\r
-                <input name="action" value="adminskinnew" type="hidden" />\r
-                <%ticket%>\r
-                <table>\r
-                    <tr>\r
-                        <td><%text(_SKIN_NAME)%> <%helplink(shortnames)%></td>\r
-                        <td><input name="name" tabindex="10010" maxlength="20" size="20" /></td>\r
-                    </tr><tr>\r
-                        <td><%text(_SKIN_DESC)%></td>\r
-                        <td><input name="desc" tabindex="10020" maxlength="200" size="50" /></td>\r
-                    </tr><tr>\r
-                        <td><%text(_SKIN_CREATE)%></td>\r
-                        <td><input type="submit" tabindex="10030" value="<%text(_SKIN_CREATE_BTN)%>" onclick="return checkSubmit();" /></td>\r
-                    </tr>\r
-                </table>\r
-            </div>\r
-        </form>]]></part>\r
-    <part name="adminskinremovetype"><![CDATA[<h2><%text(_DELETE_CONFIRM)%></h2>\r
-            <p><%text(_CONFIRMTXT_SKIN_PARTS_SPECIAL)%><b><%editadminskintype(skintype)%> (<%editadminskintype(name)%>)</b> (<%editadminskintype(desc)%>)</p>\r
-            <form method="post" action="<%adminurl%>index.php">\r
-                <div>\r
-                    <input type="hidden" name="action" value="adminskinremovetypeconfirm" />\r
-                    <%ticket%>\r
-                    <input type="hidden" name="skinid" value="<%editadminskintype(id)%>" />\r
-                    <input type="hidden" name="type" value="<%editadminskintype(skintype)%>" />\r
-                    <input type="submit" tabindex="10" value="<%text(_DELETE_CONFIRM_BTN)%>" />\r
-                </div>\r
-            </form>]]></part>\r
-    <part name="admintemplatedelete"><![CDATA[<h2><%text(_DELETE_CONFIRM)%></h2>\r
-            <p><%text(_CONFIRMTXT_TEMPLATE)%><b><%editadmintemplateinfo(name)%></b> (<%editadmintemplateinfo(desc)%>)</p>\r
-            <form method="post" action="<%adminurl%>index.php">\r
-                <div>\r
-                    <input type="hidden" name="action" value="admintemplatedeleteconfirm" />\r
-                    <%ticket%>\r
-                    <input type="hidden" name="templateid" value="<%editadmintemplateinfo(id)%>" />\r
-                    <input type="submit" tabindex="10" value="<%text(_DELETE_CONFIRM_BTN)%>" />\r
-                </div>\r
-            </form>]]></part>\r
-    <part name="admintemplateedit"><![CDATA[<p><a href="<%adminurl%>index.php?action=admintemplateoverview">(<%text(_TEMPLATE_BACK)%>)</a></p>\r
-\r
-        <h2><%text(_TEMPLATE_EDIT_TITLE)%> '<%editadmintemplateinfo(name)%>'</h2>\r
-        <%headmessage%>\r
-        <p><%text(_TEMPLATE_EDIT_MSG)%></p>\r
-        <form method="post" action="<%adminurl%>index.php">\r
-            <div>\r
-                <input type="hidden" name="action" value="admintemplateupdate" />\r
-                <%ticket%>\r
-                <input type="hidden" name="templateid" value="<%editadmintemplateinfo(id)%>" />\r
-                <table>\r
-                    <tr>\r
-                        <th colspan="2"><%text(_TEMPLATE_SETTINGS)%></th>\r
-                    </tr><tr>\r
-                        <td><%text(_TEMPLATE_NAME)%> <%helplink(shortnames)%></td>\r
-                        <td><input name="tname" tabindex="4" size="20" maxlength="20" value="<%editadmintemplateinfo(name)%>" /></td>\r
-                    </tr><tr>\r
-                        <td><%text(_TEMPLATE_DESC)%></td>\r
-                        <td><input name="tdesc" tabindex="5" size="50" maxlength="200" value="<%editadmintemplateinfo(desc)%>" /></td>\r
-                    </tr><tr>\r
-                        <th colspan="2"><%text(_TEMPLATE_UPDATE)%></th>\r
-                    </tr><tr>\r
-                        <td><%text(_TEMPLATE_UPDATE)%></td>\r
-                        <td>\r
-                            <input type="submit" tabindex="6" value="<%text(_TEMPLATE_UPDATE_BTN)%>" onclick="return checkSubmit();" />\r
-                            <input type="reset" tabindex="7" value="<%text(_TEMPLATE_RESET_BTN)%>" />\r
-                        </td>\r
-                    </tr><tr>\r
-                        <th colspan="2"><%text(_QMENU_LAYOUT_SKINS)%></th>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_ADMINSKINTYPELIST_HEAD, ADMINSKINTYPELIST_HEAD, ,8)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_ADMINSKINTYPELIST_BODY, ADMINSKINTYPELIST_BODY, ,9)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_ADMINSKINTYPELIST_FOOT, ADMINSKINTYPELIST_FOOT, ,10)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SPECIALSKINLIST_HEAD, SPECIALSKINLIST_HEAD, , 11)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SPECIALSKINLIST_BODY, SPECIALSKINLIST_BODY, , 12)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SPECIALSKINLIST_FOOT, SPECIALSKINLIST_FOOT, , 13)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_ADMIN_SPECIALSKINLIST_HEAD, ADMIN_SPECIALSKINLIST_HEAD, , 14)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_ADMIN_SPECIALSKINLIST_BODY, ADMIN_SPECIALSKINLIST_BODY, , 15)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_ADMIN_SPECIALSKINLIST_FOOT, ADMIN_SPECIALSKINLIST_FOOT, , 16)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SKINIE_EXPORT_LIST, SKINIE_EXPORT_LIST, , 17)%>\r
-                    </tr><tr>\r
-                        <th colspan="2"><%text(_QMENU_LAYOUT_TEMPL)%></th>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_TEMPLATE_EDIT_EXPLUGNAME, TEMPLATE_EDIT_EXPLUGNAME, , 18)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_TEMPLATE_EDIT_ROW_HEAD, TEMPLATE_EDIT_ROW_HEAD, , 19)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_TEMPLATE_EDIT_ROW_TAIL, TEMPLATE_EDIT_ROW_TAIL, , 20)%>\r
-                    </tr><tr>\r
-                        <th colspan="2"><%text(_SKINABLEADMIN_ADMINAREAHEADLINK)%></th>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_ADMIN_BLOGLINK, ADMIN_BLOGLINK, , 21)%>\r
-                    </tr><tr>\r
-                        <th colspan="2"><%text(_SKINABLEADMIN_BATCH)%></th>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_ADMIN_BATCHLIST, ADMIN_BATCHLIST, , 22)%>\r
-                    </tr><tr>\r
-                        <th colspan="2"><%text(_QMENU_ACTIVATE)%></th>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_ACTIVATE_FORGOT_TITLE, ACTIVATE_FORGOT_TITLE, , 23)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_ACTIVATE_FORGOT_TEXT, ACTIVATE_FORGOT_TEXT, , 24)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_ACTIVATE_REGISTER_TITLE, ACTIVATE_REGISTER_TITLE, , 25)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_ACTIVATE_REGISTER_TEXT, ACTIVATE_REGISTER_TEXT, , 26)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_ACTIVATE_CHANGE_TITLE, ACTIVATE_CHANGE_TITLE, , 27)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_ACTIVATE_CHANGE_TEXT, ACTIVATE_CHANGE_TEXT, , 28)%>\r
-                    </tr><tr>\r
-                        <th colspan="2"><%text(_QMENU_MANAGE_SYSTEM)%></th>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SYSTEMINFO_GDSETTINGS, SYSTEMINFO_GDSETTINGS, , 29)%>\r
-                    </tr><tr>\r
-                        <th colspan="2"><%text(_BLOGLIST_BANS)%></th>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_BANLIST_DELETED_LIST, BANLIST_DELETED_LIST, , 30)%>\r
-                    </tr><tr>\r
-                        <th colspan="2"><%text(_SKINABLEADMIN_TPLSETTING_INGENERAL)%></th>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_INSERT_PLUGOPTION_TITLE, INSERT_PLUGOPTION_TITLE, , 31)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_INSERT_PLUGOPTION_BODY, INSERT_PLUGOPTION_BODY, , 32)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_INPUTYESNO_TEMPLATE_ADMIN, INPUTYESNO_TEMPLATE_ADMIN, , 33)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_INPUTYESNO_TEMPLATE_NORMAL, INPUTYESNO_TEMPLATE_NORMAL, , 34)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_ADMIN_CUSTOMHELPLINK_ICON, ADMIN_CUSTOMHELPLINK_ICON, , 35)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_ADMIN_CUSTOMHELPLINK_ANCHOR, ADMIN_CUSTOMHELPLINK_ANCHOR, , 36)%>\r
-\r
-                    </tr><tr>\r
-                        <th colspan="2"><%text(_SKINABLEADMIN_SHOWLIST_LISTPLUG_SELECT)%></th>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_SELECT_HEAD, SHOWLIST_LISTPLUG_SELECT_HEAD, , 37)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_SELECT_BODY, SHOWLIST_LISTPLUG_SELECT_BODY, , 38)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_SELECT_FOOT, SHOWLIST_LISTPLUG_SELECT_FOOT, , 39)%>\r
-                    </tr><tr>\r
-                        <th colspan="2"><%text(_SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE)%></th>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_HEAD, SHOWLIST_LISTPLUG_TABLE_HEAD, , 40)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BODY, SHOWLIST_LISTPLUG_TABLE_BODY, , 41)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_FOOT, SHOWLIST_LISTPLUG_TABLE_FOOT, , 42)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_MEMBLIST_HEAD, SHOWLIST_LISTPLUG_TABLE_MEMBLIST_HEAD, , 43)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_MEMBLIST_BODY, SHOWLIST_LISTPLUG_TABLE_MEMBLIST_BODY, , 44)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_MEMBLIST_FOOT, SHOWLIST_LISTPLUG_TABLE_MEMBLIST_FOOT, , 45)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_TEAMLIST_HEAD, SHOWLIST_LISTPLUG_TABLE_TEAMLIST_HEAD, , 46)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_TEAMLIST_BODY, SHOWLIST_LISTPLUG_TABLE_TEAMLIST_BODY, , 47)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_TEAMLIST_FOOT, SHOWLIST_LISTPLUG_TABLE_TEAMLIST_FOOT, , 48)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HEAD, SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HEAD, , 49)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY, SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY, , 50)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL, SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL, , 51)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST, SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST, , 52)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE, SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE, , 53)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND, SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND, , 54)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ, SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ, , 55)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE, SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE, , 56)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN, SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN, , 57)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN, SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN, , 58)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP, SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP, , 59)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL, SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL, , 60)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_FOOT, SHOWLIST_LISTPLUG_TABLE_PLUGLIST_FOOT, , 61)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_POPTLIST_HEAD, SHOWLIST_LISTPLUG_TABLE_POPTLIST_HEAD, , 62)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_POPTLIST_BODY, SHOWLIST_LISTPLUG_TABLE_POPTLIST_BODY, , 63)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLGOPT_OYESNO, SHOWLIST_LISTPLUG_TABLE_PLGOPT_OYESNO, , 64)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLGOPT_OPWORD, SHOWLIST_LISTPLUG_TABLE_PLGOPT_OPWORD, , 65)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLGOPT_OSELEP, SHOWLIST_LISTPLUG_TABLE_PLGOPT_OSELEP, , 66)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLGOPT_OSELEO, SHOWLIST_LISTPLUG_TABLE_PLGOPT_OSELEO, , 67)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLGOPT_OSELEC, SHOWLIST_LISTPLUG_TABLE_PLGOPT_OSELEC, , 68)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLGOPT_OTAREA, SHOWLIST_LISTPLUG_TABLE_PLGOPT_OTAREA, , 69)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLGOPT_OITEXT, SHOWLIST_LISTPLUG_TABLE_PLGOPT_OITEXT, , 70)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTN_FOOT, SHOWLIST_LISTPLUG_TABLE_PLUGOPTN_FOOT, , 71)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_POPTLIST_FOOT, SHOWLIST_LISTPLUG_TABLE_POPTLIST_FOOT, , 72)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_ITEMLIST_HEAD, SHOWLIST_LISTPLUG_TABLE_ITEMLIST_HEAD, , 73)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_ITEMLIST_BODY, SHOWLIST_LISTPLUG_TABLE_ITEMLIST_BODY, , 74)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_ITEMLIST_FOOT, SHOWLIST_LISTPLUG_TABLE_ITEMLIST_FOOT, , 75)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_CMNTLIST_HEAD, SHOWLIST_LISTPLUG_TABLE_CMNTLIST_HEAD, , 76)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_CMNTLIST_BODY, SHOWLIST_LISTPLUG_TABLE_CMNTLIST_BODY, , 77)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_CMNTLIST_ABAN, SHOWLIST_LISTPLUG_TABLE_CMNTLIST_ABAN, , 78)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_CMNTLIST_FOOT, SHOWLIST_LISTPLUG_TABLE_CMNTLIST_FOOT, , 79)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLOGLIST_HEAD, SHOWLIST_LISTPLUG_TABLE_BLOGLIST_HEAD, , 80)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLOGLIST_BODY, SHOWLIST_LISTPLUG_TABLE_BLOGLIST_BODY, , 81)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM, SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM, , 82)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM, SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM, , 83)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLOGLIST_FOOT, SHOWLIST_LISTPLUG_TABLE_BLOGLIST_FOOT, , 84)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLOGSNAM_HEAD, SHOWLIST_LISTPLUG_TABLE_BLOGSNAM_HEAD, , 85)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLOGSNAM_BODY, SHOWLIST_LISTPLUG_TABLE_BLOGSNAM_BODY, , 86)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLOGSNAM_FOOT, SHOWLIST_LISTPLUG_TABLE_BLOGSNAM_FOOT, , 87)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_SHORTNAM_HEAD, SHOWLIST_LISTPLUG_TABLE_SHORTNAM_HEAD, , 88)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_SHORTNAM_BODY, SHOWLIST_LISTPLUG_TABLE_SHORTNAM_BODY, , 89)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_SHORTNAM_FOOT, SHOWLIST_LISTPLUG_TABLE_SHORTNAM_FOOT, , 90)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_CATELIST_HEAD, SHOWLIST_LISTPLUG_TABLE_CATELIST_HEAD, , 91)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_CATELIST_BODY, SHOWLIST_LISTPLUG_TABLE_CATELIST_BODY, , 92)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_CATELIST_FOOT, SHOWLIST_LISTPLUG_TABLE_CATELIST_FOOT, , 93)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_TPLTLIST_HEAD, SHOWLIST_LISTPLUG_TABLE_TPLTLIST_HEAD, , 94)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_TPLTLIST_BODY, SHOWLIST_LISTPLUG_TABLE_TPLTLIST_BODY, , 95)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_TPLTLIST_FOOT, SHOWLIST_LISTPLUG_TABLE_TPLTLIST_FOOT, , 96)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_SKINLIST_HEAD, SHOWLIST_LISTPLUG_TABLE_SKINLIST_HEAD, , 97)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_SKINLIST_BODY, SHOWLIST_LISTPLUG_TABLE_SKINLIST_BODY, , 98)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_SKINLIST_FOOT, SHOWLIST_LISTPLUG_TABLE_SKINLIST_FOOT, , 99)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_DRFTLIST_HEAD, SHOWLIST_LISTPLUG_TABLE_DRFTLIST_HEAD, , 100)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_DRFTLIST_BODY, SHOWLIST_LISTPLUG_TABLE_DRFTLIST_BODY, , 101)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_DRFTLIST_FOOT, SHOWLIST_LISTPLUG_TABLE_DRFTLIST_FOOT, , 102)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_ACTNLIST_HEAD, SHOWLIST_LISTPLUG_TABLE_ACTNLIST_HEAD, , 103)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_ACTNLIST_BODY, SHOWLIST_LISTPLUG_TABLE_ACTNLIST_BODY, , 104)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_ACTNLIST_FOOT, SHOWLIST_LISTPLUG_TABLE_ACTNLIST_FOOT, , 105)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_IBANLIST_HEAD, SHOWLIST_LISTPLUG_TABLE_IBANLIST_HEAD, , 106)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_IBANLIST_BODY, SHOWLIST_LISTPLUG_TABLE_IBANLIST_BODY, , 107)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_IBANLIST_FOOT, SHOWLIST_LISTPLUG_TABLE_IBANLIST_FOOT, , 108)%>\r
-                    </tr><tr>\r
-                        <th colspan="2"><%text(_SKINABLEADMIN_PLUGIN_QUICKMENU)%></th>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_PLUGIN_QUICKMENU_TITLE, PLUGIN_QUICKMENU_TITLE, , 109)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_PLUGIN_QUICKMENU_HEAD, PLUGIN_QUICKMENU_HEAD, , 110)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_PLUGIN_QUICKMENU_BODY, PLUGIN_QUICKMENU_BODY, , 111)%>\r
-                    <%editadmintemplateinfo(row, _ADM_TPLPT_PLUGIN_QUICKMENU_FOOT, PLUGIN_QUICKMENU_FOOT, , 112)%>\r
-                    </tr><tr>\r
-                        <th colspan="2"><%text(_TEMPLATE_PLUGIN_FIELDS)%></th>\r
-                    <%editadmintemplateinfo(extratemplate,defaultadmin)%>\r
-                    </tr><tr>\r
-                        <th colspan="2"><%text(_TEMPLATE_UPDATE)%></th>\r
-                    </tr><tr>\r
-                        <td><%text(_TEMPLATE_UPDATE)%></td>\r
-                        <td>\r
-                            <input type="submit" tabindex="800" value="<%text(_TEMPLATE_UPDATE_BTN)%>" onclick="return checkSubmit();" />\r
-                            <input type="reset" tabindex="810" value="<%text(_TEMPLATE_RESET_BTN)%>" />\r
-                        </td>\r
-                    </tr>\r
-                </table>\r
-            </div>\r
-        </form>]]></part>\r
-    <part name="admntemplateoverview"><![CDATA[<p><a href="<%adminurl%>index.php?action=manage">(<%text(_BACKTOMANAGE)%>)</a></p>\r
-        <h2><%text(_TEMPLATE_TITLE)%></h2>\r
-        <h3><%text(_TEMPLATE_AVAILABLE_TITLE)%></h3>\r
-        <%admintemplateoverview%>\r
-        <h3><%text(_TEMPLATE_NEW_TITLE)%></h3>\r
-        <form method="post" action="<%adminurl%>index.php">\r
-            <div>\r
-                <input name="action" value="admintemplatenew" type="hidden" />\r
-                <%ticket%>\r
-                <table>\r
-                    <tr>\r
-                        <td><%text(_TEMPLATE_NAME)%> <%helplink(shortnames)%></td>\r
-                        <td><input name="name" tabindex="10010" maxlength="20" size="20" /></td>\r
-                    </tr><tr>\r
-                        <td><%text(_TEMPLATE_DESC)%></td>\r
-                        <td><input name="desc" tabindex="10020" maxlength="200" size="50" /></td>\r
-                    </tr><tr>\r
-                        <td><%text(_TEMPLATE_CREATE)%></td>\r
-                        <td><input type="submit" tabindex="10030" value="<%text(_TEMPLATE_CREATE_BTN)%>" onclick="return checkSubmit();" /></td>\r
-                    </tr>\r
-                </table>\r
-            </div>\r
-        </form>]]></part>\r
-    <part name="backupoverview"><![CDATA[        <p><a href="<%adminurl%>index.php?action=manage">(<%text(_BACKTOMANAGE)%>)</a></p>\r
-        <h2><%text(_BACKUPS_TITLE)%></h2>\r
-        <h3><%text(_BACKUP_TITLE)%></h3>\r
-        <p><%text(_BACKUP_INTRO)%></p>\r
-        <form method="post" action="<%adminurl%>index.php">\r
-            <p>\r
-                <input type="hidden" name="action" value="backupcreate" />\r
-                <%ticket%>\r
-                <input type="radio" name="gzip" value="1" checked="checked" id="gzip_yes" tabindex="10" /><label for="gzip_yes"><%text(_BACKUP_ZIP_YES)%></label><br />\r
-                <input type="radio" name="gzip" value="0" id="gzip_no" tabindex="10" /><label for="gzip_no" ><%text(_BACKUP_ZIP_NO)%></label><br /><br />\r
-                <input type="submit" value="<%text(_BACKUP_BTN)%>" tabindex="20" />\r
-            </p>\r
-        </form>\r
-        <div class="note"><%text(_BACKUP_NOTE)%></div>\r
-        <h3><%text(_RESTORE_TITLE)%></h3>\r
-        <div class="note"><%text(_RESTORE_NOTE)%></div>\r
-        <p><%text(_RESTORE_INTRO)%></p>\r
-        <form method="post" action="<%adminurl%>index.php" enctype="multipart/form-data">\r
-            <p>\r
-                <input type="hidden" name="action" value="backuprestore" />\r
-                <%ticket%>\r
-                <input name="backup_file" type="file" tabindex="30" />\r
-                <br /><br />\r
-                <input type="submit" value="<%text(_RESTORE_BTN)%>" tabindex="40" /><br />\r
-                <input type="checkbox" name="letsgo" value="1" id="letsgo" tabindex="50" /><label for="letsgo"><%text(_RESTORE_IMSURE)%></label><br />\r
-                <%text(_RESTORE_WARNING)%>\r
-            </p>\r
-        </form>\r
-]]></part>\r
-    <part name="backuprestore"><![CDATA[        <h2><%text(_RESTORE_COMPLETE)%></h2>\r
-]]></part>\r
-    <part name="banlist"><![CDATA[<p><a href="<%adminurl%>index.php?action=overview">(<%text(_BACKHOME)%>)</a></p>\r
-        <h2><%text(_BAN_TITLE)%> '<%adminbloglink(defaultadmin)%>'</h2>\r
-        <%adminbanlist%>\r
-        <h2><%text(_BAN_NEW_TITLE)%></h2>\r
-        <p><a href="<%adminurl%>index.php?action=banlistnew&amp;blogid=<%requestblogid%>"><%text(_BAN_NEW_TEXT)%></a></p>]]></part>\r
-    <part name="banlistdelete"><![CDATA[            <h2><%text(_BAN_REMOVE_TITLE)%></h2>\r
-\r
-            <form method="post" action="<%adminurl%>index.php">\r
-\r
-            <h3><%text(_BAN_IPRANGE)%></h3>\r
-\r
-            <p>\r
-                <%text(_CONFIRMTXT_BAN)%> <%requestiprange%>\r
-                <input name="iprange" type="hidden" value="<%requestiprange%>" />\r
-            </p>\r
-\r
-            <h3><%text(_BAN_BLOGS)%></h3>\r
-\r
-            <div>\r
-                <input type="hidden" name="blogid" value="<%requestblogid%>" />\r
-                <input name="allblogs" type="radio" value="0" id="allblogs_one" />\r
-                <label for="allblogs_one"><%sprinttext(_BAN_BANBLOGNAME,<|%getblogsetting(name)%|>)%></label>\r
-                <br />\r
-                <input name="allblogs" type="radio" value="1" checked="checked" id="allblogs_all" /><label for="allblogs_all"><%text(_BAN_ALLBLOGS)%></label>\r
-            </div>\r
-\r
-            <h3><%text(_BAN_DELETE_TITLE)%></h3>\r
-\r
-            <div>\r
-                <%ticket%>\r
-                <input type="hidden" name="action" value="banlistdeleteconfirm" />\r
-                <input type="submit" value="<%text(_DELETE_CONFIRM_BTN)%>" />\r
-            </div>\r
-\r
-            </form>\r
-]]></part>\r
-    <part name="banlistdeleteconfirm"><![CDATA[        <a href="<%adminurl%>index.php?action=banlist&amp;blogid=<%requestblogid%>">(<%text(_BACK)%>)</a>\r
-        <h2><%text(_BAN_REMOVED_TITLE)%></h2>\r
-        <p><%text(_BAN_REMOVED_TEXT)%></p>\r
-        <ul>\r
-        <%banlistdeletedlist%>\r
-        </ul>\r
-]]></part>\r
-    <part name="banlistnew"><![CDATA[        <h2><%text(_BAN_ADD_TITLE)%></h2>\r
-        <form method="post" action="<%adminurl%>index.php">\r
-            <h3><%text(_BAN_IPRANGE)%></h3>\r
-            <p><%text(_BAN_IPRANGE_TEXT)%></p>\r
-            <div class="note">\r
-                <strong><%text(_BAN_EXAMPLE_TITLE)%></strong>\r
-                <%text(_BAN_EXAMPLE_TEXT)%>\r
-            </div>\r
-            <div>\r
-            <%iprangeinput%>\r
-            </div>\r
-            <h3><%text(_BAN_BLOGS)%></h3>\r
-            <p><%text(_BAN_BLOGS_TEXT)%></p>\r
-            <div>\r
-                <input type="hidden" name="blogid" value="<%requestblogid%>" />\r
-                <input name="allblogs" type="radio" value="0" id="allblogs_one" /><label for="allblogs_one">'<%blogsetting(name)%>'</label><br />\r
-                <input name="allblogs" type="radio" value="1" checked="checked" id="allblogs_all" /><label for="allblogs_all"><%text(_BAN_ALLBLOGS)%></label>\r
-            </div>\r
-            <h3><%text(_BAN_REASON_TITLE)%></h3>\r
-            <p><%text(_BAN_REASON_TEXT)%></p>\r
-            <div><textarea name="reason" cols="40" rows="5"></textarea></div>\r
-            <h3><%text(_BAN_ADD_TITLE)%></h3>\r
-            <div>\r
-                <input name="action" type="hidden" value="banlistadd" />\r
-                <%ticket%>\r
-                <input type="submit" value="<%text(_BAN_ADD_BTN)%>" />\r
-            </div>\r
-        </form>\r
-]]></part>\r
-    <part name="batchcategory"><![CDATA[<a href="<%adminurl%>index.php?action=overview"><%text(_BACKHOME)%></a>\r
-        <h2><%text(BATCH_CATEGORIES)%></h2>\r
-        <p><%text(_BATCH_EXECUTING)%><b><%adminbatchaction%></b></p>\r
-        <ul>\r
-        <%adminbatchlist%>\r
-\r
-\r
-        </ul>\r
-        <b><%text(_BATCH_DONE)%></b>]]></part>\r
-    <part name="batchcomment"><![CDATA[<a href="<%adminurl%>index.php?action=overview"><%text(_BACKHOME)%></a>\r
-        <h2><%text(_BATCH_COMMENTS)%></h2>\r
-        <p><%text(_BATCH_EXECUTING)%><b><%adminbatchaction%></b></p>\r
-        <ul>\r
-        <%adminbatchlist%>\r
-        </ul>\r
-        <b><%text(_BATCH_DONE)%></b>]]></part>\r
-    <part name="batchdelete"><![CDATA[<h2><%text(_BATCH_DELETE_CONFIRM)%></h2>\r
-        <form method="post" action="<%adminurl%>index.php">\r
-            <div>\r
-                <input type="hidden" name="action" value="<%batchdeletetype%>" />\r
-                <input type="hidden" name="batchaction" value="delete" />\r
-                <input type="hidden" name="confirmation" value="yes" />\r
-                <%ticket%>\r
-                <%batchdeletelist%>\r
-                <input type="submit" value="<%text(_BATCH_DELETE_CONFIRM_BTN)%>" onclick="return checkSubmit();" />\r
-            </div>\r
-        </form>]]></part>\r
-    <part name="batchitem"><![CDATA[<a href="<%adminurl%>index.php?action=overview"><%text(_BACKHOME)%></a>\r
-        <h2><%text(_BATCH_ITEMS)%></h2>\r
-        <p><%text(_BATCH_EXECUTING)%><b><%adminbatchaction%></b></p>\r
-        <ul>\r
-        <%adminbatchlist%>\r
-        </ul>\r
-        <b><%text(_BATCH_DONE)%></b>]]></part>\r
-    <part name="batchmember"><![CDATA[<a href="<%adminurl%>index.php?action=usermanagement"><%text(_MEMBERS_BACKTOOVERVIEW)%></a>\r
-        <h2><%text(_BATCH_MEMBERS)%></h2>\r
-        <p><%text(_BATCH_EXECUTING)%><b><%adminbatchaction%></b></p>\r
-        <ul>\r
-        <%adminbatchlist%>\r
-        </ul>\r
-        <b><%text(_BATCH_DONE)%></b>]]></part>\r
-    <part name="batchmove"><![CDATA[<h2><%text(_MOVE_TITLE)%></h2>\r
-        <form method="post" action="<%adminurl%>index.php">\r
-            <div>\r
-                <input type="hidden" name="action" value="batch<%batchmovetype%>" />\r
-                <input type="hidden" name="batchaction" value="move" />\r
-                <%ticket%>\r
-                <%batchmovelist%>\r
-                <%movedistselect%>\r
-                <input type="submit" value="<%batchmovebtn%>" onclick="return checkSubmit();" />\r
-            </div>\r
-        </form>]]></part>\r
-    <part name="batchmovecat"><![CDATA[<h2><%text(_MOVECAT_TITLE)%></h2>\r
-        <form method="post" action="<%adminurl%>index.php">\r
-            <div>\r
-                <input type="hidden" name="action" value="batch<%batchmovetype%>" />\r
-                <input type="hidden" name="batchaction" value="move" />\r
-                <%ticket%>\r
-                <%batchmovelist%>\r
-                <%movedistselect%>\r
-                <input type="submit" value="<%batchmovebtn%>" onclick="return checkSubmit();" />\r
-            </div>\r
-        </form>]]></part>\r
-    <part name="batchteam"><![CDATA[<a href="<%adminurl%>index.php?action=manageteam&amp;blogid=<%requestblogid%>"><%text(_BACK)%></a>\r
-        <h2><%text(_BATCH_TEAM)%></h2>\r
-        <p><%text(_BATCH_EXECUTING)%><b><%adminbatchaction%></b></p>\r
-        <ul>\r
-        <%adminbatchlist%>\r
-        </ul>\r
-        <b><%text(_BATCH_DONE)%></b>]]></part>\r
-    <part name="blogcommentlist"><![CDATA[<p>(<a href="<%adminurl%>index.php?action=overview"><%text(_BACKHOME)%></a>)</p>\r
-        <h2><%text(_COMMENTS_BLOG)%> <%adminbloglink(defaultadmin)%></h2>\r
-        <%commentnavlist(defaultadmin)%>]]></part>\r
-    <part name="blogselectbox"><![CDATA[<%blogselectbox%>]]></part>\r
-    <part name="blogsettings"><![CDATA[<p><a href="<%adminurl%>index.php?action=overview">(<%text(_BACKHOME)%>)</a></p>\r
-        <h2><%text(_EBLOG_TITLE)%>: '<%adminbloglink(defaultadmin)%>'</h2>\r
-\r
-        <h3><%text(_EBLOG_TEAM_TITLE)%></h3>\r
-\r
-        <p>\r
-            <%text(_EBLOG_CURRENT_TEAM_MEMBER)%>\r
-            <%blogteammembers%>\r
-        </p>\r
-        <p><a href="<%adminurl%>index.php?action=manageteam&amp;blogid=<%requestblogid%>"><%text(_EBLOG_TEAM_TEXT)%></a></p>\r
-        <h3><%text(_EBLOG_SETTINGS_TITLE)%></h3>\r
-        <form method="post" action="<%adminurl%>index.php">\r
-            <div>\r
-                <input type="hidden" name="action" value="blogsettingsupdate" />\r
-                <%ticket%>\r
-                <input type="hidden" name="blogid" value="<%requestblogid%>" />\r
-                <table>\r
-                    <tr>\r
-                        <td><%text(_EBLOG_NAME)%></td>\r
-                        <td><input name="name" tabindex="10" size="40" maxlength="60" value="<%blogsetting(name)%>" /></td>\r
-                    </tr><tr>\r
-                        <td>\r
-                            <%text(_EBLOG_SHORTNAME)%> <%helplink(shortblogname)%>\r
-                            <%text(_EBLOG_SHORTNAME_EXTRA)%>\r
-                        </td>\r
-                        <td><input name="shortname" tabindex="20" maxlength="15" size="15" value="<%blogsetting(short)%>" /></td>\r
-                    </tr><tr>\r
-                        <td><%text(_EBLOG_DESC)%></td>\r
-                        <td><input name="desc" tabindex="30" maxlength="200" size="40" value="<%blogsetting(desc)%>" /></td>\r
-                    </tr><tr>\r
-                        <td><%text(_EBLOG_URL)%></td>\r
-                        <td><input name="url" tabindex="40" size="40" maxlength="100" value="<%blogsetting(url)%>" /></td>\r
-                    </tr><tr>\r
-                        <td><%text(_EBLOG_DEFSKIN)%><%helplink(blogdefaultskin)%></td>\r
-                        <td><%defskinselect(blog)%></td>\r
-                    </tr><tr>\r
-                        <td><%text(_EBLOG_LINEBREAKS)%> <%helplink(convertbreaks)%></td>\r
-                        <td><%blogsettingyesno(convertbreaks)%></td>\r
-                    </tr><tr>\r
-                        <td><%text(_EBLOG_ALLOWPASTPOSTING)%> <%helplink(allowpastposting)%></td>\r
-                        <td><%blogsettingyesno(allowpastposting)%></td>\r
-                    </tr><tr>\r
-                        <td><%text(_EBLOG_DISABLECOMMENTS)%></td>\r
-                        <td><%blogsettingyesno(comments)%></td>\r
-                    </tr><tr>\r
-                        <td><%text(_EBLOG_ANONYMOUS)%></td>\r
-                        <td><%blogsettingyesno(public)%></td>\r
-                    </tr><tr>\r
-                        <td><%text(_EBLOG_REQUIREDEMAIL)%></td>\r
-                        <td><%blogsettingyesno(reqemail)%></td>\r
-                    </tr><tr>\r
-                        <td><%text(_EBLOG_NOTIFY)%> <%helplink(blognotify)%></td>\r
-                        <td><input name="notify" tabindex="80" maxlength="60" size="40" value="<%blogsetting(notifyaddress)%>" /></td>\r
-                    </tr><tr>\r
-                        <td><%text(_EBLOG_NOTIFY_ON)%></td>\r
-                        <td>\r
-                            <input name="notifyComment" value="3" type="checkbox" tabindex="81" id="notifyComment"<%blognotifysetting(comment)%> />\r
-                            <label for="notifyComment"><%text(_EBLOG_NOTIFY_COMMENT)%></label><br />\r
-                            <input name="notifyVote" value="5" type="checkbox" tabindex="82" id="notifyVote"<%blognotifysetting(vote)%> />\r
-                            <label for="notifyVote"><%text(_EBLOG_NOTIFY_KARMA)%></label><br />\r
-                            <input name="notifyNewItem" value="7" type="checkbox" tabindex="83" id="notifyNewItem"<%blognotifysetting(newitem)%> />\r
-                            <label for="notifyNewItem"><%text(_EBLOG_NOTIFY_ITEM)%></label>\r
-                        </td>\r
-                    </tr><tr>\r
-                        <td><%text(_EBLOG_MAXCOMMENTS)%> <%helplink(blogmaxcomments)%></td>\r
-                        <td><input name="maxcomments" tabindex="90" size="3" value="<%blogsetting(maxcomments)%>" /></td>\r
-                    </tr><tr>\r
-                        <td><%text(_EBLOG_UPDATE)%> <%helplink(blogupdatefile)%></td>\r
-                        <td><input name="update" tabindex="100" size="40" maxlength="60" value="<%blogsetting(updatefile)%>" /></td>\r
-                    </tr><tr>\r
-                        <td><%text(_EBLOG_DEFCAT)%></td>\r
-                        <td><%defcatselect%></td>\r
-                    </tr><tr>\r
-                        <td>\r
-                            <%text(_EBLOG_OFFSET)%> <%helplink(blogtimeoffset)%><br />\r
-                            <%text(_EBLOG_STIME)%> <b><%blogtime(servertime,"%H:%M")%></b><br />\r
-                            <%text(_EBLOG_BTIME)%> <b><%blogtime(blogtime,"%H:%M")%></b>\r
-                        </td>\r
-                        <td><input name="timeoffset" tabindex="120" size="3" value="<%blogsetting(timeoffset)%>" /></td>\r
-                    </tr><tr>\r
-                        <td><%text(_EBLOG_SEARCH)%> <%helplink(blogsearchable)%></td>\r
-                        <td><%blogsettingyesno(searchable)%></td>\r
-                    </tr>\r
-                    <%pluginoptions(blog)%>\r
-                    <tr>\r
-                        <th colspan="2"><%text(_EBLOG_CHANGE)%></th>\r
-                    </tr><tr>\r
-                        <td><%text(_EBLOG_CHANGE)%></td>\r
-                        <td><input type="submit" tabindex="130" value="<%text(_EBLOG_CHANGE_BTN)%>" onclick="return checkSubmit();" /></td>\r
-                    </tr>\r
-                </table>\r
-            </div>\r
-        </form>\r
-        <h3><%text(_EBLOG_CAT_TITLE)%></h3>\r
-        <%blogcatlist%>\r
-        <form action="<%adminurl%>index.php" method="post">\r
-            <div>\r
-                <input name="action" value="categorynew" type="hidden" />\r
-                <%ticket%>\r
-                <input name="blogid" value="<%blogsetting(id)%>" type="hidden" />\r
-                <table>\r
-                    <tr>\r
-                        <th colspan="2"><%text(_EBLOG_CAT_CREATE)%></th>\r
-                    </tr><tr>\r
-                        <td><%text(_EBLOG_CAT_NAME)%></td>\r
-                        <td><input name="cname" size="40" maxlength="40" tabindex="300" /></td>\r
-                    </tr><tr>\r
-                        <td><%text(_EBLOG_CAT_DESC)%></td>\r
-                        <td><input name="cdesc" size="40" maxlength="200" tabindex="310" /></td>\r
-                    </tr><tr>\r
-                        <td><%text(_EBLOG_CAT_CREATE)%></td>\r
-                        <td><input type="submit" value="<%text(_EBLOG_CAT_CREATE)%>" tabindex="320" /></td>\r
-                    </tr>\r
-                </table>\r
-            </div>\r
-        </form>\r
-        <h3><%text(_PLUGINS_EXTRA)%></h3>\r
-        <%pluginextras(blog)%>]]></part>\r
-    <part name="bookmarklet"><![CDATA[        <p><a href="<%adminurl%>index.php?action=overview">(<%text(_BACKHOME)%>)</a></p>\r
-        <h2><%text(_BOOKMARKLET_TITLE)%></h2>\r
-        <p><%text(_BOOKMARKLET_DESC1)%><%text(_BOOKMARKLET_DESC2)%><%text(_BOOKMARKLET_DESC3)%><%text(_BOOKMARKLET_DESC4)%><%text(_BOOKMARKLET_DESC5)%></p>\r
-        <h3><%text(_BOOKMARKLET_BOOKARKLET)%></h3>\r
-        <p>\r
-            <%text(_BOOKMARKLET_BMARKTEXT)%><small><%text(_BOOKMARKLET_BMARKTEST)%></small>\r
-            <br />\r
-            <br />\r
-            <a href="<%bookmarkletadmin(url)%>"><%sprinttext(_BOOKMARKLET_ANCHOR,<|%getblogsetting(name)%|>)%></a><%text(_BOOKMARKLET_BMARKFOLLOW)%>\r
-        </p>\r
-]]></part>\r
-    <part name="browseowncomments"><![CDATA[<p>(<a href="<%adminurl%>index.php?action=overview"><%text(_BACKHOME)%></a>)</p>\r
-        <h2><%text(_COMMENTS_YOUR)%></h2>\r
-        <%commentnavlist(defaultadmin)%>]]></part>\r
-    <part name="browseownitems"><![CDATA[<p><a href="<%adminurl%>index.php?action=overview"><%text(_BACKHOME)%></a></p>\r
-        <h2><%text(_ITEMLIST_YOUR)%></h2>\r
-        <%itemnavlist(defaultadmin)%>]]></part>\r
-    <part name="categorydelete"><![CDATA[<h2><%text(_DELETE_CONFIRM)%></h2>\r
-            <div>\r
-                <%text(_CONFIRMTXT_CATEGORY)%><b><%categorysetting(name)%></b>\r
-            </div>\r
-            <form method="post" action="<%adminurl%>index.php">\r
-                <div>\r
-                    <input type="hidden" name="action" value="categorydeleteconfirm" />\r
-                    <%ticket%>\r
-                    <input type="hidden" name="blogid" value="<%requestblogid%>" />\r
-                    <input type="hidden" name="catid" value="<%categorysetting(id)%>" />\r
-                    <input type="submit" tabindex="10" value="<%text(_DELETE_CONFIRM_BTN)%>" />\r
-                </div>\r
-            </form>]]></part>\r
-    <part name="categoryedit"><![CDATA[<p><a href="<%adminurl%>index.php?action=blogsettings&amp;blogid=<%requestblogid%>">(<%text(_BACK_TO_BLOGSETTINGS)%>)</a></p>\r
-        <h2><%text(_EBLOG_CAT_UPDATE)%> '<%categorysetting(name)%>'</h2>\r
-        <form method='post' action='<%adminurl%>index.php'>\r
-            <div>\r
-                <input name="blogid" type="hidden" value="<%requestblogid%>" />\r
-                <input name="catid" type="hidden" value="<%categorysetting(id)%>" />\r
-                <input name="desturl" type="hidden" value="<%editdesturl%>" />\r
-                <input name="action" type="hidden" value="categoryupdate" />\r
-                <%ticket%>\r
-                <table>\r
-                    <tr>\r
-                        <th colspan="2"><%text(_EBLOG_CAT_UPDATE)%></th>\r
-                    </tr><tr>\r
-                        <td><%text(_EBLOG_CAT_NAME)%></td>\r
-                        <td><input type="text" name="cname" value="<%categorysetting(name)%>" size="40" maxlength="40" /></td>\r
-                    </tr><tr>\r
-                        <td><%text(_EBLOG_CAT_DESC)%></td>\r
-                        <td><input type="text" name="cdesc" value="<%categorysetting(desc)%>" size="40" maxlength="200" /></td>\r
-                    </tr>\r
-                    <%pluginoptions(category)%>\r
-                    <tr>\r
-                        <th colspan="2"><%text(_EBLOG_CAT_UPDATE)%></th>\r
-                    </tr><tr>\r
-                        <td><%text(_EBLOG_CAT_UPDATE)%></td>\r
-                        <td><input type="submit" value="<%text(_EBLOG_CAT_UPDATE_BTN)%>" /></td>\r
-                    </tr>\r
-                </table>\r
-            </div>\r
-        </form>]]></part>\r
-    <part name="commentdelete"><![CDATA[<h2><%text(_DELETE_CONFIRM)%></h2>\r
-            <p><%text(_CONFIRMTXT_COMMENT)%></p>\r
-            <div class="note">\r
-            <b><%text(_EDITC_WHO)%>:</b> <%deletecomment(author)%>\r
-            <br />\r
-            <b><%text(_EDITC_TEXT)%>:</b> <%deletecomment(body)%>\r
-            </div>\r
-            <form method="post" action="<%adminurl%>index.php"><div>\r
-                <input type="hidden" name="action" value="commentdeleteconfirm" />\r
-                <%ticket%>\r
-                <input type="hidden" name="commentid" value="<%deletecomment(id)%>" />\r
-                <input type="submit" tabindex="10" value="<%text(_DELETE_CONFIRM_BTN)%>" />\r
-            </div></form>]]></part>\r
-    <part name="commentedit"><![CDATA[<h2><%text(_EDITC_TITLE)%></h2>\r
-            <form method="post" action="<%adminurl%>index.php">\r
-                <div>\r
-                    <input type="hidden" name="action" value="commentupdate" />\r
-                    <%ticket%>\r
-                    <input type="hidden" name="commentid" value="<%editcomment(id)%>" />\r
-                    <table>\r
-                        <tr>\r
-                            <th colspan="2"><%text(_EDITC_TITLE)%></th>\r
-                        </tr>\r
-                        <tr>\r
-                            <td><%text(_EDITC_WHO)%></td>\r
-                            <td><%editcomment(user)%></td>\r
-                        </tr>\r
-                        <tr>\r
-                            <td><%text(_EDITC_WHEN)%></td>\r
-                            <td><%editcomment(date)%></td>\r
-                        </tr>\r
-                        <tr>\r
-                            <td><%text(_EDITC_HOST)%></td>\r
-                            <td><%editcomment(host)%></td>\r
-                        </tr>\r
-                        <tr>\r
-                            <td><%text(_EDITC_URL)%></td>\r
-                            <td><input type="text" name="url" size="30" tabindex="6" value="<%editcomment(url)%>" /></td>\r
-                        </tr>\r
-                        <tr>\r
-                            <td><%text(_EDITC_EMAIL)%></td>\r
-                            <td><input type="text" name="email" size="30" tabindex="8" value="<%editcomment(email)%>" /></td>\r
-                        </tr>\r
-                        <tr>\r
-                            <td><%text(_EDITC_TEXT)%></td>\r
-                            <td><textarea name="body" tabindex="10" rows="10" cols="50"><%editcomment(body)%></textarea></td>\r
-                        </tr>\r
-                        <tr>\r
-                            <td><%text(_EDITC_EDIT)%></td>\r
-                            <td><input type="submit"  tabindex="20" value="<%text(_EDITC_EDIT)%>" onclick="return checkSubmit();" /></td>\r
-                        </tr>\r
-                    </table>\r
-                </div>\r
-            </form>]]></part>\r
-    <part name="createitem"><![CDATA[<h2><%text(_ADD_ADDTO)%> '<%adminbloglink(defaultadmin)%>'</h2>\r
-\r
-<%init%>\r
-<script type="text/javascript" src="<%skinfile(/javascript/numbercheck.js)%>"></script>\r
-<%if(autosave)%><script type="text/javascript" src="<%skinfile(/javascript/xmlhttprequest.js)%>"></script><%endif%>\r
-\r
-<form id="addform" method="post" action="<%adminurl%>index.php" >\r
-\r
-<div>\r
-\r
-<input type="hidden" name="action" value="additem" />\r
-<input name="blogid" value="<%blogid%>" type="hidden" />\r
-<input type="hidden" name="draftid" value="0" />\r
-<%ticket%>\r
-\r
-<table>\r
-       <tr>\r
-               <th colspan="2"><%text(_ADD_CREATENEW)%></th>\r
-       </tr>\r
-       <%if(autosave)%><tr>\r
-               <td><%text(_AUTOSAVEDRAFT)%></td>\r
-               <td><span id="info"><%text(_AUTOSAVEDRAFT_NOTYETSAVED)%></span></td>\r
-       </tr><%endif%>\r
-       <tr>\r
-               <td><%text(_ADD_TITLE)%></td>\r
-               <td><input id="inputtitle" onkeyup="storeCaret(this); updPreview(title); doMonitor();" onclick="storeCaret(this);" onselect="storeCaret(this);"\r
-                       name="title"\r
-                       tabindex="10"\r
-                       size="60" \r
-                       maxlength="160" \r
-                       value="<%contents(title)%>"\r
-                       /></td>\r
-       </tr><tr>\r
-               <td>\r
-                       <%text(_ADD_BODY)%> <%helplink(additem)%>\r
-               </td>\r
-               <td>\r
-               <div class="jsbuttonbar">\r
-<!--[if IE]>\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="cutThis()">\r
-                               <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" />\r
-                       </span>\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="copyThis()">\r
-                               <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" />\r
-                       </span>\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="pasteThis()">\r
-                               <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" />\r
-                       </span>\r
-                       <span class="jsbuttonspacer">&nbsp;</span>\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="boldThis()">\r
-                               <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" />\r
-                       </span>\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="italicThis()">\r
-                               <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" />\r
-                       </span>\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="ahrefThis()">\r
-                               <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" />\r
-                       </span>\r
-<![endif]-->\r
-<!--[if ! IE]>-->\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="boldThis()">\r
-                               <img src="<%skinfile(/images/button-bold.gif)%>" title="<%text(_ADD_BOLD_TT)%>" alt="<%text(_ADD_BOLD_TT)%>" width="16" height="16" />\r
-                       </span>\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="italicThis()">\r
-                               <img src="<%skinfile(/images/button-italic.gif)%>" title="<%text(_ADD_ITALIC_TT)%>" alt="<%text(_ADD_ITALIC_TT)%>" width="16" height="16" />\r
-                       </span>\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="ahrefThis()">\r
-                               <img src="<%skinfile(/images/button-link.gif)%>" title="<%text(_ADD_HREF_TT)%>" alt="<%text(_ADD_HREF_TT)%>" width="16" height="16" />\r
-                       </span>\r
-<!--<![endif]-->\r
-                       <span class="jsbuttonspacer">&nbsp;</span>\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="alignleftThis()">\r
-                               <img src="<%skinfile(/images/button-alignleft.gif)%>" title="<%text(_ADD_ALIGNLEFT_TT)%>" alt="<%text(_ADD_ALIGNLEFT_TT)%>" width="16" height="16" />\r
-                       </span>\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="alignrightThis()">\r
-                               <img src="<%skinfile(/images/button-alignright.gif)%>" title="<%text(_ADD_ALIGNRIGHT_TT)%>" alt="<%text(_ADD_ALIGNRIGHT_TT)%>" width="16" height="16" />\r
-                       </span>\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="aligncenterThis()">\r
-                               <img src="<%skinfile(/images/button-aligncenter.gif)%>" title="<%text(_ADD_ALIGNCENTER_TT)%>" alt="<%text(_ADD_ALIGNCENTER_TT)%>" width="16" height="16" />\r
-                       </span>\r
-                       <span class="jsbuttonspacer">&nbsp;</span>\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="leftThis()">\r
-                               <img src="<%skinfile(/images/button-left.gif)%>" title="<%text(_ADD_LEFT_TT)%>" alt="<%text(_ADD_LEFT_TT)%>" width="16" height="16" />\r
-                       </span>\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="rightThis()">\r
-                               <img src="<%skinfile(/images/button-right.gif)%>" title="<%text(_ADD_RIGHT_TT)%>" alt="<%text(_ADD_RIGHT_TT)%>" width="16" height="16" />\r
-                       </span>\r
-                       <span class="jsbuttonspacer">&nbsp;</span>\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="addMedia()">\r
-                               <img src="<%skinfile(/images/button-media.gif)%>" title="<%text(_ADD_MEDIA_TT)%>" alt="<%text(_ADD_MEDIA_TT)%>" width="16" height="16" />\r
-                       </span>\r
-<!--[if IE]>\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="showedit()">\r
-                               <img src="<%skinfile(/images/button-preview.gif)%>" title="<%text(_ADD_PREVIEW_TT)%>" alt="<%text(_ADD_PREVIEW_TT)%>" width="16" height="16" />\r
-                       </span>\r
-<![endif]-->\r
-               </div>\r
-                       <textarea id="inputbody" onkeyup="storeCaret(this); updPreview(body); doMonitor();" onclick="storeCaret(this);" onselect="storeCaret(this);"\r
-                               name="body"\r
-                               tabindex="20"\r
-                               cols="60"\r
-                               rows="20"><%contents(body)%></textarea>\r
-               </td>\r
-       </tr><tr id="edit" style="display:none;">\r
-               <td><%text(_ADD_PREVIEW)%></td>\r
-               <td><b><span id="prevtitle">&#160;</span></b><br />\r
-                       <span id="prevbody">&#160;</span><br />\r
-                       <span id="prevmore">&#160;</span><br />\r
-               </td>\r
-       </tr><tr>\r
-       \r
-<%if(blogsetting, bcomments)%>\r
-               <td><%text(_ADD_DISABLE_COMMENTS)%></td>\r
-               <td>\r
-                       <input name="closed" type="radio" tabindex="30" value="1" id="closed_yes" /><label for="closed_yes"><%text(_YES)%></label>\r
-                       <input name="closed" type="radio" tabindex="30" value="0" checked="checked" id="closed_no" /><label for="closed_no"><%text(_NO)%></label>\r
-               </td>\r
-       </tr><tr>\r
-<%endif%>\r
-\r
-\r
-               <td><%text(_ADD_CATEGORY)%></td>\r
-               <td><%categories(40)%></td>\r
-       </tr><tr>\r
-               <td><%text(_SUBMIT)%></td>\r
-               <td>\r
-                       <input tabindex="60" type="submit" value="<%text(_ADD_ADDITEM)%>" \r
-                               onclick="return checkSubmit();" />\r
-\r
-                       <br /><br />\r
-\r
-                       <input name="actiontype" value="addnow" type="radio" checked='checked' id="act_now" tabindex="61" /><label for="act_now"><%text(_ADD_ADDNOW)%></label>\r
-                       <br />\r
-                       <input name="actiontype" value="addfuture" type="radio" id="act_future" tabindex="61" /><label for="act_future" ><%text(_ADD_ADDLATER)%></label> <%helplink(future)%>\r
-                       <div class="indent">\r
-                               <%text(_ADD_PLACE_ON)%>\r
-                               <input id="inputyear" name="year" tabindex="63" size="4" value="<%currenttime(year)%>" onchange="document.forms[0].act_future.checked=true;" /><%text(_ITEM_ADDEDITTEMPLATE_YEAR)%>\r
-                               <input id="inputmonth" name="month" tabindex="64" size="2" value="<%currenttime(mon)%>" onchange="document.forms[0].act_future.checked=true;" /><%text(_ITEM_ADDEDITTEMPLATE_MONTH)%>\r
-                               <input id="inputday" name="day" tabindex="65" size="2" value="<%currenttime(mday)%>" onchange="document.forms[0].act_future.checked=true;" /><%text(_ITEM_ADDEDITTEMPLATE_DAY)%>\r
-                                \r
-                               <input id="inputhour" name="hour" tabindex="66" size="2" value="<%currenttime(hours)%>" onchange="document.forms[0].act_future.checked=true;" /><%text(_ITEM_ADDEDITTEMPLATE_HOUR)%>\r
-                               <input id="inputminutes" name="minutes" tabindex="67" size="2" value="<%currenttime(minutes)%>" onchange="document.forms[0].act_future.checked=true;" /><%text(_ITEM_ADDEDITTEMPLATE_MINUTE)%>\r
-                               <br /><%text(_ITEM_ADDEDITTEMPLATE_FORMAT)%>(yyyy)<%text(_ITEM_ADDEDITTEMPLATE_YEAR)%>(mm)<%text(_ITEM_ADDEDITTEMPLATE_MONTH)%>(dd)<%text(_ITEM_ADDEDITTEMPLATE_DAY)%> (hh)<%text(_ITEM_ADDEDITTEMPLATE_HOUR)%>(mm)<%text(_ITEM_ADDEDITTEMPLATE_MINUTE)%>\r
-                               \r
-                               <%if(blogsetting, ballowpast,0)%>\r
-                                       <br />\r
-                                       <%text(_ADD_NOPASTDATES)%>\r
-                               <%endif%>\r
-                       </div>\r
-                       <input name="actiontype" tabindex="61" value="adddraft" type="radio" id="act_draft" /><label for="act_draft"><%text(_ADD_ADDDRAFT)%></label> <%helplink(draft)%>\r
-               </td>\r
-       </tr><tr>\r
-               <td><%text(_ADD_PLUGIN_EXTRAS)%></td>\r
-               <td>\r
-                       <%pluginextras%>\r
-               </td>\r
-       </tr>\r
-                       <%itemoptions%> \r
-    <tr>\r
-       <th colspan="2"><%text(_ADD_MORE)%></th>\r
-       </tr><tr>\r
-               <td><%text(_ADD_MORE)%>\r
-                       <br /><%helplink(extended)%>\r
-               </td>\r
-               <td>\r
-               <div class="jsbuttonbar">\r
-<!--[if IE]>\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="cutThis()">\r
-                               <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" />\r
-                       </span>\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="copyThis()">\r
-                               <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" />\r
-                       </span>\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="pasteThis()">\r
-                               <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" />\r
-                       </span>\r
-                       <span class="jsbuttonspacer">&nbsp;</span>\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="boldThis()">\r
-                               <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" />\r
-                       </span>\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="italicThis()">\r
-                               <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" />\r
-                       </span>\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="ahrefThis()">\r
-                               <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" />\r
-                       </span>\r
-<![endif]-->\r
-<!--[if ! IE]>-->\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="boldThis()">\r
-                               <img src="<%skinfile(/images/button-bold.gif)%>" title="<%text(_ADD_BOLD_TT)%>" alt="<%text(_ADD_BOLD_TT)%>" width="16" height="16" />\r
-                       </span>\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="italicThis()">\r
-                               <img src="<%skinfile(/images/button-italic.gif)%>" title="<%text(_ADD_ITALIC_TT)%>" alt="<%text(_ADD_ITALIC_TT)%>" width="16" height="16" />\r
-                       </span>\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="ahrefThis()">\r
-                               <img src="<%skinfile(/images/button-link.gif)%>" title="<%text(_ADD_HREF_TT)%>" alt="<%text(_ADD_HREF_TT)%>" width="16" height="16" />\r
-                       </span>\r
-<!--<![endif]-->\r
-                       <span class="jsbuttonspacer">&nbsp;</span>\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="alignleftThis()">\r
-                               <img src="<%skinfile(/images/button-alignleft.gif)%>" title="<%text(_ADD_ALIGNLEFT_TT)%>" alt="<%text(_ADD_ALIGNLEFT_TT)%>" width="16" height="16" />\r
-                       </span>\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="alignrightThis()">\r
-                               <img src="<%skinfile(/images/button-alignright.gif)%>" title="<%text(_ADD_ALIGNRIGHT_TT)%>" alt="<%text(_ADD_ALIGNRIGHT_TT)%>" width="16" height="16" />\r
-                       </span>\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="aligncenterThis()">\r
-                               <img src="<%skinfile(/images/button-aligncenter.gif)%>" title="<%text(_ADD_ALIGNCENTER_TT)%>" alt="<%text(_ADD_ALIGNCENTER_TT)%>" width="16" height="16" />\r
-                       </span>\r
-                       <span class="jsbuttonspacer">&nbsp;</span>\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="leftThis()">\r
-                               <img src="<%skinfile(/images/button-left.gif)%>" title="<%text(_ADD_LEFT_TT)%>" alt="<%text(_ADD_LEFT_TT)%>" width="16" height="16" />\r
-                       </span>\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="rightThis()">\r
-                               <img src="<%skinfile(/images/button-right.gif)%>" title="<%text(_ADD_RIGHT_TT)%>" alt="<%text(_ADD_RIGHT_TT)%>" width="16" height="16" />\r
-                       </span>\r
-                       <span class="jsbuttonspacer">&nbsp;</span>\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="addMedia()">\r
-                               <img src="<%skinfile(/images/button-media.gif)%>" title="<%text(_ADD_MEDIA_TT)%>" alt="<%text(_ADD_MEDIA_TT)%>" width="16" height="16" />\r
-                       </span>\r
-<!--[if IE]>\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="showedit()">\r
-                               <img src="<%skinfile(/images/button-preview.gif)%>" title="<%text(_ADD_PREVIEW_TT)%>" alt="<%text(_ADD_PREVIEW_TT)%>" width="16" height="16" />\r
-                       </span>\r
-<![endif]-->\r
-               </div>\r
-                       <textarea id="inputmore" onkeyup="storeCaret(this); updPreview(more); doMonitor();" onclick="storeCaret(this);" onselect="storeCaret(this);"\r
-                               name="more"\r
-                               tabindex="70"\r
-                               cols="60"\r
-                               rows="20"\r
-                               ><%contents(more)%></textarea>\r
-               </td>\r
-       </tr><tr>\r
-               <td><%text(_SUBMIT)%></td>\r
-               <td>\r
-                       <input tabindex="60" type="submit" value="<%text(_ADD_ADDITEM)%>" \r
-                               onclick="return checkSubmit();" />\r
-                       <%if(autosave)%>\r
-                       <input tabindex="80" type="button" name="autosavenow" value="<%text(_AUTOSAVEDRAFT_NOW)%>"\r
-                               onclick="autoSaveDraft();" />\r
-                       <%endif%>\r
-               </td>\r
-       </tr>\r
-</table>\r
-\r
-</div>\r
-</form>\r
-<%if(autosave)%>\r
-<script type="text/javascript">\r
-       var xmlhttprequest = new Array();\r
-       xmlhttprequest[0] = createHTTPHandler(); // AutoDraft handler\r
-       xmlhttprequest[1] = createHTTPHandler(); // UpdateTicket handler\r
-       var seconds = now(); // Last AutoDraft time\r
-       var checks = 0; // Number of checks since last AutoDraft\r
-       var addform = document.getElementById('addform'); // The form id\r
-       var goal = document.getElementById('info'); // The html div id where 'Last saved: date time' must come\r
-       var goalurl = '../action.php'; // The PHP file where the content must be posted to\r
-       var lastsavedtext = '<%text(_AUTOSAVEDRAFT_LASTSAVED)%>'; // The language variable for 'Last saved'\r
-       var formtype = 'add'; // Add or edit form\r
-</script>      \r
-<%endif%>]]></part>\r
-    <part name="createnewlog"><![CDATA[<p><a href="<%adminurl%>index.php?action=manage">(<%text(_BACKTOMANAGE)%>)</a></p>\r
-        <h2><%text(_EBLOG_CREATE_TITLE)%></h2>\r
-        <h3><%text(_ADMIN_NOTABILIA)%></h3>\r
-        <p><%text(_ADMIN_PLEASE_READ)%></p>\r
-        <p><%text(_ADMIN_HOW_TO_ACCESS)%></p>\r
-        <ol>\r
-            <li><%text(_ADMIN_SIMPLE_WAY)%></li>\r
-            <li><%text(_ADMIN_ADVANCED_WAY)%></li>\r
-        </ol>\r
-        <h3><%text(_ADMIN_HOW_TO_CREATE)%></h3>\r
-        <p><%text(_EBLOG_CREATE_TEXT)%></p>\r
-        <form method="post" action="<%adminurl%>index.php">\r
-            <div>\r
-                <input type="hidden" name="action" value="addnewlog" />\r
-                <%ticket%>\r
-                <table>\r
-                    <tr>\r
-                        <td><%text(_EBLOG_NAME)%></td>\r
-                        <td><input name="name" tabindex="10" size="40" maxlength="60" /></td>\r
-                    </tr><tr>\r
-                        <td>\r
-                            <%text(_EBLOG_SHORTNAME)%>\r
-                            <%helplink(shortblogname)%>\r
-                        </td>\r
-                        <td><input name="shortname" tabindex="20" maxlength="15" size="15" /></td>\r
-                    </tr><tr>\r
-                        <td><%text(_EBLOG_DESC)%></td>\r
-                        <td><input name="desc" tabindex="30" maxlength="200" size="40" /></td>\r
-                    </tr><tr>\r
-                        <td>\r
-                            <%text(_EBLOG_DEFSKIN)%>\r
-                            <%helplink(blogdefaultskin)%>\r
-                        </td>\r
-                        <td><%defskinselect%></td>\r
-                    </tr><tr>\r
-                        <td>\r
-                            <%text(_EBLOG_OFFSET)%>\r
-                            <%helplink(blogtimeoffset)%><br />\r
-                            <%text(_EBLOG_STIME)%> <b><%blogtime(servertime,"%H:%M")%></b>\r
-                        </td>\r
-                        <td><input name="timeoffset" tabindex="110" size="3" value="0" /></td>\r
-                    </tr><tr>\r
-                        <td>\r
-                            <%text(_EBLOG_ADMIN)%>\r
-                            <%helplink(teamadmin)%>\r
-                        </td>\r
-                        <td><%text(_EBLOG_ADMIN_MSG)%></td>\r
-                    </tr><tr>\r
-                        <td><%text(_EBLOG_CREATE)%></td>\r
-                        <td><input type="submit" tabindex="120" value="<%text(_EBLOG_CREATE_BTN)%>" onclick="return checkSubmit();" /></td>\r
-                    </tr>\r
-                </table>\r
-            </div>\r
-        </form>]]></part>\r
-    <part name="deleteblog"><![CDATA[<h2><%text(_DELETE_CONFIRM)%></h2>\r
-            <p><%text(_WARNINGTXT_BLOGDEL)%>\r
-            </p>\r
-            <div>\r
-            <%text(_CONFIRMTXT_BLOG)%><b><%blogsetting(name)%></b>\r
-            </div>\r
-            <form method="post" action="<%adminurl%>index.php"><div>\r
-            <input type="hidden" name="action" value="deleteblogconfirm" />\r
-            <%ticket%>\r
-            <input type="hidden" name="blogid" value="<%requestblogid%>" />\r
-            <input type="submit" tabindex="10" value="<%text(_DELETE_CONFIRM_BTN)%>" />\r
-            </div></form>]]></part>\r
-    <part name="editmembersettings"><![CDATA[<%if(superadmin)%><a href="<%adminurl%>index.php?action=usermanagement">(<%text(_MEMBERS_BACKTOOVERVIEW)%>)<%else%><a href="<%adminurl%>index.php?action=overview">(<%text(_BACKHOME)%>)<%endif%></a>\r
-            <h2><%text(_MEMBERS_EDIT)%></h2>\r
-            <form method="post" action="<%adminurl%>index.php" name="memberedit">\r
-                <div>\r
-                    <input type="hidden" name="action" value="changemembersettings" />\r
-                    <input type="hidden" name="memberid" value="<%editmember(id)%>" />\r
-                    <%ticket%>\r
-                    <table>\r
-                        <tr>\r
-                            <th colspan="2"><%text(_MEMBERS_EDIT)%></th>\r
-                        </tr><tr>\r
-                            <td>\r
-                                <%text(_MEMBERS_DISPLAY)%> <%helplink(shortnames)%>\r
-                                <br /><small><%text(_MEMBERS_DISPLAY_INFO)%></small>\r
-                            </td>\r
-                            <td><%editmember(displayname)%></td>\r
-                        </tr><tr>\r
-                            <td><%text(_MEMBERS_REALNAME)%></td>\r
-                            <td><input name="realname" tabindex="20" maxlength="60" size="40" value="<%editmember(realname)%>" /></td>\r
-                        </tr><tr><%if(allowloginedit)%>\r
-                            <td><%text(_MEMBERS_PWD)%></td>\r
-                            <td><input type="password" tabindex="30" maxlength="40" size="16" name="password" /></td>\r
-                        </tr><tr>\r
-                            <td><%text(_MEMBERS_REPPWD)%></td>\r
-                            <td><input type="password" tabindex="35" maxlength="40" size="16" name="repeatpassword" /></td>\r
-                        </tr><tr><%endif%>\r
-                            <td>\r
-                                <%text(_MEMBERS_EMAIL)%>\r
-                                <br /><small><%text(_MEMBERS_EMAIL_EDIT)%></small>\r
-                            </td>\r
-                            <td><input name="email" tabindex="40" size="40" maxlength="60" value="<%editmember(email)%>" /></td>\r
-                        </tr><tr>\r
-                            <td><%text(_MEMBERS_URL)%></td>\r
-                            <td><input name="url" tabindex="50" size="40" maxlength="100" value="<%editmember(url)%>" /></td>\r
-                        <%if(superadmin)%></tr><tr>\r
-                            <td><%text(_MEMBERS_SUPERADMIN)%> <%helplink(superadmin)%></td>\r
-                            <td><%editmember(admin)%></td>\r
-                        </tr><tr>\r
-                            <td><%text(_MEMBERS_CANLOGIN)%> <%helplink(canlogin)%></td>\r
-                            <td><%editmember(canlogin)%></td><%endif%>\r
-                        </tr><tr>\r
-                            <td><%text(_MEMBERS_NOTES)%></td>\r
-                            <td><input name="notes" tabindex="80" size="40" maxlength="100" value="<%editmember(notes)%>" /></td>\r
-                        </tr><tr>\r
-                            <td><%text(_MEMBERS_LOCALE)%> <%helplink(locale)%></td>\r
-                            <td>\r
-                                <select name="locale" tabindex="85">\r
-                                    <%localeselectoptions%>\r
-                                </select>\r
-                            </td>\r
-                        </tr><tr>\r
-                            <td><%text(_MEMBERS_USEAUTOSAVE)%> <%helplink(autosave)%></td>\r
-                            <td><%editmember(autosave)%></td>\r
-                        </tr><%if(superadmin)%><tr>\r
-                            <td><%text(_SKINABLEADMIN_MEMBERS_ADMINSKIN)%> <%customhelplink(useadminskin)%></td>\r
-                            <td>\r
-                                    <%adminskinselectoptions%>\r
-                            </td>\r
-                        </tr><%endif%>\r
-                        <%pluginoptions(member)%>\r
-                        <tr>\r
-                            <th colspan="2"><%text(_MEMBERS_EDIT)%></th>\r
-                        </tr><tr>\r
-                            <td><%text(_MEMBERS_EDIT)%></td>\r
-                            <td><input type="submit" tabindex="90" value="<%text(_MEMBERS_EDIT_BTN)%>" onclick="return checkSubmit();" /></td>\r
-                        </tr>\r
-                    </table>\r
-                </div>\r
-            </form>\r
-            <h3><%text(_PLUGINS_EXTRA)%></h3>\r
-            <%pluginextras(member)%>]]></part>\r
-    <part name="insertpluginoptions"><![CDATA[<%insertpluginoptions(defaultadmin)%>]]></part>\r
-    <part name="itemcommentlist"><![CDATA[<p>(<a href="<%adminurl%>index.php?action=itemlist&amp;blogid=<%requestblogid%>"><%text(_BACKTOOVERVIEW)%></a>)</p>\r
-        <h2><%text(_COMMENTS)%></h2>\r
-        <%commentnavlist(defaultadmin)%>]]></part>\r
-    <part name="itemdelete"><![CDATA[<h2><%text(_DELETE_CONFIRM)%></h2>\r
-        <p><%text(_CONFIRMTXT_ITEM)%></p>\r
-            <div class="note">\r
-                <b>"<%deleteitemtitle%>"</b>\r
-                <br />\r
-                <%deleteitembody%>\r
-            </div>\r
-            <form method="post" action="<%adminurl%>index.php"><div>\r
-                <input type="hidden" name="action" value="itemdeleteconfirm" />\r
-                <%ticket%>\r
-                <input type="hidden" name="itemid" value="<%deleteitemid%>" />\r
-                <input type="submit" value="<%text(_DELETE_CONFIRM_BTN)%>" tabindex="10" />\r
-            </div></form>]]></part>\r
-    <part name="itemedit"><![CDATA[<h2><%text(_EDIT_ITEM)%></h2>\r
-\r
-<%init%>\r
-<script type="text/javascript" src="<%skinfile(/javascript/numbercheck.js)%>"></script>\r
-<%if(autosave)%><script type="text/javascript" src="<%skinfile(/javascript/xmlhttprequest.js)%>"></script><%endif%>\r
-\r
-<form id="editform" method="post" action="<%adminurl%>index.php">\r
-<div>\r
-\r
-<input type="hidden" name="action" value="itemupdate" />\r
-<input name="itemid" value="<%contents(itemid)%>" type="hidden" />\r
-<input type="hidden" name="draftid" value="0" />\r
-<%ticket%>\r
-\r
-<table><tr>\r
-       <th colspan="2"><%text(_EDIT_ITEM)%></th>\r
-</tr>\r
-<%if(autosave)%><tr>\r
-       <td><%text(_AUTOSAVEDRAFT)%></td>\r
-       <td><span id="info"><%text(_AUTOSAVEDRAFT_NOTYETSAVED)%></span></td>\r
-</tr><%endif%>\r
-<tr>\r
-       <td><%text(_EDIT_ORIG_AUTHOR)%></td>\r
-       <td><%contents(author)%></td>\r
-</tr><tr>\r
-       <td><%text(_ADD_TITLE)%></td>\r
-       <td><input id="inputtitle" onkeyup="storeCaret(this); updPreview(title); doMonitor();" onclick="storeCaret(this);" onselect="storeCaret(this);"\r
-                       name="title"\r
-                       tabindex="10"\r
-                       size="60" \r
-                       maxlength="160" \r
-                       value="<%contents(title)%>" />\r
-       </td>\r
-</tr><tr>\r
-       <td>\r
-               <%text(_ADD_BODY)%>\r
-       </td>\r
-       <td>\r
-               <div class="jsbuttonbar">\r
-<!--[if IE]>\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="cutThis()">\r
-                               <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" />\r
-                       </span>\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="copyThis()">\r
-                               <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" />\r
-                       </span>\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="pasteThis()">\r
-                               <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" />\r
-                       </span>\r
-                       <span class="jsbuttonspacer">&nbsp;</span>\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="boldThis()">\r
-                               <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" />\r
-                       </span>\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="italicThis()">\r
-                               <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" />\r
-                       </span>\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="ahrefThis()">\r
-                               <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" />\r
-                       </span>\r
-<![endif]-->\r
-<!--[if ! IE]>-->\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="boldThis()">\r
-                               <img src="<%skinfile(/images/button-bold.gif)%>" title="<%text(_ADD_BOLD_TT)%>" alt="<%text(_ADD_BOLD_TT)%>" width="16" height="16" />\r
-                       </span>\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="italicThis()">\r
-                               <img src="<%skinfile(/images/button-italic.gif)%>" title="<%text(_ADD_ITALIC_TT)%>" alt="<%text(_ADD_ITALIC_TT)%>" width="16" height="16" />\r
-                       </span>\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="ahrefThis()">\r
-                               <img src="<%skinfile(/images/button-link.gif)%>" title="<%text(_ADD_HREF_TT)%>" alt="<%text(_ADD_HREF_TT)%>" width="16" height="16" />\r
-                       </span>\r
-<!--<![endif]-->\r
-                       <span class="jsbuttonspacer">&nbsp;</span>\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="alignleftThis()">\r
-                               <img src="<%skinfile(/images/button-alignleft.gif)%>" title="<%text(_ADD_ALIGNLEFT_TT)%>" alt="<%text(_ADD_ALIGNLEFT_TT)%>" width="16" height="16" />\r
-                       </span>\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="alignrightThis()">\r
-                               <img src="<%skinfile(/images/button-alignright.gif)%>" title="<%text(_ADD_ALIGNRIGHT_TT)%>" alt="<%text(_ADD_ALIGNRIGHT_TT)%>" width="16" height="16" />\r
-                       </span>\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="aligncenterThis()">\r
-                               <img src="<%skinfile(/images/button-aligncenter.gif)%>" title="<%text(_ADD_ALIGNCENTER_TT)%>" alt="<%text(_ADD_ALIGNCENTER_TT)%>" width="16" height="16" />\r
-                       </span>\r
-                       <span class="jsbuttonspacer">&nbsp;</span>\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="leftThis()">\r
-                               <img src="<%skinfile(/images/button-left.gif)%>" title="<%text(_ADD_LEFT_TT)%>" alt="<%text(_ADD_LEFT_TT)%>" width="16" height="16" />\r
-                       </span>\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="rightThis()">\r
-                               <img src="<%skinfile(/images/button-right.gif)%>" title="<%text(_ADD_RIGHT_TT)%>" alt="<%text(_ADD_RIGHT_TT)%>" width="16" height="16" />\r
-                       </span>\r
-                       <span class="jsbuttonspacer">&nbsp;</span>\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="addMedia()">\r
-                               <img src="<%skinfile(/images/button-media.gif)%>" title="<%text(_ADD_MEDIA_TT)%>" alt="<%text(_ADD_MEDIA_TT)%>" width="16" height="16" />\r
-                       </span>\r
-<!--[if IE]>\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="showedit()">\r
-                               <img src="<%skinfile(/images/button-preview.gif)%>" title="<%text(_ADD_PREVIEW_TT)%>" alt="<%text(_ADD_PREVIEW_TT)%>" width="16" height="16" />\r
-                       </span>\r
-<![endif]-->\r
-               </div>\r
-               <textarea id="inputbody" onkeyup="storeCaret(this); updPreview(body); doMonitor();" onclick="storeCaret(this);" onselect="storeCaret(this);"\r
-                       name="body"\r
-                       tabindex="20"\r
-                       cols="60"\r
-                       rows="20"><%contents(body)%></textarea>\r
-       </td>\r
-</tr><tr id="edit" style="display:none;">\r
-       <td><%text(_ADD_PREVIEW)%></td>\r
-       <td><b><span id="prevtitle">&#160;</span></b><br />\r
-               <span id="prevbody">&#160;</span><br />\r
-               <span id="prevmore">&#160;</span><br />\r
-       </td>\r
-</tr><tr>\r
-\r
-<%if(blogsetting, bcomments)%>\r
-               <td>\r
-                       <%text(_ADD_DISABLE_COMMENTS)%>\r
-               </td>\r
-               <td> \r
-                       <input type="radio" name="closed" value="1" <%checkedonval(1,closed)%> tabindex="30" id="closed_yes" /><label for="closed_yes"><%text(_YES)%></label>\r
-                       <input type="radio" name="closed" value="0" <%checkedonval(0,closed)%> tabindex="30" id="closed_no" /><label for="closed_no"><%text(_NO)%></label>\r
-                       <br />\r
-                       <small><%text(_EDIT_COMMENTSNOTE)%></small>     \r
-               </td>\r
-       </tr><tr>                               \r
-<%endif%>\r
-\r
-       <td><%text(_ADD_CATEGORY)%></td>\r
-       <td><%categories(40)%></td>\r
-</tr><tr>\r
-       <td><%text(_EDIT_SUBMIT)%></td>\r
-       <td>\r
-\r
-               <input type="submit" tabindex="60" value="<%text(_EDIT_SUBMIT)%>" onclick="return checkSubmit();" />\r
-\r
-<%if(itemproperty, draft)%>\r
-               <br /><br />\r
-               <input name="actiontype" value="addnow" type="radio" id="act_now" /><label for="act_now" tabindex="61"><%text(_ADD_ADDNOW)%></label>\r
-               <br />\r
-               <input name="actiontype" value="addfuture" type="radio" id="act_future" tabindex="61" /><label for="act_future"><%text(_ADD_ADDLATER)%></label> <%helplink(future)%>\r
-               <div class="indent">\r
-                       <%text(_ADD_PLACE_ON)%>\r
-                       <input id="inputyear" name="year" tabindex="71" size="4" value="<%currenttime(year)%>" onchange="document.forms[0].act_future.checked=true;" /><%text(_ITEM_ADDEDITTEMPLATE_YEAR)%>\r
-                       <input id="inputmonth" name="month" tabindex="72" size="2" value="<%currenttime(mon)%>" onchange="document.forms[0].act_future.checked=true;" /><%text(_ITEM_ADDEDITTEMPLATE_MONTH)%>\r
-                       <input id="inputday" name="day" tabindex="73" size="2" value="<%currenttime(mday)%>" onchange="document.forms[0].act_future.checked=true;" /><%text(_ITEM_ADDEDITTEMPLATE_DAY)%>\r
-                       \r
-                       <input id="inputhour" name="hour" tabindex="74" size="2" value="<%currenttime(hours)%>" onchange="document.forms[0].act_future.checked=true;" /><%text(_ITEM_ADDEDITTEMPLATE_HOUR)%>\r
-                       <input id="inputminutes" name="minutes" tabindex="75" size="2" value="<%currenttime(minutes)%>" onchange="document.forms[0].act_future.checked=true;" /><%text(_ITEM_ADDEDITTEMPLATE_MINUTE)%>\r
-                               <br /><%text(_ITEM_ADDEDITTEMPLATE_FORMAT)%>(yyyy)<%text(_ITEM_ADDEDITTEMPLATE_YEAR)%>(mm)<%text(_ITEM_ADDEDITTEMPLATE_MONTH)%>(dd)<%text(_ITEM_ADDEDITTEMPLATE_DAY)%> (hh)<%text(_ITEM_ADDEDITTEMPLATE_HOUR)%>(mm)<%text(_ITEM_ADDEDITTEMPLATE_MINUTE)%>\r
-                       <%if(blogsetting, ballowpast,0)%>\r
-                               <br />\r
-                               <%text(_ADD_NOPASTDATES)%>\r
-                       <%endif%>\r
-               </div>\r
-               <input name="actiontype" value="adddraft" type="radio" checked='checked' id="act_draft" tabindex="61" /><label for="act_draft"><%text(_EDIT_BACKTODRAFTS)%></label> <%helplink(draft)%>\r
-               <br />\r
-               <input name="actiontype" value="delete" type="radio" id="act_delete" tabindex="61" /><label for="act_delete"><%text(_BMLET_DELETE)%></label>\r
-<%endif%>\r
-\r
-<%if(itemproperty, draft,0)%>\r
-       <br /><br />\r
-       <input name="actiontype" value="edit" type="radio" checked="checked" id="act_edit" tabindex="61" /><label for="act_edit"><%text(_BMLET_EDIT)%></label>\r
-       <%if(blogsetting, ballowpast)%>\r
-               <br />\r
-               <input name="actiontype" value="changedate" type="radio" id="act_changedate" tabindex="70" /><label for="act_changedate"><%text(_ADD_CHANGEDATE)%></label> <%helplink(changedate)%>\r
-                       <div class="indent">\r
-                               <input id="inputyear" name="year" tabindex="71" size="4" value="<%itemtime(year)%>" onchange="document.forms[0].act_changedate.checked=true;" /><%text(_ITEM_ADDEDITTEMPLATE_YEAR)%>\r
-                               <input id="inputmonth" name="month" tabindex="72" size="2" value="<%itemtime(mon)%>" onchange="document.forms[0].act_changedate.checked=true;" /><%text(_ITEM_ADDEDITTEMPLATE_MONTH)%>\r
-                               <input id="inputday" name="day" tabindex="73" size="2" value="<%itemtime(mday)%>" onchange="document.forms[0].act_changedate.checked=true;" /><%text(_ITEM_ADDEDITTEMPLATE_DAY)%>\r
-                                \r
-                               <input id="inputhour" name="hour" tabindex="74" size="2" value="<%itemtime(hours)%>" onchange="document.forms[0].act_changedate.checked=true;" /><%text(_ITEM_ADDEDITTEMPLATE_HOUR)%>\r
-                               <input id="inputminutes" name="minutes" tabindex="75" size="2" value="<%itemtime(minutes)%>" onchange="document.forms[0].act_changedate.checked=true;" /><%text(_ITEM_ADDEDITTEMPLATE_MINUTE)%>\r
-                               <br /><%text(_ITEM_ADDEDITTEMPLATE_FORMAT)%>(yyyy)<%text(_ITEM_ADDEDITTEMPLATE_YEAR)%>(mm)<%text(_ITEM_ADDEDITTEMPLATE_MONTH)%>(dd)<%text(_ITEM_ADDEDITTEMPLATE_DAY)%> (hh)<%text(_ITEM_ADDEDITTEMPLATE_HOUR)%>(mm)<%text(_ITEM_ADDEDITTEMPLATE_MINUTE)%>\r
-                       </div>\r
-       <%endif%>       \r
-       <input name="actiontype" value="backtodrafts" type="radio" id="act_backtodrafts" tabindex="71" /><label for="act_backtodrafts"><%text(_BMLET_BACKTODRAFTS)%></label> <%helplink(draft)%>\r
-       <br />\r
-       <input name="actiontype" value="delete" type="radio" id="act_delete" tabindex="61" /><label for="act_delete"><%text(_BMLET_DELETE)%></label>\r
-<%endif%>\r
-\r
-       </td>\r
-</tr><tr>\r
-       <td><%text(_ADD_PLUGIN_EXTRAS)%></td>\r
-       <td>\r
-               <%pluginextras%>\r
-       </td>   \r
-</tr>\r
-                       <%itemoptions%> \r
-<tr>\r
-       <th colspan="2"><%text(_ADD_MORE)%></th>\r
-</tr>\r
-<tr>\r
-       <td><%text(_ADD_MORE)%>\r
-               <br /><%helplink(extended)%>\r
-       </td>\r
-       <td>\r
-               <div class="jsbuttonbar">\r
-<!--[if IE]>\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="cutThis()">\r
-                               <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" />\r
-                       </span>\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="copyThis()">\r
-                               <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" />\r
-                       </span>\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="pasteThis()">\r
-                               <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" />\r
-                       </span>\r
-                       <span class="jsbuttonspacer">&nbsp;</span>\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="boldThis()">\r
-                               <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" />\r
-                       </span>\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="italicThis()">\r
-                               <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" />\r
-                       </span>\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="ahrefThis()">\r
-                               <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" />\r
-                       </span>\r
-<![endif]-->\r
-<!--[if ! IE]>-->\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="boldThis()">\r
-                               <img src="<%skinfile(/images/button-bold.gif)%>" title="<%text(_ADD_BOLD_TT)%>" alt="<%text(_ADD_BOLD_TT)%>" width="16" height="16" />\r
-                       </span>\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="italicThis()">\r
-                               <img src="<%skinfile(/images/button-italic.gif)%>" title="<%text(_ADD_ITALIC_TT)%>" alt="<%text(_ADD_ITALIC_TT)%>" width="16" height="16" />\r
-                       </span>\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="ahrefThis()">\r
-                               <img src="<%skinfile(/images/button-link.gif)%>" title="<%text(_ADD_HREF_TT)%>" alt="<%text(_ADD_HREF_TT)%>" width="16" height="16" />\r
-                       </span>\r
-<!--<![endif]-->\r
-                       <span class="jsbuttonspacer">&nbsp;</span>\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="alignleftThis()">\r
-                               <img src="<%skinfile(/images/button-alignleft.gif)%>" title="<%text(_ADD_ALIGNLEFT_TT)%>" alt="<%text(_ADD_ALIGNLEFT_TT)%>" width="16" height="16" />\r
-                       </span>\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="alignrightThis()">\r
-                               <img src="<%skinfile(/images/button-alignright.gif)%>" title="<%text(_ADD_ALIGNRIGHT_TT)%>" alt="<%text(_ADD_ALIGNRIGHT_TT)%>" width="16" height="16" />\r
-                       </span>\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="aligncenterThis()">\r
-                               <img src="<%skinfile(/images/button-aligncenter.gif)%>" title="<%text(_ADD_ALIGNCENTER_TT)%>" alt="<%text(_ADD_ALIGNCENTER_TT)%>" width="16" height="16" />\r
-                       </span>\r
-                       <span class="jsbuttonspacer">&nbsp;</span>\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="leftThis()">\r
-                               <img src="<%skinfile(/images/button-left.gif)%>" title="<%text(_ADD_LEFT_TT)%>" alt="<%text(_ADD_LEFT_TT)%>" width="16" height="16" />\r
-                       </span>\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="rightThis()">\r
-                               <img src="<%skinfile(/images/button-right.gif)%>" title="<%text(_ADD_RIGHT_TT)%>" alt="<%text(_ADD_RIGHT_TT)%>" width="16" height="16" />\r
-                       </span>\r
-                       <span class="jsbuttonspacer">&nbsp;</span>\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="addMedia()">\r
-                               <img src="<%skinfile(/images/button-media.gif)%>" title="<%text(_ADD_MEDIA_TT)%>" alt="<%text(_ADD_MEDIA_TT)%>" width="16" height="16" />\r
-                       </span>\r
-<!--[if IE]>\r
-                       <span class="jsbutton" onmouseover="BtnHighlight(this);" onmouseout="BtnNormal(this);" onclick="showedit()">\r
-                               <img src="<%skinfile(/images/button-preview.gif)%>" title="<%text(_ADD_PREVIEW_TT)%>" alt="<%text(_ADD_PREVIEW_TT)%>" width="16" height="16" />\r
-                       </span>\r
-<![endif]-->\r
-               </div>\r
-               <textarea id="inputmore" onkeyup="storeCaret(this); updPreview(more); doMonitor();" onclick="storeCaret(this);" onselect="storeCaret(this);"\r
-                       name="more"\r
-                       tabindex="90"\r
-                       cols="60" \r
-                       rows="20"><%contents(more)%></textarea>\r
-       </td>\r
-</tr><tr>\r
-               <td><%text(_SUBMIT)%></td>\r
-               <td>\r
-                       <input tabindex="60" type="submit" value="<%text(_EDIT_SUBMIT)%>" \r
-                               onclick="return checkSubmit();" />\r
-                       <%if(autosave)%><input tabindex="80" type="button" name="autosavenow" value="<%text(_AUTOSAVEDRAFT_NOW)%>"\r
-                               onclick="autoSaveDraft();" /><%endif%>\r
-               </td>\r
-       \r
-</tr></table>\r
-\r
-</div>\r
-</form>\r
-\r
-<%if(autosave)%><script type="text/javascript">\r
-       var xmlhttprequest = new Array();\r
-       xmlhttprequest[0] = createHTTPHandler(); // AutoDraft handler\r
-       xmlhttprequest[1] = createHTTPHandler(); // UpdateTicket handler\r
-       var seconds = now(); // Last AutoDraft time\r
-       var checks = 0; // Number of checks since last AutoDraft\r
-       var addform = document.getElementById('editform'); // The form id\r
-       var goal = document.getElementById('info'); // The html div id where 'Last saved: date time' must come\r
-       var goalurl = '../action.php'; // The PHP file where the content must be posted to\r
-       var lastsavedtext = '<%text(_AUTOSAVEDRAFT_LASTSAVED)%>'; // The language variable for 'Last saved'\r
-       var formtype = 'edit'; // Add or edit form\r
-</script><%endif%>]]></part>\r
-    <part name="itemlist"><![CDATA[<p><a href="<%adminurl%>index.php?action=overview">(<%text(_BACKHOME)%>)</a></p>\r
-        <h2><%text(_ITEMLIST_BLOG)%><%adminbloglink(defaultadmin)%></h2>\r
-        <%ilistaddnew%>\r
-        <%itemnavlist(defaultadmin)%>]]></part>\r
-    <part name="itemmove"><![CDATA[<h2><%text(_MOVE_TITLE)%></h2>\r
-            <form method="post" action="<%adminurl%>index.php"><div>\r
-                <input type="hidden" name="action" value="itemmoveto" />\r
-                <input type="hidden" name="itemid" value="<%moveitemid%>" />\r
-                <%ticket%>\r
-                <%movedistselect%>\r
-                <input type="submit" value="<%text(_MOVE_BTN)%>" tabindex="10000" onclick="return checkSubmit();" />\r
-            </div></form>]]></part>\r
-    <part name="manage"><![CDATA[<p><a href="<%adminurl%>index.php?action=overview">(<%text(_BACKHOME)%>)</a></p>\r
-        <%headmessage%>\r
-        <h2><%text(_MANAGE_GENERAL)%></h2>\r
-\r
-        <ul>\r
-            <li><a href="<%adminurl%>index.php?action=createnewlog"><%text(_OVERVIEW_NEWLOG)%></a></li>\r
-            <li><a href="<%adminurl%>index.php?action=settingsedit"><%text(_OVERVIEW_SETTINGS)%></a></li>\r
-            <li><a href="<%adminurl%>index.php?action=usermanagement"><%text(_OVERVIEW_MEMBERS)%></a></li>\r
-            <li><a href="<%adminurl%>index.php?action=actionlog"><%text(_OVERVIEW_VIEWLOG)%></a></li>\r
-        </ul>\r
-\r
-        <h2><%text(_MANAGE_SKINS)%></h2>\r
-        <ul>\r
-            <li><a href="<%adminurl%>index.php?action=skinoverview"><%text(_OVERVIEW_SKINS)%></a></li>\r
-            <li><a href="<%adminurl%>index.php?action=templateoverview"><%text(_OVERVIEW_TEMPLATES)%></a></li>\r
-            <li><a href="<%adminurl%>index.php?action=skinieoverview"><%text(_OVERVIEW_SKINIMPORT)%></a></li>\r
-        </ul>\r
-\r
-        <h2><%text(_MANAGE_EXTRA)%></h2>\r
-        <ul>\r
-            <li><a href="<%adminurl%>index.php?action=backupoverview"><%text(_OVERVIEW_BACKUP)%></a></li>\r
-            <li><a href="<%adminurl%>index.php?action=pluginlist"><%text(_OVERVIEW_PLUGINS)%></a></li>\r
-        </ul>]]></part>\r
-    <part name="manageteam"><![CDATA[<p><a href="<%adminurl%>index.php?action=blogsettings&amp;blogid=<%requestblogid%>">(<%text(_BACK_TO_BLOGSETTINGS)%>)</a></p>\r
-        <h2><%text(_TEAM_TITLE)%><%blogsetting(name)%></h2>\r
-        <h3><%text(_TEAM_CURRENT)%></h3>\r
-        <%blogteamlist(defaultadmin)%>\r
-        <h3><%text(_TEAM_ADDNEW)%></h3>\r
-        <form method='post' action='<%adminurl%>index.php'>\r
-            <div>\r
-                <input type='hidden' name='action' value='teamaddmember' />\r
-                <input type='hidden' name='blogid' value='<%requestblogid%>' />\r
-\r
-\r
-                <%ticket%>\r
-                <table>\r
-                    <tr>\r
-                        <td><%text(_TEAM_CHOOSEMEMBER)%></td>\r
-                        <td><%newmemberselect%></td>\r
-                    </tr><tr>\r
-                        <td><%text(_TEAM_ADMIN)%><%helplink(teamadmin)%></td>\r
-                        <td><%inputyesno(admin,0,10020)%></td>\r
-                    </tr><tr>\r
-                        <td><%text(_TEAM_ADD)%></td>\r
-                        <td><input type='submit' value='<%text(_TEAM_ADD_BTN)%>' tabindex="10030" /></td>\r
-                    </tr>\r
-                </table>\r
-            </div>\r
-        </form>]]></part>\r
-    <part name="memberdelete"><![CDATA[<h2><%text(_DELETE_CONFIRM)%></h2>\r
-            <p><%text(_CONFIRMTXT_MEMBER%><b><%editmember(displayname)%></b></p>\r
-            <p><%text(_WARNINGTXT_NOTDELMEDIAFILES)%></p>\r
-            <form method="post" action="<%adminurl%>index.php">\r
-                <div>\r
-                    <input type="hidden" name="action" value="memberdeleteconfirm" />\r
-                    <%ticket%>\r
-                    <input type="hidden" name="memberid" value="<%editmember(id)%>" />\r
-                    <input type="submit" tabindex="10" value="<%text(_DELETE_CONFIRM_BTN)%>" />\r
-                </div>\r
-            </form>]]></part>\r
-    <part name="overview"><![CDATA[<%headmessage%>\r
-        <h2><%text(_OVERVIEW_YRBLOGS)%></h2>\r
-        <%yrbloglist(defaultadmin)%>\r
-        <h2><%text(_OVERVIEW_YRSETTINGS)%></h2>\r
-        <ul>\r
-            <li><a href="<%adminurl%>index.php?action=editmembersettings"><%text(_OVERVIEW_EDITSETTINGS)%></a></li>\r
-            <li><a href="<%adminurl%>index.php?action=browseownitems"><%text(_OVERVIEW_BROWSEITEMS)%></a></li>\r
-            <li><a href="<%adminurl%>index.php?action=browseowncomments"><%text(_OVERVIEW_BROWSECOMM)%></a></li>\r
-        </ul>\r
-        <%if(superadmin)%><h2><%text(_OVERVIEW_MANAGEMENT)%></h2>\r
-        <ul>\r
-            <li><a href="<%adminurl%>index.php?action=manage"><%text(_OVERVIEW_MANAGE)%></a></li>\r
-        </ul>]]></part>\r
-    <part name="pagefoot"><![CDATA[<%if(loggedin)%><%ifnot(adminaction,showlogin)%><h2><%text(_LOGOUT)%></h2>\r
-                    <ul>\r
-                        <li><a href="<%adminurl%>index.php?action=overview"><%text(_BACKHOME)%></a></li>\r
-                        <li><a href="<%adminurl%>index.php?action=logout"><%text(_LOGOUT)%></a></li>\r
-                    </ul><%endif%><%endif%>\r
-                    <div class="foot">\r
-                        <a href="<%text(_ADMINPAGEFOOT_OFFICIALURL)%>">Nucleus CMS</a> &copy; 2002- <%date(%Y)%> <%text(_ADMINPAGEFOOT_COPYRIGHT)%> - <a href="<%text(_ADMINPAGEFOOT_DONATEURL)%>"><%text(_ADMINPAGEFOOT_DONATE)%></a>\r
-                    </div>\r
-                </div><!-- content -->\r
-                <div id="quickmenu">\r
-                    <%if(loggedin)%><%ifnot(adminaction,showlogin)%><ul>\r
-                        <li><a href="<%adminurl%>index.php?action=overview"><%text(_QMENU_HOME)%></a></li>\r
-                    </ul>\r
-\r
-                    <h2><%text(_QMENU_ADD)%></h2>\r
-                    <form method="get" action="<%adminurl%>index.php">\r
-                        <div>\r
-                            <input type="hidden" name="action" value="createitem" />\r
-                            <%qmenuaddselect%>\r
-                        </div>\r
-                    </form>\r
-            \r
-                    <h2><%member(yourrealname)%></h2>\r
-                    <ul>\r
-                        <li><a href="<%adminurl%>index.php?action=editmembersettings"><%text(_QMENU_USER_SETTINGS)%></a></li>\r
-                        <li><a href="<%adminurl%>index.php?action=browseownitems"><%text(_QMENU_USER_ITEMS)%></a></li>\r
-                        <li><a href="<%adminurl%>index.php?action=browseowncomments"><%text(_QMENU_USER_COMMENTS)%></a></li>\r
-                    </ul>\r
-                    <%if(superadmin)%><h2><%text(_QMENU_MANAGE)%></h2>\r
-                    <ul>\r
-                        <li><a href="<%adminurl%>index.php?action=actionlog"><%text(_QMENU_MANAGE_LOG)%></a></li>\r
-                        <li><a href="<%adminurl%>index.php?action=settingsedit"><%text(_QMENU_MANAGE_SETTINGS)%></a></li>\r
-                        <li><a href="<%adminurl%>index.php?action=systemoverview"><%text(_QMENU_MANAGE_SYSTEM)%></a></li>\r
-                        <li><a href="<%adminurl%>index.php?action=usermanagement"><%text(_QMENU_MANAGE_MEMBERS)%></a></li>\r
-                        <li><a href="<%adminurl%>index.php?action=createnewlog"><%text(_QMENU_MANAGE_NEWBLOG)%></a></li>\r
-                        <li><a href="<%adminurl%>index.php?action=backupoverview"><%text(_QMENU_MANAGE_BACKUPS)%></a></li>\r
-                        <li><a href="<%adminurl%>index.php?action=pluginlist"><%text(_QMENU_MANAGE_PLUGINS)%></a></li>\r
-                    </ul>\r
-                    <h2><%text(_QMENU_LAYOUT)%></h2>\r
-                    <ul>\r
-                        <li><a href="<%adminurl%>index.php?action=skinoverview"><%text(_QMENU_LAYOUT_SKINS)%></a></li>\r
-                        <li><a href="<%adminurl%>index.php?action=templateoverview"><%text(_QMENU_LAYOUT_TEMPL)%></a></li>\r
-                        <li><a href="<%adminurl%>index.php?action=skinieoverview"><%text(_QMENU_LAYOUT_IEXPORT)%></a></li>\r
-                    </ul>\r
-                    <h2><%text(_SKINABLEADMIN_QMENU_LAYOUT)%></h2>\r
-                    <ul>\r
-                        <li><a href="<%adminurl%>index.php?action=adminskinoverview"><%text(_QMENU_LAYOUT_SKINS)%></a></li>\r
-                        <li><a href="<%adminurl%>index.php?action=admintemplateoverview"><%text(_QMENU_LAYOUT_TEMPL)%></a></li>\r
-                        <li><a href="<%adminurl%>index.php?action=adminskinieoverview"><%text(_QMENU_LAYOUT_IEXPORT)%></a></li>\r
-                    </ul><%endif%>\r
-                    <%quickmenu(defaultadmin)%>\r
-                    <%elseif(adminaction,activate)%><h2><%text(_QMENU_ACTIVATE)%></h2><%text(_QMENU_ACTIVATE_TEXT)%>\r
-                    <%elseif(adminaction,activatesetpwd)%><h2><%text(_QMENU_ACTIVATE)%></h2><%text(_QMENU_ACTIVATE_TEXT)%>\r
-                    <%else%><h2><%text(_QMENU_INTRO)%></h2><%text(_QMENU_INTRO_TEXT)%><%endif%>\r
-                </div>\r
-                <!-- content / quickmenu container -->\r
-                <div class="clear"></div>    <!-- new -->\r
-            </div>\r
-        <!-- adminwrapper -->    <!-- new -->\r
-        </div>     <!-- new -->\r
-    </body>\r
-</html>]]></part>\r
-    <part name="pagehead"><![CDATA[<!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" xml:lang="ja-JP" lang="ja-JP">\r
-    <head>\r
-        <meta http-equiv="Content-Type" content="text/html; charset=<%charset%>" />\r
-        <title><%sitevar(name)%> - Admin</title>\r
-        <link rel="stylesheet" title="Nucleus Admin Default" type="text/css" href="<%skinfile(/styles/admin_contemporary_jp.css)%>" />\r
-        <link rel="stylesheet" title="Nucleus Admin Default" type="text/css" href="<%skinfile(/styles/addedit.css)%>" />\r
-\r
-        <script type="text/javascript" src="<%skinfile(/javascript/edit.js)%>"></script>\r
-        <script type="text/javascript" src="<%skinfile(/javascript/admin.js)%>"></script>\r
-        <script type="text/javascript" src="<%skinfile(/javascript/compatibility.js)%>"></script>\r
-\r
-        <meta http-equiv='Pragma' content='no-cache' />\r
-        <meta http-equiv='Cache-Control' content='no-cache, must-revalidate' />\r
-        <meta http-equiv='Expires' content='-1' />\r
-        <%extrahead%>\r
-    </head>\r
-    <body>\r
-        <div id="adminwrapper">\r
-            <div class="header">\r
-                <h1><%sitevar(name)%></h1>\r
-            </div>\r
-            <div id="container">\r
-                <div id="content">\r
-                    <div class="loginname">\r
-                        <%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%>\r
-                        <a href="<%sitevar(url)%>"><%text(_YOURSITE)%></a><br />\r
-                        (<%if(superadmin)%><a href="<%versioncheckurl%>" title="<%text(_ADMIN_SYSTEMOVERVIEW_VERSIONCHECK_TITLE)%>"><%version%><%codename%></a><%newestcompare%><%else%><%version%><%codename%><%endif%>)\r
-                    </div>]]></part>\r
-    <part name="plugindelete"><![CDATA[            <h2><%text(_DELETE_CONFIRM)%></h2>\r
-\r
-            <p><%text(_CONFIRMTXT_PLUGIN)%> <strong><%editpluginfo(name)%></strong>?</p>\r
-            <form method="post" action="<%adminurl%>index.php"><div>\r
-            <%ticket%>\r
-            <input type="hidden" name="action" value="plugindeleteconfirm" />\r
-            <input type="hidden" name="plugid" value="<%editpluginfo(id)%>" />\r
-            <input type="submit" tabindex="10" value="<%text(_DELETE_CONFIRM_BTN)%>" />\r
-            </div></form>\r
-]]></part>\r
-    <part name="pluginhelp"><![CDATA[        <p><a href="<%adminurl%>index.php?action=pluginlist">(<%text(_PLUGS_BACK)%>)</a></p>\r
-        <h2><%text(_PLUGS_HELP_TITLE)%>: <%helpplugname%></h2>\r
-        <%pluginhelp%>\r
-]]></part>\r
-    <part name="pluginlist"><![CDATA[        <p><a href="<%adminurl%>index.php?action=manage">(<%text(_BACKTOMANAGE)%>)</a></p>\r
-        <h2><%text(_PLUGS_TITLE_MANAGE)%><%helplink(plugins)%></h2>\r
-        <h3><%text(_PLUGS_TITLE_INSTALLED)%> &nbsp;&nbsp;<span style="font-size:smaller"><%helplink('getplugins')%><%text(_PLUGS_TITLE_GETPLUGINS)%></a></span></h3>\r
-        <%pluginlistlist(defaultadmin)%>\r
-        <h3><%text(_PLUGS_TITLE_UPDATE)%></h3>\r
-        <p><%text(_PLUGS_TEXT_UPDATE)%></p>\r
-        <form method="post" action="<%adminurl%>index.php">\r
-            <div>\r
-                <input type="hidden" name="action" value="pluginupdate" />\r
-                <%ticket%>\r
-                <input type="submit" value="<%text(_PLUGS_BTN_UPDATE)%>" tabindex="20" />\r
-            </div>\r
-        </form>\r
-        <h3><%text(_PLUGS_TITLE_NEW)%></h3>\r
-        <%if(existsnewplugin)%><p><%text(_PLUGS_ADD_TEXT)%></p>\r
-        <form method='post' action='index.php'>\r
-\r
-            <div>\r
-                <input type='hidden' name='action' value='pluginadd' />\r
-                <%ticket%>\r
-                <select name="filename" tabindex="30">\r
-                <%newpluginlist%>\r
-                </select>\r
-                <input type='submit' tabindex="40" value='<%text(_PLUGS_BTN_INSTALL)%>' />\r
-            </div></form><%else%><p><%text(_PLUGS_NOCANDIDATES)%></p><%endif%>]]></part>\r
-    <part name="pluginoptions"><![CDATA[<p><a href="<%adminurl%>index.php?action=pluginlist">(<%text(_PLUGS_BACK)%>)</a></p>\r
-            <h2><%sprinttext(_PLUGIN_OPTIONS_TITLE,<|%geteditpluginfo(name)%|>)%></h2>\r
-            <%headmessage%>\r
-            <form action="<%adminurl%>index.php" method="post">\r
-\r
-                <div>\r
-                    <input type="hidden" name="action" value="pluginoptionsupdate" />\r
-                    <input type="hidden" name="plugid" value="<%editpluginfo(id)%>" />\r
-                    <%ticket%>\r
-                    <%editplugoptionslist%>\r
-                </div>\r
-            </form>]]></part>\r
-    <part name="settingsedit"><![CDATA[<p><a href="<%adminurl%>index.php?action=manage">(<%text(_BACKTOMANAGE)%>)</a></p>\r
-        <h2><%text(_SETTINGS_TITLE)%></h2>\r
-        <form action="<%adminurl%>index.php" method="post">\r
-            <div>\r
-                <input type="hidden" name="action" value="settingsupdate" />\r
-                <%ticket%>\r
-                <table>\r
-                    <tr>\r
-                        <th colspan="2"><%text(_SETTINGS_SUB_GENERAL)%></th>\r
-                    </tr><tr>\r
-                        <td><%text(_SETTINGS_DEFBLOG)%> <%helplink(defaultblog)%></td>\r
-                        <td><%defblogselect%></td>\r
-                    </tr><tr>\r
-                        <td><%text(_SETTINGS_BASESKIN)%> <%helplink(baseskin)%></td>\r
-                        <td><%defskinselect(global)%></td>\r
-                    </tr><tr>\r
-                        <td><%text(_SETTINGS_ADMINMAIL)%></td>\r
-                        <td><input name="AdminEmail" tabindex="10010" size="40" value="<%configsettingsedit(AdminEmail)%>" /></td>\r
-                    </tr><tr>\r
-                        <td><%text(_SETTINGS_SITENAME)%></td>\r
-                        <td><input name="SiteName" tabindex="10020" size="40" value="<%configsettingsedit(SiteName)%>" /></td>\r
-                    </tr><tr>\r
-                        <td><%text(_SETTINGS_SITEURL)%></td>\r
-                        <td><input name="IndexURL" tabindex="10030" size="40" value="<%configsettingsedit(IndexURL)%>" /></td>\r
-                    </tr><tr>\r
-                        <td><%text(_SETTINGS_ADMINURL)%></td>\r
-                        <td><input name="AdminURL" tabindex="10040" size="40" value="<%configsettingsedit(AdminURL)%>" /></td>\r
-                    </tr><tr>\r
-                        <td><%text(_SETTINGS_PLUGINURL)%> <%helplink(pluginurl)%></td>\r
-                        <td><input name="PluginURL" tabindex="10045" size="40" value="<%configsettingsedit(PluginURL)%>" /></td>\r
-                    </tr><tr>\r
-                        <td><%text(_SETTINGS_SKINSURL)%> <%helplink(skinsurl)%></td>\r
-                        <td><input name="SkinsURL" tabindex="10046" size="40" value="<%configsettingsedit(SkinsURL)%>" /></td>\r
-                    </tr><tr>\r
-                        <td><%text(_SETTINGS_ACTIONSURL)%> <%helplink(actionurl)%></td>\r
-                        <td><input name="ActionURL" tabindex="10047" size="40" value="<%configsettingsedit(ActionURL)%>" /></td>\r
-                    </tr><tr>\r
-                        <td><%text(_SETTINGS_LANGUAGE)%> <%helplink(language)%></td>\r
-                        <td><select name="Locale" tabindex="10050"><%localeselectoptions%></select></td>\r
-                    </tr><tr>\r
-                        <td><%text(_SETTINGS_DISABLESITE)%> <%helplink(disablesite)%></td>\r
-                        <td>\r
-                            <%configsettingsyesno(DisableSite, 10060)%><br />\r
-                            <%text(_SETTINGS_DISABLESITEURL)%> <input name="DisableSiteURL" tabindex="10070" size="40" value="<%configsettingsedit(DisableSiteURL)%>" />\r
-                        </td>\r
-                    </tr><tr>\r
-                        <td><%text(_SETTINGS_DIRS)%></td>\r
-                        <td><%outputspecialdirs(nucleusdir)%><i><%text(_SETTINGS_SEECONFIGPHP)%></i></td>\r
-                    </tr><tr>\r
-                        <td><%text(_SETTINGS_DBLOGIN)%></td>\r
-                        <td><i><%text(_SETTINGS_SEECONFIGPHP)%></i></td>\r
-                    </tr><tr>\r
-                        <td><%text(_SETTINGS_JSTOOLBAR)%></td>\r
-                        <td>\r
-                            <select name="DisableJsTools" tabindex="10075">\r
-                                <%jstoolbaroptions%>\r
-                            </select>\r
-                        </td>\r
-                    </tr><tr>\r
-                        <td><%text(_SETTINGS_URLMODE)%> <%helplink(urlmode)%></td>\r
-                        <td><%configsettingsedit(URLMode)%> <%text(_SETTINGS_URLMODE_HELP)%></td>\r
-                    </tr><tr>\r
-                        <td><%text(_SETTINGS_DEBUGVARS)%> <%helplink(debugvars)%></td>\r
-                        <td><%configsettingsyesno(DebugVars, 10078)%></td>\r
-                    </tr><tr>\r
-                        <td><%text(_SETTINGS_DEFAULTLISTSIZE)%> <%helplink(defaultlistsize)%></td>\r
-                        <td><input name="DefaultListSize" tabindex="10079" size="40" value="<%configsettingsedit(DefaultListSize)%>" /></td>\r
-                    </tr><tr>\r
-                        <td><%text(_SETTINGS_ADMINCSS)%></td>\r
-                        <td><select name="AdminCSS" tabindex="10080"><%adminstyleselectoptions%></select></td>\r
-                    </tr><tr>\r
-                        <th colspan="2"><%text(_SETTINGS_MEDIA)%> <%helplink(media)%></th>\r
-                    </tr><tr>\r
-                        <td><%text(_SETTINGS_MEDIADIR)%></td>\r
-                        <td>\r
-                            <%outputspecialdirs(mediadir)%>\r
-                            <i><%text(_SETTINGS_SEECONFIGPHP)%></i><%mediadirwarning%>\r
-                        </td>\r
-                    </tr><tr>\r
-                        <td><%text(_SETTINGS_MEDIAURL)%></td>\r
-                        <td><input name="MediaURL" tabindex="10080" size="40" value="<%configsettingsedit(MediaURL)%>" /></td>\r
-                    </tr><tr>\r
-                        <td><%text(_SETTINGS_ALLOWUPLOAD)%></td>\r
-                        <td><%configsettingsyesno(AllowUpload, 10090)%></td>\r
-                    </tr><tr>\r
-                        <td><%text(_SETTINGS_ALLOWUPLOADTYPES)%></td>\r
-                        <td><input name="AllowedTypes" tabindex="10100" size="40" value="<%configsettingsedit(AllowedTypes)%>" />\r
-                    </tr><tr>\r
-                        <td><%text(_SETTINGS_MAXUPLOADSIZE)%></td>\r
-                        <td><input name="MaxUploadSize" tabindex="10105" size="40" value="<%configsettingsedit(MaxUploadSize)%>" /></td>\r
-                    </tr><tr>\r
-                        <td><%text(_SETTINGS_MEDIAPREFIX)%></td>\r
-                        <td><%configsettingsyesno(MediaPrefix, 10110)%></td>\r
-                    </tr><tr>\r
-                        <th colspan="2"><%text(_SETTINGS_MEMBERS)%></th>\r
-                    </tr><tr>\r
-                        <td><%text(_SETTINGS_CHANGELOGIN)%></td>\r
-                        <td><%configsettingsyesno(AllowLoginEdit, 10120)%></td>\r
-                    </tr><tr>\r
-                        <td><%text(_SETTINGS_ALLOWCREATE)%> <%helplink(allowaccountcreation)%>\r
-                        </td>\r
-                        <td><%configsettingsyesno(AllowMemberCreate, 10130)%></td>\r
-                    </tr><tr>\r
-                        <td><%text(_SETTINGS_NEWLOGIN)%> <%helplink(allownewmemberlogin)%><br /><%text(_SETTINGS_NEWLOGIN2)%></td>\r
-                        <td><%configsettingsyesno(NewMemberCanLogon, 10140)%></td>\r
-                    </tr><tr>\r
-                        <td><%text(_SETTINGS_MEMBERMSGS)%> <%helplink(messageservice)%></td>\r
-                        <td><%configsettingsyesno(AllowMemberMail, 10150)%></td>\r
-                    </tr><tr>\r
-                        <td><%text(_SETTINGS_NONMEMBERMSGS)%> <%helplink(messageservice)%></td>\r
-                        <td><%configsettingsyesno(NonmemberMail, 10155%></td>\r
-                    </tr><tr>\r
-                        <td><%text(_SETTINGS_PROTECTMEMNAMES)%> <%helplink(protectmemnames)%></td>\r
-                        <td><%configsettingsyesno(ProtectMemNames, 10156)%></td>\r
-                    </tr><tr>\r
-                        <th colspan="2"><%text(_SETTINGS_COOKIES_TITLE)%> <%helplink(cookies)%></th>\r
-                    </tr><tr>\r
-                        <td><%text(_SETTINGS_COOKIEPREFIX)%></td>\r
-                        <td><input name="CookiePrefix" tabindex="10159" size="40" value="<%configsettingsedit(CookiePrefix)%>" /></td>\r
-                    </tr><tr>\r
-                        <td><%text(_SETTINGS_COOKIEDOMAIN)%></td>\r
-                        <td><input name="CookieDomain" tabindex="10160" size="40" value="<%configsettingsedit(CookieDomain)%>" /></td>\r
-                    </tr><tr>\r
-                        <td><%text(_SETTINGS_COOKIEPATH)%></td>\r
-                        <td><input name="CookiePath" tabindex="10170" size="40" value="<%configsettingsedit(CookiePath)%>" /></td>\r
-                    </tr><tr>\r
-                        <td><%text(_SETTINGS_COOKIESECURE)%></td>\r
-                        <td><%configsettingsyesno(CookieSecure, 10180)%></td>\r
-                    </tr><tr>\r
-                        <td><%text(_SETTINGS_COOKIELIFE)%></td>\r
-                        <td><%configsettingsedit(SessionCookie)%></td>\r
-                    </tr><tr>\r
-                        <td><%text(_SETTINGS_LASTVISIT)%></td>\r
-                        <td><%configsettingsyesno(LastVisit, 10200)%></td>\r
-                    </tr><tr>\r
-                        <th colspan="2"><%text(_SETTINGS_UPDATE)%></th>\r
-                    </tr><tr>\r
-                        <td><%text(_SETTINGS_UPDATE)%></td>\r
-                        <td><input type="submit" tabindex="10210" value="<%text(_SETTINGS_UPDATE_BTN)%>" onclick="return checkSubmit();" /></td>\r
-                    </tr>\r
-                </table>\r
-            </div>\r
-        </form>\r
-        <h2><%text(_PLUGINS_EXTRA)%></h2>\r
-        <%pluginextras%>]]></part>\r
-    <part name="showlogin"><![CDATA[<h2><%text(_LOGIN)%></h2>\r
-        <%headmessage%>\r
-        <form action="<%adminurl%>index.php" method="post"><p>\r
-            <%text(_LOGIN_NAME)%> <br /><input name="login"  tabindex="10" />\r
-            <br />\r
-            <%text(_LOGIN_PASSWORD)%> <br /><input name="password"  tabindex="20" type="password" />\r
-            <br />\r
-            <input name="action" value="login" type="hidden" />\r
-            <br />\r
-            <input type="submit" value="<%text(_LOGIN)%>" tabindex="30" />\r
-            <br />\r
-            <small>\r
-                <input type="checkbox" value="1" name="shared" tabindex="40" id="shared" /><label for="shared"><%text(_LOGIN_SHARED)%></label>\r
-                <br /><a href="forgotpassword.html"><%text(_LOGIN_FORGOT)%></a>\r
-            </small>\r
-            <%passrequestvars%>\r
-        </p></form>]]></part>\r
-    <part name="skindelete"><![CDATA[<h2><%text(_DELETE_CONFIRM)%></h2>\r
-            <p><%text(_CONFIRMTXT_SKIN)%><b><%editskintype(name)%></b> (<%editskintype(desc)%>)</p>\r
-            <form method="post" action="<%adminurl%>index.php">\r
-                <div>\r
-                    <input type="hidden" name="action" value="skindeleteconfirm" />\r
-                    <%ticket%>\r
-                    <input type="hidden" name="skinid" value="<%editskintype(id)%>" />\r
-                    <input type="submit" tabindex="10" value="<%text(_DELETE_CONFIRM_BTN)%>" />\r
-                </div>\r
-            </form>]]></part>\r
-    <part name="skinedit"><![CDATA[<p><a href="<%adminurl%>index.php?action=skinoverview">(<%text(_SKIN_BACK)%>)</a></p>\r
-        <h2><%text(_SKIN_EDITONE_TITLE)%> '<%editskin(name)%>'</h2>\r
-        <h3><%text(_SKIN_PARTS_TITLE)%></h3>\r
-        <%text(_SKIN_PARTS_MSG)%>\r
-        <ul>\r
-            <li><a tabindex="10" href="<%adminurl%>index.php?action=skinedittype&amp;skinid=<%editskin(id)%>&amp;type=index"><%text(_SKIN_PART_MAIN)%></a> <%helplink(skinpartindex)%></li>\r
-            <li><a tabindex="20" href="<%adminurl%>index.php?action=skinedittype&amp;skinid=<%editskin(id)%>&amp;type=item"><%text(_SKIN_PART_ITEM)%></a> <%helplink(skinpartitem)%></li>\r
-            <li><a tabindex="30" href="<%adminurl%>index.php?action=skinedittype&amp;skinid=<%editskin(id)%>&amp;type=archivelist"><%text(_SKIN_PART_ALIST)%></a> <%helplink(skinpartarchivelist)%></li>\r
-            <li><a tabindex="40" href="<%adminurl%>index.php?action=skinedittype&amp;skinid=<%editskin(id)%>&amp;type=archive"><%text(_SKIN_PART_ARCHIVE)%></a> <%helplink(skinpartarchive)%></li>\r
-            <li><a tabindex="50" href="<%adminurl%>index.php?action=skinedittype&amp;skinid=<%editskin(id)%>&amp;type=search"><%text(_SKIN_PART_SEARCH)%></a> <%helplink(skinpartsearch)%></li>\r
-            <li><a tabindex="60" href="<%adminurl%>index.php?action=skinedittype&amp;skinid=<%editskin(id)%>&amp;type=error"><%text(_SKIN_PART_ERROR)%></a> <%helplink(skinparterror)%></li>\r
-            <li><a tabindex="70" href="<%adminurl%>index.php?action=skinedittype&amp;skinid=<%editskin(id)%>&amp;type=member"><%text(_SKIN_PART_MEMBER)%></a> <%helplink(skinpartmember)%></li>\r
-            <li><a tabindex="75" href="<%adminurl%>index.php?action=skinedittype&amp;skinid=<%editskin(id)%>&amp;type=imagepopup"><%text(_SKIN_PART_POPUP)%></a> <%helplink(skinpartimagepopup)%></li>\r
-        </ul>\r
-        <h3><%text(_SKIN_PARTS_SPECIAL)%></h3>\r
-        <form method="get" action="<%adminurl%>index.php">\r
-            <input type="hidden" name="action" value="skinedittype" />\r
-            <input type="hidden" name="skinid" value="<%editskin(id)%>" />\r
-            <input name="type" tabindex="89" size="20" maxlength="20" />\r
-            <input type="submit" tabindex="140" value="<%text(_SKIN_CREATE)%>" onclick="return checkSubmit();" />\r
-        </form>\r
-        <%specialskinlist(defaultadmin)%>\r
-        <h3><%text(_SKIN_GENSETTINGS_TITLE)%></h3>\r
-        <form method="post" action="<%adminurl%>index.php">\r
-            <div>\r
-                <input type="hidden" name="action" value="skineditgeneral" />\r
-                <%ticket%>\r
-                <input type="hidden" name="skinid" value="<%editskin(id)%>" />\r
-                <table>\r
-                    <tr>\r
-                        <td><%text(_SKIN_NAME)%> <%helplink(shortnames)%></td>\r
-                        <td><input name="name" tabindex="90" value="<%editskin(name)%>" maxlength="20" size="20" /></td>\r
-                    </tr><tr>\r
-                        <td><%text(_SKIN_DESC)%></td>\r
-                        <td><input name="desc" tabindex="100" value="<%editskin(desc)%>" maxlength="200" size="50" /></td>\r
-                </tr><tr>\r
-                    <td><%text(_SKIN_TYPE)%></td>\r
-                    <td><input name="type" tabindex="110" value="<%editskin(type)%>" maxlength="40" size="20" /></td>\r
-                </tr><tr>\r
-                    <td><%text(_SKIN_INCLUDE_MODE)%> <%helplink(includemode)%></td>\r
-                    <td><%editskin(mode)%></td>\r
-                </tr><tr>\r
-                    <td><%text(_SKIN_INCLUDE_PREFIX)%> <%helplink(includeprefix)%></td>\r
-                    <td><input name="inc_prefix" tabindex="130" value="<%editskin(prefix)%>" maxlength="40" size="20" /></td>\r
-                </tr><tr>\r
-                    <td><%text(_SKIN_CHANGE)%></td>\r
-                    <td><input type="submit" tabindex="140" value="<%text(_SKIN_CHANGE_BTN)%>" onclick="return checkSubmit();" /></td>\r
-                </tr></table>\r
-            </div>\r
-        </form>]]></part>\r
-    <part name="skinedittype"><![CDATA[<p>(<a href="<%adminurl%>index.php?action=skinoverview"><%text(_SKIN_GOBACK)%></a>)</p>\r
-        <h2><%text(_SKIN_EDITPART_TITLE)%> '<%editskintype(name)%>': <%editskintype(skintype)%></h2>\r
-        <%headmessage%>\r
-        <form method="post" action="<%adminurl%>index.php">\r
-            <div>\r
-                <input type="hidden" name="action" value="skinupdate" />\r
-\r
-                <%ticket%>\r
-                <input type="hidden" name="skinid" value="<%editskintype(id)%>" />\r
-                <input type="hidden" name="type" value="<%editskintype(skintyperaw)%>" />\r
-                <input type="submit" value="<%text(_SKIN_UPDATE_BTN)%>" onclick="return checkSubmit();" />\r
-                <input type="reset" value="<%text(_SKIN_RESET_BTN)%>" />\r
-                (skin type: <%editskintype(skintype)%>)<%skintypehelp%><br />\r
-                <textarea class="skinedit" tabindex="10" rows="20" cols="80" name="content"><%editskintype(content)%></textarea><br />\r
-                <input type="submit" tabindex="20" value="<%text(_SKIN_UPDATE_BTN)%>" onclick="return checkSubmit();" />\r
-                <input type="reset" value="<%text(_SKIN_RESET_BTN)%>" />\r
-                (skin type: <%editskintype(skintype)%>)\r
-                <br /><br />\r
-                <%text(_SKIN_ALLOWEDVARS)%>\r
-                <%allowedskinactions%><br /><br />\r
-                <%text(_SKINEDIT_ALLOWEDBLOGS)%>\r
-                <%skineditallowedlist(blog)%>\r
-                <%text(_SKINEDIT_ALLOWEDTEMPLATESS)%>\r
-                <%skineditallowedlist(template)%><br />\r
-            </div>\r
-        </form>]]></part>\r
-    <part name="skiniedoimport"><![CDATA[<p><a href="<%adminurl%>index.php?action=manage">(<%text(_BACKTOMANAGE)%>)</a></p>\r
-        <h2><%text(_SKINIE_DONE)%></h2>\r
-\r
-        <ul>\r
-            <li><p><strong><%text(_SKINIE_INFO_GENERAL)%></strong> <%importskininfo(info)%></p></li>\r
-            <li><p><strong><%text(_SKINIE_INFO_IMPORTEDSKINS)%></strong> <%importskininfo(snames)%></p></li>\r
-            <li><p><strong><%text(_SKINIE_INFO_IMPORTEDTEMPLS)%></strong> <%importskininfo(tnames)%></p></li>\r
-        </ul>]]></part>\r
-    <part name="skinieimport"><![CDATA[<p><a href="<%adminurl%>index.php?action=skinieoverview">(<%text(_BACK)%>)</a></p>\r
-        <h2><%text(_SKINIE_CONFIRM_TITLE)%></h2>\r
-        <ul>\r
-            <li><p><strong><%text(_SKINIE_INFO_GENERAL)%></strong> <%importskininfo(info)%></p></li>\r
-            <li><p><strong><%text(_SKINIE_INFO_SKINS)%></strong> <%importskininfo(snames)%></p></li>\r
-            <li><p><strong><%text(_SKINIE_INFO_TEMPLATES)%></strong> <%importskininfo(tnames)%></p></li>\r
-            <%if(nameclashes)%><li><p><strong style="color: red;"><%text(_SKINIE_INFO_SKINCLASH)%></strong> <%importskininfo(sclashes)%></p></li>\r
-            <li><p><strong style="color: red;"><%text(_SKINIE_INFO_TEMPLCLASH)%></strong> <%importskininfo(tclashes)%></p></li><%endif%>\r
-        </ul>\r
-\r
-        <form method="post" action="<%adminurl%>index.php"><div>\r
-            <input type="hidden" name="action" value="skiniedoimport" />\r
-            <%ticket%>\r
-            <input type="hidden" name="skinfile" value="<%importskininfo(skinfile)%>" />\r
-            <input type="hidden" name="mode" value="<%importskininfo(mode)%>" />\r
-            <input type="submit" value="<%text(_SKINIE_CONFIRM_IMPORT)%>" />\r
-            <%if(nameclashes)%><br />\r
-            <input type="checkbox" name="overwrite" value="1" id="cb_overwrite" /><label for="cb_overwrite"><%text(_SKINIE_CONFIRM_OVERWRITE)%></label><%endif%>\r
-        </div></form>]]></part>\r
-    <part name="skinieoverview"><![CDATA[<p><a href="<%adminurl%>index.php?action=manage">(<%text(_BACKTOMANAGE)%>)</a></p>\r
-        <h2><%text(_SKINIE_TITLE_IMPORT)%></h2>\r
-        <p>\r
-            <label for="skinie_import_local"><%text(_SKINIE_LOCAL)%></label>\r
-            <%if(skincandidates)%><form method="post" action="<%adminurl%>index.php">\r
-                <div>\r
-                    <input type="hidden" name="action" value="skinieimport" />\r
-                    <%ticket%>\r
-                    <input type="hidden" name="mode" value="file" />\r
-                    <select name="skinfile" id="skinie_import_local">\r
-                        <%selectlocalskinfiles%>\r
-                    </select>\r
-                    <input type="submit" value="<%text(_SKINIE_BTN_IMPORT)%>" />\r
-                </div>\r
-            </form><%else%><%text(_SKINIE_NOCANDIDATES)%><%endif%>\r
-        </p>\r
-        <p><em><%text(_OR)%></em></p>\r
-        <form method="post" action="<%adminurl%>index.php">\r
-            <p>\r
-                <%ticket%>\r
-                <input type="hidden" name="action" value="skinieimport" />\r
-                <input type="hidden" name="mode" value="url" />\r
-                <label for="skinie_import_url"><%text(_SKINIE_FROMURL)%></label>\r
-                <input type="text" name="skinfile" id="skinie_import_url" size="60" value="http://" />\r
-                <input type="submit" value="<%text(_SKINIE_BTN_IMPORT)%>" />\r
-            </p>\r
-        </form>\r
-        <h2><%text(_SKINIE_TITLE_EXPORT)%></h2>\r
-        <form method="post" action="<%adminurl%>index.php">\r
-            <div>\r
-                <input type="hidden" name="action" value="skinieexport" />\r
-                <%ticket%>\r
-                <p><%text(_SKINIE_EXPORT_INTRO)%></p>\r
-                <table>\r
-                    <tr>\r
-                        <th colspan="2"><%text(_SKINIE_EXPORT_SKINS)%></th>\r
-                    </tr><tr>\r
-                        <%skinielist(skin,defaultadmin)%>\r
-                        <th colspan="2"><%text(_SKINIE_EXPORT_TEMPLATES)%></th>\r
-                    </tr><tr>\r
-                        <%skinielist(template,defaultadmin)%>\r
-                        <th colspan="2"><%text(_SKINIE_EXPORT_EXTRA)%></th>\r
-                    </tr><tr>\r
-                        <td colspan="2"><textarea cols="40" rows="5" name="info"></textarea></td>\r
-                    </tr><tr>\r
-                        <th colspan="2"><%text(_SKINIE_TITLE_EXPORT)%></th>\r
-                    </tr><tr>\r
-                        <td colspan="2"><input type="submit" value="<%text(_SKINIE_BTN_EXPORT)%>" /></td>\r
-                    </tr>\r
-                </table>\r
-            </div>\r
-        </form>]]></part>\r
-    <part name="skinoverview"><![CDATA[<p><a href="<%adminurl%>index.php?action=manage">(<%text(_BACKTOMANAGE)%>)</a></p>\r
-        <h2><%text(_SKIN_EDIT_TITLE)%></h2>\r
-        <h3><%text(_SKIN_AVAILABLE_TITLE)%></h3>\r
-        <%skinoverview%>\r
-        <h3><%text(_SKIN_NEW_TITLE)%></h3>\r
-        <form method="post" action="<%adminurl%>index.php">\r
-            <div>\r
-                <input name="action" value="skinnew" type="hidden" />\r
-\r
-                <%ticket%>\r
-                <table>\r
-                    <tr>\r
-                        <td><%text(_SKIN_NAME)%> <%helplink(shortnames)%></td>\r
-                        <td><input name="name" tabindex="10010" maxlength="20" size="20" /></td>\r
-                    </tr><tr>\r
-                        <td><%text(_SKIN_DESC)%></td>\r
-                        <td><input name="desc" tabindex="10020" maxlength="200" size="50" /></td>\r
-                    </tr><tr>\r
-                        <td><%text(_SKIN_CREATE)%></td>\r
-                        <td><input type="submit" tabindex="10030" value="<%text(_SKIN_CREATE_BTN)%>" onclick="return checkSubmit();" /></td>\r
-                    </tr>\r
-                </table>\r
-            </div>\r
-        </form>]]></part>\r
-    <part name="skinremovetype"><![CDATA[<h2><%text(_DELETE_CONFIRM)%></h2>\r
-            <p><%text(_CONFIRMTXT_SKIN_PARTS_SPECIAL)%><b><%editskintype(skintype)%> (<%editskintype(name)%>)</b> (<%editskintype(desc)%>)</p>\r
-            <form method="post" action="<%adminurl%>index.php">\r
-                <div>\r
-                    <input type="hidden" name="action" value="skinremovetypeconfirm" />\r
-                    <%ticket%>\r
-                    <input type="hidden" name="skinid" value="<%editskintype(id)%>" />\r
-                    <input type="hidden" name="type" value="<%editskintype(skintype)%>" />\r
-                    <input type="submit" tabindex="10" value="<%text(_DELETE_CONFIRM_BTN)%>" />\r
-                </div>\r
-            </form>]]></part>\r
-    <part name="systemoverview"><![CDATA[        <h2><%text(_ADMIN_SYSTEMOVERVIEW_HEADING)%></h2>\r
-<%if(superadmin)%>\r
-        <h3><%text(_ADMIN_SYSTEMOVERVIEW_PHPANDMYSQL)%></h3>\r
-        <table summary="Version of PHP MySQL">\r
-            <tr>\r
-                <th colspan="2"><%text(_ADMIN_SYSTEMOVERVIEW_VERSIONS)%></th>\r
-            </tr><tr>\r
-                <td width="50%"><%text(_ADMIN_SYSTEMOVERVIEW_PHPVERSION)%></td>\r
-                <td><%systemsettings(phpversion)%></td>\r
-            </tr><tr>\r
-                <td><%text(_ADMIN_SYSTEMOVERVIEW_MYSQLVERSION)%></td>\r
-                <td><%systemsettings(sqlserverinfo)%> (<%systemsettings(sqlclientinfo)%>)</td>\r
-            </tr>\r
-        </table>\r
-        <table summary="Important PHP settings">\r
-            <tr>\r
-                <th colspan="2"><%text(_ADMIN_SYSTEMOVERVIEW_SETTINGS)%></th>\r
-            </tr><tr>\r
-                <td width="50%">magic_quotes_gpc</td>\r
-                <td><%systemsettings(magicquotesgpc)%></td>\r
-            </tr><tr>\r
-                <td width="50%">magic_quotes_runtime</td>\r
-                <td><%systemsettings(magicquotesruntime)%></td>\r
-            </tr><tr>\r
-                <td width="50%">register_globals</td>\r
-                <td><%systemsettings(registerglobals)%></td>\r
-            </tr>\r
-        </table>\r
-        <table summary="Information about GD library">\r
-            <tr>\r
-                <th colspan="2"><%text(_ADMIN_SYSTEMOVERVIEW_GDLIBRALY)%></th>\r
-            </tr>\r
-            <%systemsettings(gdinfo)%>\r
-        </table>\r
-        <table summary="special modules are loaded">\r
-            <tr>\r
-                <th colspan="2"><%text(_ADMIN_SYSTEMOVERVIEW_MODULES)%></th>\r
-            </tr><tr>\r
-                <td width="50%">mod_rewrite</td>\r
-                <td><%systemsettings(modrewrite)%></td>\r
-            </tr>\r
-        </table>\r
-\r
-        <h3><%text(_ADMIN_SYSTEMOVERVIEW_NUCLEUSSYSTEM)%></h3>\r
-        <table summary="Information about the used Nucleus CMS">\r
-            <tr>\r
-                <th colspan="2">Nucleus CMS</th>\r
-            </tr><tr>\r
-                <td width="50%"><%text(_ADMIN_SYSTEMOVERVIEW_NUCLEUSVERSION)%></td>\r
-                <td><%systemsettings(nucleusversion)%></td>\r
-            </tr><tr>\r
-                <td width="50%"><%text(_ADMIN_SYSTEMOVERVIEW_NUCLEUSPATCHLEVEL)%></td>\r
-                <td><%systemsettings(nucleuspatchlevel)%></td>\r
-            </tr>\r
-        </table>\r
-        <table summary="Important settings of the installation">\r
-            <tr>\r
-                <th colspan="2"><%text(_ADMIN_SYSTEMOVERVIEW_NUCLEUSSETTINGS)%></th>\r
-            </tr><tr>\r
-                <td width="50%">$CONF['Self']</td>\r
-                <td><%systemsettings(confself)%></td>\r
-            </tr><tr>\r
-                <td width="50%">$CONF['ItemURL']</td>\r
-                <td><%systemsettings(confitemurl)%></td>\r
-            </tr><tr>\r
-                <td width="50%">$CONF['alertOnHeadersSent']</td>\r
-                <td><%systemsettings(alertonheaderssent)%></td>\r
-            </tr>\r
-        </table>\r
-\r
-        <h3><%text(_ADMIN_SYSTEMOVERVIEW_VERSIONCHECK)%></h3>\r
-        <!-- Link to the online version test at the Nucleus CMS website -->\r
-        <%text(_ADMIN_SYSTEMOVERVIEW_VERSIONCHECK_TXT)%>\r
-        <a href="<%systemsettings(versioncheckurl)%>" title="<%text(_ADMIN_SYSTEMOVERVIEW_VERSIONCHECK_TITLE)%>">\r
-            Nucleus CMS <%systemsettings(nucleusversion)%> <%systemsettings(nucleuscodename)%>\r
-        </a><br />\r
-<%else%>\r
-        <%text(_ADMIN_SYSTEMOVERVIEW_NOT_ADMIN)%>\r
-]]></part>\r
-    <part name="teamdelete"><![CDATA[<h2><%text(_DELETE_CONFIRM)%></h2>\r
-            <p>\r
-                <%text(_CONFIRMTXT_TEAM1)%>\r
-                <b>\r
-                    <%editmember(displayname)%>\r
-                </b>\r
-                <%text(_CONFIRMTXT_TEAM2)%>\r
-                <b>\r
-                    <%blogsetting(name)%>\r
-                </b>\r
-            </p>\r
-            <form method="post" action="<%adminurl%>index.php">\r
-                <div>\r
-                <input type="hidden" name="action" value="teamdeleteconfirm" />\r
-                <%ticket%>\r
-                <input type="hidden" name="memberid" value="<%editmember(id)%>" />\r
-            <input type="hidden" name="blogid" value="<%requestblogid%>" />\r
-            <input type="submit" tabindex="10" value="<%text(_DELETE_CONFIRM_BTN)%>" />\r
-            </div></form>]]></part>\r
-    <part name="templatedelete"><![CDATA[<h2><%text(_DELETE_CONFIRM)%></h2>\r
-            <p><%text(_CONFIRMTXT_TEMPLATE)%><b><%edittemplateinfo(name)%></b> (<%edittemplateinfo(desc)%>)</p>\r
-            <form method="post" action="<%adminurl%>index.php">\r
-                <div>\r
-                    <input type="hidden" name="action" value="templatedeleteconfirm" />\r
-                    <%ticket%>\r
-                    <input type="hidden" name="templateid" value="<%edittemplateinfo(id)%>" />\r
-                    <input type="submit" tabindex="10" value="<%text(_DELETE_CONFIRM_BTN)%>" />\r
-                </div>\r
-            </form>]]></part>\r
-    <part name="templateedit"><![CDATA[<p><a href="<%adminurl%>index.php?action=templateoverview">(<%text(_TEMPLATE_BACK)%>)</a></p>\r
-\r
-        <h2><%text(_TEMPLATE_EDIT_TITLE)%> '<%edittemplateinfo(name)%>'</h2>\r
-        <%headmessage%>\r
-        <p><%text(_TEMPLATE_EDIT_MSG)%></p>\r
-        <form method="post" action="<%adminurl%>index.php">\r
-            <div>\r
-                <input type="hidden" name="action" value="templateupdate" />\r
-                <%ticket%>\r
-                <input type="hidden" name="templateid" value="<%edittemplateinfo(id)%>" />\r
-                <table>\r
-                    <tr>\r
-                        <th colspan="2"><%text(_TEMPLATE_SETTINGS)%></th>\r
-                    </tr><tr>\r
-                        <td><%text(_TEMPLATE_NAME)%> <%helplink(shortnames)%></td>\r
-                        <td><input name="tname" tabindex="4" size="20" maxlength="20" value="<%edittemplateinfo(name)%>" /></td>\r
-                    </tr><tr>\r
-                        <td><%text(_TEMPLATE_DESC)%></td>\r
-                        <td><input name="tdesc" tabindex="5" size="50" maxlength="200" value="<%edittemplateinfo(desc)%>" /></td>\r
-                    </tr><tr>\r
-                        <th colspan="2"><%text(_TEMPLATE_UPDATE)%></th>\r
-                    </tr><tr>\r
-                        <td><%text(_TEMPLATE_UPDATE)%></td>\r
-                        <td>\r
-                            <input type="submit" tabindex="6" value="<%text(_TEMPLATE_UPDATE_BTN)%>" onclick="return checkSubmit();" />\r
-                            <input type="reset" tabindex="7" value="<%text(_TEMPLATE_RESET_BTN)%>" />\r
-                        </td>\r
-                    </tr><tr>\r
-                        <th colspan="2"><%text(_TEMPLATE_ITEMS)%> <%helplink(templateitems)%></th>\r
-                    <%edittemplateinfo(row,_TEMPLATE_ITEMHEADER,ITEM_HEADER,,8)%>\r
-                    <%edittemplateinfo(row,_TEMPLATE_ITEMBODY,ITEM,,9,1)%>\r
-                    <%edittemplateinfo(row,_TEMPLATE_ITEMFOOTER,ITEM_FOOTER,,10)%>\r
-                    <%edittemplateinfo(row,_TEMPLATE_MORELINK,MORELINK,morelink, 20)%>\r
-                    <%edittemplateinfo(row,_TEMPLATE_EDITLINK, EDITLINK, editlink, 25)%>\r
-                    <%edittemplateinfo(row,_TEMPLATE_NEW, NEW, new, 30)%>\r
-                    </tr><tr>\r
-                        <th colspan="2"><%text(_TEMPLATE_COMMENTS_ANY)%> <%helplink(templatecomments)%></th>\r
-                    <%edittemplateinfo(row,_TEMPLATE_CHEADER, COMMENTS_HEADER, commentheaders, 40)%>\r
-                    <%edittemplateinfo(row,_TEMPLATE_CBODY, COMMENTS_BODY, commentbody, 50, 1)%>\r
-                    <%edittemplateinfo(row,_TEMPLATE_CFOOTER, COMMENTS_FOOTER, commentheaders, 60)%>\r
-                    <%edittemplateinfo(row,_TEMPLATE_CONE, COMMENTS_ONE, commentwords, 70)%>\r
-                    <%edittemplateinfo(row,_TEMPLATE_CMANY, COMMENTS_MANY, commentwords, 80)%>\r
-                    <%edittemplateinfo(row,_TEMPLATE_CMORE, COMMENTS_CONTINUED, commentcontinued, 90)%>\r
-                    <%edittemplateinfo(row,_TEMPLATE_CMEXTRA, COMMENTS_AUTH, memberextra, 100)%>\r
-                    </tr><tr>\r
-                        <th colspan="2"><%text(_TEMPLATE_COMMENTS_NONE)%> <%helplink(templatecomments)%></th>\r
-                    <%edittemplateinfo(row,_TEMPLATE_CNONE, COMMENTS_NONE, , 110)%>\r
-                    </tr><tr>\r
-                        <th colspan="2"><%text(_TEMPLATE_COMMENTS_TOOMUCH)%> <%helplink(templatecomments)%></th>\r
-                    <%edittemplateinfo(row,_TEMPLATE_CTOOMUCH, COMMENTS_TOOMUCH, , 120)%>\r
-                    </tr><tr>\r
-                        <th colspan="2"><%text(_TEMPLATE_ARCHIVELIST)%> <%helplink(templatearchivelists)%></th>\r
-                    <%edittemplateinfo(row,_TEMPLATE_AHEADER, ARCHIVELIST_HEADER, , 130)%>\r
-                    <%edittemplateinfo(row,_TEMPLATE_AITEM, ARCHIVELIST_LISTITEM, , 140)%>\r
-                    <%edittemplateinfo(row,_TEMPLATE_AFOOTER, ARCHIVELIST_FOOTER, , 150)%>\r
-                    </tr><tr>\r
-                        <th colspan="2"><%text(_TEMPLATE_BLOGLIST)%> <%helplink(templatebloglists)%></th>\r
-                    <%edittemplateinfo(row,_TEMPLATE_BLOGHEADER, BLOGLIST_HEADER, , 160)%>\r
-                    <%edittemplateinfo(row,_TEMPLATE_BLOGITEM, BLOGLIST_LISTITEM, , 170)%>\r
-                    <%edittemplateinfo(row,_TEMPLATE_BLOGFOOTER, BLOGLIST_FOOTER, , 180)%>\r
-                    </tr><tr>\r
-                        <th colspan="2"><%text(_TEMPLATE_CATEGORYLIST)%> <%helplink(templatecategorylists)%></th>\r
-                    <%edittemplateinfo(row,_TEMPLATE_CATHEADER, CATLIST_HEADER, , 190)%>\r
-                    <%edittemplateinfo(row,_TEMPLATE_CATITEM, CATLIST_LISTITEM, , 200)%>\r
-                    <%edittemplateinfo(row,_TEMPLATE_CATFOOTER, CATLIST_FOOTER, , 210)%>\r
-                    </tr><tr>\r
-                        <th colspan="2"><%text(_TEMPLATE_DATETIME)%></th>\r
-                    <%edittemplateinfo(row,_TEMPLATE_DHEADER, DATE_HEADER, dateheads, 220)%>\r
-                    <%edittemplateinfo(row,_TEMPLATE_DFOOTER, DATE_FOOTER, dateheads, 230)%>\r
-                    <%edittemplateinfo(row,_TEMPLATE_DFORMAT, FORMAT_DATE, datetime, 240)%>\r
-                    <%edittemplateinfo(row,_TEMPLATE_TFORMAT, FORMAT_TIME, datetime, 250)%>\r
-                    <%edittemplateinfo(row,_TEMPLATE_LOCALE, LOCALE, locale, 260)%>\r
-                    </tr><tr>\r
-                        <th colspan="2"><%text(_TEMPLATE_IMAGE)%> <%helplink(templatepopups)%></th>\r
-                    <%edittemplateinfo(row,_TEMPLATE_PCODE, POPUP_CODE, , 270)%>\r
-                    <%edittemplateinfo(row,_TEMPLATE_ICODE, IMAGE_CODE, , 280)%>\r
-                    <%edittemplateinfo(row,_TEMPLATE_MCODE, MEDIA_CODE, , 290)%>\r
-                    </tr><tr>\r
-                        <th colspan="2"><%text(_TEMPLATE_SEARCH)%></th>\r
-                    <%edittemplateinfo(row,_TEMPLATE_SHIGHLIGHT, SEARCH_HIGHLIGHT, highlight,300)%>\r
-                    <%edittemplateinfo(row,_TEMPLATE_SNOTFOUND, SEARCH_NOTHINGFOUND, nothingfound,310)%>\r
-                    </tr><tr>\r
-                        <th colspan="2"><%text(_TEMPLATE_PLUGIN_FIELDS)%></th>\r
-                    <%edittemplateinfo(extratemplate,defaultadmin)%>\r
-                    </tr><tr>\r
-                        <th colspan="2"><%text(_TEMPLATE_UPDATE)%></th>\r
-                    </tr><tr>\r
-                        <td><%text(_TEMPLATE_UPDATE)%></td>\r
-                        <td>\r
-                            <input type="submit" tabindex="800" value="<%text(_TEMPLATE_UPDATE_BTN)%>" onclick="return checkSubmit();" />\r
-                            <input type="reset" tabindex="810" value="<%text(_TEMPLATE_RESET_BTN)%>" />\r
-                        </td>\r
-                    </tr>\r
-                </table>\r
-            </div>\r
-        </form>]]></part>\r
-    <part name="templateoverview"><![CDATA[<p><a href="<%adminurl%>index.php?action=manage">(<%text(_BACKTOMANAGE)%>)</a></p>\r
-        <h2><%text(_TEMPLATE_TITLE)%></h2>\r
-        <h3><%text(_TEMPLATE_AVAILABLE_TITLE)%></h3>\r
-        <%templateoverview%>\r
-        <h3><%text(_TEMPLATE_NEW_TITLE)%></h3>\r
-        <form method="post" action="<%adminurl%>index.php">\r
-            <div>\r
-                <input name="action" value="templatenew" type="hidden" />\r
-                <%ticket%>\r
-                <table>\r
-                    <tr>\r
-                        <td><%text(_TEMPLATE_NAME)%> <%helplink(shortnames)%></td>\r
-                        <td><input name="name" tabindex="10010" maxlength="20" size="20" /></td>\r
-                    </tr><tr>\r
-                        <td><%text(_TEMPLATE_DESC)%></td>\r
-                        <td><input name="desc" tabindex="10020" maxlength="200" size="50" /></td>\r
-                    </tr><tr>\r
-                        <td><%text(_TEMPLATE_CREATE)%></td>\r
-                        <td><input type="submit" tabindex="10030" value="<%text(_TEMPLATE_CREATE_BTN)%>" onclick="return checkSubmit();" /></td>\r
-                    </tr>\r
-                </table>\r
-            </div>\r
-        </form>]]></part>\r
-    <part name="usermanagement"><![CDATA[<p><a href="<%adminurl%>index.php?action=manage">(<%text(_BACKTOMANAGE)%>)</a></p>\r
-            <h2><%text(_MEMBERS_TITLE)%></h2>\r
-            <h3><%text(_MEMBERS_CURRENT)%></h3>\r
-            <%editmemberlist(defaultadmin)%>\r
-            <h3><%text(_MEMBERS_NEW)%></h3>\r
-            <form method="post" action="<%adminurl%>index.php" name="memberedit">\r
-                <div>\r
-                    <input type="hidden" name="action" value="memberadd" />\r
-                    <%ticket%>\r
-                    <table><tr>\r
-                        <th colspan="2"><%text(_MEMBERS_NEW)%></th>\r
-                    </tr><tr>\r
-                        <td>\r
-                            <%text(_MEMBERS_DISPLAY)%> <%helplink(shortnames)%>\r
-                            <br /><small><%text(_MEMBERS_DISPLAY_INFO)%></small>\r
-                        </td>\r
-                        <td><input tabindex="10010" name="name" size="32" maxlength="32" /></td>\r
-                    </tr><tr>\r
-                        <td><%text(_MEMBERS_REALNAME)%></td>\r
-                        <td><input name="realname" tabindex="10020" size="40" maxlength="60" /></td>\r
-                    </tr><tr>\r
-                       <td><%text(_MEMBERS_PWD)%></td>\r
-                        <td><input name="password" tabindex="10030" size="16" maxlength="40" type="password" /></td>\r
-                    </tr><tr>\r
-                        <td><%text(_MEMBERS_REPPWD)%></td>\r
-                        <td><input name="repeatpassword" tabindex="10035" size="16" maxlength="40" type="password" /></td>\r
-                    </tr><tr>\r
-                        <td><%text(_MEMBERS_EMAIL)%></td>\r
-                        <td><input name="email" tabindex="10040" size="40" maxlength="60" /></td>\r
-                    </tr><tr>\r
-                        <td><%text(_MEMBERS_URL)%></td>\r
-                        <td><input name="url" tabindex="10050" size="40" maxlength="100" /></td>\r
-                    </tr><tr>\r
-                        <td><%text(_MEMBERS_SUPERADMIN)%> <%helplink(superadmin)%></td>\r
-                        <td><%inputyesno(admin,1,10060)%> </td>\r
-                    </tr><tr>\r
-                        <td><%text(_MEMBERS_CANLOGIN)%> <%helplink(canlogin)%></td>\r
-                        <td><%inputyesno(canlogin,1,10070)%></td>\r
-                    </tr><tr>\r
-                        <td><%text(_MEMBERS_NOTES)%></td>\r
-                        <td><input name="notes" maxlength="100" size="40" tabindex="10080" /></td>\r
-                    </tr><tr>\r
-                        <td><%text(_MEMBERS_NEW)%></td>\r
-                        <td><input type="submit" value="<%text(_MEMBERS_NEW_BTN)%>" tabindex="10090" onclick="return checkSubmit();" /></td>\r
-                    </tr></table>\r
-                </div>\r
-            </form>]]></part>\r
-  </skin>\r
-  <template name="admin/default">\r
-    <description><![CDATA[デフォルト管理画面用テンプレート]]></description>\r
-    <part name="PLUGIN_QUICKMENU_TITLE"><![CDATA[<h2><%text(_QMENU_PLUGINS)%></h2>\r
-]]></part>\r
-    <part name="PLUGIN_QUICKMENU_HEAD"><![CDATA[<ul>\r
-]]></part>\r
-    <part name="SHOWLIST_LISTPLUG_TABLE_ACTNLIST_HEAD"><![CDATA[<th><%coltime%></th><th><%colmesg%></th>\r
-]]></part>\r
-    <part name="SHOWLIST_LISTPLUG_TABLE_ACTNLIST_BODY"><![CDATA[<td><%timestamp%></td><td><%message%></td>\r
-]]></part>\r
-    <part name="SHOWLIST_LISTPLUG_TABLE_IBANLIST_HEAD"><![CDATA[<th><%iprange%></th><th><%reason%></th><th><%colact%></th>]]></part>\r
-    <part name="SHOWLIST_LISTPLUG_TABLE_IBANLIST_BODY"><![CDATA[<td><%iprange%></td>\r
-<td><%reason%></td>\r
-<td><a href="<%adminurl%>index.php?action=banlistdelete&amp;blogid=<%blogid%>&amp;iprange=<%iprange%>"><%delbtn%></a></td>\r
-]]></part>\r
-    <part name="SHOWLIST_LISTPLUG_TABLE_SKINLIST_HEAD"><![CDATA[<th><%colname%></th><th><%coldesc%></th><th colspan="3"><%colact%></th>\r
-]]></part>\r
-    <part name="SHOWLIST_LISTPLUG_TABLE_SKINLIST_BODY"><![CDATA[<td><%skinname%><br /><br />\r
-<%skintypelabel%> <%skintype%><br />\r
-<%incmodelabel%> <%incmode%><br />\r
-<%incpreflabel%> <%incpref%><br />\r
-<%skinthumb%>\r
-<%readme%></td>\r
-<td class="availableSkinTypes"><%skindesc%><%skinparts%></td>\r
-<td style="white-space:nowrap">\r
-<a href="<%adminurl%>index.php?action=skinedit&amp;skinid=<%skinid%>" tabindex="<%tabindex%>"><%editbtn%>\r
-</a></td>\r
-<td style="white-space:nowrap">\r
-<a href="<%cloneurl%>" tabindex="<%tabindex%>"><%clonebtn%>\r
-</a></td>\r
-<td style="white-space:nowrap">\r
-<a href="<%adminurl%>index.php?action=skindelete&amp;skinid=<%skinid%>" tabindex="<%tabindex%>"><%delbtn%>\r
-</a></td>\r
-]]></part>\r
-    <part name="SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM"><![CDATA[<td>\r
-<a href="<%adminurl%>index.php?action=blogsettings&amp;blogid=<%blogid%>" title="<%ttsettingtext%>"><%settingtext%></a>\r
-</td>\r
-<td>\r
-<a href="<%adminurl%>index.php?action=banlist&amp;blogid=<%blogid%>" title="<%ttbanstext%>"><%banstext%></a>\r
-</td>\r
-]]></part>\r
-    <part name="SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM"><![CDATA[<td>\r
-<a href="<%adminurl%>index.php?action=deleteblog&amp;blogid=<%blogid%>" title="<%ttdeletetext%>"><%deletetext%></a>\r
-</td>]]></part>\r
-    <part name="SHOWLIST_LISTPLUG_TABLE_BLOGSNAM_HEAD"><![CDATA[<th><%colshortname%></th><th><%colblogname%></th>\r
-]]></part>\r
-    <part name="SHOWLIST_LISTPLUG_TABLE_BLOGSNAM_BODY"><![CDATA[<td><%bshortname%></td><td><%blogname%></td>\r
-]]></part>\r
-    <part name="SHOWLIST_LISTPLUG_TABLE_SHORTNAM_HEAD"><![CDATA[<th><%colname%></th><th><%coldesc%></th>\r
-]]></part>\r
-    <part name="SHOWLIST_LISTPLUG_TABLE_SHORTNAM_BODY"><![CDATA[<td><%name%></td><td><%desc%></td>\r
-]]></part>\r
-    <part name="SHOWLIST_LISTPLUG_TABLE_CATELIST_HEAD"><![CDATA[<th><%colname%></th><th><%coldesc%></th><th colspan="2"><%colact%></th>\r
-]]></part>\r
-    <part name="SHOWLIST_LISTPLUG_TABLE_CATELIST_BODY"><![CDATA[<td><input type="checkbox" id="batch<%batchid%>" name="batch[<%batchid%>]" value="<%catid%>" />\r
-<label for="batch<%batchid%>"><%catname%></label>\r
-</td>\r
-<td><%catdesc%></td>\r
-<td><a href="<%adminurl%>index.php?action=categorydelete&amp;blogid=<%blogid%>&amp;catid=<%catid%>" tabindex="<%tabindex%>">\r
-<%delbtn%></a></td>\r
-<td><a href="<%adminurl%>index.php?action=categoryedit&amp;blogid=<%blogid%>&amp;catid=<%catid%>" tabindex="<%tabindex%>">\r
-<%editbtn%></a></td>\r
-]]></part>\r
-    <part name="SHOWLIST_LISTPLUG_TABLE_TPLTLIST_HEAD"><![CDATA[<th><%colname%></th><th><%coldesc%></th><th colspan="3"><%colact%></th>\r
-]]></part>\r
-    <part name="SHOWLIST_LISTPLUG_TABLE_TPLTLIST_BODY"><![CDATA[<td><%templatename%></td>\r
-<td><%templatedesc%></td>\r
-<td style="white-space:nowrap">\r
-<a href="<%adminurl%>index.php?action=templateedit&amp;templateid=<%templateid%>" tabindex="<%tabindex%>"><%editbtn%>\r
-</a></td>\r
-<td style="white-space:nowrap">\r
-<a href="<%cloneurl%>" tabindex="<%tabindex%>"><%clonebtn%>\r
-</a></td>\r
-<td style="white-space:nowrap">\r
-<a href="<%adminurl%>index.php?action=templatedelete&amp;templateid=<%templateid%>" tabindex="<%tabindex%>"><%delbtn%>\r
-</a></td>\r
-]]></part>\r
-    <part name="SHOWLIST_LISTPLUG_TABLE_DRFTLIST_HEAD"><![CDATA[<th><%colblog%></th><th><%coldesc%></th><th colspan="2"><%colact%></th>\r
-]]></part>\r
-    <part name="SHOWLIST_LISTPLUG_TABLE_DRFTLIST_BODY"><![CDATA[<td><%bshortname%></td>\r
-<td><%ititle%></td>\r
-<td><a href="<%adminurl%>index.php?action=itemedit&amp;itemid=<%itemid%>"><%editbtn%></a></td>\r
-<td><a href="<%adminurl%>index.php?action=itemdelete&amp;itemid=<%itemid%>"><%delbtn%></a></td>\r
-]]></part>\r
-    <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>\r
-]]></part>\r
-    <part name="SHOWLIST_LISTPLUG_TABLE_BLOGLIST_HEAD"><![CDATA[<th><%blognames%></th><th colspan="8"><%actionshead%></th>\r
-]]></part>\r
-    <part name="SHOWLIST_LISTPLUG_TABLE_BLOGLIST_BODY"><![CDATA[<td title="blogid:<%blogid%> shortname:<%shortname%>">\r
-<a href="<%blogurl%>"><img src="images/globe.gif" width="13" height="13" alt="<%iconalt%>" /></a> <%blogname%>\r
-</td>\r
-<td>\r
-<a href="<%adminurl%>index.php?action=createitem&amp;blogid=<%blogid%>" title="<%ttaddtext%>"><%addtext%></a>\r
-</td>\r
-<td>\r
-<a href="<%adminurl%>index.php?action=itemlist&amp;blogid=<%blogid%>" title="<%ttedittext%>"><%edittext%></a>\r
-</td>\r
-<td>\r
-<a href="<%adminurl%>index.php?action=blogcommentlist&amp;blogid=<%blogid%>" title="<%ttcommenttext%>"><%commenttext%></a>\r
-</td>\r
-<td>\r
-<a href="<%adminurl%>index.php?action=bookmarklet&amp;blogid=<%blogid%>" title="<%ttbmlettext%>"><%bmlettext%></a>\r
-</td>]]></part>\r
-    <part name="SHOWLIST_LISTPLUG_TABLE_CMNTLIST_HEAD"><![CDATA[<th><%colinfo%></th><th><%colcontent%></th><th colspan="3"><%colaction%></th>\r
-]]></part>\r
-    <part name="SHOWLIST_LISTPLUG_TABLE_CMNTLIST_BODY"><![CDATA[<td><%commentdate%><br /><%commentator%><br /><%commentsite%><br /><%commentmail%><br /></td>\r
-<td><input type="checkbox" id="batch<%batchid%>" name="batch[<%batchid%>]" value="<%commentid%>" />\r
-<label for="batch<%batchid%>"><%commentbody%></label></td>\r
-<td style="white-space:nowrap">\r
-<a href="<%adminurl%>index.php?action=commentedit&amp;commentid=<%commentid%>"><%editbtn%></a></td>\r
-<td style="white-space:nowrap">\r
-<a href="<%adminurl%>index.php?action=commentdelete&amp;commentid=<%commentid%>"><%delbtn%></a></td>\r
-<%addbanlist%>]]></part>\r
-    <part name="SHOWLIST_LISTPLUG_TABLE_PLGOPT_OPWORD"><![CDATA[<input type="password" size="40" maxlength="128" name="<%varname%>" value="<%value%>" />\r
-]]></part>\r
-    <part name="SHOWLIST_LISTPLUG_TABLE_PLGOPT_OSELEP"><![CDATA[<select name="<%varname%>">\r
-]]></part>\r
-    <part name="SHOWLIST_LISTPLUG_TABLE_PLGOPT_OSELEO"><![CDATA[<option value="<%value%>"<%selected%>><%optname%></option>\r
-]]></part>\r
-    <part name="SHOWLIST_LISTPLUG_TABLE_PLGOPT_OSELEC"><![CDATA[</select>\r
-]]></part>\r
-    <part name="SHOWLIST_LISTPLUG_TABLE_PLGOPT_OTAREA"><![CDATA[<textarea class="pluginoption" cols="30" rows="5" name="<%varname%>"<%readonly%>><%value%></textarea>\r
-]]></part>\r
-    <part name="SHOWLIST_LISTPLUG_TABLE_PLGOPT_OITEXT"><![CDATA[<input type="text" size="40" maxlength="128" name="<%varname%>" value="<%value%>"<%datatype%><%readonly%> />\r
-]]></part>\r
-    <part name="SHOWLIST_LISTPLUG_TABLE_PLUGOPTN_FOOT"><![CDATA[<%extra%></td>\r
-]]></part>\r
-    <part name="SHOWLIST_LISTPLUG_TABLE_POPTLIST_FOOT"><![CDATA[<tr>\r
-<th colspan="2"><%savetext%></th>\r
-</tr><tr>\n<td><%savetext%></td>\r
-<td><input type="submit" value="<%savetext%>" /></td>\r
-</tr>\r
-]]></part>\r
-    <part name="SHOWLIST_LISTPLUG_TABLE_ITEMLIST_HEAD"><![CDATA[<th><%colinfo%></th><th><%colcontent%></th><th style="white-space:nowrap"><%colaction%></th>\r
-]]></part>\r
-    <part name="SHOWLIST_LISTPLUG_TABLE_ITEMLIST_BODY"><![CDATA[<td<%cssclass%>>\r
-<%bshortlabel%> <%bshortnameval%><br />\r
-<%categorylabel%> <%categorynameval%><br />\r
-<%authorlabel%> <%authornameval%><br />\r
-<%itemdatelabel%> <%itemdateval%><br />\r
-<%itemtimelabel%> <%itemtimeval%>\r
-</td>\r
-<td<%cssclass%>>\r
-<input type="checkbox" id="batch<%batchid%>" name="batch<%batchid%>" value="<%itemid%>" />\r
-<label for="batch<%batchid%>"><b><%itemtitle%></b></label><br />\r
-<%itembody%></td>\r
-<td style="white-space:nowrap"<%cssclass%>>\r
-<a href="<%adminurl%>index.php?action=itemedit&amp;itemid=<%itemid%>"><%editbtn%></a><br />\r
-<%camount%>\r
-<a href="<%adminurl%>index.php?action=itemmove&amp;itemid=<%itemid%>"><%movebtn%></a><br />\r
-<a href="<%adminurl%>index.php?action=itemdelete&amp;itemid=<%itemid%>"><%delbtn%></a>\r
-</td>\r
-]]></part>\r
-    <part name="SHOWLIST_LISTPLUG_TABLE_POPTLIST_HEAD"><![CDATA[<th><%colinfo%></th><th><%colvalue%></th>\r
-]]></part>\r
-    <part name="SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND"><![CDATA[<br /><br /><%deplistlbl%><br /><%dependlist%>\r
-]]></part>\r
-    <part name="SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ"><![CDATA[<br /><br /><%deprlstlbl%><br /><%depreqlist%>\r
-]]></part>\r
-    <part name="SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE"><![CDATA[<td colspan="2"><%noplugalert%></td>\r
-]]></part>\r
-    <part name="SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN"><![CDATA[<td>\r
-<a href="<%actionupurl%>" tabindex="<%tabindex%>"><%actionuptxt%></a><br />\r
-<a href="<%actiondownurl%>" tabindex="<%tabindex%>"><%actiondowntxt%></a><br />\r
-<a href="<%actuninsturl%>" tabindex="<%tabindex%>"><%actuninsttxt%></a><br />\r
-<%plugadminurl%>\r
-<%plughelpurl%>\r
-<%plugoptsetting%>\r
-</td>\r
-]]></part>\r
-    <part name="SHOWLIST_LISTPLUG_TABLE_POPTLIST_BODY"><![CDATA[<td><%description%></td>\r
-<td>]]></part>\r
-    <part name="SHOWLIST_LISTPLUG_TABLE_PLGOPT_OYESNO"><![CDATA[<input type="radio" name="<%name%>" value="<%yesval%>"<%yescheckedval%> id="<%yesid%>" />\r
-<label for="<%yesid%>"><%yesvaltext%></label>\r
-<input type="radio" name="<%name%>" value="<%noval%>"<%nocheckedval%> id="<%noid%>"<%disabled%> />\r
-<label for="<%noid%>"><%novaltext%></label>\r
-]]></part>\r
-    <part name="SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL"><![CDATA[<a href="<%actoptionurl%>" tabindex="<%tabindex%>"><%actoptiontxt%></a><br />\r
-]]></part>\r
-    <part name="SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN"><![CDATA[<a href="<%actadminurl%>" tabindex="<%tabindex%>"><%actadmintxt%></a><br />\r
-]]></part>\r
-    <part name="SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP"><![CDATA[<a href="<%acthelpurl%>" tabindex="<%tabindex%>"><%acthelptxt%></a><br />\r
-]]></part>\r
-    <part name="SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL"><![CDATA[<a href="<%plugurl%>" tabindex="<%tabindex%>"><%plugsite%></a>\r
-]]></part>\r
-    <part name="SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HEAD"><![CDATA[<th><%colinfo%></th>\r
-<th><%coldesc%></th>\r
-<th style=\"white-space:nowrap\"><%colactions%></th>\r
-]]></part>\r
-    <part name="SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST"><![CDATA[<br /><br /><%evntlstlbl%><br /><%eventlist%>\r
-]]></part>\r
-    <part name="SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE"><![CDATA[<br /><br /><strong><%updatealert%></strong>\r
-]]></part>\r
-    <part name="SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY"><![CDATA[<td>\r
-<strong><%plugname%></strong><br />\r
-<%autherlabel%> <%plugauther%><br />\r
-<%versionlabel%> <%plugversion%><br />\r
-<%pluggeturl%><br />\r
-</td>\r
-<td>\r
-<%desclabel%><br /><%plugdesc%>\r
-<%eventlist%>\r
-<%needupdate%>\r
-<%dependlist%>\r
-<%depreqlist%>\r
-</td>\r
-]]></part>\r
-    <part name="SHOWLIST_LISTPLUG_TABLE_TEAMLIST_HEAD"><![CDATA[<th><%colmembername%></th>\r
-<th><%colmemberrname%></th>\r
-<th><%colteamadmin%><%helplink(teamadmin)%></th>\r
-<th colspan="2"><%colactions%></th>\r
-]]></part>\r
-    <part name="SHOWLIST_LISTPLUG_TABLE_TEAMLIST_BODY"><![CDATA[<td>\r
-<input type="checkbox" id="batch<%id%>" name="batch[<%id%>]" value="<%memberid%>" />\r
-<label for=""batch<%id%>">\r
-<a href="mailto:<%mailaddress%>" tabindex="<%tabindex%>"><%name%></a>\r
-</label>\r
-</td>\r
-<td><%realname%></td>\r
-<td><%admin%></td>\r
-<td><a href="<%adminurl%>index.php?action=teamdelete&amp;memberid=<%memberid%>&amp;blogid=<%blogid%>" tabindex="<%tabindex%>"><%deletebtn%></a></td>\r
-<td><a href="<%chadminurl%>" tabindex="<%tabindex%>"><%chadminbtn%></a></td>\r
-]]></part>\r
-    <part name="SHOWLIST_LISTPLUG_TABLE_MEMBLIST_BODY"><![CDATA[<td>\r
-<input type="checkbox" id="batch<%id%>" name="batch[<%id%>]" value="<%memberid%>" />\r
-<label for=""batch<%id%>">\r
-<a href="mailto:<%mailaddress%>" tabindex="<%tabindex%>"><%name%></a>\r
-</label>\r
-</td>\r
-<td><%realname%></td>\r
-<td><a href="<%url%>" tabindex="<%tabindex%>"><%url%></a></td>\r
-<td><%admin%></td>\r
-<td><%login%></td>\r
-<td><a href="<%adminurl%>index.php?action=memberedit&amp;memberid=<%memberid%>" tabindex="<%tabindex%>"><%editbtn%></a></td>\r
-<td><a href="<%adminurl%>index.php?action=memberdelete&amp;memberid=<%memberid%>" tabindex="<%tabindex%>"><%deletebtn%></a></td>\r
-]]></part>\r
-    <part name="SHOWLIST_LISTPLUG_TABLE_FOOT"><![CDATA[<%typefoot%>\r
-</tbody></table>\r
-]]></part>\r
-    <part name="SHOWLIST_LISTPLUG_TABLE_MEMBLIST_HEAD"><![CDATA[<th><%colmembername%></th>\r
-<th><%colmemberrname%></th>\r
-<th><%colmemberurl%></th>\r
-<th><%colmemberadmin%><%helplink(superadmin)%></th>\r
-<th><%colmemberlogin%><%helplink(canlogin)%></th>\r
-<th colspan="2"><%colactions%></th>\r
-]]></part>\r
-    <part name="SHOWLIST_LISTPLUG_SELECT_FOOT"><![CDATA[</select>\r
-]]></part>\r
-    <part name="SHOWLIST_LISTPLUG_TABLE_HEAD"><![CDATA[<table>\r
-<thead><tr><%typehead%></tr></thead><tbody>\r
-]]></part>\r
-    <part name="SHOWLIST_LISTPLUG_TABLE_BODY"><![CDATA[<tr onmouseover="focusRow(this);" onmouseout="blurRow(this);">\r
-<%typebody%>\r
-</tr>\r
-]]></part>\r
-    <part name="SKINIE_EXPORT_LIST"><![CDATA[<td><input type="checkbox" name="<%typeid%>"  id="<%expid%>" /><label for="<%expid%>"><%expname%></label></td>\r
-<td><%expdesc%></td>\r
-</tr><tr>\r
-]]></part>\r
-    <part name="SHOWLIST_LISTPLUG_SELECT_HEAD"><![CDATA[<select<%name%><%tabindex%><%javascript%>>\n<%extraoption%>\r
-]]></part>\r
-    <part name="SHOWLIST_LISTPLUG_SELECT_BODY"><![CDATA[<option value="<%value%>"<%selected%><%title%>><%option%></option>\r
-]]></part>\r
-    <part name="ADMIN_SPECIALSKINLIST_HEAD"><![CDATA[<ul>\r
-]]></part>\r
-    <part name="ADMIN_SPECIALSKINLIST_BODY"><![CDATA[<li><a tabindex="<%tabindex%>" href="<%adminurl%>index.php?action=adminskinedittype&skinid=<%skinid%>&type=<%skintype%>"><%skintype%></a> (<a tabindex="<%tabindex%>" href="<%adminurl%>index.php?action=adminskinremovetype&skinid=<%skinid%>&type=<%skintype%>">remove</a>)</li>\r
-]]></part>\r
-    <part name="ADMIN_SPECIALSKINLIST_FOOT"><![CDATA[</ul>]]></part>\r
-    <part name="INPUTYESNO_TEMPLATE_NORMAL"><![CDATA[<input type="radio" name="<%name%>" value="<%yesval%>"<%yescheckedval%> id="<%yesid%>" />\r
-<label for="<%yesid%>"><%yesvaltext%></label>\r
-<input type="radio" name="<%name%>" value="<%noval%>"<%nocheckedval%> id="<%noid%>"<%disabled%> />\r
-<label for="<%noid%>"><%novaltext%></label>]]></part>\r
-    <part name="SYSTEMINFO_GDSETTINGS"><![CDATA[<tr>\r
-        <td width="50%"><%key%></td><td><%value%></td>\r
-</tr>]]></part>\r
-    <part name="BANLIST_DELETED_LIST"><![CDATA[<li><%blogname%></li>\r
-]]></part>\r
-    <part name="INSERT_PLUGOPTION_TITLE"><![CDATA[<tr><th colspan="2"><%sprinttext(_PLUGIN_OPTIONS_TITLE, <|%insertpluginfo(name)%|>)%></th></tr>\r
-]]></part>\r
-    <part name="INSERT_PLUGOPTION_BODY"><![CDATA[<tr><%listplugplugoptionrow(defaultadmin)%></tr>\r
-]]></part>\r
-    <part name="INPUTYESNO_TEMPLATE_ADMIN"><![CDATA[<input onclick="selectCanLogin(true);" type="radio" name="<%name%>" value="<%yesval%>"<%yescheckedval%> id="<%yesid%>" />\r
-<label for="<%yesid%>"><%yesvaltext%></label>\r
-<input onclick="selectCanLogin(false);" type="radio" name="<%name%>" value="<%noval%>"<%nocheckedval%> id="<%noid%>"<%disabled%> />\r
-<label for="<%noid%>"><%novaltext%></label>]]></part>\r
-    <part name="SPECIALSKINLIST_FOOT"><![CDATA[</ul>]]></part>\r
-    <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>\r
-]]></part>\r
-    <part name="SPECIALSKINLIST_HEAD"><![CDATA[<ul>\r
-]]></part>\r
-    <part name="TEMPLATE_EDIT_ROW_TAIL"><![CDATA[</textarea>\r
-    </td>\r
-]]></part>\r
-    <part name="TEMPLATE_EDIT_EXPLUGNAME"><![CDATA[</tr><tr>\r
-    <th colspan="2"><%explugtplname%></th>\r
-]]></part>\r
-    <part name="TEMPLATE_EDIT_ROW_HEAD"><![CDATA[</tr><tr>\r
-    <td>\r
-        <%description%><%help%>\r
-    </td>\r
-    <td id="td<%count%>">\r
-        <textarea class="templateedit" name="<%name%>" tabindex="<%tabindex%>" cols="50" rows="<%rows%>" id="textarea<%count%>">]]></part>\r
-    <part name="ADMIN_BATCHLIST"><![CDATA[<li><%text(_BATCH_EXECUTING)%<b><%adminbatchaction%></b><%batchlisttype%> <b><%batchid%></b>...<b><%batchlistmsg%></b></li>\r
-]]></part>\r
-    <part name="ADMIN_BLOGLINK"><![CDATA[<a href="<%url%>" title="<%adminbloglinktitle%>"><%blogname%></a>]]></part>\r
-    <part name="ADMIN_CUSTOMHELPLINK_ANCHOR"><![CDATA[<a href="<%helpurl%>#<%helptarget%>" title="<%title%>" <%onclick%>>]]></part>\r
-    <part name="ADMINSKINTYPELIST_FOOT"><![CDATA[        </ul>\r
-]]></part>\r
-    <part name="ADMIN_CUSTOMHELPLINK_ICON"><![CDATA[<img src="<%iconurl%>" <%width%><%height%>alt="<%alt%>" title="<%title%>" /></a>]]></part>\r
-    <part name="ADMINSKINTYPELIST_BODY"><![CDATA[<li><a tabindex="<%tabindex%>" href="<%adminurl%>index.php?action=adminskinedittype&skinid=<%skinid%>&type=<%skintype%>"><%name%></a> <%help%></li>\r
-]]></part>\r
-    <part name="ADMINSKINTYPELIST_HEAD"><![CDATA[        <ul>\r
-]]></part>\r
-    <part name="PLUGIN_QUICKMENU_BODY"><![CDATA[<li><a href="<%plugadminurl%>" title="<%plugadmintooltip%>"><%plugadmintitle%></a></li>\r
-]]></part>\r
-    <part name="PLUGIN_QUICKMENU_FOOT"><![CDATA[</ul>\r
-]]></part>\r
-  </template>\r
-</nucleusskin>\r
+<?xml version="1.0"?>
+<nucleusskin>
+  <meta>
+    <skin name="admin/default"/>
+    <template name="admin/default"/>
+    <info><![CDATA[20120414]]></info>
+  </meta>
+  <skin name="admin/default" type="text/html" includeMode="skin" includePrefix="admin/default">
+    <description><![CDATA[ADMIN Area Default skin]]></description>
+    <part name="actionlog"><![CDATA[<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%>]]></part>
+    <part name="activate"><![CDATA[<h2><%activationmessage(title)%></h2>
+             <p><%activationmessage(text)%></p>
+             <p class="error"><%headmessage%></p>
+             <%if(bechangepass)%><div>
+                <form action="<%adminurl%>index.php" method="post">
+                    <input type="hidden" name="action" value="activatesetpwd" />
+                    <%ticket%>
+                    <input type="hidden" name="key" value="<%activationmessage(ackey)%>" />
+                    <table>
+                        <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>
+             </div><%endif%>]]></part>
+    <part name="activatesetpwd"><![CDATA[<h2><%text(_ACTIVATE_SUCCESS_TITLE)%></h2>
+<p><%text(_ACTIVATE_SUCCESS_TEXT)%></p>]]></part>
+    <part name="addnewlog"><![CDATA[<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">
+            <div>
+                <input type="hidden" name="action" value="addnewlog2" />
+                <%ticket%>
+                <input type="hidden" name="blogid" value="<%requestblogid%>" />
+                <table>
+                    <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>
+            </div>
+        </form>
+        <h3><a id="skins"><%text(_BLOGCREATED_ADVANCEDWAY2)%></a></h3>
+        <p><%text(_BLOGCREATED_ADVANCEDWAY3)%></p>
+        <form action="<%adminurl%>index.php" method="post">
+            <div>
+                <input type="hidden" name="action" value="addnewlog2" />
+                <%ticket%>
+                <input type="hidden" name="blogid" value="<%requestblogid%>" />
+                <table>
+                    <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>]]></part>
+    <part name="adminerrorpage"><![CDATA[        <h2>Error!</h2>
+        <%headmessage%>
+        <br />
+        <a href="<%adminurl%>index.php" onclick="history.back()"><%text(_BACK)%></a>
+]]></part>
+    <part name="adminskindelete"><![CDATA[<h2><%text(_DELETE_CONFIRM)%></h2>
+            <p><%text(_CONFIRMTXT_SKIN)%><b><%editadminskintype(name)%></b> (<%editadminskintype(desc)%>)</p>
+            <form method="post" action="<%adminurl%>index.php">
+                <div>
+                    <input type="hidden" name="action" value="adminskindeleteconfirm" />
+                    <%ticket%>
+                    <input type="hidden" name="skinid" value="<%editadminskintype(id)%>" />
+                    <input type="submit" tabindex="10" value="<%text(_DELETE_CONFIRM_BTN)%>" />
+                </div>
+            </form>]]></part>
+    <part name="adminskinedit"><![CDATA[<p><a href="<%adminurl%>index.php?action=adminskinoverview">(<%text(_SKIN_BACK)%>)</a></p>
+        <h2><%text(_SKIN_EDITONE_TITLE)%> '<%editadminskin(name)%>'</h2>
+        <h3><%text(_SKIN_PARTS_TITLE)%></h3>
+        <%text(_SKIN_PARTS_MSG)%>
+<%adminskintypes(10,admin/default)%>
+        <h3><%text(_SKIN_PARTS_SPECIAL)%></h3>
+        <form method="get" action="<%adminurl%>index.php">
+            <input type="hidden" name="action" value="adminskinedittype" />
+            <input type="hidden" name="skinid" value="<%editadminskin(id)%>" />
+            <input name="type" tabindex="89" size="30" maxlength="64" />
+            <input type="submit" tabindex="140" value="<%text(_SKIN_CREATE)%>" onclick="return checkSubmit();" />
+        </form>
+        <%adminspecialskinlist(admin/default)%>
+        <h3><%text(_SKIN_GENSETTINGS_TITLE)%></h3>
+        <form method="post" action="<%adminurl%>index.php">
+            <div>
+                <input type="hidden" name="action" value="adminskineditgeneral" />
+                <%ticket%>
+                <input type="hidden" name="skinid" value="<%editadminskin(id)%>" />
+                <table>
+                    <tr>
+                        <td><%text(_SKIN_NAME)%> <%helplink(shortnames)%></td>
+                        <td><input name="name" tabindex="90" value="<%editadminskin(name)%>" maxlength="64" size="30" /></td>
+                    </tr><tr>
+                        <td><%text(_SKIN_DESC)%></td>
+                        <td><input name="desc" tabindex="100" value="<%editadminskin(desc)%>" maxlength="200" size="50" /></td>
+                </tr><tr>
+                    <td><%text(_SKIN_TYPE)%></td>
+                    <td><input name="type" tabindex="110" value="<%editadminskin(type)%>" maxlength="40" size="20" /></td>
+                </tr><tr>
+                    <td><%text(_SKIN_INCLUDE_MODE)%> <%helplink(includemode)%></td>
+                    <td><%editadminskin(mode)%></td>
+                </tr><tr>
+                    <td><%text(_SKIN_INCLUDE_PREFIX)%> <%helplink(includeprefix)%></td>
+                    <td><input name="inc_prefix" tabindex="130" value="<%editadminskin(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>
+            </div>
+        </form>]]></part>
+    <part name="adminskinedittype"><![CDATA[<p>(<a href="<%adminurl%>index.php?action=adminskinoverview"><%text(_SKIN_GOBACK)%></a>)</p>
+        <h2><%text(_SKIN_EDITPART_TITLE)%> '<%editadminskintype(name)%>': <%editadminskintype(skintype)%></h2>
+        <%headmessage%>
+        <form method="post" action="<%adminurl%>index.php">
+            <div>
+                <input type="hidden" name="action" value="adminskinupdate" />
+                <%ticket%>
+                <input type="hidden" name="skinid" value="<%editadminskintype(id)%>" />
+                <input type="hidden" name="type" value="<%editadminskintype(skintyperaw)%>" />
+                <input type="submit" value="<%text(_SKIN_UPDATE_BTN)%>" onclick="return checkSubmit();" />
+                <input type="reset" value="<%text(_SKIN_RESET_BTN)%>" />
+                (skin type: <%editadminskintype(skintype)%>)<%skintypehelp%><br />
+                <textarea class="skinedit" tabindex="10" rows="20" cols="80" name="content"><%editadminskintype(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: <%editadminskintype(skintype)%>)
+                <br /><br />
+                <%text(_SKIN_ALLOWEDVARS)%>
+                <%allowedadminskinactions%><br /><br />
+                <%text(_SKINEDIT_ALLOWEDTEMPLATESS)%>
+                <%adminskineditallowedlist(template)%><br />
+            </div>
+        </form>]]></part>
+    <part name="adminskiniedoimport"><![CDATA[<p><a href="<%adminurl%>index.php?action=manage">(<%text(_BACKTOMANAGE)%>)</a></p>
+        <h2><%text(_SKINIE_DONE)%></h2>
+
+        <ul>
+            <li><p><strong><%text(_SKINIE_INFO_GENERAL)%></strong> <%importskininfo(info)%></p></li>
+            <li><p><strong><%text(_SKINIE_INFO_IMPORTEDSKINS)%></strong> <%importskininfo(snames)%></p></li>
+            <li><p><strong><%text(_SKINIE_INFO_IMPORTEDTEMPLS)%></strong> <%importskininfo(tnames)%></p></li>
+        </ul>]]></part>
+    <part name="adminskinieimport"><![CDATA[<p><a href="<%adminurl%>index.php?action=adminskinieoverview">(<%text(_BACK)%>)</a></p>
+        <h2><%text(_SKINIE_CONFIRM_TITLE)%></h2>
+
+        <ul>
+            <li><p><strong><%text(_SKINIE_INFO_GENERAL)%></strong> <%importskininfo(info)%></p></li>
+            <li><p><strong><%text(_SKINIE_INFO_SKINS)%></strong> <%importskininfo(snames)%></p></li>
+            <li><p><strong><%text(_SKINIE_INFO_TEMPLATES)%></strong> <%importskininfo(tnames)%></p></li>
+            <%if(nameclashes)%><li><p><strong style="color: red;"><%text(_SKINIE_INFO_SKINCLASH)%></strong> <%importskininfo(sclashes)%></p></li>
+            <li><p><strong style="color: red;"><%text(_SKINIE_INFO_TEMPLCLASH)%></strong> <%importskininfo(tclashes)%></p></li><%endif%>
+        </ul>
+
+        <form method="post" action="<%adminurl%>index.php"><div>
+            <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%>
+        </div></form>]]></part>
+    <part name="adminskinieoverview"><![CDATA[<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">
+                <div>
+                    <input type="hidden" name="action" value="adminskinieimport" />
+                    <%ticket%>
+                    <input type="hidden" name="mode" value="file" />
+                    <select name="skinfile" id="skinie_import_local">
+                        <%selectlocaladminskinfiles%>
+                    </select>
+                    <input type="submit" value="<%text(_SKINIE_BTN_IMPORT)%>" />
+                </div>
+            </form><%else%><%text(_SKINIE_NOCANDIDATES)%><%endif%>
+        </p>
+        <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>
+        <h2><%text(_SKINIE_TITLE_EXPORT)%></h2>
+        <form method="post" action="<%adminurl%>index.php">
+            <div>
+                <input type="hidden" name="action" value="adminskinieexport" />
+                <%ticket%>
+                <p><%text(_SKINIE_EXPORT_INTRO)%></p>
+                <table>
+                    <tr>
+                        <th colspan="2"><%text(_SKINIE_EXPORT_SKINS)%></th>
+                    </tr><tr>
+                        <%adminskinielist(skin,admin/default)%>
+                        <th colspan="2"><%text(_SKINIE_EXPORT_TEMPLATES)%></th>
+                    </tr><tr>
+                        <%adminskinielist(template,admin/default)%>
+                        <th colspan="2"><%text(_SKINIE_EXPORT_EXTRA)%></th>
+                    </tr><tr>
+                        <td colspan="2"><textarea cols="40" rows="5" name="info"></textarea></td>
+                    </tr><tr>
+                        <th colspan="2"><%text(_SKINIE_TITLE_EXPORT)%></th>
+                    </tr><tr>
+                        <td colspan="2"><input type="submit" value="<%text(_SKINIE_BTN_EXPORT)%>" /></td>
+                    </tr>
+                </table>
+            </div>
+        </form>]]></part>
+    <part name="adminskinoverview"><![CDATA[<p><a href="<%adminurl%>index.php?action=manage">(<%text(_BACKTOMANAGE)%>)</a></p>
+        <h2><%text(_SKIN_EDIT_TITLE)%></h2>
+        <h3><%text(_SKIN_AVAILABLE_TITLE)%></h3>
+        <%adminskinoverview%>
+        <h3><%text(_SKIN_NEW_TITLE)%></h3>
+        <form method="post" action="<%adminurl%>index.php">
+            <div>
+                <input name="action" value="adminskinnew" type="hidden" />
+                <%ticket%>
+                <table>
+                    <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>
+            </div>
+        </form>]]></part>
+    <part name="adminskinremovetype"><![CDATA[<h2><%text(_DELETE_CONFIRM)%></h2>
+            <p><%text(_CONFIRMTXT_SKIN_PARTS_SPECIAL)%><b><%editadminskintype(skintype)%> (<%editadminskintype(name)%>)</b> (<%editadminskintype(desc)%>)</p>
+            <form method="post" action="<%adminurl%>index.php">
+                <div>
+                    <input type="hidden" name="action" value="adminskinremovetypeconfirm" />
+                    <%ticket%>
+                    <input type="hidden" name="skinid" value="<%editadminskintype(id)%>" />
+                    <input type="hidden" name="type" value="<%editadminskintype(skintype)%>" />
+                    <input type="submit" tabindex="10" value="<%text(_DELETE_CONFIRM_BTN)%>" />
+                </div>
+            </form>]]></part>
+    <part name="admintemplatedelete"><![CDATA[<h2><%text(_DELETE_CONFIRM)%></h2>
+            <p><%text(_CONFIRMTXT_TEMPLATE)%><b><%editadmintemplateinfo(name)%></b> (<%editadmintemplateinfo(desc)%>)</p>
+            <form method="post" action="<%adminurl%>index.php">
+                <div>
+                    <input type="hidden" name="action" value="admintemplatedeleteconfirm" />
+                    <%ticket%>
+                    <input type="hidden" name="templateid" value="<%editadmintemplateinfo(id)%>" />
+                    <input type="submit" tabindex="10" value="<%text(_DELETE_CONFIRM_BTN)%>" />
+                </div>
+            </form>]]></part>
+    <part name="admintemplateedit"><![CDATA[<p><a href="<%adminurl%>index.php?action=admintemplateoverview">(<%text(_TEMPLATE_BACK)%>)</a></p>
+
+        <h2><%text(_TEMPLATE_EDIT_TITLE)%> '<%editadmintemplateinfo(name)%>'</h2>
+        <%headmessage%>
+        <p><%text(_TEMPLATE_EDIT_MSG)%></p>
+        <form method="post" action="<%adminurl%>index.php">
+            <div>
+                <input type="hidden" name="action" value="admintemplateupdate" />
+                <%ticket%>
+                <input type="hidden" name="templateid" value="<%editadmintemplateinfo(id)%>" />
+                <table>
+                    <tr>
+                        <th colspan="2"><%text(_TEMPLATE_SETTINGS)%></th>
+                    </tr><tr>
+                        <td><%text(_TEMPLATE_NAME)%> <%helplink(shortnames)%></td>
+                        <td><input name="tname" tabindex="4" size="20" maxlength="20" value="<%editadmintemplateinfo(name)%>" /></td>
+                    </tr><tr>
+                        <td><%text(_TEMPLATE_DESC)%></td>
+                        <td><input name="tdesc" tabindex="5" size="50" maxlength="200" value="<%editadmintemplateinfo(desc)%>" /></td>
+                    </tr><tr>
+                        <th colspan="2"><%text(_TEMPLATE_UPDATE)%></th>
+                    </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><tr>
+                        <th colspan="2"><%text(_QMENU_LAYOUT_SKINS)%></th>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_ADMINSKINTYPELIST_HEAD, ADMINSKINTYPELIST_HEAD, ,8)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_ADMINSKINTYPELIST_BODY, ADMINSKINTYPELIST_BODY, ,9)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_ADMINSKINTYPELIST_FOOT, ADMINSKINTYPELIST_FOOT, ,10)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SPECIALSKINLIST_HEAD, SPECIALSKINLIST_HEAD, , 11)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SPECIALSKINLIST_BODY, SPECIALSKINLIST_BODY, , 12)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SPECIALSKINLIST_FOOT, SPECIALSKINLIST_FOOT, , 13)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_ADMIN_SPECIALSKINLIST_HEAD, ADMIN_SPECIALSKINLIST_HEAD, , 14)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_ADMIN_SPECIALSKINLIST_BODY, ADMIN_SPECIALSKINLIST_BODY, , 15)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_ADMIN_SPECIALSKINLIST_FOOT, ADMIN_SPECIALSKINLIST_FOOT, , 16)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SKINIE_EXPORT_LIST, SKINIE_EXPORT_LIST, , 17)%>
+                    </tr><tr>
+                        <th colspan="2"><%text(_QMENU_LAYOUT_TEMPL)%></th>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_TEMPLATE_EDIT_EXPLUGNAME, TEMPLATE_EDIT_EXPLUGNAME, , 18)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_TEMPLATE_EDIT_ROW_HEAD, TEMPLATE_EDIT_ROW_HEAD, , 19)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_TEMPLATE_EDIT_ROW_TAIL, TEMPLATE_EDIT_ROW_TAIL, , 20)%>
+                    </tr><tr>
+                        <th colspan="2"><%text(_SKINABLEADMIN_ADMINAREAHEADLINK)%></th>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_ADMIN_BLOGLINK, ADMIN_BLOGLINK, , 21)%>
+                    </tr><tr>
+                        <th colspan="2"><%text(_SKINABLEADMIN_BATCH)%></th>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_ADMIN_BATCHLIST, ADMIN_BATCHLIST, , 22)%>
+                    </tr><tr>
+                        <th colspan="2"><%text(_QMENU_ACTIVATE)%></th>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_ACTIVATE_FORGOT_TITLE, ACTIVATE_FORGOT_TITLE, , 23)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_ACTIVATE_FORGOT_TEXT, ACTIVATE_FORGOT_TEXT, , 24)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_ACTIVATE_REGISTER_TITLE, ACTIVATE_REGISTER_TITLE, , 25)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_ACTIVATE_REGISTER_TEXT, ACTIVATE_REGISTER_TEXT, , 26)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_ACTIVATE_CHANGE_TITLE, ACTIVATE_CHANGE_TITLE, , 27)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_ACTIVATE_CHANGE_TEXT, ACTIVATE_CHANGE_TEXT, , 28)%>
+                    </tr><tr>
+                        <th colspan="2"><%text(_QMENU_MANAGE_SYSTEM)%></th>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SYSTEMINFO_GDSETTINGS, SYSTEMINFO_GDSETTINGS, , 29)%>
+                    </tr><tr>
+                        <th colspan="2"><%text(_BLOGLIST_BANS)%></th>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_BANLIST_DELETED_LIST, BANLIST_DELETED_LIST, , 30)%>
+                    </tr><tr>
+                        <th colspan="2"><%text(_SKINABLEADMIN_TPLSETTING_INGENERAL)%></th>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_INSERT_PLUGOPTION_TITLE, INSERT_PLUGOPTION_TITLE, , 31)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_INSERT_PLUGOPTION_BODY, INSERT_PLUGOPTION_BODY, , 32)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_INPUTYESNO_TEMPLATE_ADMIN, INPUTYESNO_TEMPLATE_ADMIN, , 33)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_INPUTYESNO_TEMPLATE_NORMAL, INPUTYESNO_TEMPLATE_NORMAL, , 34)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_ADMIN_CUSTOMHELPLINK_ICON, ADMIN_CUSTOMHELPLINK_ICON, , 35)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_ADMIN_CUSTOMHELPLINK_ANCHOR, ADMIN_CUSTOMHELPLINK_ANCHOR, , 36)%>
+
+                    </tr><tr>
+                        <th colspan="2"><%text(_SKINABLEADMIN_SHOWLIST_LISTPLUG_SELECT)%></th>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_SELECT_HEAD, SHOWLIST_LISTPLUG_SELECT_HEAD, , 37)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_SELECT_BODY, SHOWLIST_LISTPLUG_SELECT_BODY, , 38)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_SELECT_FOOT, SHOWLIST_LISTPLUG_SELECT_FOOT, , 39)%>
+                    </tr><tr>
+                        <th colspan="2"><%text(_SKINABLEADMIN_SHOWLIST_LISTPLUG_TABLE)%></th>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_HEAD, SHOWLIST_LISTPLUG_TABLE_HEAD, , 40)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BODY, SHOWLIST_LISTPLUG_TABLE_BODY, , 41)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_FOOT, SHOWLIST_LISTPLUG_TABLE_FOOT, , 42)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_MEMBLIST_HEAD, SHOWLIST_LISTPLUG_TABLE_MEMBLIST_HEAD, , 43)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_MEMBLIST_BODY, SHOWLIST_LISTPLUG_TABLE_MEMBLIST_BODY, , 44)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_MEMBLIST_FOOT, SHOWLIST_LISTPLUG_TABLE_MEMBLIST_FOOT, , 45)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_TEAMLIST_HEAD, SHOWLIST_LISTPLUG_TABLE_TEAMLIST_HEAD, , 46)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_TEAMLIST_BODY, SHOWLIST_LISTPLUG_TABLE_TEAMLIST_BODY, , 47)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_TEAMLIST_FOOT, SHOWLIST_LISTPLUG_TABLE_TEAMLIST_FOOT, , 48)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HEAD, SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HEAD, , 49)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY, SHOWLIST_LISTPLUG_TABLE_PLUGLIST_BODY, , 50)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL, SHOWLIST_LISTPLUG_TABLE_PLUGLIST_GURL, , 51)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST, SHOWLIST_LISTPLUG_TABLE_PLUGEVENTLIST, , 52)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE, SHOWLIST_LISTPLUG_TABLE_PLUGNEDUPDATE, , 53)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND, SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPEND, , 54)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ, SHOWLIST_LISTPLUG_TABLE_PLUGIN_DEPREQ, , 55)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE, SHOWLIST_LISTPLUG_TABLE_PLUGLISTFALSE, , 56)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN, SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ACTN, , 57)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN, SHOWLIST_LISTPLUG_TABLE_PLUGLIST_ADMN, , 58)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP, SHOWLIST_LISTPLUG_TABLE_PLUGLIST_HELP, , 59)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL, SHOWLIST_LISTPLUG_TABLE_PLUGOPTSETURL, , 60)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGLIST_FOOT, SHOWLIST_LISTPLUG_TABLE_PLUGLIST_FOOT, , 61)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_POPTLIST_HEAD, SHOWLIST_LISTPLUG_TABLE_POPTLIST_HEAD, , 62)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_POPTLIST_BODY, SHOWLIST_LISTPLUG_TABLE_POPTLIST_BODY, , 63)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLGOPT_OYESNO, SHOWLIST_LISTPLUG_TABLE_PLGOPT_OYESNO, , 64)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLGOPT_OPWORD, SHOWLIST_LISTPLUG_TABLE_PLGOPT_OPWORD, , 65)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLGOPT_OSELEP, SHOWLIST_LISTPLUG_TABLE_PLGOPT_OSELEP, , 66)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLGOPT_OSELEO, SHOWLIST_LISTPLUG_TABLE_PLGOPT_OSELEO, , 67)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLGOPT_OSELEC, SHOWLIST_LISTPLUG_TABLE_PLGOPT_OSELEC, , 68)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLGOPT_OTAREA, SHOWLIST_LISTPLUG_TABLE_PLGOPT_OTAREA, , 69)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLGOPT_OITEXT, SHOWLIST_LISTPLUG_TABLE_PLGOPT_OITEXT, , 70)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_PLUGOPTN_FOOT, SHOWLIST_LISTPLUG_TABLE_PLUGOPTN_FOOT, , 71)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_POPTLIST_FOOT, SHOWLIST_LISTPLUG_TABLE_POPTLIST_FOOT, , 72)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_ITEMLIST_HEAD, SHOWLIST_LISTPLUG_TABLE_ITEMLIST_HEAD, , 73)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_ITEMLIST_BODY, SHOWLIST_LISTPLUG_TABLE_ITEMLIST_BODY, , 74)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_ITEMLIST_FOOT, SHOWLIST_LISTPLUG_TABLE_ITEMLIST_FOOT, , 75)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_CMNTLIST_HEAD, SHOWLIST_LISTPLUG_TABLE_CMNTLIST_HEAD, , 76)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_CMNTLIST_BODY, SHOWLIST_LISTPLUG_TABLE_CMNTLIST_BODY, , 77)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_CMNTLIST_ABAN, SHOWLIST_LISTPLUG_TABLE_CMNTLIST_ABAN, , 78)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_CMNTLIST_FOOT, SHOWLIST_LISTPLUG_TABLE_CMNTLIST_FOOT, , 79)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLOGLIST_HEAD, SHOWLIST_LISTPLUG_TABLE_BLOGLIST_HEAD, , 80)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLOGLIST_BODY, SHOWLIST_LISTPLUG_TABLE_BLOGLIST_BODY, , 81)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM, SHOWLIST_LISTPLUG_TABLE_BLIST_BD_TADM, , 82)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM, SHOWLIST_LISTPLUG_TABLE_BLIST_BD_SADM, , 83)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLOGLIST_FOOT, SHOWLIST_LISTPLUG_TABLE_BLOGLIST_FOOT, , 84)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLOGSNAM_HEAD, SHOWLIST_LISTPLUG_TABLE_BLOGSNAM_HEAD, , 85)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLOGSNAM_BODY, SHOWLIST_LISTPLUG_TABLE_BLOGSNAM_BODY, , 86)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_BLOGSNAM_FOOT, SHOWLIST_LISTPLUG_TABLE_BLOGSNAM_FOOT, , 87)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_SHORTNAM_HEAD, SHOWLIST_LISTPLUG_TABLE_SHORTNAM_HEAD, , 88)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_SHORTNAM_BODY, SHOWLIST_LISTPLUG_TABLE_SHORTNAM_BODY, , 89)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_SHORTNAM_FOOT, SHOWLIST_LISTPLUG_TABLE_SHORTNAM_FOOT, , 90)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_CATELIST_HEAD, SHOWLIST_LISTPLUG_TABLE_CATELIST_HEAD, , 91)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_CATELIST_BODY, SHOWLIST_LISTPLUG_TABLE_CATELIST_BODY, , 92)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_CATELIST_FOOT, SHOWLIST_LISTPLUG_TABLE_CATELIST_FOOT, , 93)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_TPLTLIST_HEAD, SHOWLIST_LISTPLUG_TABLE_TPLTLIST_HEAD, , 94)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_TPLTLIST_BODY, SHOWLIST_LISTPLUG_TABLE_TPLTLIST_BODY, , 95)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_TPLTLIST_FOOT, SHOWLIST_LISTPLUG_TABLE_TPLTLIST_FOOT, , 96)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_SKINLIST_HEAD, SHOWLIST_LISTPLUG_TABLE_SKINLIST_HEAD, , 97)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_SKINLIST_BODY, SHOWLIST_LISTPLUG_TABLE_SKINLIST_BODY, , 98)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_SKINLIST_FOOT, SHOWLIST_LISTPLUG_TABLE_SKINLIST_FOOT, , 99)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_DRFTLIST_HEAD, SHOWLIST_LISTPLUG_TABLE_DRFTLIST_HEAD, , 100)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_DRFTLIST_BODY, SHOWLIST_LISTPLUG_TABLE_DRFTLIST_BODY, , 101)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_DRFTLIST_FOOT, SHOWLIST_LISTPLUG_TABLE_DRFTLIST_FOOT, , 102)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_ACTNLIST_HEAD, SHOWLIST_LISTPLUG_TABLE_ACTNLIST_HEAD, , 103)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_ACTNLIST_BODY, SHOWLIST_LISTPLUG_TABLE_ACTNLIST_BODY, , 104)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_ACTNLIST_FOOT, SHOWLIST_LISTPLUG_TABLE_ACTNLIST_FOOT, , 105)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_IBANLIST_HEAD, SHOWLIST_LISTPLUG_TABLE_IBANLIST_HEAD, , 106)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_IBANLIST_BODY, SHOWLIST_LISTPLUG_TABLE_IBANLIST_BODY, , 107)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_SHOWLIST_LISTPLUG_TABLE_IBANLIST_FOOT, SHOWLIST_LISTPLUG_TABLE_IBANLIST_FOOT, , 108)%>
+                    </tr><tr>
+                        <th colspan="2"><%text(_SKINABLEADMIN_PLUGIN_QUICKMENU)%></th>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_PLUGIN_QUICKMENU_TITLE, PLUGIN_QUICKMENU_TITLE, , 109)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_PLUGIN_QUICKMENU_HEAD, PLUGIN_QUICKMENU_HEAD, , 110)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_PLUGIN_QUICKMENU_BODY, PLUGIN_QUICKMENU_BODY, , 111)%>
+                    <%editadmintemplateinfo(row, _ADM_TPLPT_PLUGIN_QUICKMENU_FOOT, PLUGIN_QUICKMENU_FOOT, , 112)%>
+                    </tr><tr>
+                        <th colspan="2"><%text(_TEMPLATE_PLUGIN_FIELDS)%></th>
+                    <%editadmintemplateinfo(extratemplate,admin/default)%>
+                    </tr><tr>
+                        <th colspan="2"><%text(_TEMPLATE_UPDATE)%></th>
+                    </tr><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>
+                </table>
+            </div>
+        </form>]]></part>
+    <part name="admntemplateoverview"><![CDATA[<p><a href="<%adminurl%>index.php?action=manage">(<%text(_BACKTOMANAGE)%>)</a></p>
+        <h2><%text(_TEMPLATE_TITLE)%></h2>
+        <h3><%text(_TEMPLATE_AVAILABLE_TITLE)%></h3>
+        <%admintemplateoverview%>
+        <h3><%text(_TEMPLATE_NEW_TITLE)%></h3>
+        <form method="post" action="<%adminurl%>index.php">
+            <div>
+                <input name="action" value="admintemplatenew" type="hidden" />
+                <%ticket%>
+                <table>
+                    <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>
+            </div>
+        </form>]]></part>
+    <part name="backupoverview"><![CDATA[        <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>
+        <div class="note"><%text(_BACKUP_NOTE)%></div>
+        <h3><%text(_RESTORE_TITLE)%></h3>
+        <div class="note"><%text(_RESTORE_NOTE)%></div>
+        <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>
+]]></part>
+    <part name="backuprestore"><![CDATA[        <h2><%text(_RESTORE_COMPLETE)%></h2>
+]]></part>
+    <part name="banlist"><![CDATA[<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>]]></part>
+    <part name="banlistdelete"><![CDATA[            <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>
+
+            <div>
+                <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>
+            </div>
+
+            <h3><%text(_BAN_DELETE_TITLE)%></h3>
+
+            <div>
+                <%ticket%>
+                <input type="hidden" name="action" value="banlistdeleteconfirm" />
+                <input type="submit" value="<%text(_DELETE_CONFIRM_BTN)%>" />
+            </div>
+
+            </form>
+]]></part>
+    <part name="banlistdeleteconfirm"><![CDATA[        <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>
+]]></part>
+    <part name="banlistnew"><![CDATA[        <h2><%text(_BAN_ADD_TITLE)%></h2>
+        <form method="post" action="<%adminurl%>index.php">
+            <h3><%text(_BAN_IPRANGE)%></h3>
+            <p><%text(_BAN_IPRANGE_TEXT)%></p>
+            <div class="note">
+                <strong><%text(_BAN_EXAMPLE_TITLE)%></strong>
+                <%text(_BAN_EXAMPLE_TEXT)%>
+            </div>
+            <div>
+            <%iprangeinput%>
+            </div>
+            <h3><%text(_BAN_BLOGS)%></h3>
+            <p><%text(_BAN_BLOGS_TEXT)%></p>
+            <div>
+                <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>
+            </div>
+            <h3><%text(_BAN_REASON_TITLE)%></h3>
+            <p><%text(_BAN_REASON_TEXT)%></p>
+            <div><textarea name="reason" cols="40" rows="5"></textarea></div>
+            <h3><%text(_BAN_ADD_TITLE)%></h3>
+            <div>
+                <input name="action" type="hidden" value="banlistadd" />
+                <%ticket%>
+                <input type="submit" value="<%text(_BAN_ADD_BTN)%>" />
+            </div>
+        </form>
+]]></part>
+    <part name="batchcategory"><![CDATA[<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>]]></part>
+    <part name="batchcomment"><![CDATA[<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>]]></part>
+    <part name="batchdelete"><![CDATA[<h2><%text(_BATCH_DELETE_CONFIRM)%></h2>
+        <form method="post" action="<%adminurl%>index.php">
+            <div>
+                <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();" />
+            </div>
+        </form>]]></part>
+    <part name="batchitem"><![CDATA[<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>]]></part>
+    <part name="batchmember"><![CDATA[<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>]]></part>
+    <part name="batchmove"><![CDATA[<h2><%text(_MOVE_TITLE)%></h2>
+        <form method="post" action="<%adminurl%>index.php">
+            <div>
+                <input type="hidden" name="action" value="batch<%batchmovetype%>" />
+                <input type="hidden" name="batchaction" value="move" />
+                <%ticket%>
+                <%batchmovelist%>
+                <%movedistselect%>
+                <input type="submit" value="<%batchmovebtn%>" onclick="return checkSubmit();" />
+            </div>
+        </form>]]></part>
+    <part name="batchmovecat"><![CDATA[<h2><%text(_MOVECAT_TITLE)%></h2>
+        <form method="post" action="<%adminurl%>index.php">
+            <div>
+                <input type="hidden" name="action" value="batch<%batchmovetype%>" />
+                <input type="hidden" name="batchaction" value="move" />
+                <%ticket%>
+                <%batchmovelist%>
+                <%movedistselect%>
+                <input type="submit" value="<%batchmovebtn%>" onclick="return checkSubmit();" />
+            </div>
+        </form>]]></part>
+    <part name="batchteam"><![CDATA[<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>]]></part>
+    <part name="blogcommentlist"><![CDATA[<p>(<a href="<%adminurl%>index.php?action=overview"><%text(_BACKHOME)%></a>)</p>
+        <h2><%text(_COMMENTS_BLOG)%> <%adminbloglink(admin/default)%></h2>
+        <%commentnavlist(admin/default)%>]]></part>
+    <part name="blogselectbox"><![CDATA[<%blogselectbox%>]]></part>
+    <part name="blogsettings"><![CDATA[<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">
+            <div>
+                <input type="hidden" name="action" value="blogsettingsupdate" />
+                <%ticket%>
+                <input type="hidden" name="blogid" value="<%requestblogid%>" />
+                <table>
+                    <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>
+                        <th colspan="2"><%text(_EBLOG_CHANGE)%></th>
+                    </tr><tr>
+                        <td><%text(_EBLOG_CHANGE)%></td>
+                        <td><input type="submit" tabindex="130" value="<%text(_EBLOG_CHANGE_BTN)%>" onclick="return checkSubmit();" /></td>
+                    </tr>
+                </table>
+            </div>
+        </form>
+        <h3><%text(_EBLOG_CAT_TITLE)%></h3>
+        <%blogcatlist%>
+        <form action="<%adminurl%>index.php" method="post">
+            <div>
+                <input name="action" value="categorynew" type="hidden" />
+                <%ticket%>
+                <input name="blogid" value="<%blogsetting(id)%>" type="hidden" />
+                <table>
+                    <tr>
+                        <th colspan="2"><%text(_EBLOG_CAT_CREATE)%></th>
+                    </tr><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>
+                </table>
+            </div>
+        </form>
+        <h3><%text(_PLUGINS_EXTRA)%></h3>
+        <%pluginextras(blog)%>]]></part>
+    <part name="bookmarklet"><![CDATA[        <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>
+]]></part>
+    <part name="browseowncomments"><![CDATA[<p>(<a href="<%adminurl%>index.php?action=overview"><%text(_BACKHOME)%></a>)</p>
+        <h2><%text(_COMMENTS_YOUR)%></h2>
+        <%commentnavlist(admin/default)%>]]></part>
+    <part name="browseownitems"><![CDATA[<p><a href="<%adminurl%>index.php?action=overview"><%text(_BACKHOME)%></a></p>
+        <h2><%text(_ITEMLIST_YOUR)%></h2>
+        <%itemnavlist(admin/default)%>]]></part>
+    <part name="categorydelete"><![CDATA[<h2><%text(_DELETE_CONFIRM)%></h2>
+            <div>
+                <%text(_CONFIRMTXT_CATEGORY)%><b><%categorysetting(name)%></b>
+            </div>
+            <form method="post" action="<%adminurl%>index.php">
+                <div>
+                    <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)%>" />
+                </div>
+            </form>]]></part>
+    <part name="categoryedit"><![CDATA[<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'>
+            <div>
+                <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%>
+                <table>
+                    <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>
+            </div>
+        </form>]]></part>
+    <part name="commentdelete"><![CDATA[<h2><%text(_DELETE_CONFIRM)%></h2>
+            <p><%text(_CONFIRMTXT_COMMENT)%></p>
+            <div class="note">
+            <b><%text(_EDITC_WHO)%>:</b> <%deletecomment(author)%>
+            <br />
+            <b><%text(_EDITC_TEXT)%>:</b> <%deletecomment(body)%>
+            </div>
+            <form method="post" action="<%adminurl%>index.php"><div>
+                <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)%>" />
+            </div></form>]]></part>
+    <part name="commentedit"><![CDATA[<h2><%text(_EDITC_TITLE)%></h2>
+            <form method="post" action="<%adminurl%>index.php">
+                <div>
+                    <input type="hidden" name="action" value="commentupdate" />
+                    <%ticket%>
+                    <input type="hidden" name="commentid" value="<%editcomment(id)%>" />
+                    <table>
+                        <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>
+                </div>
+            </form>]]></part>
+    <part name="createitem"><![CDATA[<h2><%text(_ADD_ADDTO)%> '<%adminbloglink(admin/default)%>'</h2>
+
+<%init%>
+<script type="text/javascript" src="<%skinfile(/javascript/numbercheck.js)%>"></script>
+<%if(autosave)%><script type="text/javascript" src="<%skinfile(/javascript/xmlhttprequest.js)%>"></script><%endif%>
+
+<form id="addform" method="post" action="<%adminurl%>index.php" >
+
+<div>
+
+<input type="hidden" name="action" value="additem" />
+<input name="blogid" value="<%blogid%>" type="hidden" />
+<input type="hidden" name="draftid" value="0" />
+<%ticket%>
+
+<table>
+       <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" onkeyup="storeCaret(this); updPreview(title); doMonitor();" onclick="storeCaret(this);" onselect="storeCaret(this);"
+                       name="title"
+                       tabindex="10"
+                       size="60" 
+                       maxlength="160" 
+                       value="<%contents(title)%>"
+                       /></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" onkeyup="storeCaret(this); updPreview(body); doMonitor();" onclick="storeCaret(this);" onselect="storeCaret(this);"
+                               name="body"
+                               tabindex="20"
+                               cols="60"
+                               rows="20"><%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><tr>
+       
+<%if(blogsetting, bcomments)%>
+               <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><tr>
+<%endif%>
+
+
+               <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 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 id="inputyear" name="year" tabindex="63" size="4" value="<%currenttime(year)%>" onchange="document.forms[0].act_future.checked=true;" /><%text(_ITEM_ADDEDITTEMPLATE_YEAR)%>
+                               <input id="inputmonth" name="month" tabindex="64" size="2" value="<%currenttime(mon)%>" onchange="document.forms[0].act_future.checked=true;" /><%text(_ITEM_ADDEDITTEMPLATE_MONTH)%>
+                               <input id="inputday" name="day" tabindex="65" size="2" value="<%currenttime(mday)%>" onchange="document.forms[0].act_future.checked=true;" /><%text(_ITEM_ADDEDITTEMPLATE_DAY)%>
+                                
+                               <input id="inputhour" name="hour" tabindex="66" size="2" value="<%currenttime(hours)%>" onchange="document.forms[0].act_future.checked=true;" /><%text(_ITEM_ADDEDITTEMPLATE_HOUR)%>
+                               <input id="inputminutes" name="minutes" tabindex="67" size="2" value="<%currenttime(minutes)%>" onchange="document.forms[0].act_future.checked=true;" /><%text(_ITEM_ADDEDITTEMPLATE_MINUTE)%>
+                               <br /><%text(_ITEM_ADDEDITTEMPLATE_FORMAT)%>(yyyy)<%text(_ITEM_ADDEDITTEMPLATE_YEAR)%>(mm)<%text(_ITEM_ADDEDITTEMPLATE_MONTH)%>(dd)<%text(_ITEM_ADDEDITTEMPLATE_DAY)%> (hh)<%text(_ITEM_ADDEDITTEMPLATE_HOUR)%>(mm)<%text(_ITEM_ADDEDITTEMPLATE_MINUTE)%>
+                               
+                               <%if(blogsetting, ballowpast,0)%>
+                                       <br />
+                                       <%text(_ADD_NOPASTDATES)%>
+                               <%endif%>
+                       </div>
+                       <input name="actiontype" tabindex="61" value="adddraft" type="radio" 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%> 
+    <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" onkeyup="storeCaret(this); updPreview(more); doMonitor();" onclick="storeCaret(this);" onselect="storeCaret(this);"
+                               name="more"
+                               tabindex="70"
+                               cols="60"
+                               rows="20"
+                               ><%contents(more)%></textarea>
+               </td>
+       </tr><tr>
+               <td><%text(_SUBMIT)%></td>
+               <td>
+                       <input tabindex="60" type="submit" value="<%text(_ADD_ADDITEM)%>" 
+                               onclick="return checkSubmit();" />
+                       <%if(autosave)%>
+                       <input tabindex="80" type="button" name="autosavenow" value="<%text(_AUTOSAVEDRAFT_NOW)%>"
+                               onclick="autoSaveDraft();" />
+                       <%endif%>
+               </td>
+       </tr>
+</table>
+
+</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('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%>]]></part>
+    <part name="createnewlog"><![CDATA[<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">
+            <div>
+                <input type="hidden" name="action" value="addnewlog" />
+                <%ticket%>
+                <table>
+                    <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%></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>
+            </div>
+        </form>]]></part>
+    <part name="deleteblog"><![CDATA[<h2><%text(_DELETE_CONFIRM)%></h2>
+            <p><%text(_WARNINGTXT_BLOGDEL)%>
+            </p>
+            <div>
+            <%text(_CONFIRMTXT_BLOG)%><b><%blogsetting(name)%></b>
+            </div>
+            <form method="post" action="<%adminurl%>index.php"><div>
+            <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)%>" />
+            </div></form>]]></part>
+    <part name="editmembersettings"><![CDATA[<%if(superadmin)%><a href="<%adminurl%>index.php?action=usermanagement">(<%text(_MEMBERS_BACKTOOVERVIEW)%>)<%else%><a href="<%adminurl%>index.php?action=overview">(<%text(_BACKHOME)%>)<%endif%></a>
+            <h2><%text(_MEMBERS_EDIT)%></h2>
+            <form method="post" action="<%adminurl%>index.php" name="memberedit">
+                <div>
+                    <input type="hidden" name="action" value="changemembersettings" />
+                    <input type="hidden" name="memberid" value="<%editmember(id)%>" />
+                    <%ticket%>
+                    <table>
+                        <tr>
+                            <th colspan="2"><%text(_MEMBERS_EDIT)%></th>
+                        </tr><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>
+                        <%if(superadmin)%></tr><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>
+                                    <%adminskinselectoptions%>
+                            </td>
+                        </tr><%endif%>
+                        <%pluginoptions(member)%>
+                        <tr>
+                            <th colspan="2"><%text(_MEMBERS_EDIT)%></th>
+                        </tr><tr>
+                            <td><%text(_MEMBERS_EDIT)%></td>
+                            <td><input type="submit" tabindex="90" value="<%text(_MEMBERS_EDIT_BTN)%>" onclick="return checkSubmit();" /></td>
+                        </tr>
+                    </table>
+                </div>
+            </form>
+            <h3><%text(_PLUGINS_EXTRA)%></h3>
+            <%pluginextras(member)%>]]></part>
+    <part name="insertpluginoptions"><![CDATA[<%insertpluginoptions(admin/default)%>]]></part>
+    <part name="itemcommentlist"><![CDATA[<p>(<a href="<%adminurl%>index.php?action=itemlist&amp;blogid=<%requestblogid%>"><%text(_BACKTOOVERVIEW)%></a>)</p>
+        <h2><%text(_COMMENTS)%></h2>
+        <%commentnavlist(admin/default)%>]]></part>
+    <part name="itemdelete"><![CDATA[<h2><%text(_DELETE_CONFIRM)%></h2>
+        <p><%text(_CONFIRMTXT_ITEM)%></p>
+            <div class="note">
+                <b>"<%deleteitemtitle%>"</b>
+                <br />
+                <%deleteitembody%>
+            </div>
+            <form method="post" action="<%adminurl%>index.php"><div>
+                <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" />
+            </div></form>]]></part>
+    <part name="itemedit"><![CDATA[<h2><%text(_EDIT_ITEM)%></h2>
+
+<%init%>
+<script type="text/javascript" src="<%skinfile(/javascript/numbercheck.js)%>"></script>
+<%if(autosave)%><script type="text/javascript" src="<%skinfile(/javascript/xmlhttprequest.js)%>"></script><%endif%>
+
+<form id="editform" method="post" action="<%adminurl%>index.php">
+<div>
+
+<input type="hidden" name="action" value="itemupdate" />
+<input name="itemid" value="<%contents(itemid)%>" type="hidden" />
+<input type="hidden" name="draftid" value="0" />
+<%ticket%>
+
+<table><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 id="inputtitle" onkeyup="storeCaret(this); updPreview(title); doMonitor();" onclick="storeCaret(this);" onselect="storeCaret(this);"
+                       name="title"
+                       tabindex="10"
+                       size="60" 
+                       maxlength="160" 
+                       value="<%contents(title)%>" />
+       </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" onkeyup="storeCaret(this); updPreview(body); doMonitor();" onclick="storeCaret(this);" onselect="storeCaret(this);"
+                       name="body"
+                       tabindex="20"
+                       cols="60"
+                       rows="20"><%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><tr>
+
+<%if(blogsetting, bcomments)%>
+               <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><tr>                               
+<%endif%>
+
+       <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 id="inputyear" name="year" tabindex="71" size="4" value="<%currenttime(year)%>" onchange="document.forms[0].act_future.checked=true;" /><%text(_ITEM_ADDEDITTEMPLATE_YEAR)%>
+                       <input id="inputmonth" name="month" tabindex="72" size="2" value="<%currenttime(mon)%>" onchange="document.forms[0].act_future.checked=true;" /><%text(_ITEM_ADDEDITTEMPLATE_MONTH)%>
+                       <input id="inputday" name="day" tabindex="73" size="2" value="<%currenttime(mday)%>" onchange="document.forms[0].act_future.checked=true;" /><%text(_ITEM_ADDEDITTEMPLATE_DAY)%>
+                       
+                       <input id="inputhour" name="hour" tabindex="74" size="2" value="<%currenttime(hours)%>" onchange="document.forms[0].act_future.checked=true;" /><%text(_ITEM_ADDEDITTEMPLATE_HOUR)%>
+                       <input id="inputminutes" name="minutes" tabindex="75" size="2" value="<%currenttime(minutes)%>" onchange="document.forms[0].act_future.checked=true;" /><%text(_ITEM_ADDEDITTEMPLATE_MINUTE)%>
+                               <br /><%text(_ITEM_ADDEDITTEMPLATE_FORMAT)%>(yyyy)<%text(_ITEM_ADDEDITTEMPLATE_YEAR)%>(mm)<%text(_ITEM_ADDEDITTEMPLATE_MONTH)%>(dd)<%text(_ITEM_ADDEDITTEMPLATE_DAY)%> (hh)<%text(_ITEM_ADDEDITTEMPLATE_HOUR)%>(mm)<%text(_ITEM_ADDEDITTEMPLATE_MINUTE)%>
+                       <%if(blogsetting, ballowpast,0)%>
+                               <br />
+                               <%text(_ADD_NOPASTDATES)%>
+                       <%endif%>
+               </div>
+               <input name="actiontype" value="adddraft" type="radio" checked='checked' id="act_draft" tabindex="61" /><label for="act_draft"><%text(_EDIT_BACKTODRAFTS)%></label> <%helplink(draft)%>
+               <br />
+               <input name="actiontype" value="delete" type="radio" id="act_delete" tabindex="61" /><label for="act_delete"><%text(_BMLET_DELETE)%></label>
+<%endif%>
+
+<%if(itemproperty, draft,0)%>
+       <br /><br />
+       <input name="actiontype" value="edit" type="radio" checked="checked" id="act_edit" tabindex="61" /><label for="act_edit"><%text(_BMLET_EDIT)%></label>
+       <%if(blogsetting, ballowpast)%>
+               <br />
+               <input name="actiontype" value="changedate" type="radio" id="act_changedate" tabindex="70" /><label for="act_changedate"><%text(_ADD_CHANGEDATE)%></label> <%helplink(changedate)%>
+                       <div class="indent">
+                               <input id="inputyear" name="year" tabindex="71" size="4" value="<%itemtime(year)%>" onchange="document.forms[0].act_changedate.checked=true;" /><%text(_ITEM_ADDEDITTEMPLATE_YEAR)%>
+                               <input id="inputmonth" name="month" tabindex="72" size="2" value="<%itemtime(mon)%>" onchange="document.forms[0].act_changedate.checked=true;" /><%text(_ITEM_ADDEDITTEMPLATE_MONTH)%>
+                               <input id="inputday" name="day" tabindex="73" size="2" value="<%itemtime(mday)%>" onchange="document.forms[0].act_changedate.checked=true;" /><%text(_ITEM_ADDEDITTEMPLATE_DAY)%>
+                                
+                               <input id="inputhour" name="hour" tabindex="74" size="2" value="<%itemtime(hours)%>" onchange="document.forms[0].act_changedate.checked=true;" /><%text(_ITEM_ADDEDITTEMPLATE_HOUR)%>
+                               <input id="inputminutes" name="minutes" tabindex="75" size="2" value="<%itemtime(minutes)%>" onchange="document.forms[0].act_changedate.checked=true;" /><%text(_ITEM_ADDEDITTEMPLATE_MINUTE)%>
+                               <br /><%text(_ITEM_ADDEDITTEMPLATE_FORMAT)%>(yyyy)<%text(_ITEM_ADDEDITTEMPLATE_YEAR)%>(mm)<%text(_ITEM_ADDEDITTEMPLATE_MONTH)%>(dd)<%text(_ITEM_ADDEDITTEMPLATE_DAY)%> (hh)<%text(_ITEM_ADDEDITTEMPLATE_HOUR)%>(mm)<%text(_ITEM_ADDEDITTEMPLATE_MINUTE)%>
+                       </div>
+       <%endif%>       
+       <input name="actiontype" value="backtodrafts" type="radio" id="act_backtodrafts" tabindex="71" /><label for="act_backtodrafts"><%text(_BMLET_BACKTODRAFTS)%></label> <%helplink(draft)%>
+       <br />
+       <input name="actiontype" value="delete" type="radio" id="act_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>
+                       <%itemoptions%> 
+<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" onkeyup="storeCaret(this); updPreview(more); doMonitor();" onclick="storeCaret(this);" onselect="storeCaret(this);"
+                       name="more"
+                       tabindex="90"
+                       cols="60" 
+                       rows="20"><%contents(more)%></textarea>
+       </td>
+</tr><tr>
+               <td><%text(_SUBMIT)%></td>
+               <td>
+                       <input tabindex="60" type="submit" value="<%text(_EDIT_SUBMIT)%>" 
+                               onclick="return checkSubmit();" />
+                       <%if(autosave)%><input tabindex="80" type="button" name="autosavenow" value="<%text(_AUTOSAVEDRAFT_NOW)%>"
+                               onclick="autoSaveDraft();" /><%endif%>
+               </td>
+       
+</tr></table>
+
+</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'); // 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%>]]></part>
+    <part name="itemlist"><![CDATA[<p><a href="<%adminurl%>index.php?action=overview">(<%text(_BACKHOME)%>)</a></p>
+        <h2><%text(_ITEMLIST_BLOG)%><%adminbloglink(admin/default)%></h2>
+        <%ilistaddnew%>
+        <%itemnavlist(admin/default)%>]]></part>
+    <part name="itemmove"><![CDATA[<h2><%text(_MOVE_TITLE)%></h2>
+            <form method="post" action="<%adminurl%>index.php"><div>
+                <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();" />
+            </div></form>]]></part>
+    <part name="manage"><![CDATA[<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>]]></part>
+    <part name="manageteam"><![CDATA[<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'>
+            <div>
+                <input type='hidden' name='action' value='teamaddmember' />
+                <input type='hidden' name='blogid' value='<%requestblogid%>' />
+
+
+                <%ticket%>
+                <table>
+                    <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>
+            </div>
+        </form>]]></part>
+    <part name="memberdelete"><![CDATA[<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">
+                <div>
+                    <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)%>" />
+                </div>
+            </form>]]></part>
+    <part name="overview"><![CDATA[<%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>]]></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%>
+                    <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(admin/default)%>
+                    <%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>]]></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="ja-JP" lang="ja-JP">
+    <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_jp.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><%newestcompare%><%else%><%version%><%codename%><%endif%>)
+                    </div>]]></part>
+    <part name="plugindelete"><![CDATA[            <h2><%text(_DELETE_CONFIRM)%></h2>
+
+            <p><%text(_CONFIRMTXT_PLUGIN)%> <strong><%editpluginfo(name)%></strong>?</p>
+            <form method="post" action="<%adminurl%>index.php"><div>
+            <%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)%>" />
+            </div></form>
+]]></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[        <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">
+            <div>
+                <input type="hidden" name="action" value="pluginupdate" />
+                <%ticket%>
+                <input type="submit" value="<%text(_PLUGS_BTN_UPDATE)%>" tabindex="20" />
+            </div>
+        </form>
+        <h3><%text(_PLUGS_TITLE_NEW)%></h3>
+        <%if(existsnewplugin)%><p><%text(_PLUGS_ADD_TEXT)%></p>
+        <form method='post' action='index.php'>
+
+            <div>
+                <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)%>' />
+            </div></form><%else%><p><%text(_PLUGS_NOCANDIDATES)%></p><%endif%>]]></part>
+    <part name="pluginoptions"><![CDATA[<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">
+
+                <div>
+                    <input type="hidden" name="action" value="pluginoptionsupdate" />
+                    <input type="hidden" name="plugid" value="<%editpluginfo(id)%>" />
+                    <%ticket%>
+                    <%editplugoptionslist%>
+                </div>
+            </form>]]></part>
+    <part name="settingsedit"><![CDATA[<p><a href="<%adminurl%>index.php?action=manage">(<%text(_BACKTOMANAGE)%>)</a></p>
+        <h2><%text(_SETTINGS_TITLE)%></h2>
+        <form action="<%adminurl%>index.php" method="post">
+            <div>
+                <input type="hidden" name="action" value="settingsupdate" />
+                <%ticket%>
+                <table>
+                    <tr>
+                        <th colspan="2"><%text(_SETTINGS_SUB_GENERAL)%></th>
+                    </tr><tr>
+                        <td><%text(_SETTINGS_DEFBLOG)%> <%helplink(defaultblog)%></td>
+                        <td><%defblogselect%></td>
+                    </tr><tr>
+                        <td><%text(_SETTINGS_BASESKIN)%> <%helplink(baseskin)%></td>
+                        <td><%defskinselect(global)%></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_LANGUAGE)%> <%helplink(language)%></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_ADMINCSS)%></td>
+                        <td><select name="AdminCSS" tabindex="10080"><%adminstyleselectoptions%></select></td>
+                    </tr><tr>
+                        <th colspan="2"><%text(_SETTINGS_MEDIA)%> <%helplink(media)%></th>
+                    </tr><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="10080" size="40" value="<%configsettingsedit(MediaURL)%>" /></td>
+                    </tr><tr>
+                        <td><%text(_SETTINGS_ALLOWUPLOAD)%></td>
+                        <td><%configsettingsyesno(AllowUpload, 10090)%></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><tr>
+                        <th colspan="2"><%text(_SETTINGS_MEMBERS)%></th>
+                    </tr><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><tr>
+                        <th colspan="2"><%text(_SETTINGS_COOKIES_TITLE)%> <%helplink(cookies)%></th>
+                    </tr><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><tr>
+                        <th colspan="2"><%text(_SETTINGS_UPDATE)%></th>
+                    </tr><tr>
+                        <td><%text(_SETTINGS_UPDATE)%></td>
+                        <td><input type="submit" tabindex="10210" value="<%text(_SETTINGS_UPDATE_BTN)%>" onclick="return checkSubmit();" /></td>
+                    </tr>
+                </table>
+            </div>
+        </form>
+        <h2><%text(_PLUGINS_EXTRA)%></h2>
+        <%pluginextras%>]]></part>
+    <part name="showlogin"><![CDATA[<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.html"><%text(_LOGIN_FORGOT)%></a>
+            </small>
+            <%passrequestvars%>
+        </p></form>]]></part>
+    <part name="skindelete"><![CDATA[<h2><%text(_DELETE_CONFIRM)%></h2>
+            <p><%text(_CONFIRMTXT_SKIN)%><b><%editskintype(name)%></b> (<%editskintype(desc)%>)</p>
+            <form method="post" action="<%adminurl%>index.php">
+                <div>
+                    <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)%>" />
+                </div>
+            </form>]]></part>
+    <part name="skinedit"><![CDATA[<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)%>
+        <ul>
+            <li><a tabindex="10" href="<%adminurl%>index.php?action=skinedittype&amp;skinid=<%editskin(id)%>&amp;type=index"><%text(_SKIN_PART_MAIN)%></a> <%helplink(skinpartindex)%></li>
+            <li><a tabindex="20" href="<%adminurl%>index.php?action=skinedittype&amp;skinid=<%editskin(id)%>&amp;type=item"><%text(_SKIN_PART_ITEM)%></a> <%helplink(skinpartitem)%></li>
+            <li><a tabindex="30" href="<%adminurl%>index.php?action=skinedittype&amp;skinid=<%editskin(id)%>&amp;type=archivelist"><%text(_SKIN_PART_ALIST)%></a> <%helplink(skinpartarchivelist)%></li>
+            <li><a tabindex="40" href="<%adminurl%>index.php?action=skinedittype&amp;skinid=<%editskin(id)%>&amp;type=archive"><%text(_SKIN_PART_ARCHIVE)%></a> <%helplink(skinpartarchive)%></li>
+            <li><a tabindex="50" href="<%adminurl%>index.php?action=skinedittype&amp;skinid=<%editskin(id)%>&amp;type=search"><%text(_SKIN_PART_SEARCH)%></a> <%helplink(skinpartsearch)%></li>
+            <li><a tabindex="60" href="<%adminurl%>index.php?action=skinedittype&amp;skinid=<%editskin(id)%>&amp;type=error"><%text(_SKIN_PART_ERROR)%></a> <%helplink(skinparterror)%></li>
+            <li><a tabindex="70" href="<%adminurl%>index.php?action=skinedittype&amp;skinid=<%editskin(id)%>&amp;type=member"><%text(_SKIN_PART_MEMBER)%></a> <%helplink(skinpartmember)%></li>
+            <li><a tabindex="75" href="<%adminurl%>index.php?action=skinedittype&amp;skinid=<%editskin(id)%>&amp;type=imagepopup"><%text(_SKIN_PART_POPUP)%></a> <%helplink(skinpartimagepopup)%></li>
+        </ul>
+        <h3><%text(_SKIN_PARTS_SPECIAL)%></h3>
+        <form method="get" action="<%adminurl%>index.php">
+            <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();" />
+        </form>
+        <%specialskinlist(admin/default)%>
+        <h3><%text(_SKIN_GENSETTINGS_TITLE)%></h3>
+        <form method="post" action="<%adminurl%>index.php">
+            <div>
+                <input type="hidden" name="action" value="skineditgeneral" />
+                <%ticket%>
+                <input type="hidden" name="skinid" value="<%editskin(id)%>" />
+                <table>
+                    <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>
+            </div>
+        </form>]]></part>
+    <part name="skinedittype"><![CDATA[<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">
+            <div>
+                <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)%>
+                <%skineditallowedlist(template)%><br />
+            </div>
+        </form>]]></part>
+    <part name="skiniedoimport"><![CDATA[<p><a href="<%adminurl%>index.php?action=manage">(<%text(_BACKTOMANAGE)%>)</a></p>
+        <h2><%text(_SKINIE_DONE)%></h2>
+
+        <ul>
+            <li><p><strong><%text(_SKINIE_INFO_GENERAL)%></strong> <%importskininfo(info)%></p></li>
+            <li><p><strong><%text(_SKINIE_INFO_IMPORTEDSKINS)%></strong> <%importskininfo(snames)%></p></li>
+            <li><p><strong><%text(_SKINIE_INFO_IMPORTEDTEMPLS)%></strong> <%importskininfo(tnames)%></p></li>
+        </ul>]]></part>
+    <part name="skinieimport"><![CDATA[<p><a href="<%adminurl%>index.php?action=skinieoverview">(<%text(_BACK)%>)</a></p>
+        <h2><%text(_SKINIE_CONFIRM_TITLE)%></h2>
+        <ul>
+            <li><p><strong><%text(_SKINIE_INFO_GENERAL)%></strong> <%importskininfo(info)%></p></li>
+            <li><p><strong><%text(_SKINIE_INFO_SKINS)%></strong> <%importskininfo(snames)%></p></li>
+            <li><p><strong><%text(_SKINIE_INFO_TEMPLATES)%></strong> <%importskininfo(tnames)%></p></li>
+            <%if(nameclashes)%><li><p><strong style="color: red;"><%text(_SKINIE_INFO_SKINCLASH)%></strong> <%importskininfo(sclashes)%></p></li>
+            <li><p><strong style="color: red;"><%text(_SKINIE_INFO_TEMPLCLASH)%></strong> <%importskininfo(tclashes)%></p></li><%endif%>
+        </ul>
+
+        <form method="post" action="<%adminurl%>index.php"><div>
+            <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%>
+        </div></form>]]></part>
+    <part name="skinieoverview"><![CDATA[<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(skincandidates)%><form method="post" action="<%adminurl%>index.php">
+                <div>
+                    <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)%>" />
+                </div>
+            </form><%else%><%text(_SKINIE_NOCANDIDATES)%><%endif%>
+        </p>
+        <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">
+            <div>
+                <input type="hidden" name="action" value="skinieexport" />
+                <%ticket%>
+                <p><%text(_SKINIE_EXPORT_INTRO)%></p>
+                <table>
+                    <tr>
+                        <th colspan="2"><%text(_SKINIE_EXPORT_SKINS)%></th>
+                    </tr><tr>
+                        <%skinielist(skin,admin/default)%>
+                        <th colspan="2"><%text(_SKINIE_EXPORT_TEMPLATES)%></th>
+                    </tr><tr>
+                        <%skinielist(template,admin/default)%>
+                        <th colspan="2"><%text(_SKINIE_EXPORT_EXTRA)%></th>
+                    </tr><tr>
+                        <td colspan="2"><textarea cols="40" rows="5" name="info"></textarea></td>
+                    </tr><tr>
+                        <th colspan="2"><%text(_SKINIE_TITLE_EXPORT)%></th>
+                    </tr><tr>
+                        <td colspan="2"><input type="submit" value="<%text(_SKINIE_BTN_EXPORT)%>" /></td>
+                    </tr>
+                </table>
+            </div>
+        </form>]]></part>
+    <part name="skinoverview"><![CDATA[<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%>
+        <h3><%text(_SKIN_NEW_TITLE)%></h3>
+        <form method="post" action="<%adminurl%>index.php">
+            <div>
+                <input name="action" value="skinnew" type="hidden" />
+
+                <%ticket%>
+                <table>
+                    <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>
+            </div>
+        </form>]]></part>
+    <part name="skinremovetype"><![CDATA[<h2><%text(_DELETE_CONFIRM)%></h2>
+            <p><%text(_CONFIRMTXT_SKIN_PARTS_SPECIAL)%><b><%editskintype(skintype)%> (<%editskintype(name)%>)</b> (<%editskintype(desc)%>)</p>
+            <form method="post" action="<%adminurl%>index.php">
+                <div>
+                    <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)%>" />
+                </div>
+            </form>]]></part>
+    <part name="systemoverview"><![CDATA[        <h2><%text(_ADMIN_SYSTEMOVERVIEW_HEADING)%></h2>
+<%if(superadmin)%>
+        <h3><%text(_ADMIN_SYSTEMOVERVIEW_PHPANDMYSQL)%></h3>
+        <table summary="Version of PHP MySQL">
+            <tr>
+                <th colspan="2"><%text(_ADMIN_SYSTEMOVERVIEW_VERSIONS)%></th>
+            </tr><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>
+        </table>
+        <table summary="Important PHP settings">
+            <tr>
+                <th colspan="2"><%text(_ADMIN_SYSTEMOVERVIEW_SETTINGS)%></th>
+            </tr><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>
+        </table>
+        <table summary="Information about GD library">
+            <tr>
+                <th colspan="2"><%text(_ADMIN_SYSTEMOVERVIEW_GDLIBRALY)%></th>
+            </tr>
+            <%systemsettings(gdinfo)%>
+        </table>
+        <table summary="special modules are loaded">
+            <tr>
+                <th colspan="2"><%text(_ADMIN_SYSTEMOVERVIEW_MODULES)%></th>
+            </tr><tr>
+                <td width="50%">mod_rewrite</td>
+                <td><%systemsettings(modrewrite)%></td>
+            </tr>
+        </table>
+
+        <h3><%text(_ADMIN_SYSTEMOVERVIEW_NUCLEUSSYSTEM)%></h3>
+        <table summary="Information about the used Nucleus CMS">
+            <tr>
+                <th colspan="2">Nucleus CMS</th>
+            </tr><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>
+        </table>
+        <table summary="Important settings of the installation">
+            <tr>
+                <th colspan="2"><%text(_ADMIN_SYSTEMOVERVIEW_NUCLEUSSETTINGS)%></th>
+            </tr><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>
+        </table>
+
+        <h3><%text(_ADMIN_SYSTEMOVERVIEW_VERSIONCHECK)%></h3>
+        <!-- Link to the online version test at the Nucleus CMS website -->
+        <%text(_ADMIN_SYSTEMOVERVIEW_VERSIONCHECK_TXT)%>
+        <a href="<%systemsettings(versioncheckurl)%>" title="<%text(_ADMIN_SYSTEMOVERVIEW_VERSIONCHECK_TITLE)%>">
+            Nucleus CMS <%systemsettings(nucleusversion)%> <%systemsettings(nucleuscodename)%>
+        </a><br />
+<%else%>
+        <%text(_ADMIN_SYSTEMOVERVIEW_NOT_ADMIN)%>
+]]></part>
+    <part name="teamdelete"><![CDATA[<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">
+                <div>
+                <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)%>" />
+            </div></form>]]></part>
+    <part name="templatedelete"><![CDATA[<h2><%text(_DELETE_CONFIRM)%></h2>
+            <p><%text(_CONFIRMTXT_TEMPLATE)%><b><%edittemplateinfo(name)%></b> (<%edittemplateinfo(desc)%>)</p>
+            <form method="post" action="<%adminurl%>index.php">
+                <div>
+                    <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)%>" />
+                </div>
+            </form>]]></part>
+    <part name="templateedit"><![CDATA[<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">
+            <div>
+                <input type="hidden" name="action" value="templateupdate" />
+                <%ticket%>
+                <input type="hidden" name="templateid" value="<%edittemplateinfo(id)%>" />
+                <table>
+                    <tr>
+                        <th colspan="2"><%text(_TEMPLATE_SETTINGS)%></th>
+                    </tr><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>
+                        <th colspan="2"><%text(_TEMPLATE_UPDATE)%></th>
+                    </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><tr>
+                        <th colspan="2"><%text(_TEMPLATE_ITEMS)%> <%helplink(templateitems)%></th>
+                    <%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)%>
+                    </tr><tr>
+                        <th colspan="2"><%text(_TEMPLATE_COMMENTS_ANY)%> <%helplink(templatecomments)%></th>
+                    <%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)%>
+                    </tr><tr>
+                        <th colspan="2"><%text(_TEMPLATE_COMMENTS_NONE)%> <%helplink(templatecomments)%></th>
+                    <%edittemplateinfo(row,_TEMPLATE_CNONE, COMMENTS_NONE, , 110)%>
+                    </tr><tr>
+                        <th colspan="2"><%text(_TEMPLATE_COMMENTS_TOOMUCH)%> <%helplink(templatecomments)%></th>
+                    <%edittemplateinfo(row,_TEMPLATE_CTOOMUCH, COMMENTS_TOOMUCH, , 120)%>
+                    </tr><tr>
+                        <th colspan="2"><%text(_TEMPLATE_ARCHIVELIST)%> <%helplink(templatearchivelists)%></th>
+                    <%edittemplateinfo(row,_TEMPLATE_AHEADER, ARCHIVELIST_HEADER, , 130)%>
+                    <%edittemplateinfo(row,_TEMPLATE_AITEM, ARCHIVELIST_LISTITEM, , 140)%>
+                    <%edittemplateinfo(row,_TEMPLATE_AFOOTER, ARCHIVELIST_FOOTER, , 150)%>
+                    </tr><tr>
+                        <th colspan="2"><%text(_TEMPLATE_BLOGLIST)%> <%helplink(templatebloglists)%></th>
+                    <%edittemplateinfo(row,_TEMPLATE_BLOGHEADER, BLOGLIST_HEADER, , 160)%>
+                    <%edittemplateinfo(row,_TEMPLATE_BLOGITEM, BLOGLIST_LISTITEM, , 170)%>
+                    <%edittemplateinfo(row,_TEMPLATE_BLOGFOOTER, BLOGLIST_FOOTER, , 180)%>
+                    </tr><tr>
+                        <th colspan="2"><%text(_TEMPLATE_CATEGORYLIST)%> <%helplink(templatecategorylists)%></th>
+                    <%edittemplateinfo(row,_TEMPLATE_CATHEADER, CATLIST_HEADER, , 190)%>
+                    <%edittemplateinfo(row,_TEMPLATE_CATITEM, CATLIST_LISTITEM, , 200)%>
+                    <%edittemplateinfo(row,_TEMPLATE_CATFOOTER, CATLIST_FOOTER, , 210)%>
+                    </tr><tr>
+                        <th colspan="2"><%text(_TEMPLATE_DATETIME)%></th>
+                    <%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)%>
+                    <%edittemplateinfo(row,_TEMPLATE_LOCALE, LOCALE, locale, 260)%>
+                    </tr><tr>
+                        <th colspan="2"><%text(_TEMPLATE_IMAGE)%> <%helplink(templatepopups)%></th>
+                    <%edittemplateinfo(row,_TEMPLATE_PCODE, POPUP_CODE, , 270)%>
+                    <%edittemplateinfo(row,_TEMPLATE_ICODE, IMAGE_CODE, , 280)%>
+                    <%edittemplateinfo(row,_TEMPLATE_MCODE, MEDIA_CODE, , 290)%>
+                    </tr><tr>
+                        <th colspan="2"><%text(_TEMPLATE_SEARCH)%></th>
+                    <%edittemplateinfo(row,_TEMPLATE_SHIGHLIGHT, SEARCH_HIGHLIGHT, highlight,300)%>
+                    <%edittemplateinfo(row,_TEMPLATE_SNOTFOUND, SEARCH_NOTHINGFOUND, nothingfound,310)%>
+                    </tr><tr>
+                        <th colspan="2"><%text(_TEMPLATE_PLUGIN_FIELDS)%></th>
+                    <%edittemplateinfo(extratemplate,admin/default)%>
+                    </tr><tr>
+                        <th colspan="2"><%text(_TEMPLATE_UPDATE)%></th>
+                    </tr><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>
+                </table>
+            </div>
+        </form>]]></part>
+    <part name="templateoverview"><![CDATA[<p><a href="<%adminurl%>index.php?action=manage">(<%text(_BACKTOMANAGE)%>)</a></p>
+        <h2><%text(_TEMPLATE_TITLE)%></h2>
+        <h3><%text(_TEMPLATE_AVAILABLE_TITLE)%></h3>
+        <%templateoverview%>
+        <h3><%text(_TEMPLATE_NEW_TITLE)%></h3>
+        <form method="post" action="<%adminurl%>index.php">
+            <div>
+                <input name="action" value="templatenew" type="hidden" />
+                <%ticket%>
+                <table>
+                    <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>
+            </div>
+        </form>]]></part>
+    <part name="usermanagement"><![CDATA[<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">
+                <div>
+                    <input type="hidden" name="action" value="memberadd" />
+                    <%ticket%>
+                    <table><tr>
+                        <th colspan="2"><%text(_MEMBERS_NEW)%></th>
+                    </tr><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></table>
+                </div>
+            </form>]]></part>
+  </skin>
+  <template name="admin/default">
+    <description><![CDATA[デフォルト管理画面用テンプレート]]></description>
+    <part name="PLUGIN_QUICKMENU_TITLE"><![CDATA[<h2><%text(_QMENU_PLUGINS)%></h2>
+]]></part>
+    <part name="PLUGIN_QUICKMENU_HEAD"><![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="<%adminurl%>index.php?action=skinedit&amp;skinid=<%skinid%>" 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="<%adminurl%>index.php?action=skindelete&amp;skinid=<%skinid%>" 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="<%adminurl%>index.php?action=templateedit&amp;templateid=<%templateid%>" 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="<%adminurl%>index.php?action=templatedelete&amp;templateid=<%templateid%>" 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>
+<th colspan="2"><%savetext%></th>
+</tr><tr>\n<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 />
+<%camount%>
+<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>
+</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>
+<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[<td><input type="checkbox" name="<%typeid%>"  id="<%expid%>" /><label for="<%expid%>"><%expname%></label></td>
+<td><%expdesc%></td>
+</tr><tr>
+]]></part>
+    <part name="SHOWLIST_LISTPLUG_SELECT_HEAD"><![CDATA[<select<%name%><%tabindex%><%javascript%>>\n<%extraoption%>
+]]></part>
+    <part name="SHOWLIST_LISTPLUG_SELECT_BODY"><![CDATA[<option value="<%value%>"<%selected%><%title%>><%option%></option>
+]]></part>
+    <part name="ADMIN_SPECIALSKINLIST_HEAD"><![CDATA[<ul>
+]]></part>
+    <part name="ADMIN_SPECIALSKINLIST_BODY"><![CDATA[<li><a tabindex="<%tabindex%>" href="<%adminurl%>index.php?action=adminskinedittype&skinid=<%skinid%>&type=<%skintype%>"><%skintype%></a> (<a tabindex="<%tabindex%>" href="<%adminurl%>index.php?action=adminskinremovetype&skinid=<%skinid%>&type=<%skintype%>">remove</a>)</li>
+]]></part>
+    <part name="ADMIN_SPECIALSKINLIST_FOOT"><![CDATA[</ul>]]></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_FOOT"><![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_HEAD"><![CDATA[<ul>
+]]></part>
+    <part name="TEMPLATE_EDIT_ROW_TAIL"><![CDATA[</textarea>
+    </td>
+]]></part>
+    <part name="TEMPLATE_EDIT_EXPLUGNAME"><![CDATA[</tr><tr>
+    <th colspan="2"><%explugtplname%></th>
+]]></part>
+    <part name="TEMPLATE_EDIT_ROW_HEAD"><![CDATA[</tr><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="ADMIN_BATCHLIST"><![CDATA[<li><%text(_BATCH_EXECUTING)%<b><%adminbatchaction%></b><%batchlisttype%> <b><%batchid%></b>...<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="ADMINSKINTYPELIST_FOOT"><![CDATA[        </ul>
+]]></part>
+    <part name="ADMIN_CUSTOMHELPLINK_ICON"><![CDATA[<img src="<%iconurl%>" <%width%><%height%>alt="<%alt%>" title="<%title%>" /></a>]]></part>
+    <part name="ADMINSKINTYPELIST_BODY"><![CDATA[<li><a tabindex="<%tabindex%>" href="<%adminurl%>index.php?action=adminskinedittype&skinid=<%skinid%>&type=<%skintype%>"><%name%></a> <%help%></li>
+]]></part>
+    <part name="ADMINSKINTYPELIST_HEAD"><![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>
+  </template>
+</nucleusskin>
diff --git a/skins/admin/default/styles/addedit.css b/skins/admin/default/styles/addedit.css
new file mode 100644 (file)
index 0000000..f8749f1
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+       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 {
+       padding: 3px;
+       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;
+}
+
+.jsbuttonend {
+       clear: both;
+}
diff --git a/skins/admin/default/styles/admin_contemporary.css b/skins/admin/default/styles/admin_contemporary.css
new file mode 100644 (file)
index 0000000..a21dd3e
--- /dev/null
@@ -0,0 +1,387 @@
+/*@charset 'UTF-8';*/
+
+/*
+       admin area style
+       
+       $Id: admin.css 1261 2008-05-22 20:32:43Z kaigreve $
+*/
+
+body {
+       background: #fff url(contemporary/background.png) repeat-x;
+}
+
+body, td, th, a, li, ul, textarea {
+       color: #333
+       font-family: "Trebuchet MS", "Bitstream Vera Sans", verdana, lucida, arial, helvetica, sans-serif;
+}
+
+/* basic link appearance */
+a:link, a:visited {
+       color: #1D3565;
+       font-weight: bold;
+       text-decoration: none;
+}
+
+a:hover {
+       text-decoration: underline;
+}
+
+/* textareas */
+textarea {
+       font-size: small;
+       width: 95%;
+}
+
+/* textareas for skin/template editing have monospace fonts */
+textarea.skinedit, textarea.templateedit {
+       font-family: monospace;
+       font-size: medium;
+}
+
+/* images */
+img    {
+       border: none;
+}
+
+img.skinpreview {
+       border: 1px solid #ccc;
+}
+
+/* forms */
+form {
+       margin-bottom: 0px;
+}
+
+label {
+       cursor: pointer;
+}
+
+input.transparent {
+       background-color: transparent;
+}
+
+/* preformatted text */
+pre {
+       margin-left: 10px;
+}
+
+/* a div that has an indent */
+div.indent {
+       margin-left: 40px;
+}
+
+.skip {
+       display: none;
+}
+
+.error {
+       color: red;
+       font-size: 1.2em;
+}
+
+/* header */
+h1 {
+       text-align: right;
+       font-size: 30px;
+       font-weight: 900;
+       letter-spacing: 0.1em;
+       /*color: #0001AA;       */
+       color: #596d9d;
+       margin: 0 0 5px 135px;
+       height: 35px;
+       /*display: none;        hide the header if you don't want it*/
+
+}
+
+/* quick menu on left */
+/* 
+       It's a real pain getting this absolute positioning to work correctly
+       in all browsers. IE in particular seems to have a lot of trouble, even
+       when a valid doctype is present. Because of the way it is solved currently,
+       the top of the quickmenu and the contents will not line up
+*/
+#quickmenu {
+       position: absolute;
+       overflow: hidden;
+       
+       top: 10px;
+       left: 10px;
+
+       width: 150px;
+       margin: 0px;
+       padding: 0px;
+       
+       font-size:9pt;/*add yotaka 090323*/
+       color:#333;/* add */
+       
+       border-width: 1px;
+       border-style: solid;
+       border-color: #bbb;
+
+       background: #ffffff url(quickb.jpg) top left fixed repeat-y; 
+}
+
+#quickmenu ul {
+       list-style-type: none;
+       margin: 0;
+       padding: 0;
+}
+
+#quickmenu li {
+       padding: 0;
+       margin: 0;
+       text-align: center;
+       border-bottom: 1px solid #ccc;
+}
+
+#quickmenu p {
+       padding: 5px;
+       margin: 0px;
+       text-align: justify;
+}
+
+#quickmenu a {
+       display: block;
+       padding: 5px;
+       font-size: 1em;
+       line-height: 1.5;
+       text-decoration: none;
+}
+
+#quickmenu a:hover {
+       background: #ffffff url(quickb-hover.jpg) top left fixed repeat-y; 
+       color: #333;
+       letter-spacing: 1px;
+}
+
+#quickmenu h2 {
+       font-size: small;
+       text-align: center;
+       padding: 1px 0px 1px 0px;
+       margin: 0px;
+       border-bottom: 1px solid #bbb;  
+       background-color: #ddd;
+       color: #333;
+}
+
+#quickmenu form {
+       margin: 0;
+       padding: 5px;
+       text-align: center;
+}
+
+#quickmenu option {
+       font-size: 0.9em;
+}
+
+.loginname {
+       float: right;
+       font-size: small;
+       text-align: right;
+       line-height: normal;
+       padding-left: 5px;
+       background-color: white;
+}
+
+/* page content */
+#content {
+       margin-left: 163px;
+       font-style: normal;
+       text-decoration: none;
+       color: #333;
+       text-align: justify;
+       line-height: 13pt;
+
+       border-width: 1px;
+       border-style: solid;
+       border-color: #bbb;
+       
+       /* rounded borders in gecko-based browsers? why not :) */
+       -moz-border-radius: 10px;       
+
+       -webkit-border-radius: 10px;
+       border-radius: 10px;
+       padding: 10px 10px 0 10px;      
+       
+       background-color: white;
+       
+}
+
+#content h2 {
+       color: #596d9d; 
+
+       border-color: gray;
+       border-style: dashed;
+       border-width: 0px 0px 1px 0px;
+
+       font-size: large;
+       line-height: 120%;
+
+       text-decoration: none;
+       font-weight: bold; 
+}
+
+#content h3 {
+       border-color: gray;
+       border-style: dotted;
+       border-width: 0px 0px 1px 0px;
+       font-size: medium;
+       font-weight: normal;
+       line-height: 120%;
+
+       color: gray;
+       padding-left: 20px;
+}
+
+#content .note, pre {
+       background-color: #ddd;
+       padding: 5px;
+}
+
+/* 
+       font size tricks, to make it work in all browsers
+       
+       See: 
+       http://diveintoaccessibility.org/day_26_using_relative_font_sizes.html
+
+       (netscape 4 trick is left out, Nucleus doesn't work anyway in that browser)     
+       #content should be 'small' (in standard-compliant browsers)
+       
+*/
+
+#content {
+  font-size: small;
+  voice-family: "\"}\"";
+  voice-family: inherit;
+  font-size: small;
+}
+html>body #content { font-size: small; }
+
+/* tables */
+div#content table {
+       border: none;
+       width: 100%;
+       border-collapse: collapse;
+       margin-bottom: 10px;
+       margin-top: 10px;
+}
+
+div#content table tbody tr {
+       background-color: #FFFFFF;
+}
+
+div#content table tbody tr:hover {
+       background-color:       #F5F5F5;
+}
+
+div#content table thead tr th {
+       border: none;
+       background-color: #BBBBCC;
+       color: #000000;
+       font-size: small;
+}
+
+div#content table thead th,
+div#content table tbody td {
+       padding: 4px;
+       empty-cells: show;
+}
+
+div#content table.systemoverview thead th,
+div#content table.systemoverview tbody td {
+       width:  50%;
+}
+
+div#content table tbody tr td {
+       border: 1px solid #ddd;
+       font-size: small;
+       vertical-align: top;
+       text-align: left;
+}
+
+div#content table tbody tr td a:link,
+div#content table tbody tr td a:visited {
+       text-decoration: underline;
+       color: black;
+       font-weight: normal;
+}
+
+div#content table tbody tr td a:hover {
+       color: #1D3565;
+       text-decoration: underline;
+}
+
+div#content table tbody tr td.draft,
+div#content table tbody tr td.future {
+       background-color: #FFFFEE;
+}
+
+div#content table.navigation td,
+div#content table.navigation th {
+       border: none;
+}
+
+div#content table tbody td h3 {
+       padding:        0px;
+       margin: 0px 0px 2em 0px;
+       border: 0px;
+       color:  #000000;
+       font-size:      small;
+       font-weight:    normal;
+       line-height:    13pt;
+}
+
+div#content table tbody td h3#base_skin {
+       font-weight:    bold;
+}
+
+/* definitive list */
+div#content table tbody tr td dl {
+       margin: 0px;
+       padding:        0px;
+}
+
+div#content table tbody tr td:first-child dl dt {
+       margin: 0px;
+       padding:        0px 5px 0px 0px;
+       display:        inline;
+       float:  left;
+       clear:  both;
+}
+
+div#content table tbody tr td:first-child dl dd {
+       margin: 0px;
+       padding:        0px;
+       display:        block;
+}
+
+div#content table tbody tr td dl dd {
+       margin: 0px 0px 1em 0px;
+}
+
+/* unorderd list */
+div#content table tbody tr td ul {
+       margin: 0px;
+       padding:        0px;
+       list-style:     none;
+}
+
+div#content table tbody tr td ul li {
+       margin: 0px;
+       padding:        0px;
+       white-space:    nowrap;
+}
+
+.batchoperations {
+       background-color: #EEEEFF;
+       width: auto;
+       padding: 5px;
+       text-align: right;
+}
+
+/* footer */
+div.foot {
+       padding: 2px 0px 2px 10px;
+       margin:10px -10px 0 -10px;
+       text-align: center;
+}
diff --git a/skins/admin/default/styles/admin_contemporary_jp.css b/skins/admin/default/styles/admin_contemporary_jp.css
new file mode 100644 (file)
index 0000000..62ed968
--- /dev/null
@@ -0,0 +1,458 @@
+@charset 'UTF-8';
+
+/*
+       admin area style
+       
+       $Id$
+       $NucleusJP: admin.css,v 1.6 2006/07/17 20:03:45 kimitake Exp $
+*/
+
+body {
+       background: #ffffff url(contemporary_jp/background.png) repeat-x;
+
+}
+
+body, td, th, a, li, ul, textarea {
+/*     color: #000; modify */
+       color: #333;
+/*     font-family: "Trebuchet MS", "Bitstream Vera Sans", verdana, lucida, arial, helvetica, sans-serif;*/
+/*     font-family: "Hiragino Kaku Gothic Pro W3", "Meiryo", "MS PGothic", "Osaka", "IPA UIGothic", "IPA mona UIGothic", "VL PGothic", "Sazanami Gothic", "DynaLab-dfghsgothic w5-jisx0208.1990-0", "DynaLab-dfggothic w5-iso8859-1", "Trebuchet MS", "Bitstream Vera Sans", verdana, lucida, arial, helvetica, sans-serif; */
+       font-family: "メイリオ", "Meiryo", "ヒラギノ角ゴ Pro W3", "Hiragino Kaku Gothic Pro", "Osaka", "MS Pゴシック", "MS PGothic", "IPA UIGothic", "IPA mona UIGothic", "VL PGothic", "Sazanami Gothic", "DynaLab-dfghsgothic w5-jisx0208.1990-0", "DynaLab-dfggothic w5-iso8859-1", "Trebuchet MS", "Bitstream Vera Sans", verdana, lucida, arial, helvetica, sans-serif;
+}
+
+/* basic link appearance */
+a:link, a:visited {
+       color: #1D3565;
+       font-weight: bold;
+       text-decoration: none;
+}
+
+a:hover {
+       text-decoration: underline;
+}
+
+/* textareas */
+textarea {
+/*  font-size: small;*//*mod yotaka 090323*/
+       font-size: 9pt;/*add yotaka 090323*/
+  
+       line-height:145%;/* add */
+       padding:5px;/* add */
+       
+/*  font-family: "Hiragino Kaku Gothic Pro W3", "MS PGothic", "Osaka", sans-serif;
+}
+
+*>textarea {*/
+  width: 95%;
+}
+
+/* textareas for skin/template editing have monospace fonts */
+textarea.skinedit, textarea.templateedit {
+/*     font-family: "Hiragino Kaku Gothic Pro W3", "MS PGothic", "Osaka", monospace;
+/* except MacIE \*//*
+       font-family: monospace;
+/* end */
+/*     font-size: medium;*//*mod yotaka 090323*/
+       font-size: 9pt;/*add yotaka 090323*/
+}
+
+/* add start */
+textarea#inputbody,textarea#inputmore {
+       width:500px;
+       margin:5px 3px;
+}
+
+textarea.pluginoption {
+       width:420px;
+}
+/* add end */
+
+/* images */
+img {
+       border: none; 
+}
+
+img.skinpreview {
+       border: 1px solid #ccc;
+}
+
+/* forms */
+form {
+       margin-bottom: 0px;
+}
+
+label {
+       cursor: pointer; 
+}
+
+input.transparent {
+       background-color: transparent;
+}
+
+/* preformatted text */
+pre {
+       margin-left: 10px;
+}
+
+/* a div that has an indent */
+div.indent {
+       margin-left: 40px;
+}
+
+.skip {
+       display: none; 
+}
+
+.error {
+       color: red;
+       /*font-size: 1.2em;*//*mod yotaka 090323*/
+       font-size: 14pt; /*add yotaka 090323*/
+}
+
+/* header */
+h1 {
+       text-align: right;
+/*     font-size: 30px;*//*mod yotaka 090323*/
+       font-size:24pt;/*add yotaka 090323*/
+       font-weight: 900;
+       letter-spacing: 0.1em;
+/*     color: #0001AA;*/
+       color: #596d9d;
+       margin: 0 0 5px 135px;
+       height: 35px;
+/*     display: none;  hide the header if you don't want it*/
+
+}
+
+/* quick menu on left */
+/* 
+       It's a real pain getting this absolute positioning to work correctly
+       in all browsers. IE in particular seems to have a lot of trouble, even
+       when a valid doctype is present. Because of the way it is solved currently,
+       the top of the quickmenu and the contents will not line up
+*/
+#quickmenu {
+       position: absolute;
+       overflow: hidden;
+       
+       top: 10px;
+       left: 10px;
+
+       width: 150px;
+       margin: 0px;
+       padding: 0px;
+       
+/*     font-size: 70%;*/
+/*     font-size: small;*//*mod yotaka 090323*/
+       font-size:9pt;/*add yotaka 090323*/
+       color:#333;/* add */
+       
+       border-width: 1px;
+       border-style: solid;
+/*     border-color: black; modify */
+       border-color: #bbb;
+
+       background: #ffffff url(contemporary_jp/quickb.jpg) top left fixed repeat-y; 
+}
+
+#quickmenu ul {
+       list-style-type: none;
+       margin: 0;
+       padding: 0;
+}
+
+#quickmenu li {
+       padding: 0;
+       margin: 0;
+       text-align: center;
+       border-bottom: 1px solid #ccc;
+}
+
+#quickmenu p {
+       padding: 5px;
+       margin: 0px;
+       text-align: justify;
+}
+
+#quickmenu a {
+       display: block;
+       padding: 5px;
+       /*font-size: 1em;*//*mod yotaka 090323*/
+       font-size: 9pt;/*add yotaka 090323*/
+       line-height: 1.5em;
+       text-decoration: none;
+/*     font-family: verdana, lucida, arial, helvetica, sans-serif;
+}
+
+*>#quickmenu a {
+       font-family: "Trebuchet MS", "Bitstream Vera Sans", verdana, lucida, arial, helvetica, sans-serif;
+*/
+}
+
+#quickmenu a:hover {
+       background: #ffffff url(contemporary_jp/quickb-hover.jpg) top left fixed repeat-y; 
+/*     color: #000; modify */
+       color: #333;
+       letter-spacing: 1px;
+       white-space: nowrap; /* add */
+}
+
+#quickmenu h2 {
+       /*font-size: small;*//*mod yotaka 090323*/
+       font-size: 9pt;/*add yotaka 090323*/
+       text-align: center;
+       padding: 1px 0px 1px 0px;
+       margin: 0px;
+       border-bottom: 1px solid #bbb;  
+       background-color: #ddd;
+/*     color: #000; modify */
+       color: #333;
+}
+
+#quickmenu form {
+       margin: 0;
+       padding: 5px;
+       text-align: center;
+}
+
+#quickmenu option {
+/*     font-size: 0.9em;*//*mod yotaka 090323*/
+       font-size: 8pt;/*add yotaka 090323*/
+}
+
+.loginname {
+       float: right;
+/*     font-size: small;*//*mod yotaka 090323*/
+       font-size: 9pt;/*add yotaka 090323*/
+       text-align: right;
+       line-height: normal;
+       padding-left: 5px;
+       background-color: white;
+}
+
+/* page content */
+#content {
+   margin-left:163px;
+       font-style: normal;
+       text-decoration: none;
+/*     color: black; modify */
+       color: #333;
+       text-align: justify;
+       line-height: 13pt;
+
+       border-width: 1px;
+       border-style: solid;
+/*     border-color: black; modify */
+       border-color: #bbb;
+       
+/*     rounded borders in gecko-based browsers? why not :) */
+       -moz-border-radius: 10px;
+
+/*     rounded borders in webkit-based browsers? why not :) */
+       -webkit-border-radius: 10px;
+
+/*     rounded borders in css3-based browsers? why not :) */
+       border-radius: 10px;
+
+       padding: 10px 10px 0 10px;
+
+       background-color: white;
+
+}
+
+#content h2 {
+       color: #596d9d; 
+
+       border-color: gray;
+       border-style: dashed;
+       border-width: 0px 0px 1px 0px;
+
+       /*font-size: large;
+       line-height: 120%;*//*mod yotaka 090323*/
+       font-size: 10pt;/*add yotaka 090323*/
+       line-height: 20px;/*add yotaka 090323*/
+
+       text-decoration: none;
+       font-weight: bold; 
+       letter-spacing: 2px;/* add */
+       margin-top:20px;/*add yotaka 090323*/
+}
+
+#content h3 {
+/*     border-color: gray;
+       border-style: dotted;
+       border-width: 0px 0px 1px 0px; modify */
+
+       border-color: #596d9d;
+       border-style: solid;
+       border-width: 0px 0px 0px 5px;
+
+/*     font-size: medium;*/
+       font-size: 10pt;
+       font-weight: normal;
+       line-height: 120%;
+
+/*     color: gray;
+       padding-left: 20px;
+       letter-spacing: 2; modify */
+
+       color: #596d9d;
+       padding-left: 8px;
+       letter-spacing: 2px;
+       margin-left:5px;/* add */
+}
+
+/* add start */
+#content ul {
+       line-height:1.5em;
+/*     list-style-type:square;*/
+       margin:0 0 0.5em 30px;
+       padding:0;
+       list-style-image:url(contemporary_jp/bullet.gif);
+}
+/* add end */
+
+#content .note, pre {
+       background-color: #ddd;
+       padding: 5px;
+}
+
+#content li a{
+       font-size: 9pt;/*add yotaka 090323*/
+}
+
+/* 
+       font size tricks, to make it work in all browsers
+
+       See:
+       http://diveintoaccessibility.org/day_26_using_relative_font_sizes.html
+
+       (netscape 4 trick is left out, Nucleus doesn't work anyway in that browser)     
+       #content should be 'small' (in standard-compliant browsers)
+
+*/
+
+#content {
+/*     font-size: small;*//*mod yotaka 090323*/
+       font-size: 9pt;/*add yotaka 090323*/
+       voice-family: "\"}\"";
+       voice-family: inherit;
+       /*font-size: small;*//*mod yotaka 090323*/
+       font-size: 9pt;/*add yotaka 090323*/
+}
+html>body #content {
+       /*font-size: small;*//*mod yotaka 090323*/
+       font-size: 9pt;/*add yotaka 090323*/
+}
+
+/* tables */
+table {
+       border: none;
+       width: 100%;
+       border-collapse: collapse;
+       margin-bottom: 10px;
+       margin-top: 10px;       
+}
+
+th {
+/*     background-color: #bbc; modify */
+       background-color: #ddd;
+/*     color: #000; modify */
+       color: #333;
+       /*font-size: small;*//*mod yotaka 090323*/
+       font-size: 9pt;/*add yotaka 090323*/
+       letter-spacing:1px;/* add */
+}
+
+th, td {
+       padding: 4px;
+       empty-cells: show;      
+       border: 1px solid #ddd; /* add */
+}
+
+td {
+       background-color: #fff;
+/*     border: 1px solid #ddd;*/
+/*     font-size: small;*//*mod yotaka 090323*/
+       font-size: 9pt;/*add yotaka 090323*/
+       vertical-align: top;
+       text-align: left;
+}
+
+td a:link, td a:visited { 
+       text-decoration: underline;
+/*     color: black; modify */
+       color: #333;
+       font-weight: normal;
+}
+
+td a:hover {
+       color: #1D3565;
+       text-decoration: underline;
+}
+td.draft {
+       background-color: #ffe;
+}
+td.future {
+       background-color: #fff7f1;
+}
+tr.highlighted td {
+       background-color: green;
+}
+
+table.navigation td, table.navigation th {
+       border: none;
+}
+
+.batchoperations {
+       background-color: #ebebf2;
+       width: auto;
+       padding: 5px;
+       text-align: right;
+}
+
+/* plugin list */
+#content table ul.list_comment_info,
+#content table ul.list_item_info,
+#content table ul.list_item_action,
+#content table ul.plugin_info,
+#content table ul.pluginlist_actions {
+       list-style-type: none;
+       list-style-image: none;
+       margin: 0 0 0.5em 5px;
+       line-height:1.1em;
+}
+
+.plugin_name {
+       font-weight: bold;
+}
+
+.plugin_desc h4 {
+       margin: 0;
+}
+
+.plugin_desc p {
+       margin-top: 0;
+}
+
+/* item list */
+#content table label.list_item_title {
+/*     font-size: 1.1em;*//*mod yotaka 090323*/
+       font-size: 10pt;/*mod yotaka 090323*/
+       font-weight: bold;
+}
+
+.list_item_info_th {
+       width: 130px;
+}
+
+/* footer */
+.foot {
+       padding: 2px 0px 2px 10px;
+       margin:10px -10px 0 -10px;
+       text-align: center;
+}
+
+table .availableSkinTypes ul li {
+       list-style: none;
+}
diff --git a/skins/admin/default/styles/admin_original.css b/skins/admin/default/styles/admin_original.css
new file mode 100644 (file)
index 0000000..46a8686
--- /dev/null
@@ -0,0 +1,383 @@
+/*
+       admin area style
+
+       $Id: admin_original.css 1652 2012-02-11 06:02:05Z sakamocchi $
+*/
+
+body {
+       background: #ffffff;
+}
+
+body, td, th, a, li, ul, textarea {
+       color: #000;
+       font-family: "Trebuchet MS", "Bitstream Vera Sans", verdana, lucida, arial, helvetica, sans-serif;
+}
+
+/* basic link appearance */
+a:link, a:visited {
+       color: #1D3565;
+       font-weight: bold;
+       text-decoration: none;
+}
+
+a:hover {
+       text-decoration: underline;
+}
+
+/* textareas */
+textarea {
+       font-size: small;
+       width: 95%;
+}
+
+/* textareas for skin/template editing have monospace fonts */
+textarea.skinedit, textarea.templateedit {
+       font-family: monospace;
+       font-size: medium;
+}
+
+/* images */
+img    {
+       border: none;
+}
+
+img.skinpreview {
+       border: 1px solid #ccc;
+}
+
+/* forms */
+form {
+       margin-bottom: 0px;
+}
+
+label {
+       cursor: pointer;
+}
+
+input.transparent {
+       background-color: transparent;
+}
+
+/* preformatted text */
+pre {
+       margin-left: 10px;
+}
+
+/* a div that has an indent */
+div.indent {
+       margin-left: 40px;
+}
+
+.skip {
+       display: none;
+}
+
+.error {
+       color: red;
+       font-size: 1.2em;
+}
+
+/* header */
+h1 {
+       text-align: right;
+       font-size: 30px;
+       font-weight: 900;
+       letter-spacing: 0.1em;
+       /*color: #0001AA;       */
+       color: #596d9d;
+       margin: 0 0 5px 135px;
+       height: 35px;
+       /*display: none;        hide the header if you don't want it*/
+}
+
+/* quick menu on left */
+/*
+       It's a real pain getting this absolute positioning to work correctly
+       in all browsers. IE in particular seems to have a lot of trouble, even
+       when a valid doctype is present. Because of the way it is solved currently,
+       the top of the quickmenu and the contents will not line up
+*/
+#quickmenu {
+       position: absolute;
+       overflow: hidden;
+
+       top: 10px;
+       left: 10px;
+
+       width: 110px;
+       margin: 0px;
+       padding: 0px;
+
+       font-size: 70%;
+
+       border-width: 1px;
+       border-style: solid;
+       border-color: black;
+
+       background: #ffffff url(quickb.jpg) top left fixed repeat-y;
+}
+
+#quickmenu ul {
+       list-style-type: none;
+       margin: 0;
+       padding: 0;
+}
+
+#quickmenu li {
+       padding: 0;
+       margin: 0;
+       text-align: center;
+       border-bottom: 1px solid #ccc;
+}
+
+#quickmenu p {
+       padding: 5px;
+       margin: 0px;
+       text-align: justify;
+}
+
+#quickmenu a {
+       display: block;
+       padding: 5px;
+       font-size: 1em;
+       line-height: 1.5em;
+       text-decoration: none;
+}
+
+#quickmenu a:hover {
+       background: #ffffff url(quickb-hover.jpg) top left fixed repeat-y;
+       color: #000;
+       letter-spacing: 1px;
+}
+
+#quickmenu h2 {
+       font-size: small;
+       text-align: center;
+       padding: 1px 0px 1px 0px;
+       margin: 0px;
+       border-bottom: 1px solid #bbb;
+       background-color: #ddd;
+       color: #000;
+}
+
+#quickmenu form {
+       margin: 0;
+       padding: 5px;
+       text-align: center;
+}
+
+#quickmenu option {
+       font-size: 0.9em;
+}
+
+.loginname {
+       float: right;
+       font-size: small;
+       text-align: right;
+       line-height: normal;
+       padding-left: 5px;
+       background-color: white;
+}
+
+/* page content */
+#content {
+       margin-left: 135px;
+       font-style: normal;
+       text-decoration: none;
+       color: black;
+       text-align: justify;
+       line-height: 13pt;
+
+       border-width: 1px;
+       border-style: solid;
+       border-color: black;
+
+       /* rounded borders */
+       -webkit-border-radius: 10px;
+       -moz-border-radius: 10px;
+       border-radius: 10px;
+
+       padding: 10px 10px 0 10px;
+
+       background-color: white;
+}
+
+#content h2 {
+       color: #596d9d;
+
+       border-color: gray;
+       border-style: dashed;
+       border-width: 0px 0px 1px 0px;
+
+       font-size: large;
+       line-height: 120%;
+
+       text-decoration: none;
+       font-weight: bold;
+}
+
+#content h3 {
+       border-color: gray;
+       border-style: dotted;
+       border-width: 0px 0px 1px 0px;
+       font-size: medium;
+       font-weight: normal;
+       line-height: 120%;
+
+       color: gray;
+       padding-left: 20px;
+}
+
+#content .note, pre {
+       background-color: #ddd;
+       padding: 5px;
+}
+
+/*
+       font size tricks, to make it work in all browsers
+
+       See:
+       http://diveintoaccessibility.org/day_26_using_relative_font_sizes.html
+
+       (netscape 4 trick is left out, Nucleus doesn't work anyway in that browser)
+       #content should be 'small' (in standard-compliant browsers)
+
+*/
+
+#content {
+  font-size: small;
+  voice-family: "\"}\"";
+  voice-family: inherit;
+  font-size: small;
+}
+html>body #content { font-size: small; }
+
+/* tables */
+div#content table {
+       border: none;
+       width: 100%;
+       border-collapse: collapse;
+       margin-bottom: 10px;
+       margin-top: 10px;
+}
+
+div#content table tbody tr {
+       background-color: #FFFFFF;
+}
+
+div#content table tbody tr:hover {
+       background-color:       #F5F5F5;
+}
+
+div#content table thead tr th {
+       border: none;
+       background-color: #BBBBCC;
+       color: #000000;
+       font-size: small;
+}
+
+div#content table thead th,
+div#content table tbody td {
+       padding: 4px;
+       empty-cells: show;
+}
+
+/* systemconfig column */
+div#content table.systemoverview thead th,
+div#content table.systemoverview tbody td {
+       width:  50%;
+}
+
+div#content table tbody tr td {
+       border: 1px solid #ddd;
+       font-size: small;
+       vertical-align: top;
+       text-align: left;
+}
+
+div#content table tbody tr td a:link,
+div#content table tbody tr td a:visited {
+       text-decoration: underline;
+       color: black;
+       font-weight: normal;
+}
+
+div#content table tbody tr td a:hover {
+       color: #1D3565;
+       text-decoration: underline;
+}
+
+div#content table tbody tr td.draft,
+div#content table tbody tr td.future {
+       background-color: #FFFFEE;
+}
+
+div#content table.navigation td,
+div#content table.navigation th {
+       border: none;
+}
+
+div#content table tbody td h3 {
+       padding:        0px;
+       margin: 0px 0px 2em 0px;
+       border: 0px;
+       color:  #000000;
+       font-size:      small;
+       font-weight:    normal;
+       line-height:    13pt;
+}
+
+div#content table tbody td h3#base_skin {
+       font-weight:    bold;
+}
+
+/* definitive list */
+div#content table tbody tr td dl {
+       margin: 0px;
+       padding:        0px;
+}
+
+div#content table tbody tr td:first-child dl dt {
+       margin: 0px;
+       padding:        0px 5px 0px 0px;
+       display:        inline;
+       float:  left;
+       clear:  both;
+}
+
+div#content table tbody tr td:first-child dl dd {
+       margin: 0px;
+       padding:        0px;
+       display:        block;
+}
+
+div#content table tbody tr td dl dd {
+       margin: 0px 0px 1em 0px;
+}
+
+/* unorderd list */
+div#content table tbody tr td ul {
+       margin: 0px;
+       padding:        0px;
+       list-style:     none;
+}
+
+div#content table tbody tr td ul li {
+       margin: 0px;
+       padding:        0px;
+       white-space:    nowrap;
+}
+
+.batchoperations {
+       background-color: #EEEEFF;
+       width: auto;
+       padding: 5px;
+       text-align: right;
+}
+
+/* footer */
+div.foot {
+       padding: 2px 0px 2px 10px;
+       margin:10px -10px 0 -10px;
+       text-align: center;
+}
diff --git a/skins/admin/default/styles/background.png b/skins/admin/default/styles/background.png
new file mode 100644 (file)
index 0000000..a1308eb
Binary files /dev/null and b/skins/admin/default/styles/background.png differ
diff --git a/skins/admin/default/styles/bookmarklet.css b/skins/admin/default/styles/bookmarklet.css
new file mode 100644 (file)
index 0000000..17db1b8
--- /dev/null
@@ -0,0 +1,151 @@
+/* 
+       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;
+}
+
+#options {
+   margin-top:-15px;
+   }
+#options h2 {
+   margin:15px 0 0 0;
+}
+
+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/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
diff --git a/skins/admin/default/styles/contemporary_jp/background.png b/skins/admin/default/styles/contemporary_jp/background.png
new file mode 100644 (file)
index 0000000..a1308eb
Binary files /dev/null and b/skins/admin/default/styles/contemporary_jp/background.png differ
diff --git a/skins/admin/default/styles/contemporary_jp/bullet.gif b/skins/admin/default/styles/contemporary_jp/bullet.gif
new file mode 100644 (file)
index 0000000..b43de48
Binary files /dev/null and b/skins/admin/default/styles/contemporary_jp/bullet.gif differ
diff --git a/skins/admin/default/styles/contemporary_jp/quickb-hover.jpg b/skins/admin/default/styles/contemporary_jp/quickb-hover.jpg
new file mode 100644 (file)
index 0000000..87d7e5a
Binary files /dev/null and b/skins/admin/default/styles/contemporary_jp/quickb-hover.jpg differ
diff --git a/skins/admin/default/styles/contemporary_jp/quickb.jpg b/skins/admin/default/styles/contemporary_jp/quickb.jpg
new file mode 100644 (file)
index 0000000..b617305
Binary files /dev/null and b/skins/admin/default/styles/contemporary_jp/quickb.jpg differ
diff --git a/skins/admin/default/styles/logo.gif b/skins/admin/default/styles/logo.gif
new file mode 100644 (file)
index 0000000..1e1b1df
Binary files /dev/null and b/skins/admin/default/styles/logo.gif differ
diff --git a/skins/admin/default/styles/manual.css b/skins/admin/default/styles/manual.css
new file mode 100644 (file)
index 0000000..72ced08
--- /dev/null
@@ -0,0 +1,151 @@
+/*
+       documentation style
+       
+       $Id: manual.css 757 2005-08-12 07:29:40Z dekarma $
+*/
+
+body {
+       background-color: #fff;
+       color: #000;
+       font-family: verdana, arial;
+       font-size: small;
+}
+
+@media screen {
+       body {
+               margin-left: 10%;
+               margin-right: 10%;
+       }
+}
+
+@media print {
+       pre, .note, td, th {
+               border: 1px dashed gray;
+       }
+}
+
+img {
+       border: none;
+}
+
+a:link, a:visited {
+       color: #1D3565; 
+       font-weight: bold;
+       text-decoration: none;
+}
+a: hover {
+       text-decoration: underline;
+}
+
+.heading {
+       text-align: center;
+       font-size: xx-large;
+       font-weight: bold;
+       color: gray;    
+}
+
+.heading i {
+       position: absolute;
+       top: 5px;
+       right: 5px;
+       font-size: small;
+       font-style: normal;
+       font-weight: normal;
+}
+
+p:first-letter {
+       font-size: large;
+}
+
+p {
+       text-indent: 20px;
+}
+
+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;
+}
+
+pre, .note, .faq .answer {
+       background-color: #ddd;
+       padding: 10px;
+       font-size: small;
+}
+
+.screenshot {
+       text-align: center;
+       background-color: #ddd;
+       padding: 10px;
+}
+
+.faq .question {
+       font-weight: bold;
+       margin-bottom: 0px;
+}
+
+.faq .answer {
+
+}
+
+.faq {
+       margin-bottom: 20px;
+}
+
+table {
+       border: none;
+}
+
+th {
+       background-color: linen;
+       font-size: medium;
+}
+
+th, td {
+       padding: 5px;
+}
+
+td {
+       background-color: #dddddd;
+       font-size: small;
+       vertical-align: top;
+       text-align: left;
+}
+
+input, select, option, textarea {
+       background-color: transparent;
+}
+
+.deprecated {
+       border: 3px solid red;
+       padding: 5px;
+       font-size: medium;
+}
+
+tt, code, samp {
+       font-size: small;
+}
+
+.warning {
+       color: red;
+}
+.ok {
+       color: green;
+}
+
+acronym, abbr {
+       border-bottom: 1px dotted gray;
+       cursor: help;
+}
+
+label {
+       cursor: hand;
+}
diff --git a/skins/admin/default/styles/popups.css b/skins/admin/default/styles/popups.css
new file mode 100644 (file)
index 0000000..7b6592d
--- /dev/null
@@ -0,0 +1,102 @@
+/*
+       media library popup
+       
+       $Id: popups.css 757 2005-08-12 07:29:40Z dekarma $
+*/
+
+body {
+       font-family: verdana, arial;
+       font-size: small;
+       background-color: #fff;
+       color: #000;
+}
+
+img {
+       border: none;
+}
+
+a:link, a:visited {
+       color: #1D3565; 
+       font-weight: bold;
+       text-decoration: none;
+}
+a:hover {
+       text-decoration: underline;
+}
+
+.heading {
+       text-align: center;
+       font-size: xx-large;
+       font-weight: bold;
+       color: gray;    
+}
+
+.heading i {
+       position: absolute;
+       top: 5px;
+       right: 5px;
+       font-size: small;
+       font-style: normal;
+       font-weight: normal;
+}
+
+p {
+       text-indent: 20px;
+}
+
+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;
+}
+
+pre, .note, .faq .answer {
+       background-color: #ddd;
+       padding: 10px;
+       font-size: small;
+}
+
+.faq .question {
+       font-weight: bold;
+       margin-bottom: 0px;
+}
+
+.faq .answer {
+
+}
+
+.faq {
+       margin-bottom: 20px;
+}
+
+table {
+       border: none;
+}
+
+th {
+       background-color: linen;
+       font-size: medium;
+}
+
+th, td {
+       padding: 5px;
+}
+
+td {
+       background-color: #dddddd;
+       font-size: small;
+       vertical-align: top;
+       text-align: left;
+}
+
+label {
+       cursor: pointer;
+}
\ No newline at end of file
diff --git a/skins/admin/default/styles/quickb-hover.jpg b/skins/admin/default/styles/quickb-hover.jpg
new file mode 100644 (file)
index 0000000..87d7e5a
Binary files /dev/null and b/skins/admin/default/styles/quickb-hover.jpg differ
diff --git a/skins/admin/default/styles/quickb.jpg b/skins/admin/default/styles/quickb.jpg
new file mode 100644 (file)
index 0000000..b617305
Binary files /dev/null and b/skins/admin/default/styles/quickb.jpg differ
index 9956dd2..aa387a7 100644 (file)
@@ -8,6 +8,6 @@ if ( !function_exists('getmtime') )
        }
 }
 
-global $StartTime, $SQLCount;
+global $StartTime;
 $loadtime = getmtime() - $StartTime;
-printf("%.3f sec/%d queries", $loadtime, $SQLCount);
+printf("%.3f sec/%d queries", $loadtime, DB::getExecCount());