Nucleus(JP)フォーラム

NucleusCMS日本語版ユーザーのためのサポートフォーラムです。疑問が生じたらまずは記事検索をご利用ください。

ログインしていません。

#1 2010-12-15 19:04:19

Mocchi
メンバー
登録日: 2006-11-19
投稿: 438

Re: ファイル表示/管理/処理系プラグインのベータテストにご協力下さい

Mocchiです。NP_ImprovedMediaでもお話しましたが

NP_Attachのデバックにご協力下さい
再開発中のNP_Thumbnailのデバッグにご協力下さい

これら開発を進めていたプラグインなんですが、ベータ版の目処が付いたのでまとめて公開します。ベータ版と言っても機能に遜色はなく、日本語をハードコーディングしていたり、ドキュメント整備を残しているだけとなります。とは言えバグがまだ残ってないとも言い切れないため、テスト環境をお持ちの方にテストしていただけたらと思います。

今回公開するプラグインは以下の4種類です。依存先のプラグインを先にインストールする必要があります。NP_ImageLimitSizeやNP_Thumbnailはwikiに旧バージョンの使い方情報があるので、そちらも参照してみて下さい。NP_MediaUtils以外はプラグインのソースに簡単なインストラクションを記述してありますので、そちらも参照してみて下さい。

NP_MediaUtils
ファイル処理のための静的メソッドを含むプラグイン。以下の3つのプラグインに依存されてます。

NP_Thumbnail
画像のサムネイル作成/管理/表示のためのプラグイン。NP_MediaUtilsに依存しています。静的/動的出力どちらも対応しています。サムネイル画像をデータベースには保存しませんが、その代わりにファイルとして保存します。

NP_ImageLimitSize
アップロードされたファイルを自動でリサイズするためのプラグイン。NP_MediaUtilsに依存しています。

NP_Attach
アイテムにファイルを添付するためのプラグイン。NP_MediaUtilsとNP_Thumbnailに依存しています。

年内に正式リリースが出せたらいいなと考えています。テストの程、よろしくお願いします。


関連URL
NP_ImageLimitSize - 画素数が大き過ぎる画像をアップロード時に適当なサイズに縮小
NP_ImageLimitSize - 画像の投稿と同時にサイズを自動的に縮小
NP_Thumbail
ファイルを添付する or NP_ItemFieldEXで画像以外を添付する方法


Attachments:
zip MediaTools(20101215-2).zip, Size: 24.2 KiB, Downloads: 263

オフライン

#2 2010-12-15 20:43:41

Mocchi
メンバー
登録日: 2006-11-19
投稿: 438

Re: ファイル表示/管理/処理系プラグインのベータテストにご協力下さい

バグを発見したため、2010/12/15 20:30に添付ファイルを更新しました。1名の方にダウンロードしていただいたようですが、申し訳ありませんがこちらを使ってください。

バグの詳細

  • NP_Thumbnailのサムネイルへのリンク生成部分にバグがありました。そのため、NP_ThumbnailとNP_Attachにおいて画像が表示されなくなってました。

  • NP_Attachでファイルがアップロードされないバグがありました

  • NP_ImageLimitSizeで言語ファイルを同梱していないのに、コード内では言語ファイルを要求していました

先に書きそびれましたが、今のところ、プラグインはすべてNucleus CMSの3.5以上でないと利用できません。またPHP5の機能を使っているため、PHP4では動作しません。そのうちNucleus CMS 3.4系でも動くようにしようと思います。

開発に使っているNucleus CMSのバージョンは3.51RC1です。

動作確認したサーバ環境
Ubuntu Server 10.04 Lucid Lynx
Linux server 2.6.32-25-generic-pae #45-Ubuntu SMP Sat Oct 16 21:01:33 UTC 2010 i686 GNU/Linux
apache2: 2.2.14-5ubuntu8.4
mysql-server: 5.1.41-3ubuntu12.7
php5: 5.3.2-1ubuntu4.5

動作確認したクライアント環境
Ubuntu Desktop 10.10 Maverick Meerkat
Firefox: 3.6.13

オフライン

#3 2010-12-18 04:21:44

Mocchi
メンバー
登録日: 2006-11-19
投稿: 438

Re: ファイル表示/管理/処理系プラグインのベータテストにご協力下さい

Mocchiです。テスターのみなさん、どうもありがとうございます。

自分でデバッグしてたら、Nucleus CMSの仕様によるバグを見つけました。

Nucleus CMSのコア機能で<%image%>や<%popup%>、<%media%>のそれぞれのタグをアイテムに挿入する際、ログインユーザが記事の執筆者(authorid)で、ログインユーザのプライベート(ログインユーザIDを名前とするディレクトリ)に保存されたファイルを選択した場合、ファイルを示す「パス」に、コレクションを示す文字列を含まなくなります。こんな感じです。

<%popup(20101218-hoge.png|100|100|HOGE)%>

この場合、NP_Thumbnailのベータ版ではファイルが参照できず、エラーが表示されます。これは私が、こちらの表記を期待してコーディングしていたからです。

<%popup(1/20101218-hoge.png|100|100|HOGE)%>

プライベートコレクションを使わずに普段運用しているので、すっかり盲点でした。次のリリースであるRC版で対応しておきます。さしあたりテスターのみなさんには、アイテム内での表記方法を、上記の下の方に書き換えた上でテストをお願いします。

オフライン

#4 2010-12-20 00:25:19

カザミ
メンバー
登録日: 2006-11-22
投稿: 11

Re: ファイル表示/管理/処理系プラグインのベータテストにご協力下さい

プラグイン開発ありがとうございます&お疲れさまです。

表題の件ですが、NP_MediaUtilsをインストールすると管理画面が500エラーとなり、一切表示されなくなります。
(インストール自体は正常にできています)
その際、一度サイトを表示してから再び管理画面を開くと問題なく表示できるようになりますが、
そのまま操作をしないでしばらく(正確に計ったわけではないですが4~5分程度)たつと、また表示できなくなる…という具合です。
あまり時間を置かずに操作している限りは普通に表示できます。

Cookie削除・ブラウザを変える等やってみましたが変化なしでした。
ログアウトしていても同様で、管理画面に入ろうとすると弾かれるので、まず一度サイトを開いておかないといけないという状態です。

試用環境:
NucleusCMS_3.51Release版
さくらのレンタルサーバ
PHP 5.2.14
MySQL 5.1.51

ちょっと状況がうまく伝わるかわからないのですが…
以上、ご報告いたします。

オフライン

#5 2010-12-21 11:03:20

Mocchi
メンバー
登録日: 2006-11-19
投稿: 438

Re: ファイル表示/管理/処理系プラグインのベータテストにご協力下さい

500エラーを返す件、了承しました。

さくらのレンタルサーバは試用期間が設けられているので、申し込んで試してみようと思います。
以上、簡単ですが。

オフライン

#6 2010-12-21 18:07:19

カザミ
メンバー
登録日: 2006-11-22
投稿: 11

Re: ファイル表示/管理/処理系プラグインのベータテストにご協力下さい

Mocchiさま、お忙しいところお手数おかけします。
その後こちらで更にテストしてみて判ったことをご報告致します。

(1)Nucleus3.51を新規インストール、NP_MediaUtilsのみ入れる →OK
(2)エラーの出た環境と同じプラグインを一通り入れてみる →30個ほどありましたが全てOK
(3)NP_CustomURLのインストールに伴う設定を行う →NG
  http://japan.nucleuscms.org/wiki/plugin … l#insutoru
(4)(3)の設定は行ったまま、NP_CustomURLをアンインストール →OK

まとめると、 「NP_CustomURLをインストールし、URLモードをFancyに設定」 した上で
NP_MediaUtilsをインストールすると、件の現象が再現しました。
参考になりましたら幸いです。

オフライン

#7 2010-12-21 23:28:03

Mocchi
メンバー
登録日: 2006-11-19
投稿: 438

Re: ファイル表示/管理/処理系プラグインのベータテストにご協力下さい

NP_CustomURLは以前、トラブルで導入を見合わせたことがあります。さすがに2500行のプラグインをデバッグするほど暇がなかった&別なところの効率を上げたかったので、それ以降はURLのカスタマイズは行わずに標準状態でずっと使ってきました。面倒は避けたかったのです。

さて、もし余裕がおありでしたら、/nucleus/libs/globalfunctions.phpの25~35あたりにデバッグモードを切り替えるための設定がありますので、デバッグモードをすべて出力にしてお試し下さい。おそらく、トラブルの原因が何かしら出力されると思います。

これを

$CONF['debug'] = 0;

こうします

$CONF['debug'] = 1;

また、こうすることで本家ソースが出しているエラーメッセージを見ることができます。結構な量出力されているので、そのなかから今回のトラブルの原因を探るのはちょいと大変ですが、興味のある方はどうぞ。

オフライン

#8 2011-04-04 14:30:22

Mocchi
メンバー
登録日: 2006-11-19
投稿: 438

Re: ファイル表示/管理/処理系プラグインのベータテストにご協力下さい

フォーラムの以下のトピックで配布を開始しました。

NP_MediaUtils
NP_Thumbnail
NP_ImageLimitSize
NP_Attach

ベータテストに協力して下さったみなさん、どうもありがとうございました。

オフライン

#9 2011-04-08 07:18:53

カザミ
メンバー
登録日: 2006-11-22
投稿: 11

Re: ファイル表示/管理/処理系プラグインのベータテストにご協力下さい

間が空いてしまいましたが、以前の続きになりますのでこちらに繋げます。
以下は、前回と同じサーバに NucleusCMS v3.64 と NP_MediaUtils v0.9.6(RC2) を新規インストールして試しています。

管理画面が500エラーになる件、
NP_MediaUtils.phpの79行目に $manager を追加することで、どうやら直った様子です。

public function event_PreSendContentType($data) {
	global $blog, $blogid, $manager; //←ここ

…曖昧な言い方ですみません。
デバッグモードのエラーメッセージの意味すらよく分からず、1つ1つ検索しながら何となくそれっぽい所を…という危なっかしい弄り方をしたもので、結局なぜこういった現象が起こっていたのかとか、NP_CustomURLはどう関係していたのかという理屈などはまるで分かっておらず、正しい対処なのかどうかも自信がないのですが :oops:
とりあえず、管理画面には問題なく入れるようになりました。

ひとまずご報告まで。

オフライン

#10 2011-04-08 18:40:35

Mocchi
メンバー
登録日: 2006-11-19
投稿: 438

Re: ファイル表示/管理/処理系プラグインのベータテストにご協力下さい

あ、その対処法で正解です。すっかり見落としてました。。。報告どうもありがとうございます。

ver.0.9.6のNP_MediaUtils.php、78~113行目です。

public function event_PreSendContentType($data) {
	global $blog, $blogid;
	if (MediaUtils::$blogid) {
		return;
	}
	
	if (!$blogid && !$blog) {
		self::setCookie(-1);
		return;
	}

	if (!$blogid) {
		MediaUtils::$blogid = $blog->getID();
	} else {
		MediaUtils::$blogid = $blogid;
	}
	
	if (!$blog) {
		MediaUtils::$bshortname = $manager->getBlog(MediaUtils::$blogid)->getShortName();
	} else {
		MediaUtils::$bshortname = $blog->getShortName();
	}
	
	self::setCookie(1);
	return;
}

$manager->getBlogメソッドで、グローバル・スコープ変数$managerを使っているので、「global $manager」が必要ですね。

なお、$managerは/nucleus/libs/globalfunctions.phpの169行目でグローバル・スコープなMANAGERクラスのインスタンスとして宣言されてます。

$manager = MANAGER::instance();

Nucleus CMSで動くスクリプトはこの$managerにアクセスすることで、オブジェクトのインスタンスを増やすことなくMANAGERクラスの機能を利用できます(少々古い方法ではありますが)。

「スコープ」とか「オブジェクト」とか「インスタンス」とか「メソッド」というのは少々難しい概念かもしれませんが、オブジェクト思考プログラミングに関する考え方です。書籍がたくさん出ていますし、WWW上でたくさんの方が解説を書いていたりするので、そちらも参照なさって下さい。

オフライン

Board footer