MODXのファイルブラウザで日本語を扱いたい。

プログラム(機能)関連の開発の話題
返信する
tktools
メンバー
メンバー
記事: 18
登録日時: 2020年8月17日(月) 09:13

MODXのファイルブラウザで日本語を扱いたい。

投稿記事 by tktools »

大阪産業技術研究所の木下です。

現在所内の文書管理の為にMODXを便利に利用しています。
が、ファイルをUPする時に日本語のファイル名が使用できないところに多少不便さを感じていました。

不便だと思ったら自分で改良すればいいのがオープンソースの良いところ
ということで日本語のファイルを扱えるようにしてみたので報告します。
------------------------------------------------------------------------------------
まず最初に
  ツール➞グローバル設定➞アップロードファイルの名前の扱い を ●はい
この設定にするだけで
  エレメント➞ファイル管理
では日本語のファイル名をそのままUPすることができるようになりました。

しかし、ディレクトリに日本語を使用していると文字化けします。
(文字化けしていてもクリックするとエラー無く処理されパンくずリストの部分では
ちゃんと表示されるので使えないこともないのですが…)
manager/actions/element/files.dynamic.php
の 
 mb_convert_encoding の from_encoding の文字列を 'auto'
にする(3ヶ所あった)ことで文字化けが治り
ファイルをサーバーにUPしたりするときに日本語のフォルダー名やファイル名を利用できるようになりました。

しかし、この状態だとリッチテキストエディタでファイルを選択しようとするとフォルダー名に日本語を使用していると
そのフォルダーに進むと何も表示されないことが判明。
日本語のフォルダー自体は表示できているのにそのフォルダーを選ぶと何も表示されないので
フォルダー名が上手く渡されていないようなので、さらに調査を続けました。

すると、
  manager/media/browser/mcpuk/frmresourcelist.html のjavascriptで
ファイル名やディレクトリ名を表示するときに escape して表示していることを発見。
その文字がそのままphpに渡されてディレクトリを開こうとしている為、ディレクトリが見つからない。
ということが分かったので

  manager/media/browser/mcpuk/connectors/coonector.php
の $cwd を取得することろで unescape したところ ディレクトリ名に日本語を使用していてもそれ以降の
フォルダー名やファイル名を表示され、ファイルを選択することができるようになりました。


最終的に手を入れたファイルは2つ
 manager/actions/element/files.dynamic.php
 manager/media/browser/mcpuk/connectors/coonector.php
添付の2つのファイルを所定のファイルと入れ替え
 ツール➞グローバル設定➞アップロードファイルの名前の扱い を ●はい
にすると日本語のファイル名をそのまま使用することができるようになります。

ファイルの削除やファイル名の変更等はまだ試していないのと
他で不具合がでるかもしれませんが、まずはご報告まで。

フォルダー名やファイル名に日本語がそのまま使用できるようになるとますます便利になりそうです。

以上、よろしくお願いいたします。
添付ファイル
nihongoka_for_modx_evolution_1.0.24j.zip
(9.95 KiB) ダウンロード数: 732 回
tktools
メンバー
メンバー
記事: 18
登録日時: 2020年8月17日(月) 09:13

MODXのファイルブラウザで日本語を扱いたい。

投稿記事 by tktools »

速攻でエラーがでた(;;)

htmlファイルの編集のときにエラーになったので調べたら mb_convert_encoding の from_encoding の文字列を 'auto' にしているのが
不味いらしい。

ということで ’auto' を 'ASCII,JIS,UTF-8,EUC-JP,SJIS' にしたらエラーが解消され文字化けもしなかった。
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

MODXのファイルブラウザで日本語を扱いたい。

投稿記事 by yama »

どこかで見たコードかな?と思いましたがPHP公式サイトのコードなんですね。
https://github.com/modxcms-jp/evolution ... 4460acf991
少し調整を加えました。
files.dynamic.phpは結局は何もしてないということでしょうか?(元に戻したということ)
返信する