操作
Backport(バックポート) #2475
完了opSkinClassicPlugin を使うと pc_frontend のナビゲーションでクリックできない箇所がある
開始日:
2011-10-06
期日:
進捗率:
100%
予定工数:
説明
概要¶
OpenPNE にはグローバルナビ、ローカルナビがある。これは3系と2系両方に存在するが、3系と2系では項目が異なっている。
opSkinClassicPlugin は、3系で2系のデザインを模倣するスキンだが、これを用いると2系のナビ項目の名称が表示されてしまい、次の問題が生じる。
- (P1) 2系にしか存在しない(3系で実装されていない)ナビ項目が機能しない(クリックできない項目が表示されている)
- (P2) 3系にしか存在しないナビ項目が表示できない(項目名が2系で用いている画像で表示されているため)
これとは別に、次の問題が生じている。
- (P3) 3系に存在するナビ項目のほとんどが機能していない(クリックできない)
このチケットでは (P3) を扱う。
補足¶
opSkinClassicPlugin を用いなければよいという話ではあるが、2系からのコンバートを行ったSNSはデフォルトで opSkinClassicPlugin が使われる。これを加味するとこの問題がどれほど重大であるかが考えやすいかもしれない。
バージョン¶
- OpenPNE-3.6.x で生じている(ログアウトなど基本機能がクリックできない)
- stable-3.6.x ブランチ
- master ブランチ
OpenPNE-3.4.x では、ログアウトなどの基本機能はクリックできる。しかし 3.4.x でも、実装されているがクリックできないナビ項目が存在するかもしれない(後述の原因を参照)。
原因¶
この問題は主に次の 3 つの原因によるものである。
- (C1) opSkinClassicPlugin の CSS に記述されているセレクタと、実際に出力される HTML 上の id 値が一致していない(3.6.x 以降)
- (C2) 3系で新たに実装された機能(バンドルされたプラグインで実装された機能)に対応するナビ項目について、そのナビ項目を機能させるために opSkinClassicPlugin の CSS を書き換える(追記する)必要があるが、それを行なっていない(3.6.x 以降、もしかしたら 3.4.x でもあるかもしれない)
- (C3) ナビゲーション項目の id 値を決定するための op_url_to_id() 関数が URL の記述の仕方(member/search か @member_search かの違い)によって、出力される値が異なっている( #257 時点からで、これは 3.3.0 対象なので、 3.4.x 以降)
修正方針¶
原因の (C2) については CSS に追記する対応をする。
(C1) について、 3.6.x 以降で生じているが 3.4.x では生じていない点については #1004 の修正(3.5.2 対象)がきっかけであり、この問題の根本的な原因は #257 の 3da8aa22 で定義されている op_url_to_id() の定義 か使い方 ( glovalNav / localNav ) が誤っていることである。
(C1) については次のいずれかの方針で修正する。
- (S1): HTML 側の出力は修正せずに CSS 側のセレクタを修正する
- (S2): HTML 側の出力(恐らく op_url_to_id() 関数の定義)を修正する
- この場合、既に CSS ( 3.4.x および 3.6.x 以降)に _foo と __bar のように (C3) の問題を受けた記述が存在するため、 CSS も併せて修正する必要がある
操作