Bug(バグ) #2467
完了携帯版プロフィール確認画面からプロフィール編集へ飛ぶリンクが表示されない
0%
説明
Overview (現象)¶
携帯版プロフィール確認画面(/member/profile)にて、ページ上部に表示されるプロフィール変更へのメッセージが表示されない
表示されるべきメッセージ¶
他のメンバーから見たあなたのページはこのようになります。 プロフィールを変更する場合は「プロフィール変更」よりおこなえます。
現象確認バージョン¶
OpenPNE 3.6RC2
OpenPNE 3.7.0-dev (master)
Causes (原因)¶
下記部分4行目で同じメンバであってもオブジェクトが違うため等しいとならない.
apps/mobile_frontend/modules/member/templates/profileSuccess.php
1 <?php op_mobile_page_title($member->getName()) ?> 2 <?php $culture = sfCultureInfo::getInstance($sf_user->getCulture()); ?> 3 4 <?php if ($member == $sf_user->getMember()) : ?> 5 <font color="<?php echo $op_color["core_color_22"] ?>"> 6 <?php echo __('This is your page other member see.') ?><br> 7 <?php echo __('If you edit profile, access %1%.', array('%1%' => link_to('「'. __('Edit profile') .'」', '@member_editProfile'))) ?> 8 </font> 9 <?php endif; ?> 10
Way to fix (修正内容)¶
$memberオブジェクトごとの比較ではなくidを用いて比較を行う.
ファイル
Yuya Watanabe さんが約13年前に更新
メモ¶
apps/mobile_frontend/modules/member/templates/profileSuccess.phpには3.4,3.6で違いは無し.
1 <?php op_mobile_page_title($member->getName()) ?> 2 <?php $culture = sfCultureInfo::getInstance($sf_user->getCulture()); ?> 3 4 <?php if ($member == $sf_user->getMember()) : ?> 5 <font color="<?php echo $op_color["core_color_22"] ?>"> 6 <?php echo __('This is your page other member see.') ?><br> 7 <?php echo __('If you edit profile, access %1%.', array('%1%' => link_to('「'. __('Edit profile') .'」', '@member_editProfile'))) ?> 8 </font> 9 <?php endif; ?> 10
apps/mobile_frontend/modules/member/actions/actions.class.phpのexecuteProfile()でも3.4と3.6では違いは無し.
56 public function executeProfile($request) 57 { 58 $this->friendsSize = 5; 59 $this->communitiesSize = 5; 60 61 $gadgets = Doctrine::getTable('Gadget')->retrieveGadgetsByTypesName('mobileProfile'); 62 $this->mobileTopGadgets = $gadgets['mobileProfileTop']; 63 $this->mobileContentsGadgets = $gadgets['mobileProfileContents']; 64 $this->mobileBottomGadgets = $gadgets['mobileProfileBottom']; 65 66 return parent::executeProfile($request); 67 }
以下違いが発生している部分.
3.4のapps/mobile_frontend/modules/member/actions/actions.class.phpが継承しているlib/action/sfOpenPNEMemberAction.class.php
107 /** 108 * Executes profile action 109 * 110 * @param sfRequest $request A request object 111 */ 112 public function executeProfile($request) 113 { 114 $this->redirectIf($this->relation->isAccessBlocked(), '@error'); 115 116 $id = $this->getRequestParameter('id', $this->getUser()->getMemberId()); 117 $this->member = Doctrine::getTable('Member')->find($id); 118 119 $this->forward404Unless($this->member, 'Undefined member.'); 120 121 if (!$this->friendsSize) 122 { 123 $this->friendsSize = 9; 124 } 125 $this->friends = $this->member->getFriends($this->friendsSize, true); 126 127 if (!$this->communitiesSize) 128 { 129 $this->communitiesSize = 9; 130 } 131 $this->communities = $this->member->getJoinCommunities($this->communitiesSize, true); 132 $this->crownIds = Doctrine::getTable('CommunityMember')->getCommunityIdsOfAdminByMemberId($id); 133 134 return sfView::SUCCESS; 135 }
3.6のapps/mobile_frontend/modules/member/actions/actions.class.phpが継承しているlib/action/opMemberAction.class.php
180 public function executeProfile($request) 181 { 182 $id = $this->getRequestParameter('id', $this->getUser()->getMemberId()); 183 if ('member_profile_mine' === sfContext::getInstance()->getRouting()->getCurrentRouteName()) 184 { 185 $this->forward404Unless($id); 186 $this->member = $this->getUser()->getMember(); 187 } 188 else 189 { 190 $this->member = $this->getRoute()->getObject(); 191 } 192 193 if (!$this->friendsSize) 194 { 195 $this->friendsSize = 9; 196 } 197 $this->friends = $this->member->getFriends($this->friendsSize, true); 198 199 if (!$this->communitiesSize) 200 { 201 $this->communitiesSize = 9; 202 } 203 $this->communities = $this->member->getJoinCommunities($this->communitiesSize, true); 204 $this->crownIds = Doctrine::getTable('CommunityMember')->getCommunityIdsOfAdminByMemberId($id); 205 206 return sfView::SUCCESS; 207 }
アクションで与えられる$memberの取得方法が違うためprofileSuccess.phpの4行目の$member == $sf_user->gerMember()で違いが発生しているのではないか.
Yuya Watanabe さんが約13年前に更新
- 説明 を更新 (差分)
- ステータス を New(新規) から Accepted(着手) に変更
- 担当者 を Yuya Watanabe にセット
- 対象バージョン を OpenPNE 3.7.0 にセット
wa ta さんが約13年前に更新
- ステータス を Accepted(着手) から Pending Review(レビュー待ち) に変更
- 進捗率 を 0 から 50 に変更
更新履歴 8d1b9dc64eb6396521b707ee4457274ece2f32d3 で適用されました。
Kousuke Ebihara さんが約13年前に更新
- ステータス を Pending Review(レビュー待ち) から Rejected(差し戻し) に変更
id 同士の比較でも特に問題ありませんが、 PC 版テンプレートでおこなわれているように、 MemberRelationship を利用した判定処理に変更した方がよいと思います。
41 <?php slot('op_top'); ?> 42 <?php if ($relation->isSelf()): ?> 43 <?php ob_start() ?> 44 <p><?php echo __('Other members look your page like this.') ?></p>
wa ta さんが約13年前に更新
- ステータス を Rejected(差し戻し) から Pending Review(レビュー待ち) に変更
更新履歴 7bb202e97721598e443b882aab709575cfe046c5 で適用されました。
Yuma Sakata さんが約12年前に更新
- 対象バージョン を OpenPNE 3.8.x から OpenPNE 3.9.0-old に変更
- 3.6 で発生するか を Unknown (未調査) にセット
- 3.8 で発生するか を Unknown (未調査) にセット
Kousuke Ebihara さんが約12年前に更新
- ステータス を Pending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
- 進捗率 を 50 から 70 に変更