Project

General

Profile

Enhancement(機能追加・改善) #1116

coreのweb/image にある画像もスキンプラグインで変更できるようにしてほしい

Added by Kiwa Sakai over 10 years ago. Updated over 10 years ago.

Status:
Fixed(完了)
Priority:
Normal(通常)
Target version:
Start date:
2010-05-31
Due date:
% Done:

100%


Description

no_image.gif のようなcore のweb/images にある画像がスキンプラグイン側で変更できない。
no_image や誕生日バナーはユーザ画面で目に付く位置に表示される画像なので、スキンプラグインで他のデザインと合わせて変更できるようにしてほしい。


Related issues

Related to OpenPNE 3 - Enhancement(機能追加・改善) #623: A birthday banner is not displayed in the My page (/member). (マイページ (/member)で誕生日バナーが表示されない) Fixed(完了) 2010-02-12

Associated revisions

Revision 9226f587 (diff)
Added by Shogo Kawahara over 10 years ago

added op_image_tag() to return image tag (refs #1116)

Revision 65e708da (diff)
Added by Shogo Kawahara over 10 years ago

replaced image_tag() to op_image_tag() and replaced image_tag_sf_image() to op_image_tag_sf_image(), on pc_frontend and mobile_frontend (refs #1116)

Revision 8c58d3b4 (diff)
Added by Shogo Kawahara over 10 years ago

fixed op_image_path() for optimization (fixes #1116)

Revision 64090081 (diff)
Added by Shogo Kawahara over 10 years ago

fixed op_image_path() doesn't return plugin's image path correctly (fixes #1116)

Revision 8077965f (diff)
Added by Shogo Kawahara over 10 years ago

replaced preg_match() to strpos(), in op_image_path() (fixes #1116)

Revision 6ac2ac61 (diff)
Added by Shogo Kawahara over 10 years ago

fixed op_image_path() to use basename() when file is checked (fixes #1116)

History

#1 Updated by Shogo Kawahara over 10 years ago

  • Status changed from New(新規) to Accepted(着手)
  • Assignee set to Shogo Kawahara
  • Target version set to OpenPNE 3.6beta1

#3 Updated by Shogo Kawahara over 10 years ago

今回は多少アグレッシブかつプラグイン開発者への周知が必要な実装をしました。

新規実装ヘルパー関数

  • op_image_tag_sf_image()

image_tag_sf_image のように動作しますが、Skinプラグインから "no_image.gif" を探し、見つかった場合優先して指定するようになります。

  • op_image_tag()

画像名の最初に / が入っていない場合、 利用しているSkinプラグインから画像を探し、見つかった場合にそれを指定しまするimgタグを作成。見つからない場合は image_tag() と挙動は同様。

  • op_image_path()

画像名の最初に / が入っていない場合、Skinプラグインから指定画像を探し、見つかった場合はその画像のパスを返す。見つからない場合は image_path() と挙動は同様。

よって、"no_image.gif" を使う場合や、Skinプラグインで上書き可能にする画像の出力に関しては上記の関数に置き換える必要があります。

このように、独自タグを用意する大きなメリットとして、OpenPNEが独自にimgタグ出力周りなどの挙動を変更できるということがあるでしょう。

#4 Updated by Shogo Kawahara over 10 years ago

  • Status changed from Accepted(着手) to Pending Review(レビュー待ち)
  • % Done changed from 0 to 50

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

#5 Updated by Rimpei Ogawa over 10 years ago

  • Status changed from Pending Review(レビュー待ち) to Rejected(差し戻し)

op_image_path() についてフィードバックします。

1. スキンプラグイン名のみを保存すれば十分

スキンプラグインのパスは必要なく、プラグイン名のみを保存し、sf_web_dir/opSkin***Plugin/images/$source が存在するかどうかを確認するようにすれば、もっとシンプルになると思います。

パターンマッチもないので glob() も不要です。

2. strpos() の引数間違い

1142       if (strpos('.', $path[count($path) - 1]))

strpos() の引数の順番が逆です。と、おそらく !strpos() としたかった場面ではないでしょうか。

3. 文字列連結の間違い

1144         $pattern .= $pattern.'.png';

これだと、 $pattern = $pattern.$pattern.'.png' になってしまいます。

#6 Updated by Shogo Kawahara over 10 years ago

  • Status changed from Rejected(差し戻し) to Accepted(着手)

#7 Updated by Shogo Kawahara over 10 years ago

  • Status changed from Accepted(着手) to Pending Review(レビュー待ち)

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

#8 Updated by Rimpei Ogawa over 10 years ago

  • Status changed from Pending Review(レビュー待ち) to Rejected(差し戻し)

Skinプラグインの判定は、他の箇所では正規表現を使っていないので合わせてください。

lib/config/opApplicationConfiguration.class.php
91:      if (0 === strpos($pluginName, 'opSkin'))

lib/plugin/opPlugin.class.php
135:    return (0 === strpos($this->name, 'opSkin'));
lib/helper/opUtilHelper.php
1147:        if (preg_match('/^opSkin.*Plugin$/', $plugin))

#9 Updated by Shogo Kawahara over 10 years ago

  • Status changed from Rejected(差し戻し) to Pending Review(レビュー待ち)

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

#10 Updated by Rimpei Ogawa over 10 years ago

  • Status changed from Pending Review(レビュー待ち) to Rejected(差し戻し)

$source からファイル名を返すのには basename() が使えます(#1160 と同じ指摘でこちらに書き忘れていました)

_compute_public_path() が参考になります。

396   if (false === strpos(basename($source), '.'))
397   {
398     $source .= '.'.$ext;
399   }

#11 Updated by Shogo Kawahara over 10 years ago

  • Status changed from Rejected(差し戻し) to Pending Review(レビュー待ち)

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

#12 Updated by Rimpei Ogawa over 10 years ago

  • Status changed from Pending Review(レビュー待ち) to Pending Testing(テスト待ち)
  • % Done changed from 50 to 70

#13 Updated by Kousuke Ebihara over 10 years ago

  • Status changed from Pending Testing(テスト待ち) to Fixed(完了)
  • % Done changed from 70 to 100

Also available in: Atom PDF