[Pyukiwiki-cvs 0010396] CVS update: PyukiWiki-Devel/lib

アーカイブの一覧に戻る

PyukiWiki CVS Commit pyuki****@lists*****
2012年 4月 8日 (日) 07:26:54 JST


Index: PyukiWiki-Devel/lib/captcha.inc.pl
diff -u PyukiWiki-Devel/lib/captcha.inc.pl:1.5 PyukiWiki-Devel/lib/captcha.inc.pl:1.6
--- PyukiWiki-Devel/lib/captcha.inc.pl:1.5	Sun Apr  8 05:53:05 2012
+++ PyukiWiki-Devel/lib/captcha.inc.pl	Sun Apr  8 07:26:54 2012
@@ -1,6 +1,6 @@
 ######################################################################
 # captcha.inc.pl - This is PyukiWiki, yet another Wiki clone.
-# $Id: captcha.inc.pl,v 1.5 2012/04/07 20:53:05 papu Exp $
+# $Id: captcha.inc.pl,v 1.6 2012/04/07 22:26:54 papu Exp $
 #
 # "PyukiWiki" ver 0.2.0-p3-dev3 $$
 # Author: Nanami http://nanakochi.daiba.cx/
@@ -30,6 +30,25 @@
 );
 
 %captcha::parm=(
+	# 日本語数字							# comment
+	ja_num=>{
+		rnd_data=>[
+			'いち,1','に,2','さん,3','よん,4', 'ご,5',
+			'ろく,6','なな,7','はち,8','きゅう,9', 'ぜろ,0',
+			'イチ,1','に,2','サン,3','ヨン,4', 'ご,5',
+			'ロク,6','ナナ,7','ハチ,8','キュウ,9', 'ゼロ,0',
+		],
+		style=>"ime-mode: disable;",
+		class=>"klimit-digit",
+		length=>6,
+		size=>[24,25],
+		angle=>[-15,10,15],
+		space=>1.4,
+		width=>450,
+		height=>50,
+        font  =>@captcha::font,
+	},
+	# 日本語ひらがな						# comment
 	ja=>{
 		rnd_data=>[
 			'た','ち','つ','て','と',
@@ -48,10 +67,27 @@
 		size=>[25,28],
 		angle=>[-10,5,10,15],
 		space=>1.25,
-		width=>220,
+		width=>250,
 		height=>50,
         font  =>@captcha::font,
 	},
+	# 英語数字							# comment
+	def_num=>{
+		rnd_data=>[
+			'One,1','Two,2','Three,3','Fore,4', 'Five,5',
+			'Six,6','Seven,7','Eight,8','Nine,9', 'Zero,0',
+				],
+		style=>"ime-mode: disable;",
+		class=>"klimit-alnum",
+		length=>6,
+		size=>[25],
+		angle=>[-10,-5,10,15,20],
+		space=>0.9,
+		width=>600,
+		height=>50,
+        font  =>@captcha::font,
+	},
+	# 英数字							# comment
 	def=>{
 		rnd_data=>[
 				'L','M','N','O','P','Q',
@@ -64,9 +100,9 @@
 		style=>"ime-mode: disable;",
 		class=>"klimit-alnum",
 		length=>6,
-		size=>[25,28],
+		size=>[28,30],
 		angle=>[-10,5,10,15],
-		space=>1.25,
+		space=>1.3,
 		width=>220,
 		height=>50,
         font  =>@captcha::font,
@@ -117,12 +153,14 @@
 $captcha::check="";
 $captcha::id=0;
 %captcha::cookie;
+$captcha::lang="";
 
 ######################################################################
 # Initlize												# comment
 
 sub plugin_captcha_init {
-	$::IN_HEAD=&jscss_include("jquery");
+	$::IN_HEAD.=&jscss_include("jquery");
+	$captcha::lang=&getcaptcha_lang;
 	if(&load_module("GD")) {
 		&exec_explugin_sub("authadmin_cookie");
 		if($::authadmin_cookie_user_name eq $::authadmin_cookie_admin_name{admin}) {
@@ -131,8 +169,10 @@
 			my $check=&code_convert(\$::form{captcha}, $::defaultcode);
 			$check=Encode::decode('utf8',$check);
 
-			my($captcha_lang, $rand, $str)=&plugin_captcha_random($::form{captcha_check});
-			if($str eq $check) {
+			my($captcha_lang, $rand, $str, $inputstr)=&plugin_captcha_random($::form{captcha_check});
+			$captcha::lang=$captcha_lang;
+
+			if($inputstr eq $check) {
 				$captcha::check="ok";
 			} else {
 				$captcha::check="ng";
@@ -155,27 +195,27 @@
 	my $html;
 	$captcha::id++;
 
-	my($dmy,$dmy,$string)=plugin_captcha_random($captcha::init);
-	$string=Encode::encode('utf8', $string);
+	my($dmy,$dmy,$string, $inputstring)=plugin_captcha_random($captcha::init);
+	$inputstring=Encode::encode('utf8', $inputstring);
 	my $captcha_msg;
 	if($captcha::check eq "ok") {
 		$captcha_msg=$::resource{captcha_plugin_ok};
 	} elsif($captcha::check eq "ng") {
 		$captcha_msg=$::resource{captcha_plugin_ng};
-		$string="";
+		$inputstring="";
 	} elsif($captcha::check eq "authed") {
 		$captcha_msg=$::resource{captcha_plugin_authed};
 	} elsif($captcha::check eq "error") {
 		$captcha_msg=$::resource{captcha_plugin_error};
-		$string="";
+		$inputstring="";
 	} else {
 		$captcha_msg=$::resource{captcha_plugin_before};
-		$string="";
+		$inputstring="";
 	}
 	if($captcha::check=~/ok|error|authed/) {
 		$html=<<EOM;
 <input type="hidden" name="captcha_check" value="$captcha::init" />
-<input type="hidden" name="captcha" value="$string" />
+<input type="hidden" name="captcha" value="$inputstring" />
 $captcha_msg<br />
 EOM
 	} else {
@@ -190,7 +230,8 @@
 <a href="#" onclick="return reload_captcha('$::captcha_cookie','captcha@{[$captcha::id]}');">
 $::resource{captcha_plugin_reload}</a>]
 <br />
-<input type="text" name="captcha" value="$string" />
+<input type="text" name="captcha" value="" @{[$captcha::parm{$captcha::lang}->{style} ne "" ? qq(style="$captcha::parm{$captcha::lang}->{style}") : ""]} @{[$captcha::parm{$captcha::lang}->{class} ne "" ? qq(class="$captcha::parm{$captcha::lang}->{class}") : ""]} onkeyup="this.value=this.value.toUpperCase();" maxlength="$captcha::parm{$captcha::lang}->{length}" />
+$inputstring
 <script type="text/javascript"><!--
 setCookie("$::captcha_cookie", "$captcha::init");
 //--></script>
@@ -202,13 +243,18 @@
 
 }
 
+sub getcaptcha_lang {
+	my $captcha_lang=$::lang;
+	$captcha_lang="def" if(!defined($captcha::parm{$captcha_lang}->{rnd_data}));
+	return $captcha_lang;
+}
+
 sub plugin_captcha_random {
 	my($md5str)=@_;
 	my $test=~s/[0-9A-Fa-f]//g;
 	my @md5;
 	if($test eq "") {
-		my $captcha_lang=$::lang;
-		$captcha_lang="def" if(!defined($captcha::parm{$captcha_lang}->{rnd_data}));
+		my $captcha_lang=&getcaptcha_lang;
 
 		for(my $i=0; $i<length($md5str); $i++) {
 			$md5[$i]=hex(substr($md5str, $i*2, 2));
@@ -220,29 +266,42 @@
 		my $rand=int($md5[0] % $chk)+1;
 
 		# 文字を生成する
-		my $str;
+		my $displaystr;
+		my $inputstr;
 		my @used=();
 		my @rnddata=@{$captcha::parm{$captcha_lang}->{rnd_data}};
 		my $j=0;
 		for(my $i=0; $i<$captcha::parm{$captcha_lang}->{length}; $i++) {
 			my $flg=0;
 			my $count=0;
-			my $char;
-			do {
+			my $displaychar;
+			my $inputchar;
+			while(1) {
 				$j=($j+1) % $#md5;
-				$char=$rnddata[$md5[$j] % $#rnddata];
-				$char=Encode::decode('utf8',$char);
+				my $char=$rnddata[$md5[$j] % $#rnddata];
+				if($char=~/\,/) {
+					($displaychar,$inputchar)=split(/,/,$char);
+				} else {
+					$displaychar=$char;
+					$inputchar=$char;
+				}
+				$displaychar=Encode::decode('utf8',$displaychar);
+				$inputchar=Encode::decode('utf8',$inputchar);
 				$flg=0;
 				foreach(@used) {
-					$flg=1 if($char eq $_);
+					$flg=1 if($inputchar eq $_);
 				}
-				push(@used,$char) if($flg eq 0);
 				$count++;
-				$str.=$char if($flg eq 0);
-			} while($flg eq 0 && $count < 100);
+				if($flg eq 0) {
+					push(@used,$inputchar);
+					$inputstr.=$inputchar;
+					$displaystr.=$displaychar;
+					last;
+				}
+			} # while($flg eq 0 && length($inputstr) < $captcha::parm{$captcha_lang}->{length});
 		}
-		$str=substr($str, 0, $captcha::parm{$captcha_lang}->{length});
-		return($captcha_lang, $rand, $str);
+		$inputstr=substr($inputstr, 0, $captcha::parm{$captcha_lang}->{length});
+		return($captcha_lang, $rand, $displaystr, $inputstr);
 
 	} else {
 		return ("def", 1, "");
Index: PyukiWiki-Devel/lib/wiki.cgi
diff -u PyukiWiki-Devel/lib/wiki.cgi:1.761 PyukiWiki-Devel/lib/wiki.cgi:1.762
--- PyukiWiki-Devel/lib/wiki.cgi:1.761	Sun Apr  8 05:33:39 2012
+++ PyukiWiki-Devel/lib/wiki.cgi	Sun Apr  8 07:26:54 2012
@@ -1,6 +1,6 @@
 ######################################################################
 # wiki.cgi - This is PyukiWiki, yet another Wiki clone.
-# $Id: wiki.cgi,v 1.761 2012/04/07 20:33:39 papu Exp $
+# $Id: wiki.cgi,v 1.762 2012/04/07 22:26:54 papu Exp $
 #
 # "PyukiWiki" ver 0.2.0-p3-dev3 $$
 # Copyright (C) 2004-2012 Nekyo
@@ -1106,10 +1106,7 @@
 			}
 		}
 	}
-	if($::jscss_included{$name} eq 2) {
-		return "<!--$name loaded-->";
-	}
-	return $head;
+	return $head . " ";
 }
 
 =lang ja
@@ -5831,7 +5828,7 @@
 	if($::Use_CryptPass) {
 		if($::Token eq '') {
 			$IN_HEAD.=&maketoken;
-			$::IN_HEAD.=qq(<script type="text/javascript" src="$::skin_url/passwd.js"></script>\n);
+			$::IN_HEAD.=&jscss_include("passwd");
 		}
 		return 1;
 	}



Pyukiwiki-cvs メーリングリストの案内
アーカイブの一覧に戻る