プロジェクト

全般

プロフィール

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

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

Kiwa Sakaiほぼ14年前に追加. ほぼ14年前に更新.

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

100%


説明

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


関連するチケット

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

関係しているリビジョン

リビジョン 9226f587 (差分)
Shogo Kawaharaほぼ14年前に追加

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

リビジョン 65e708da (差分)
Shogo Kawaharaほぼ14年前に追加

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)

リビジョン 8c58d3b4 (差分)
Shogo Kawaharaほぼ14年前に追加

fixed op_image_path() for optimization (fixes #1116)

リビジョン 64090081 (差分)
Shogo Kawaharaほぼ14年前に追加

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

リビジョン 8077965f (差分)
Shogo Kawaharaほぼ14年前に追加

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

リビジョン 6ac2ac61 (差分)
Shogo Kawaharaほぼ14年前に追加

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

履歴

#1 Shogo Kawaharaほぼ14年前に更新

  • ステータスNew(新規) から Accepted(着手) に変更
  • 担当者Shogo Kawahara にセット
  • 対象バージョンOpenPNE 3.6beta1 にセット

#3 Shogo Kawaharaほぼ14年前に更新

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

新規実装ヘルパー関数

  • 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 Shogo Kawaharaほぼ14年前に更新

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

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

#5 Rimpei Ogawaほぼ14年前に更新

  • ステータスPending Review(レビュー待ち) から 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 Shogo Kawaharaほぼ14年前に更新

  • ステータスRejected(差し戻し) から Accepted(着手) に変更

#7 Shogo Kawaharaほぼ14年前に更新

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

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

#8 Rimpei Ogawaほぼ14年前に更新

  • ステータスPending Review(レビュー待ち) から 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 Shogo Kawaharaほぼ14年前に更新

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

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

#10 Rimpei Ogawaほぼ14年前に更新

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

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

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

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

#11 Shogo Kawaharaほぼ14年前に更新

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

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

#12 Rimpei Ogawaほぼ14年前に更新

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

#13 Kousuke Ebiharaほぼ14年前に更新

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

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