OSDN Git Service

sync with trunk
authorkimitake <kimitake@1ca29b6e-896d-4ea0-84a5-967f57386b96>
Wed, 28 Feb 2007 21:34:18 +0000 (21:34 +0000)
committerkimitake <kimitake@1ca29b6e-896d-4ea0-84a5-967f57386b96>
Wed, 28 Feb 2007 21:34:18 +0000 (21:34 +0000)
git-svn-id: https://svn.sourceforge.jp/svnroot/nucleus-jp/nucleus-jp/trunk@214 1ca29b6e-896d-4ea0-84a5-967f57386b96

utf8/nucleus/javascript/xmlhttprequest.js [new file with mode: 0644]
utf8/nucleus/upgrades/upgrade3.3.php [new file with mode: 0644]

diff --git a/utf8/nucleus/javascript/xmlhttprequest.js b/utf8/nucleus/javascript/xmlhttprequest.js
new file mode 100644 (file)
index 0000000..282d92d
--- /dev/null
@@ -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:
+  *     <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,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 (file)
index 0000000..7e877bb
--- /dev/null
@@ -0,0 +1,78 @@
+<?php
+function upgrade_do33() {
+
+       if (upgrade_checkinstall(33))
+               return 'already installed';
+
+       // alter nucleus_blog table
+       $query = 'ALTER TABLE ' . sql_table('blog')
+                  . ' ADD breqemail TINYINT(2) DEFAULT '0' NOT NULL';
+       upgrade_query('Altering ' . sql_table('blog') . ' table', $query);
+
+       // insert breqemail default value
+       $query = 'INSERT INTO ' . sql_table('blog')
+                  . ' (breqemail)'
+                  . ' VALUES (0)';
+
+       // store cname from nucleus_category
+       $query = 'SELECT catid, cname FROM ' . sql_table('category') . ' ORDER By catid ASC';
+       $res = sql_query($query);
+       $aValues = array();
+       while ($o = mysql_fetch_object($res)) {
+               $aValues[] = array(
+                                               'catid' => $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!
+}
+
+?>