Index: /trunk/extras/xpress_i18n/portuguese-br/xpressme_modules_root/language/pt-br_utf8/admin.php
===================================================================
--- /trunk/extras/xpress_i18n/portuguese-br/xpressme_modules_root/language/pt-br_utf8/admin.php	(revision 597)
+++ /trunk/extras/xpress_i18n/portuguese-br/xpressme_modules_root/language/pt-br_utf8/admin.php	(revision 598)
@@ -39,4 +39,6 @@
 	define("_AM_XP2_USER_META_ERR","Há %d meta-chaves com o prefixo %s.");
 	define("_AM_XP2_USER_META_OK","Meta-dados do usuário funcionando corretamente.");	
+	define("_AM_XP2_NG_BLOCK_REMOVE","Excluir bloco anormal mesa");
+	define("_AM_XP2_BLOCK_OR","OU");
 }
 ?>
Index: /trunk/extras/xpress_i18n/template/xpressme_modules_root/language/english/admin.php
===================================================================
--- /trunk/extras/xpress_i18n/template/xpressme_modules_root/language/english/admin.php	(revision 597)
+++ /trunk/extras/xpress_i18n/template/xpressme_modules_root/language/english/admin.php	(revision 598)
@@ -39,4 +39,6 @@
 	define("_AM_XP2_USER_META_ERR","There is a meta key named %s that the prefix is different in %d piece.");
 	define("_AM_XP2_USER_META_OK","The user meta key is normal.");		
+	define("_AM_XP2_NG_BLOCK_REMOVE","Remove xoops abnormal block table");
+	define("_AM_XP2_BLOCK_OR","OR");
 }
 ?>
Index: /trunk/xpressme_integration_kit/admin/block_check.php
===================================================================
--- /trunk/xpressme_integration_kit/admin/block_check.php	(revision 597)
+++ /trunk/xpressme_integration_kit/admin/block_check.php	(revision 598)
@@ -74,8 +74,10 @@
 switch ( $xoops_block_check->get_op() ) 
 {
+case "remove_all_block":
+	echo $xoops_block_check->remove_all_block();
+	break;
 case "remove_block":
 	echo $xoops_block_check->remove_block();
 	break;
-
 default:
 	if ($xoops_block_check->check_blocks($mydirname)){
@@ -90,8 +92,12 @@
 			echo _AM_XP2_BLOCK_REPAIR_HOWTO."<br />\n"; 
 			echo '<form method="POST">'."\n";
-			echo _AM_XP2_BLOCK_REPAIR_STEP1 .' : '."\n"; 
-			echo '<input type="submit" name="mid:'.$xoops_block_check->module_id.'" value="' . _AM_XP2_BLOCK_REMOVE . ': '.$xoops_block_check->module_name.'" />'."<br />\n";
+			echo _AM_XP2_BLOCK_REPAIR_STEP1 .' : <br />'."\n"; 
 			echo '&emsp;&emsp;&emsp;&emsp;&nbsp;';
-			echo _AM_XP2_BLOCK_REMOVE_NOTE;
+			echo '<input type="submit" name="mid:'.$xoops_block_check->module_id.'" value="' . _AM_XP2_NG_BLOCK_REMOVE . ': '.$xoops_block_check->module_name.'" />'."<br />\n";
+			echo '&emsp;&emsp;&emsp;&nbsp;' . _AM_XP2_BLOCK_OR . '<br />'."\n";
+			echo '&emsp;&emsp;&emsp;&emsp;&nbsp;';
+			echo '<input type="submit" name="amid:'.$xoops_block_check->module_id.'" value="' . _AM_XP2_BLOCK_REMOVE . ': '.$xoops_block_check->module_name.'" />'."<br />\n";
+			echo '<br />'."\n";
+			echo '&emsp;&emsp;&emsp;&nbsp;' . _AM_XP2_BLOCK_REMOVE_NOTE;
 			echo "</form>\n";
 			echo "<br />\n";
Index: /trunk/xpressme_integration_kit/class/check_blocks_class.php
===================================================================
--- /trunk/xpressme_integration_kit/class/check_blocks_class.php	(revision 597)
+++ /trunk/xpressme_integration_kit/class/check_blocks_class.php	(revision 598)
@@ -68,4 +68,10 @@
 	foreach ( $_POST as $k => $v )
 	{
+		if ( preg_match( "/^amid:/", $k ) )
+		{
+			$op  = 'remove_all_block';
+			$mid = intval( str_replace("amid:", "", $k) );
+			break;
+		}
 		if ( preg_match( "/^mid:/", $k ) )
 		{
@@ -106,5 +112,5 @@
 }
 
-function remove_block()
+function remove_all_block()
 {
 	$text = "<h1>Remove xoops block table</h1>\n";
@@ -141,4 +147,55 @@
 	return $text;
 }
+function remove_block()
+{
+	$text = "<h1>Remove xoops block table</h1>\n";
+
+	$error = false;
+	$block_objs =& $this->_get_block_object_orber_num_bymodule_id( $this->module_id);
+	$module_obj =& $this->_get_module_object_bymodule_id( $this->module_id );
+	$infos    =& $module_obj->getInfo('blocks');
+
+	foreach ( $infos as $num => $info )
+	{
+		$block_err = false;
+		if ( !isset( $block_objs[ $num ] ) ){
+			$block_err = true;
+		} else {
+			$block_obj = $block_objs[ $num ];
+			if ( isset($info['file']) && ( $info['file'] != $block_obj->getVar('func_file', 'n') ) ) $block_err = true;
+			if ( isset($info['show_func']) && ( $info['show_func'] != $block_obj->getVar('show_func', 'n') ) ) $block_err = true;
+			if ( isset($info['edit_func']) && ( $info['edit_func'] != $block_obj->getVar('edit_func', 'n') ) ) $block_err = true;
+			if ( isset($info['template']) && ( $info['template'] != $block_obj->getVar('template', 'n') ) ) $block_err = true;
+			if ( isset($info['options']) ){
+				$option_arr_1 = explode( '|', $info['options'] );
+				$option_arr_2 = explode( '|', $block_obj->getVar('options', 'n') );
+			
+				$excludes_block = array();
+			
+				if (in_array($info['file'],$excludes_block)){
+					if ( count($option_arr_1) > count($option_arr_2) ) $block_err = true;
+				} else {
+					if ( count($option_arr_1) != count($option_arr_2) ) $block_err = true;
+				}
+			}
+		}
+		if ($block_err){
+			$ret = $this->_delete_block( $block_obj );
+			if ( !$ret ) $error = true;
+		}
+	}
+
+	if ( !$error ) {
+		$text .= '<h4 style="color:#0000ff">Success</h4>'."\n";
+	} else {
+		$text .= '<h4 style="color:#ff0000">Failed</h4>'."\n";
+	}
+
+	$url = $this->_build_url_module_update( $module_obj->getVar('dirname', 'n') );
+	$text .= '<a href="'.$url.'">GO to Module Update: '.$module_obj->getVar('name', 's')."</a><br /><br />\n";
+//	$text .= '<a href="check_blocks.php">Check xoops block table</a><br />'."\n";
+
+	return $text;
+}
 
 //--------------------------------------------------------
@@ -190,6 +247,9 @@
 {
 	$this->_error_flag = false;
-
-	$name = htmlspecialchars( $info['name'] );
+	
+	$bid = $block_obj->getVar('bid', 'n');
+	$edit_url = $this->_build_url_block_edit( $bid );
+	$name = '<a href="' . $edit_url . '">'. htmlspecialchars( $info['name'] ). '</a>';
+//	$name = htmlspecialchars( $info['name'] );
 
 	if ( isset($info['file']) && ( $info['file'] != $block_obj->getVar('func_file', 'n') ) )
@@ -295,5 +355,17 @@
 	return $url;
 }
-
+function _build_url_block_edit( $bid )
+{
+	$dir_name = $this->module_dirname;
+	if (file_exists(XOOPS_ROOT_PATH . '/modules/altsys/admin/index.php')){
+//		$url = XOOPS_URL.'/modules/altsys/admin/index.php?mode=admin&lib=altsys&page=myblocksadmin&dirname=xp_trunk&op=edit&bid='.$bid;
+		$url = XOOPS_URL.'/modules/'.$dir_name.'/admin/index.php?mode=admin&lib=altsys&page=myblocksadmin&dirname='.$dir_name.'xp_trunk&op=edit&bid='.$bid;
+	} else if ( $this->_xoops_version == '2.1' ) {
+		$url = XOOPS_URL.'/modules/legacy/admin/index.php?action=BlockEdit&bid='.$bid;
+	} else {
+		$url = XOOPS_URL.'/modules/system/admin.php?fct=blocksadmin&op=mod&bid='.$bid;
+	}
+	return $url;
+}
 //--------------------------------------------------------
 // user handler
Index: /trunk/xpressme_integration_kit/language/english/admin.php
===================================================================
--- /trunk/xpressme_integration_kit/language/english/admin.php	(revision 597)
+++ /trunk/xpressme_integration_kit/language/english/admin.php	(revision 598)
@@ -39,4 +39,6 @@
 	define("_AM_XP2_USER_META_ERR","There is a meta key named %s that the prefix is different in %d piece.");
 	define("_AM_XP2_USER_META_OK","The user meta key is normal.");		
+	define("_AM_XP2_NG_BLOCK_REMOVE","Remove xoops abnormal block table");
+	define("_AM_XP2_BLOCK_OR","OR");
 }
 ?>
Index: /trunk/xpressme_integration_kit/language/ja_utf8/admin.php
===================================================================
--- /trunk/xpressme_integration_kit/language/ja_utf8/admin.php	(revision 597)
+++ /trunk/xpressme_integration_kit/language/ja_utf8/admin.php	(revision 598)
@@ -27,5 +27,5 @@
 	define("_AM_XP2_BLOCK_REPAIR_HOWTO","以下の手順に従ってブロックを修正してください。");
 	define("_AM_XP2_BLOCK_REPAIR_STEP1","ステップ 1");
-	define("_AM_XP2_BLOCK_REMOVE","ブロックを削除");
+	define("_AM_XP2_BLOCK_REMOVE","全ブロックを削除");
 	define("_AM_XP2_BLOCK_REMOVE_NOTE","注意: モジュールのブロックがデータベースから<b>削除</b>されます。");
 	define("_AM_XP2_BLOCK_REPAIR_STEP2","ステップ 2");
@@ -39,4 +39,6 @@
 	define("_AM_XP2_USER_META_ERR","プレフィックスの異なる %s というメタキーが %d つあります。");
 	define("_AM_XP2_USER_META_OK","ユーザーメタキーは正常です");	
+	define("_AM_XP2_NG_BLOCK_REMOVE","NGブロックを削除");
+	define("_AM_XP2_BLOCK_OR","または");
 }
 ?>
Index: /trunk/xpressme_integration_kit/language/japanese/admin.php
===================================================================
--- /trunk/xpressme_integration_kit/language/japanese/admin.php	(revision 597)
+++ /trunk/xpressme_integration_kit/language/japanese/admin.php	(revision 598)
@@ -27,5 +27,5 @@
 	define("_AM_XP2_BLOCK_REPAIR_HOWTO","°Ê²¼¤Î¼ê½ç¤Ë½¾¤Ã¤Æ¥Ö¥í¥Ã¥¯¤ò½¤Àµ¤·¤Æ¤¯¤À¤µ¤¤¡£");
 	define("_AM_XP2_BLOCK_REPAIR_STEP1","¥¹¥Æ¥Ã¥× 1");
-	define("_AM_XP2_BLOCK_REMOVE","¥Ö¥í¥Ã¥¯¤òºï½ü");
+	define("_AM_XP2_BLOCK_REMOVE","Á´¥Ö¥í¥Ã¥¯¤òºï½ü");
 	define("_AM_XP2_BLOCK_REMOVE_NOTE","Ãí°Õ: ¥â¥¸¥å¡¼¥ë¤Î¥Ö¥í¥Ã¥¯¤¬¥Ç¡¼¥¿¥Ù¡¼¥¹¤«¤é<b>ºï½ü</b>¤µ¤ì¤Þ¤¹¡£");
 	define("_AM_XP2_BLOCK_REPAIR_STEP2","¥¹¥Æ¥Ã¥× 2");
@@ -39,4 +39,6 @@
 	define("_AM_XP2_USER_META_ERR","¥×¥ì¥Õ¥£¥Ã¥¯¥¹¤Î°Û¤Ê¤ë %s ¤È¤¤¤¦¥á¥¿¥­¡¼¤¬ %d ¤Ä¤¢¤ê¤Þ¤¹¡£");
 	define("_AM_XP2_USER_META_OK","¥æ¡¼¥¶¡¼¥á¥¿¥­¡¼¤ÏÀµ¾ï¤Ç¤¹");	
+	define("_AM_XP2_NG_BLOCK_REMOVE","NG¥Ö¥í¥Ã¥¯¤òºï½ü");
+	define("_AM_XP2_BLOCK_OR","¤Þ¤¿¤Ï");
 }
 ?>
