プロジェクト

全般

プロフィール

Bug(バグ) #2984

完了

スマホ版において,PC版のスキンプラグインを変更するとスマホ版でスキンプラグインのCSSが読み込まれてしまう

Shouta Kashiwagi さんが12年以上前に追加. 7年以上前に更新.

ステータス:
Won't fix(対応せず)
優先度:
Normal(通常)
担当者:
対象バージョン:
開始日:
2012-04-18
期日:
進捗率:

0%

予定工数:
3.6 で発生するか:
Unknown (未調査)
3.8 で発生するか:
Unknown (未調査)

説明

現象

スマホ版において,PC版のデフォルトスキンプラグイン(opSkinBasicPlugin)から別のスキンプラグイン(opSkinBootstrapPluign等)に変更すると
変更したスキンプラグインのCSSがスマホ版においても読み込まれてしまう

発生バージョン: OpenPNE 3.8beta1, OpenPNE3.8RC1

原因

理由としては,スマホ版テンプレートに以下のようなコードの記述がなされていて,
opSkinBasicPluginに依存するような書き方がされているからである.

  • apps/pc_frontend/templates/smtLayoutHome.php
1. <?php use_helper('Javascript') ?>
2. <?php $sf_response->removeStylesheet('/opSkinBasicPlugin/css/main.css') ?>
3. 

修正内容

opSkinBasicPlugin以外におけるスキンプラグインのmain.cssを,スマホ版でロードされないようにする


関連するチケット 1 (0件未完了1件完了)

関連している OpenPNE 3 - Backport(バックポート) #2985: スマホ版において,PC版のスキンプラグインを変更するとスマホ版でスキンプラグインのCSSが読み込まれてしまうFixed(完了)Yuya Watanabe2012-04-18

操作

Shouta Kashiwagi さんが12年以上前に更新

Yuya Watanabe さんが12年以上前に更新

  • 担当者Yuya Watanabe にセット

Yuya Watanabe さんが12年以上前に更新

  • ステータスNew(新規) から Accepted(着手) に変更

Yuya Watanabe さんが12年以上前に更新

変更対象ファイル群.

apps/pc_frontend/templates/smtLayoutMember.php
2:<?php $sf_response->removeStylesheet('/opSkinBasicPlugin/css/main.css') ?>

apps/pc_frontend/templates/smtLayoutHome.php
2:<?php $sf_response->removeStylesheet('/opSkinBasicPlugin/css/main.css') ?>

apps/pc_frontend/templates/smtLayoutSns.php
2:<?php $sf_response->removeStylesheet('/opSkinBasicPlugin/css/main.css') ?>

apps/pc_frontend/templates/smtLayoutGroup.php
2:<?php $sf_response->removeStylesheet('/opSkinBasicPlugin/css/main.css') ?>

Yuya Watanabe さんが12年以上前に更新

修正方針

response に addStylesheet() している部分は view.yml のキャッシュ部分であるため直接追加部分のソースの変更を行うことはできない.
よって修正方針としては以下の3つが考えられる.

  1. ビュー部分で不必要な css や js をすべて $response->removeStylesheet() や $response->removeJavascript() などで使用しないようにする
  2. include_stylesheet() や include_javasript() のスマートフォンを対象とした処理を追加して不必要な css や js を読み込まないようにする
  3. view.yml のキャッシュ生成時に不必要な css や js を読み込まないようにする.

1 の方法だと,各ビューで同じような処理を追加する必要があり,そうでなくても不必要なファイルを読み込んでから削除するという処理が発生する無駄があるので取りうるべきではない.
2 の方法も無難ではあるが,Symfony の作法とは別に OpenPNE での作法となるため,カスタマイズなどでスマートフォン対応をする際に実装ミスの原因となる可能性がある.また,PC版と共通のファイルを読み込みたい場合などであっても,PC版とスマートフォン版でそれぞれ読み込む処理を追加しなければならない.これらはすべてソースコードで設定を行わなければならないため,PC版のように view.yml から設定を行うことができない.
3 の方法が最も適切であると思うが,PC版と同じアプリケーションで実装されているためキャッシュがPC版と混在してしまう.これを避けるため,2のようにスマートフォンで必要な css や js を得る手段が必要であると考えられる.

2 または 3 の方法を選択する場合にはいずれにせよスマートフォン用のファイルを得る手段が必要なため,今回は実装が簡単な 2 の方法を選択することにする. 3 の方法は今後の改善要求として 別チケットで作成しておくこととする.( #3043

その他

本チケットではPC版のスキンプラグインが読み込まれてしまうという問題であるが, 管理画面で設定したカスタマイズCSSもPC版用として設定されたものが適用されてしまう.この問題については別チケットで対応する.( #3040

Yuya Watanabe さんが12年以上前に更新

  • ステータスAccepted(着手) から Pending Review(レビュー待ち) に変更
  • 進捗率0 から 50 に変更

更新履歴 f479f7cd9b065f2f718d3c5bf6b534580cad48e8 で適用されました。

Rimpei Ogawa さんが12年以上前に更新

  • ステータスPending Review(レビュー待ち) から Rejected(差し戻し) に変更

sfWebResponse のいくつかのメソッドで stylesheets/javascripts プロパティは対応しているが、 smtStylesheets/smtJavascripts プロパティは対応できていないものがあります。

  • initialize() で smt* のプロパティが初期化されない(array_combine() 使っているところ)
  • copyProperties() / merge() で smt* のプロパティが反映されない
  • serialize() / unserialize() で smt* のプロパティが保存・復元されない

また、使用されていないプロパティ displayMember/displayCommunity が残っていますが、これについては別チケットで扱うということでこのチケットでのレビュー対象とはしませんでした。

Yuya Watanabe さんが12年以上前に更新

  • ステータスRejected(差し戻し) から Accepted(着手) に変更
  • 進捗率50 から 0 に変更

Yuya Watanabe さんが12年以上前に更新

「使用されていないプロパティ displayMember/displayCommunity が残っていますが、これについては別チケットで扱う」としていましたが,対象チケットがなく,影響範囲もないということで本チケットで同時に修正を行います.

Yuya Watanabe さんが12年以上前に更新

  • ステータスAccepted(着手) から Pending Review(レビュー待ち) に変更
  • 進捗率0 から 50 に変更

更新履歴 91b09bbae018ed73bdc621504d87c6acf1d30300 で適用されました。

Yuya Watanabe さんが12年以上前に更新

更新履歴 9c524c3855389400e2b397766a954e60ab16afa6 で適用されました。

Rimpei Ogawa さんが12年以上前に更新

  • ステータスPending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
  • 進捗率50 から 70 に変更

kaoru n さんが9年以上前に更新

  • 3.8 で発生するかUnknown (未調査) にセット

isao sano さんが7年以上前に更新

  • ステータスPending Testing(テスト待ち) から Won't fix(対応せず) に変更
  • 進捗率70 から 0 に変更

OpenPNE 3.8.0 にて対応済みであったため、対応せずとします。

他の形式にエクスポート: Atom PDF