EMLH-1.30相当の機能をpreloadで実現してみました。HDのpreload/disabledにもこっそり忍ばせてあったりします
preload/MultiLanguagePostMerger.class.php
<?php
if (!defined('XOOPS_ROOT_PATH')) exit();
@include_once XOOPS_ROOT_PATH . '/modules/cubeUtils/class/MultiLanguage.class.php';
class MultiLanguagePostMerger extends XCube_ActionFilter
{
function preFilter()
{
if ( ! empty( $_POST ) && file_exists(XOOPS_ROOT_PATH.'/modules/cubeUtils/class/MultiLanguage.class.php')) {
// just after MultiLanguagePreLoad
$this->mController->mGetLanguageName->add(array(&$this, 'postMerger'),XCUBE_DELEGATE_PRIORITY_FINAL+1);
}
}
function postMerger()
{
global $cubeUtilMlang ;
if( is_object( $cubeUtilMlang ) ) $this->mergeRecursive( $_POST ) ;
}
function mergeRecursive( &$data )
{
global $cubeUtilMlang ;
$merged_string = '' ;
$langs_counter = 0 ;
foreach( array_keys( $data ) as $index ) {
if( is_array( $data[ $index ] ) ) {
$this->mergeRecursive( $data[ $index ] ) ;
} else if( in_array( $index , $cubeUtilMlang->mLanguages ) ) {
$merged_string .= '['.$index.']'.$data[ $index ].'[/'.$index.']' ;
$langs_counter ++ ;
}
}
if( $langs_counter == sizeof( $cubeUtilMlang->mLanguages ) ) {
$data = $merged_string ;
}
}
}
GIJOE wrotes:
とりあえず、という判定条件を、! empty( $_POST )
としたらどうなりますか?sizeof( @$_POST ) > 0
if ( sizeof( @$_POST ) > 0 && file_exists(XOOPS_ROOT_PATH.'/modules/cubeUtils/class/MultiLanguage.class.php')) {
echo 0;
array(hoge) {
["cat_title"]=>
array(2) {
["ja"]=>
string(27) "日本語"
["en"]=>
string(13) "English"
}
}
} else if( in_array( $index , $cubeUtilMlang->mLanguages ) ) {
$merged_string .= '['.$index.']'.$data[ $index ].'[/'.$index.']' ;
$langs_counter ++ ;
}
}
echo '<pre>' ;
var_dump( str_replace( '[','-',$merged_string ) ) ;
echo '</pre>' ;
die();
if( $langs_counter == sizeof( $cubeUtilMlang->mLanguages ) ) {
あと、テンプレートは見るからにおかしいですよね。
<snip>
じゃないと、マージした意味がありません。
! empty( $_POST )
sizeof( @$_POST ) > 0
<{*
<tr valign="top" align="left">
<th class="head"><label for="category_title"><{$smarty.const._MD_PICO_TH_CATEGORYTITLE}></label></th>
<td class="even">
<input type="text" name="cat_title" id="category_title" size="50" maxlength="255" value="<{$category.title}>" />
</td>
</tr>
*}>
<tr valign="top" align="left">
<th class="head"><label for="title[ja]">日本語タイトル</label></th>
<td class="even">
<input type="text" name="cat_title[ja]" id="title[ja]" size="35" maxlength="255" value="<{$category.title|easiestml:"ja"}>" />
</td>
</tr>
<tr valign="top" align="left">
<th class="head"><label for="title[en]">英語タイトル</label></th>
<td class="even">
<input type="text" name="cat_title[en]" id="title[en]" size="35" maxlength="255" value="<{$category.title|easiestml:"en"}>" />
</td>
</tr>
function preFilter()
{
echo 0;
function preFilter()
{
if ( ! empty( $_POST ) && file_exists(XOOPS_ROOT_PATH.'/modules/cubeUtils/class/MultiLanguage.class.php')) {
echo 0;
function preFilter()
{
if ( file_exists(XOOPS_ROOT_PATH.'/modules/cubeUtils/class/MultiLanguage.class.php')) {
echo 0;
}
function preFilter()
{
if ( ! empty( $_POST ) ) {
echo 0;
}
Warning: Cannot modify header information - headers already sent by (output started at /***/preload/MultiLanguagePostMerger.class.php:8) in /***/modules/cubeUtils/class/MultiLanguage.class.php on line 72
Warning: Cannot modify header information - headers already sent by (output started at /***/preload/MultiLanguagePostMerger.class.php:8) in /***/modules/cubeUtils/class/MultiLanguage.class.php on line 76
Warning [PHP]: Cannot modify header information - headers already sent by (output started at /***/preload/MultiLanguagePostMerger.class.php:8) in file /****/xoops_trust_path/modules/wizmobile/class/WizMobile.class.php line 152
Warning [PHP]: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /***/preload/MultiLanguagePostMerger.class.php:8) in file core/XCube_Session.class.php line 78
HdServerEnvironment.class.php
HdXoopsTplHook.class.php
LegacyRenderAssignMytrustdirname.class.php
MultiLanguageCompatibleEMLH.class.php
MultiLanguagePostMerger.class.php
MultiLanguagePreLoad.class.php
SetupAltsysLangMgr.class.php
MultiLanguageCompatibleEMLH.class.php
MultiLanguagePostMerger.class.php
MultiLanguagePreLoad.class.php
<{*
<tr valign="top" align="left">
<th class="head"><label for="category_title"><{$smarty.const._MD_PICO_TH_CATEGORYTITLE}></label></th>
<td class="even">
<input type="text" name="cat_title" id="category_title" size="50" maxlength="255" value="<{$category.title}>" />
</td>
</tr>
*}>
<tr valign="top" align="left">
<th class="head"><label for="title[ja]">日本語タイトル</label></th>
<td class="even">
<input type="text" name="title[ja]" id="title[ja]" size="35" maxlength="255" value="<{$category.title|easiestml:"ja"}>" />
</td>
</tr>
<tr valign="top" align="left">
<th class="head"><label for="title[en]">英語タイトル</label></th>
<td class="even">
<input type="text" name="title[en]" id="title[en]" size="35" maxlength="255" value="<{$category.title|easiestml:"en"}>" />
</td>
</tr>