プロジェクト

全般

プロフィール

Backport(バックポート) #3110

管理画面から画像をアップロードしたときに透過画像のときに透過されなくなる

開 石切山ほぼ12年前に追加. 11年以上前に更新.

ステータス:
Fixed(完了)
優先度:
Normal(通常)
担当者:
対象バージョン:
開始日:
2011-11-29
期日:
進捗率:

100%


説明

概要

管理画面から画像をアップロードしたときに透過画像のときに透過されなくなる.

原因

管理画面画像リスト(/pc_backend.php/monitoring/imageList)で画像を表示する際に保存されている画像のフォーマットが考慮されていない.
他の画像の場合にはファイル名のサフィックスとして拡張子を付与する(例: hoge_png)ことで sf_image_path() 使用時に自動的に保管するようになっているが, 管理画面の画像アップロードページからのアップロードではそのサフィックスが与えられていない.

apps/pc_backend/modules/monitoring/templates/_imageInfo.php

  5 <dd class="upImage"><a href="<?php echo sf_image_path($image->getName()) ?>"><?php echo image_tag_sf_image($image->getName(), $options = array('size' => '120x120')) ?></a></dd>

lib/vendor/symfony/lib/plugins/sfImageHandlerPlugin/lib/helper/sfImageHelper.php

 27 function image_tag_sf_image($filename, $options = array())
 28 {
 29   if (empty($options['alt']))
 30   {
 31     $options['alt'] = '';
 32   }
 33 
 34   if (!$filename)
 35   {
 36     if (isset($options['no_image']))
 37     {
 38       $filename = $options['no_image'];
 39       unset($options['no_image']);
 40     }
 41     else
 42     {
 43       $filename = 'no_image.gif';
 44     }
 45     return image_tag($filename, $options);
 46   }
 47 
 48   $filepath = sf_image_path($filename, $options);
...
 69 function sf_image_path($filename, $options = array(), $absolute = false)
 70 {
 71   if (isset($options['f']))
 72   {
 73     $f = $options['f'];
 74   }
 75   elseif (isset($options['format']))
 76   {
 77     $f = $options['format'];
 78   }
 79   elseif (is_callable(array($filename, 'getType')))
 80   {
 81     $f = str_replace('image/', '', $filename->getType());
 82   }
 83   else
 84   {
 85     $parts = explode('_', $filename);
 86     $f = array_pop($parts);
 87   }
 88 
 89   if ($f !== 'jpg' && $f !== 'png' && $f !== 'gif')
 90   {
 91     $f = 'jpg';
 92   }

修正方法

File クラスインスタンスを表示用のヘルパー関数に渡すようにしていき、インスタンスの保持する MIME Type 情報に基づく画像フォーマットを選択できるようにする.

diff --git a/apps/pc_backend/modules/monitoring/templates/_imageInfo.php b/apps/pc_backend/modules/monitoring/templates/_imageInfo.php
index 2e4af77..37d1913 100644
--- a/apps/pc_backend/modules/monitoring/templates/_imageInfo.php
+++ b/apps/pc_backend/modules/monitoring/templates/_imageInfo.php
@@ -2,7 +2,7 @@
 <div class="cell">
 <dl>
 <dt class="day"><?php echo $image->getCreatedAt() ?></dt>
-<dd class="upImage"><a href="<?php echo sf_image_path($image->getName()) ?>"><?php echo image_tag_sf_image($image->getName(), $options = array('size' => '120x120')) ?></a></dd>
+<dd class="upImage"><a href="<?php echo sf_image_path($image) ?>"><?php echo image_tag_sf_image($image, $options = array('size' => '120x120')) ?></a></dd>
 <dd class="fileName"><?php echo $image->getName() ?></dd>
 <?php if ($deleteBtn): ?>
 <dd class="delete"> 


関連するチケット

関連している OpenPNE 3 - Bug(バグ) #2632: 管理画面から画像をアップロードしたときに透過画像のときに透過されなくなる Won't fix(対応せず) 2011-11-29

関係しているリビジョン

リビジョン e4cd5003 (差分)
Yuya Watanabe11年以上前に追加

(fixes #3110, BP from #2632) fixed to use file object in sfImageHandlar's method argument for displaying correct format

(cherry picked from commit 965265e07da4d1c714231dfa068b7f7759b0fa7f)

履歴

#1 開 石切山ほぼ12年前に更新

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

#2 Yuma Sakataほぼ12年前に更新

  • 対象バージョンOpenPNE 3.8.1 から OpenPNE 3.8.x に変更

3.8.2 以降で対応します。

#3 Yuma Sakata11年以上前に更新

  • 対象バージョンOpenPNE 3.8.x から OpenPNE 3.8.2 に変更

#4 Yuma Sakata11年以上前に更新

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

#5 Yuya Watanabe11年以上前に更新

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

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

#6 Yuya Watanabe11年以上前に更新

  • 説明 を更新 (diff)

#7 Yuya Watanabe11年以上前に更新

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

#8 Yuma Sakata11年以上前に更新

  • ステータスPending Testing(テスト待ち) から Fixed(完了) に変更
  • 進捗率70 から 100 に変更

テストOKです。

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