From: kimitake Date: Wed, 28 Feb 2007 21:34:18 +0000 (+0000) Subject: sync with trunk X-Git-Tag: pre-release-3-3-b3~1 X-Git-Url: http://git.sourceforge.jp/view?p=nucleus-jp%2Fnucleus-jp-ancient.git;a=commitdiff_plain;h=d03771c6e27a6b7e38218ac6432948612af3c6f7 sync with trunk git-svn-id: https://svn.sourceforge.jp/svnroot/nucleus-jp/nucleus-jp/trunk@214 1ca29b6e-896d-4ea0-84a5-967f57386b96 --- diff --git a/utf8/nucleus/javascript/xmlhttprequest.js b/utf8/nucleus/javascript/xmlhttprequest.js new file mode 100644 index 0000000..282d92d --- /dev/null +++ b/utf8/nucleus/javascript/xmlhttprequest.js @@ -0,0 +1,184 @@ +/** + * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/) + * Copyright (C) 2002-2007 The Nucleus Group + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * (see nucleus/documentation/index.html#license for more info) + * + * + * This page contains xmlHTTPRequest functions for: + * - AutoSaveDraft + * + * + * Usage: + * - Add in the page before the form open tag: + * + * - 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: + * + * - Optionally a autosave now button can be add: + * + * + * + * $Id: xmlhttprequest.js,v 1.1 2007-02-28 21:34:18 kimitake Exp $ + * $NucleusJP$ + */ + +/** + * 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 = encodeURI(addform.title.value); + var body = encodeURI(addform.body.value); + var catid = addform.catid.options[addform.catid.selectedIndex].value; + var more = encodeURI(addform.more.value); + var closed = 0; + if (addform.closed[0].checked) { + closed = addform.closed[0].value; + } + else if (addform.closed[1].checked) { + closed = addform.closed[1].value; + } + var ticket = addform.ticket.value; + + var querystring = 'action=autodraft'; + querystring += '&title=' + title; + querystring += '&body=' + body; + querystring += '&catid=' + catid; + querystring += '&more=' + more; + querystring += '&closed=' + closed; + querystring += '&ticket=' + ticket; + if (formtype == 'edit') { + querystring += '&itemid=' + addform.itemid.value; + querystring += '&type=edit'; + } + else { + querystring += '&blogid=' + addform.blogid.value; + querystring += '&type=add'; + } + if (addform.draftid.value > 0) { + querystring += '&draftid=' + addform.draftid.value; + } + + xmlhttprequest[0].open('POST', goalurl, true); + xmlhttprequest[0].onreadystatechange = checkMonitor; + xmlhttprequest[0].setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); + xmlhttprequest[0].send(querystring); + + var querystring = 'action=updateticket&ticket=' + ticket; + + xmlhttprequest[1].open('POST', goalurl, true); + xmlhttprequest[1].onreadystatechange = updateTicket; + xmlhttprequest[1].setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); + xmlhttprequest[1].send(querystring); +} + +/** + * Monitors the edits + */ +function doMonitor() { + if (checks * (now() - seconds) > 120 * 1000 * 50) { + autoSaveDraft(); + } + else { + checks++; + } +} + +/** + * Checks the process of the saving + */ +function checkMonitor() { + if (xmlhttprequest[0].readyState == 4) { + if (xmlhttprequest[0].responseText) { + if (xmlhttprequest[0].responseText.substr(0, 4) == 'err:') { + goal.innerHTML = xmlhttprequest[0].responseText.substr(4) + ' (' + formattedDate() + ')'; + } + else { + addform.draftid.value = xmlhttprequest[0].responseText; + goal.innerHTML = lastsavedtext + ' ' + formattedDate(); + } + } + } +} + +/** + * Checks the process of the ticket updating + */ +function updateTicket() { + if (xmlhttprequest[1].readyState == 4) { + if (xmlhttprequest[1].responseText) { + if (xmlhttprequest[1].responseText.substr(0, 4) == 'err:') { + goal.innerHTML = xmlhttprequest[1].responseText.substr(4) + ' (' + formattedDate() + ')'; + } + else { + addform.ticket.value = xmlhttprequest[1].responseText; + } + } + } +} + +/** + * Gets now in milliseconds + */ +function now() { + var now = new Date(); + return now.getTime(); +} + +/** + * Gets now in the local dateformat + */ +function formattedDate() { + var now = new Date(); + return now.toLocaleDateString() + ' ' + now.toLocaleTimeString(); +} \ No newline at end of file diff --git a/utf8/nucleus/upgrades/upgrade3.3.php b/utf8/nucleus/upgrades/upgrade3.3.php new file mode 100644 index 0000000..7e877bb --- /dev/null +++ b/utf8/nucleus/upgrades/upgrade3.3.php @@ -0,0 +1,78 @@ + $o->catid, + 'cname' => $o->cname + ); + } + + // alter nucleus_category + $query = 'ALTER TABLE ' . sql_table('category') + . ' DROP COLUMN cname,' + . ' ADD cname varchar(200) default NULL'; + upgrade_query('Altering ' . sql_table('category') . ' table', $query); + + // refill cname to nucleus_category + foreach ($aValues as $aInfo) { + $query = 'INSERT INTO ' . sql_table('category') + . ' (cname)' + . " VALUES (" . $aInfo['cname'] . ")" + . " WHERE catid=" . $aInfo['catid']; + upgrade_query('Re-filling ' . sql_table('category') + . ' (' . $aInfo['catid'] . ')', $query); + } + + +/* + // create nucleus_activation table + $query = 'CREATE TABLE ' . sql_table('activation') . ' (' + . ' vkey varchar(40) NOT NULL default \'\',' + . ' vtime datetime NOT NULL default \'0000-00-00 00:00:00\',' + . ' vmember int(11) NOT NULL default \'0\',' + . ' vtype varchar(15) NOT NULL default \'\',' + . ' vextra varchar(128) NOT NULL default \'\',' + . ' PRIMARY KEY (vkey) ' + . ' )'; + upgrade_query('Creating account activation table', $query); + + // create CookiePrefix setting + $query = 'INSERT INTO '.sql_table('config')." VALUES ('CookiePrefix','')"; + upgrade_query('Creating CookiePrefix config value',$query); + + // create nucleus_tickets table + $query = 'CREATE TABLE ' . sql_table('tickets') . ' (' + . ' ticket varchar(40) NOT NULL default \'\',' + . ' ctime datetime NOT NULL default \'0000-00-00 00:00:00\',' + . ' member int(11) NOT NULL default \'0\', ' + . ' PRIMARY KEY (ticket, member) ' + . ' )'; + upgrade_query('Creating ticket table', $query); + + // 3.1 -> 3.1+ + // update database version + $query = 'UPDATE ' . sql_table('config') . ' set value=\'320\' where name=\'DatabaseVersion\''; + upgrade_query('Updating DatabaseVersion in config table to 320', $query); +*/ + // nothing! +} + +?>