操作
Backport(バックポート) #3110
完了管理画面から画像をアップロードしたときに透過画像のときに透過されなくなる
開始日:
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">
操作