ここの情報は古いです。ご理解頂いた上でお取り扱いください。

Opened 12 years ago

Closed 12 years ago

Last modified 12 years ago

#1703 closed defect (fixed)

NoImage画像関連の[デフォルトに戻す]ボタンが消えない

Reported by: kiwa Owned by: ebihara
Priority: major Milestone: OpenPNE2.10.3
Component: pne-admin Version: 2.10.x & 2.11.x
Keywords: OpenPNE2.11.4 Cc:

Description (last modified by ebihara)

■現象

  • NoImage画像関連の[デフォルトに戻す]ボタンが消えない

■原因

  • スキン画像ファイル名が skin_$skinname.gif である場合のみ、[デフォルトに戻す]ボタンを表示する仕様になっている

■修正内容

  • [デフォルトに戻す] ボタンをクリックした場合、スキン画像ファイル名に default_skin_ というプレフィックスをつける
  • プレフィックスに default_skin_ があるかどうかでスキン画像かどうかを判断するようにする

※ファイル名を skin_$skinname.gif にしても解決するが、ブラウザキャッシュの影響を受けてしまう

■関連情報

  • 報告元
     Ticket #1613により、デフォルト画像に戻らない件は直ったのですが、デフォルト画像に戻しても[デフォルトに戻す]ボタンが出たままです。
     
     webapp\modules\admin\templates\edit_skin_image.tpl
     
     no_image、no_logo、no_logo_smallの[デフォルトに戻す]を表示非表示する判定が
     
     {if $skin_list[$skinname] != "skin_$skinname.gif"}
     
     となっているためと思われます。画像を差し替えたり、デフォルトに戻すたび、ファイル名につくタイムスタンプが変わるので、上の比較は差し替え前の初回のみ有効です。
     
     no_imageなどをデフォルトに戻すときはタイムスタンプをつける必要はないと思うので、
     webapp\lib\db\etc.php\db_insert_c_image4skin_filename
     前:$filename = sprintf('skin_%s_%s.%s', $skinname, time(), $ext);
     後:$filename = sprintf('skin_%s.%s', $skinname, $ext);
     のように直しました。
    
  • 同一チケット:#1450

Change History (18)

comment:1 Changed 12 years ago by kiwa

Priority: minormajor

comment:2 Changed 12 years ago by kiwa

Keywords: 再現待ち removed
Priority: majorminor

comment:3 Changed 12 years ago by kiwa

Description: modified (diff)
Version: 2.10.x & 2.11.x2.8.x & 2.10.x & 2.11.x

comment:4 Changed 12 years ago by kiwa

Keywords: OpenPNE2.8.8 added
Milestone: OpenPNE2.10.3

comment:5 Changed 12 years ago by kiwa

Priority: minormajor

comment:6 Changed 12 years ago by kiwa

Keywords: OpenPNE2.11.4 added

comment:7 Changed 12 years ago by ebihara

Owner: changed from nobody to ebihara
Status: newassigned

やります

comment:8 Changed 12 years ago by ebihara

Owner: changed from ebihara to nobody
Status: assignednew

提案していただいた対応策を試してみましたが、おおむね問題なく動作しました。

ただし、この「NoImageなどをデフォルトに戻す際はファイル名にする」という対応策だと、プリセットデザインの置き場所である public_html/skin/ 以下にオリジナルのスキンを作成して置いており、なおかつそのスキンのなかに NoImage? などが含まれていた場合に問題が生じます。

  1. オリジナルのスキン(NoImageが含まれている)を public_html/skin 以下に設置
  2. 「プリセットデザインから設定」から、1.で設置したオリジナルのスキンを使用するように設定する
  3. NoImage画像がオリジナルスキンのデフォルト画像になり(そして c_skin_filename.filename は skin_no_image.gif になり)、NoImage画像の「デフォルトに戻す」リンクが消える
  4. オリジナルスキンのNoImage画像を public_html/skin 以下から直接変更する
  5. 3. 時点でのskin_no_image.gifがNoImage画像として設定されたままだが、「デフォルトに戻す」リンクが表示されないため、4.で直接変更したNoImage画像に設定し直す手段が、「フォームからスキン画像をアップロードする」「プリセットデザインをもう一度変更し直す」しかなくなる

以上の現象と「デフォルトに戻す」リンクが消えない現象のどちらも管理者の混乱を誘発するため、どう対処すればいいのか悩ましいところではあります。

いい対処策が思いつかないので、とりあえず保留とさせてください。手放します。

comment:9 in reply to:  8 Changed 12 years ago by ogawa

上記はレアケースとして、もう少し単純な話で、

  • !NoImage画像を変更していない状態で(c_skin_filename.filename は skin_no_image.gif)

(上記と同じ1~3)

  1. オリジナルのスキン(!NoImageが含まれている)を public_html/skin 以下に設置
  2. 「プリセットデザインから設定」から、1.で設置したオリジナルのスキンを使用するように設定する
  3. !NoImage画像がオリジナルスキンのデフォルト画像になり(そして c_skin_filename.filename は skin_no_image.gif になり)、!NoImage画像の「デフォルトに戻す」リンクが消える

この時点で画像のURLが変更前と同一になり、ブラウザキャッシュの影響で変更が反映されないという問題が発生します。

ブラウザキャッシュの影響は回避したいので、対応としては[デフォルトに戻す]の表示判定を変更する方法を検討すべきだと思います。

comment:10 Changed 12 years ago by kiwa

Version: 2.8.x & 2.10.x & 2.11.x2.10.x & 2.11.x

comment:11 Changed 12 years ago by kiwa

Keywords: OpenPNE2.8.8 removed

comment:12 Changed 12 years ago by ebihara

Owner: changed from nobody to ebihara
Status: newassigned

[デフォルトに戻す]をおこなった場合は、画像ファイル名を default_skin_no_image.gif という形式にするという方向で検討してみます。

comment:13 Changed 12 years ago by ebihara

Keywords: 確認中 added

以下のリビジョンで対応しました。ご確認ください。

comment:14 Changed 12 years ago by ebihara

default_skin_ というプレフィックスから skin_default_ に変更しました。

comment:15 Changed 12 years ago by ogawa

Keywords: テスト待ち added; 確認中 removed

comment:16 Changed 12 years ago by kiwa

Keywords: テスト待ち removed

確認しました。問題なさそうです。

comment:17 Changed 12 years ago by kiwa

Resolution: fixed
Status: assignedclosed

comment:18 Changed 12 years ago by ebihara

Description: modified (diff)
Note: See TracTickets for help on using tickets.