<![CDATA[ MobileConverter/リソースブラウザから画像アップロード(OnFileManagerUploadイベント) - My Forums]]> https://forums.modx.com/thread/?thread=56154 <![CDATA[Re: MobileConverter&#65295;&#12522;&#12477;&#12540;&#12473;&#12502;&#12521;&#12454;&#12470;&#12363;&#12425;&#30011;&#20687;&#12450;&#12483;&#12503;&#12525;&#12540;&#12489;&#65288;OnFileManagerUpload&#12452;&#12505;&#12531;&#12488;&#65289;]]> https://forums.modx.com/thread/56154/mobileconverter-onfilemanagerupload#dis-post-329475 kazuike Mar 24, 2009, 02:08 AM https://forums.modx.com/thread/56154/mobileconverter-onfilemanagerupload#dis-post-329475 <![CDATA[Re: MobileConverter/&#12522;&#12477;&#12540;&#12473;&#12502;&#12521;&#12454;&#12470;&#12363;&#12425;&#30011;&#20687;&#12450;&#12483;&#12503;&#12525;&#12540;&#12489;(OnFileManagerUpload&#12452;&#12505;&#12531;&#12488;)]]> https://forums.modx.com/thread/56154/mobileconverter-onfilemanagerupload#dis-post-329474
無事に動いたのですが、了解しました~。
とりあえずこれでバージョン上げて再リリースします smiley

動かなかった原因はちょっと謎ですね。
ブラウザのキャッシュだったのかなぁ。。。 huh
]]>
soushi Dec 14, 2008, 10:38 PM https://forums.modx.com/thread/56154/mobileconverter-onfilemanagerupload#dis-post-329474
<![CDATA[Re: MobileConverter&#65295;&#12522;&#12477;&#12540;&#12473;&#12502;&#12521;&#12454;&#12470;&#12363;&#12425;&#30011;&#20687;&#12450;&#12483;&#12503;&#12525;&#12540;&#12489;&#65288;OnFileManagerUpload&#12452;&#12505;&#12531;&#12488;&#65289;]]> https://forums.modx.com/thread/56154/mobileconverter-onfilemanagerupload#dis-post-329473 遅くなってすみません。

再度確認したところ、
exceptTargetの指定で親ドキュメントのみ切り替わらないことが確認できました。
お騒がせしました。申し訳ないです。 embarrassed


先日の現象はなんだったんだろう??? huh
子ドキュメントがPC用のテンプレートで表示されたと思ったんですが、
何か別の障害でも起こっていたのかな?
]]>
kazuike Dec 12, 2008, 04:00 AM https://forums.modx.com/thread/56154/mobileconverter-onfilemanagerupload#dis-post-329473
<![CDATA[Re: MobileConverter&#65295;&#12522;&#12477;&#12540;&#12473;&#12502;&#12521;&#12454;&#12470;&#12363;&#12425;&#30011;&#20687;&#12450;&#12483;&#12503;&#12525;&#12540;&#12489;&#65288;OnFileManagerUpload&#12452;&#12505;&#12531;&#12488;&#65289;]]> https://forums.modx.com/thread/56154/mobileconverter-onfilemanagerupload#dis-post-329472 早速のご対応、ありがとうございます。

ただ、exceptTargetを指定すると、フォルダ内のドキュメントも、テンプレートが切り替わらなくなるようなんですが、
なんか使い方間違っているのでしょうか? huh
]]>
kazuike Dec 04, 2008, 05:26 AM https://forums.modx.com/thread/56154/mobileconverter-onfilemanagerupload#dis-post-329472
<![CDATA[Re: MobileConverter/&#12522;&#12477;&#12540;&#12473;&#12502;&#12521;&#12454;&#12470;&#12363;&#12425;&#30011;&#20687;&#12450;&#12483;&#12503;&#12525;&#12540;&#12489;(OnFileManagerUpload&#12452;&#12505;&#12531;&#12488;)]]> https://forums.modx.com/thread/56154/mobileconverter-onfilemanagerupload#dis-post-329471

リソースブラウザってイベントが発生しないんですね。
多分、kazuikeさんの方法で大丈夫だと思います。
document.parser.class.inc.phpが読み込まれていないので、ここで読み込んでnew DocumentParserするしかないですし。。。

リソースブラウザ内でベントを発生させるという需要はありそうなので、もう少し練った後に本家に改善要望だしてもいいかもしれません。
(別の投稿でもアップロードした日本語ファイル名が文字化けして困ってましたが、ここのイベントの設定次第でプラグイン対応で回避できるように…なったらいいなぁ grin)

Quote from: kazuike at Dec 02, 2008, 09:36 AM

(*1)MobileConverterに、親ドキュメント指定(親ドキュメントはテンプレートが切り替わらない)パラメータがあると嬉しいなぁ… grin

と、いうわけでこちら対応してみました。
この投稿に添付しているものが対応してみたMobileConverterです。
フォーラムの添付ファイル保存領域の容量がフルみたいでアップロードできませんでした undecided
暫定で以下のURLにアップしています(僕のサイトです grin)。

http://ayd.jp/MobileConverter.zip

プラグインの中身をこれにすり替えた後、「プラグイン設定」に以下の行を加えます。

&exceptTarget=Except target document IDs;string;


ここにテンプレートと画像の変換が必要ないドキュメントを「,」区切りで入力します。
kazuikeさんの場合は親ドキュメントを変換の対象から除外したいとの事なので、ここに親ドキュメントのIDを書けばいいと思います。

こちらで簡単に動作確認したので多分動くと思います :’(
問題なければバージョンあげてリリースしますっ!
]]>
soushi Dec 03, 2008, 11:48 AM https://forums.modx.com/thread/56154/mobileconverter-onfilemanagerupload#dis-post-329471
<![CDATA[Re: MobileConverter&#65295;&#12522;&#12477;&#12540;&#12473;&#12502;&#12521;&#12454;&#12470;&#12363;&#12425;&#30011;&#20687;&#12450;&#12483;&#12503;&#12525;&#12540;&#12489;&#65288;OnFileManagerUpload&#12452;&#12505;&#12531;&#12488;&#65289;]]> https://forums.modx.com/thread/56154/mobileconverter-onfilemanagerupload#dis-post-329470
if (! $disp) {

の部分を、
if (reset(explode(',', $disp)) != '202') {

とすれば正しく動きます。
(コードは修正しておきます。)]]>
kazuike Dec 02, 2008, 04:35 AM https://forums.modx.com/thread/56154/mobileconverter-onfilemanagerupload#dis-post-329470
<![CDATA[MobileConverter&#65295;&#12522;&#12477;&#12540;&#12473;&#12502;&#12521;&#12454;&#12470;&#12363;&#12425;&#30011;&#20687;&#12450;&#12483;&#12503;&#12525;&#12540;&#12489;&#65288;OnFileManagerUpload&#12452;&#12505;&#12531;&#12488;&#65289;]]> https://forums.modx.com/thread/56154/mobileconverter-onfilemanagerupload#dis-post-329469 とりあえず、MODxでどこまでできるか、MobileConverterを試させていただきました。

  • 使うテンプレート毎にフォルダを分ける。
  • 1階層余分にダミーフォルダを間に入れる。(*1)
  • TinyMCE等リッチエディタの機能を制限する(もしくは使わない)。
等の制限をすれば、けっこう使えそうです。
(soushiさん、ありがとうございます)

ただ、一点、携帯用の画像を生成する箇所で問題が残りました。
というのは、ドキュメント作成時に、リソースブラウザで画像をアップロードしても、
「OnFileManagerUpload」イベントが発行されず、携帯用の画像が生成されないのです。
(ファイルマネージャを使うと生成されますが、ユーザには開放したくないので)

そこで、リソースブラウザでも「OnFileManagerUpload」イベントを発行できないか、
試行錯誤して(*2)、以下のように無理やりドキュメントパーサを組み込んで改造してみました。
とりあえず、MobileConverterは動いたのですが、
もっと良い(他のプラグインも動かせるような)方法は無いものでしょうか?
どこかで副作用が出てこないか?ちょっと、ドキドキものです。(*3) undecided

改造の対象は、この↓ファイルです。
manager/media/browser/mcpuk/connectors/php/Commands/FileUpload.php
※以下、行番号はMODx0.9.6.1p2の変更前のソースを基準にしています。
(読みにくいので、インデントは削っています)

131行目~の「if (file_exists($this->real_cwd."/$filename.$ext")) {」に対応する
elseブロックが終わった後の、180行目に以下を挿入。
if (reset(explode(',', $disp)) != '202') {
	$uploaded_path = preg_replace('|\\/$|', '', $this->real_cwd);
	include_once("../../../../../includes/document.parser.class.inc.php");
	global $modx;
	$modx = new DocumentParser;
	$modx->getSettings();
	$modx->invokeEvent("OnFileManagerUpload",
			array(
				"filepath"	=> $uploaded_path,
				"filename"	=> $uploaded_name
			));
}


164行目~の「if (is_uploaded_file($_FILES[’NewFile’][’tmp_name’])) {」に対応する
elseブロックが終わった後の、179行目に以下を挿入。
$uploaded_name = "$filename.$ext";


139行目~の「if (is_uploaded_file($_FILES[’NewFile’][’tmp_name’])) {」に対応する
elseブロックが終わった後(「$taskDone=true;」の上)の、156行目に以下を挿入。
$uploaded_name = "$filename($i).$ext";


(*1)MobileConverterに、親ドキュメント指定(親ドキュメントはテンプレートが切り替わらない)パラメータがあると嬉しいなぁ… grin
(*2)リソースマネージャでは、ディレクトリパスの最後に「/」が付いていて、最初、これに気づかずハマリました。 sad
(*3)イベント発行の条件等は考慮していません。(というか、そういう条件ってあったっけ?)

追記)
(元のファイルの)126行目~180行目だった箇所は、改造後、以下のようになります。
if ((($this->fckphp_config['DiskQuota']['Global']!=-1)||($typeconfig['DiskQuota']!=-1))&&$failSizeCheck) {
	//Disk Quota over
	$disp="202,'Over disk quota, ".$msg."'";
} else {

	if (file_exists($this->real_cwd."/$filename.$ext")) {
		$taskDone=false;
		
		//File already exists, try renaming
		//If there are more than 200 files with
		//	the same name giveup
		for ($i=1;(($i<200)&&($taskDone==false));$i++) {
			if (!file_exists($this->real_cwd."/$filename($i).$ext")) {
				if (is_uploaded_file($_FILES['NewFile']['tmp_name'])) {
					if 
					(move_uploaded_file($_FILES['NewFile']['tmp_name'],($this->real_cwd."/$filename($i).$ext"))) {
						@chmod(($this->real_cwd."/$filename($i).$ext"),$this->fckphp_config['modx']['file_permissions']); //modified for MODx
						$disp="201,'..$filename($i).$ext'";
					} else {
						$disp="202,'Failed to upload file, internal error.'";
					}
				} else {
					if 
					(rename($_FILES['NewFile']['tmp_name'],($this->real_cwd."/$filename($i).$ext"))) {
						@chmod(($this->real_cwd."/$filename($i).$ext"),$this->fckphp_config['modx']['file_permissions']); //modified for MODx
						$disp="201,'$filename($i).$ext'";
					} else {
						$disp="202,'Failed to upload file, internal error.'";
					}
				}
				$uploaded_name = "$filename($i).$ext";
				$taskDone=true;	
			}
		}
		if ($taskDone==false) {
			$disp="202,'Failed to upload file, internal error..'";
		}
	} else {
		//Upload file
		if (is_uploaded_file($_FILES['NewFile']['tmp_name'])) {
			if (move_uploaded_file($_FILES['NewFile']['tmp_name'],($this->real_cwd."/$filename.$ext"))) {
				@chmod(($this->real_cwd."/$filename.$ext"),$this->fckphp_config['modx']['file_permissions']); //modified for MODx
				$disp="0";
			} else {
				$disp="202,'Failed to upload file, internal error...'";
			}
		} else {
			if (rename($_FILES['NewFile']['tmp_name'],($this->real_cwd."/$filename.$ext"))) {
				@chmod(($this->real_cwd."/$filename.$ext"),$this->fckphp_config['modx']['file_permissions']); //modified for MODx
				$disp="0";
			} else {
				$disp="202,'Failed to upload file, internal error...'";
			}
		}
		$uploaded_name = "$filename.$ext";
	}
	if (reset(explode(',', $disp)) != '202') {
		$uploaded_path = preg_replace('|\\/$|', '', $this->real_cwd);
		include_once("../../../../../includes/document.parser.class.inc.php");
		global $modx;
		$modx = new DocumentParser;
		$modx->getSettings();
		$modx->invokeEvent("OnFileManagerUpload",
				array(
					"filepath"	=> $uploaded_path,
					"filename"	=> $uploaded_name
				));
	}
}


さらに追記)
下記のコメントの通り、コードを修正しました。
さらに2009-03-24追記)
「global $modx;」が抜けていたので、修正しました。

ソースを下記にアップしました。
http://modxcms.com/forums/index.php/topic,34199.0.html]]>
kazuike Dec 02, 2008, 03:36 AM https://forums.modx.com/thread/56154/mobileconverter-onfilemanagerupload#dis-post-329469