E-mail パスワード
次回から自動ログインする    
パスワード紛失  新規登録      
   ホーム | フォーラム | ブログ | Wiki | 用語集 | マイアルバム | カレンダー | リンク | サイト内検索 |  
  • ソース を表示
  • inc/X2edituser は削除されています。
2: 2008-08-17 (日) 17:56:29 なーお ソース バックアップ No.2 を復元して編集 現: - no date - ソース 編集
Line 1: Line 1:
-**AU携帯からX2サイトでプロフィール編集できない件のハック [#s2b5cde0] 
-#nocontents 
-携帯対応レンダーで、どうしてもプロフィール編集ができない件、Xoops 2.0.16a-JPでは 「edituser.php」がテンプレートレスのため、xoops2のコアハックが必要です。 今回、修正できましたので公開します。 
- 
-追記: 案1、案2がありますが、 案2がお勧めです。&br;&br; 
- 
-***状況 [#d1d9014a] 
- 
-「edituser.php」のフォーム出力は、表組みの中に組み込まれています。 しかし、この中に3つの<input hidden..>要素があり、<tr><td></td></tr>で囲まれていません。 
- 
-PC表示の時のHTMLソース 
-#code(html,nonumber){{ 
-<form name='userinfo' id='userinfo' action='edituser.php' method='post' onsubmit='return xoopsFormValidate_userinfo();'> 
-<table width='100%' class='outer' cellspacing='1'><tr><th colspan='2'>プロフィールの編集</th></tr> 
- :(略) 
-<td class='even'><input type='radio' name='user_mailok' value='1' />はい 
-<input type='radio' name='user_mailok' value='0' checked='checked' />いいえ 
-</td></tr> 
-<input type='hidden' name='uid' id='uid' value='1' /> 
-<input type='hidden' name='op' id='op' value='saveuser' /> 
-<input type='hidden' name='XOOPS_TOKEN_edituser_0' id='XOOPS_TOKEN_edituser_0' value='73c49509e09fcefb3aee244ebbae50ee' /> 
-<tr valign='top' align='left'><td class='head'></td> 
-<td class='even'><input type='submit' class='formButton' name='submit'  id='submit' value='変更を保存' /> 
-</td></tr></table></form> 
-}} 
- 
-これが、PCのブラウザや、docomo、softbank携帯からは問題ないようなのですが、AUではどうしても送信しても元ページに戻ってしまいます。 
- 
-***案1「edituser.php」のハック [#x2cee16f] 
- 
-****edituser.phpのハック [#w69affb7] 
-edituser.phpの205行目あたり 
- 
-#code(php,205-){{ 
-   $uid_hidden = new XoopsFormHidden('uid', $xoopsUser->getVar('uid')); 
-   $op_hidden = new XoopsFormHidden('op', 'saveuser'); 
-   $token_hidden = new XoopsFormToken(XoopsSingleTokenHandler::quickCreate('edituser')); 
-   $submit_button = new XoopsFormButton('', 'submit', _US_SAVECHANGES, 'submit'); 
- 
-}} 
- 
- これを、↓ 以下のように変更 
- 
-#code(php,205-){{ 
-   $uid_hidden = "<tr><td></td><td><input type='hidden' name='uid' id='uid' value='" . $xoopsUser->getVar('uid'). "' />"; 
-   $op_hidden = "<input type='hidden' name='op' id='op' value='saveuser' />"; 
-   $token = new XoopsFormToken(XoopsSingleTokenHandler::quickCreate('edituser')); 
-   $token_hidden = "<input type='hidden' name='".$token->_name."' id='".$token->_name."' value='".$token->_value."' /></td></tr>"; 
-   $submit_button = new XoopsFormButton('', 'submit', _US_SAVECHANGES, 'submit'); 
- 
-}} 
- 
-****変更後にアクセス時のHTMLソース [#ka47efca] 
- 
-上記変更後に、PCからアクセスした時のHTMLソースは、以下のようになりました。 これで、AU携帯でも変更が可能になります。 
- 
-#code(html,nonumber){{ 
-<form name='userinfo' id='userinfo' action='edituser.php' method='post' onsubmit='return xoopsFormValidate_userinfo();'> 
-<table width='100%' class='outer' cellspacing='1'><tr><th colspan='2'>プロフィールの編集</th></tr> 
- :(略) 
-<td class='even'><input type='radio' name='user_mailok' value='1' />はい 
-<input type='radio' name='user_mailok' value='0' checked='checked' />いいえ 
-</td></tr> 
-<tr><td></td><td><input type='hidden' name='uid' id='uid' value='1' /> 
-<input type='hidden' name='op' id='op' value='saveuser' /> 
-<input type='hidden' name='XOOPS_TOKEN_edituser_0' id='XOOPS_TOKEN_edituser_0' value='10d24c91a2f218e02dc53e02a27622f3' /></td></tr> 
-<tr valign='top' align='left'><td class='head'></td><td class='even'> 
-<input type='submit' class='formButton' name='submit'  id='submit' value='変更を保存' /> 
-</td></tr></table></form> 
-}} 
- 
-***案2「themform.php」のハック [#pbfc6139] 
-上記&font(Red){「edituser.php」は元に戻し};て、「class/xoopsform/themform.php」をハックします。 この方法は、[[nso-ponさんに教えていただきました:http://xoops.hypweb.net/modules/forum/index.php?post_id=8790]]。 HTML構造的にも、こちらの方が正しいやりかただと思います。 
- 
-**** themeform.php の 82行目あたりから [#ec255cf5] 
-#code(php,82-){{ 
-    function render() 
-    { 
-     $required =& $this->getRequired(); 
-     $ret = "<form name='".$this->getName()."' id='".$this->getName()."' action='".$this->getAction()."' method='".$this->getMethod()."' onsubmit='return xoopsFormValidate_".$this->getName()."();'".$this->getExtra().">\n<table width='100%' class='outer' cellspacing='1'><tr><th colspan='2'>".$this->getTitle()."</th></tr>"; 
-     //$count = 0; 
-     $hidden = ''; 
-     foreach ( $this->getElements() as $ele ) { 
-     if (!is_object($ele)) { 
-     $ret .= $ele; 
-     } elseif (!$ele->isHidden()) { 
-     //if ($count % 2 == 0) { 
-     $class = 'even'; 
-     //} else { 
-     // $class = 'odd'; 
-     //} 
-     $ret .= "<tr valign='top' align='left'><td class='head'>".$ele->getCaption(); 
-     if ($ele->getDescription() != '') { 
-     $ret .= '<br /><br /><span style="font-weight: normal;">'.$ele->getDescription().'</span>'; 
-     } 
-     $ret .= "</td><td class='$class'>".$ele->render()."</td></tr>"; 
-     //$count++; 
-     } else { 
-     $hidden .= $ele->render(); 
-     } 
-     } 
-     $ret .= "</table>" . $hidden . "</form>\n"; 
-     $ret .= $this->renderValidationJS( true ); 
-     return $ret; 
-    } 
-}} 
- 
-****変更後にアクセス時のHTMLソース [#lb1de06b] 
-#code(html,nonumber){{ 
-<form name='userinfo' id='userinfo' action='edituser.php' method='post' onsubmit='return xoopsFormValidate_userinfo();'> 
-<table width='100%' class='outer' cellspacing='1'><tr><th colspan='2'>プロフィールの編集</th></tr> 
- :(略) 
-<td class='even'><input type='radio' name='user_mailok' value='1' />はい 
-<input type='radio' name='user_mailok' value='0' checked='checked' />いいえ 
-</td></tr> 
-<tr valign='top' align='left'><td class='head'></td> 
-<td class='even'><input type='submit' class='formButton' name='submit'  id='submit' value='変更を保存' /></td></tr></table> 
-<input type='hidden' name='uid' id='uid' value='1' /> 
-<input type='hidden' name='op' id='op' value='saveuser' /> 
-<input type='hidden' name='XOOPS_TOKEN_edituser_0' id='XOOPS_TOKEN_edituser_0' value='d7a44c5ccee5b9e7c95775c94437bd2b' /> 
-</form> 
- 
-}} 
- 
-以上 


トップ   編集 差分 バックアップ 複製 名前変更 リロード印刷に適した表示   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom Powered by xpWiki
Counter: 0, today: 0, yesterday: 0
Wiki新着ページ 

メインメニュー