[P2-php-svn] [822] expack:

Back to archive index

svnno****@sourc***** svnno****@sourc*****
2010年 1月 28日 (木) 02:45:28 JST


Revision: 822
          http://sourceforge.jp/projects/p2-php/svn/view?view=rev&revision=822
Author:   rsk
Date:     2010-01-28 02:45:27 +0900 (Thu, 28 Jan 2010)

Log Message:
-----------
expack:
- P2Util::fileDownload()でfsockopen()の警告を出さないように変更。
- 携帯用アクセスキーの初期化処理を変更、非iPhoneからiPhone用ビューを
  使っているときはaccesskey属性を付加するようにした。

Modified Paths:
--------------
    p2ex/trunk/js/iphone.js
    p2ex/trunk/lib/P2Util.php
    p2ex/trunk/lib/bootstrap.php


-------------- next part --------------
Modified: p2ex/trunk/js/iphone.js
===================================================================
--- p2ex/trunk/js/iphone.js	2010-01-27 15:05:59 UTC (rev 821)
+++ p2ex/trunk/js/iphone.js	2010-01-27 17:45:27 UTC (rev 822)
@@ -43,7 +43,12 @@
 	 * ƒ‰ƒxƒ‹ƒNƒŠƒbƒN‚̃R[ƒ‹ƒoƒbƒNŠÖ”ƒRƒ“ƒeƒi
 	 * @type {Object}
 	 */
-	'labelActions': {}
+	'labelActions': {},
+	/**
+	 * accesskey‘®«Ž‚¿‚̃Aƒ“ƒJ[—v‘fƒRƒ“ƒeƒi
+	 * @type {Object}
+	 */
+	'accessKeys': {}
 };
 
 // }}}
@@ -315,6 +320,95 @@
 	}
 };
 
+// }}}
+// {{{ setAccessKeys()
+
+/**
+ * Žw’èƒL[ + [0-9*#] ‚Ì‘g‚ݍ‡‚킹‚̃L[ƒoƒCƒ“ƒh‚ð“o˜^‚·‚é
+ *
+ * ì‚荞‚Ý‚ªŠÃ‚¢‚Ì‚Å••ˆóB
+ *
+ * @param {Node|String} contextNode
+ * @return void
+ */
+iutil.setAccessKeys = function(contextNode) {
+	var anchors, anchor, accessKey, hashKey, i, l;
+
+	switch (typeof contextNode) {
+		case 'string':
+			contextNode = document.getElementById(contextNode);
+			break;
+		case 'undefined':
+			contextNode = document.body;
+			break;
+	}
+	if (!contextNode) {
+		return;
+	}
+
+	anchors = document.evaluate('.//a[@accesskey]',
+	                            contextNode, null,
+	                            XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
+	l = anchors.snapshotLength;
+
+	for (i = 0; i < l; i++) {
+		anchor = anchors.snapshotItem(i);
+		accessKey = anchor.getAttribute('accesskey');
+		hashKey = 'a' + accessKey.charCodeAt(0).toString();
+		iutil.accessKeys[hashKey] = anchor;
+	}
+
+	window.addEventListener('keypress', function (event) {
+		var accessKey, hashKey, keyCode, clickEvent;
+
+		event = event || window.event;
+		if (!(event.ctrlKey || event.metaKey)) {
+			return true;
+		}
+
+		keyCode = event.keyCode;
+		if (48 <= keyCode && keyCode <= 57) { // [0-9]
+			accessKey = (keyCode - 48).toString();
+		} else if (keyCode === 45) { // '-' ‚ð '*' ‚Ƀ}ƒbƒv
+			accessKey = '*';
+		} else if (keyCode === 126) { // '~' ‚ð '#' ‚Ƀ}ƒbƒv
+			accessKey = '#';
+		} else {
+			return true;
+		}
+
+		hashKey = 'a' + accessKey.charCodeAt(0).toString();
+		if (typeof iutil.accessKeys[hashKey] === 'undefined') {
+			return true;
+		}
+
+		iutil.stopEvent(event);
+
+		clickEvent = document.createEvent('MouseEvents');
+		clickEvent.initMouseEvent(
+			'click', // type 
+			true, // bubbles 
+			true, // cancelable 
+			window, // view 
+			1, // detail 
+			0, // screenX 
+			0, // screenY 
+			0, // clientX 
+			0, // clientY 
+			false, // ctrlKey 
+			false, // altKey 
+			false, // shiftKey 
+			false, // metaKey 
+			0, // button 
+			null // relatedTarget
+		);
+		iutil.accessKeys[hashKey].dispatchEvent(clickEvent);
+
+		return false;
+	}, false);
+};
+
+// ]}}
 // {{{ adjustTextareaSize()
 
 /**
@@ -1065,6 +1159,11 @@
 			//iutil.setHashScrool(document.body);
 		}
 
+		// accesskey‚ðƒoƒCƒ“ƒh‚·‚é
+		//if (!iutil.iphone && typeof window.iui === 'undefined') {
+		//	iutil.setAccessKeys(document.body);
+		//}
+
 		// textarea‚Ì•‚𒲐®
 		iutil.adjustTextareaSize();
 

Modified: p2ex/trunk/lib/P2Util.php
===================================================================
--- p2ex/trunk/lib/P2Util.php	2010-01-27 15:05:59 UTC (rev 821)
+++ p2ex/trunk/lib/P2Util.php	2010-01-27 17:45:27 UTC (rev 822)
@@ -256,6 +256,7 @@
         // DL
         $wap_ua = new WapUserAgent();
         $wap_ua->setTimeout($_conf['http_conn_timeout'], $_conf['http_read_timeout']);
+        $wap_ua->setAtFsockopen(true);
         $wap_req = new WapRequest();
         $wap_req->setUrl($url);
         $wap_req->setModified($modified);

Modified: p2ex/trunk/lib/bootstrap.php
===================================================================
--- p2ex/trunk/lib/bootstrap.php	2010-01-27 15:05:59 UTC (rev 821)
+++ p2ex/trunk/lib/bootstrap.php	2010-01-27 17:45:27 UTC (rev 822)
@@ -469,57 +469,34 @@
 }
 
 // Œg‘Ñ—puƒgƒbƒv‚É–ß‚évƒŠƒ“ƒN‚Æaccesskey
+
+// ƒfƒtƒHƒ‹ƒg’l
+$accesskeys = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '*', '#');
+$_conf['k_accesskey_at'] = array();
+foreach ($accesskeys as $key) {
+    $_conf['k_accesskey_at'][$key] = " accesskey=\"{$key}\"";
+}
+$_conf['k_accesskey_st'] = array_combine($accesskeys, array_fill(0, count($accesskeys), ''));
+
 if ($_conf['ktai']) {
     // iPhone
     if ($_conf['iphone']) {
-        $_conf['k_accesskey_at'] = array_fill(0, 10, '');
-        $_conf['k_accesskey_at']['*'] = '';
-        $_conf['k_accesskey_at']['#'] = '';
-        foreach ($_conf['k_accesskey'] as $name => $key) {
-            $_conf['k_accesskey_at'][$name] = '';
+        // ‹­§iPhoneƒrƒ…[ˆÈŠO‚Íaccesskey‚ðŽg‚í‚È‚¢
+        if ($_conf['client_type'] == 'i') {
+            $_conf['k_accesskey_at'] = $_conf['k_accesskey_st'];
         }
-
-        $_conf['k_accesskey_st'] = $_conf['k_accesskey_at'];
-
         $_conf['k_to_index_ht'] = <<<EOP
-<a href="index.php{$_conf['k_at_q']}" class="button">TOP</a>
+<a href="index.php{$_conf['k_at_q']}" class="button"{$_conf['k_accesskey_at'][0]}>TOP</a>
 EOP;
 
     // ‚»‚Ì‘¼
     } else {
-        // SoftBank Mobile
+        // SoftBank Mobile ‹ŒŒ^’[––
         if ($_conf['accesskey'] == 'DIRECTKEY') {
-            $_conf['k_accesskey_at'] = array(
-                '0' => ' directkey="0" nonumber',
-                '1' => ' directkey="1" nonumber',
-                '2' => ' directkey="2" nonumber',
-                '3' => ' directkey="3" nonumber',
-                '4' => ' directkey="4" nonumber',
-                '5' => ' directkey="5" nonumber',
-                '6' => ' directkey="6" nonumber',
-                '7' => ' directkey="7" nonumber',
-                '8' => ' directkey="8" nonumber',
-                '9' => ' directkey="9" nonumber',
-                '*' => ' directkey="*" nonumber',
-                '#' => ' directkey="#" nonumber',
-            );
-
-        // ‚»‚Ì‘¼
-        } else {
-            $_conf['k_accesskey_at'] = array(
-                '0' => ' accesskey="0"',
-                '1' => ' accesskey="1"',
-                '2' => ' accesskey="2"',
-                '3' => ' accesskey="3"',
-                '4' => ' accesskey="4"',
-                '5' => ' accesskey="5"',
-                '6' => ' accesskey="6"',
-                '7' => ' accesskey="7"',
-                '8' => ' accesskey="8"',
-                '9' => ' accesskey="9"',
-                '*' => ' accesskey="*"',
-                '#' => ' accesskey="#"',
-            );
+            $_conf['k_accesskey_at'] = array();
+            foreach ($accesskeys as $key) {
+                $_conf['k_accesskey_at'][$key] = " directkey=\"{$key}\" nonumber";
+            }
         }
 
         switch ($_conf['mobile.display_accesskey']) {
@@ -529,44 +506,30 @@
             }
             $emoji = p2_get_emoji($mobile);
             //$emoji = p2_get_emoji(Net_UserAgent_Mobile::factory('KDDI-SA31 UP.Browser/6.2.0.7.3.129 (GUI) MMP/2.0'));
-            $_conf['k_accesskey_st'] = array(
-                '0' => $emoji[0],
-                '1' => $emoji[1],
-                '2' => $emoji[2],
-                '3' => $emoji[3],
-                '4' => $emoji[4],
-                '5' => $emoji[5],
-                '6' => $emoji[6],
-                '7' => $emoji[7],
-                '8' => $emoji[8],
-                '9' => $emoji[9],
-                '*' => $emoji['*'],
-                '#' => $emoji['#'],
-            );
+            $_conf['k_accesskey_st'] = array();
+            foreach ($accesskeys as $key) {
+                $_conf['k_accesskey_st'][$key] = $emoji[$key];
+            }
             break;
         case 0:
-            $_conf['k_accesskey_st'] = array_fill(0, 10, '');
-            $_conf['k_accesskey_st']['*'] = '';
-            $_conf['k_accesskey_st']['#'] = '';
             break;
         case 1:
         default:
-            $_conf['k_accesskey_st'] = array(
-                0 => '0.', 1 => '1.', 2 => '2.', 3 => '3.', 4 => '4.',
-                5 => '5.', 6 => '6.', 7 => '7.', 8 => '8.', 9 => '9.',
-                '*' => '*.', '#' => '#.'
-            );
+            $_conf['k_accesskey_st'] = array();
+            foreach ($accesskeys as $key) {
+                $_conf['k_accesskey_st'][$key] = $key . '.';
+            }
         }
 
-        foreach ($_conf['k_accesskey'] as $name => $key) {
-            $_conf['k_accesskey_at'][$name] = $_conf['k_accesskey_at'][$key];
-            $_conf['k_accesskey_st'][$name] = $_conf['k_accesskey_st'][$key];
-        }
-
         $_conf['k_to_index_ht'] = <<<EOP
 <a href="index.php{$_conf['k_at_q']}"{$_conf['k_accesskey_at'][0]}>{$_conf['k_accesskey_st'][0]}TOP</a>
 EOP;
     }
+
+    foreach ($_conf['k_accesskey'] as $name => $key) {
+        $_conf['k_accesskey_at'][$name] = $_conf['k_accesskey_at'][$key];
+        $_conf['k_accesskey_st'][$name] = $_conf['k_accesskey_st'][$key];
+    }
 }
 
 // }}}



P2-php-svn メーリングリストの案内
Back to archive index