MODXのファイルブラウザで日本語を扱いたい。
Posted: 2020年8月17日(月) 12:05
大阪産業技術研究所の木下です。
現在所内の文書管理の為に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つのファイルを所定のファイルと入れ替え
ツール➞グローバル設定➞アップロードファイルの名前の扱い を ●はい
にすると日本語のファイル名をそのまま使用することができるようになります。
ファイルの削除やファイル名の変更等はまだ試していないのと
他で不具合がでるかもしれませんが、まずはご報告まで。
フォルダー名やファイル名に日本語がそのまま使用できるようになるとますます便利になりそうです。
以上、よろしくお願いいたします。
現在所内の文書管理の為に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つのファイルを所定のファイルと入れ替え
ツール➞グローバル設定➞アップロードファイルの名前の扱い を ●はい
にすると日本語のファイル名をそのまま使用することができるようになります。
ファイルの削除やファイル名の変更等はまだ試していないのと
他で不具合がでるかもしれませんが、まずはご報告まで。
フォルダー名やファイル名に日本語がそのまま使用できるようになるとますます便利になりそうです。
以上、よろしくお願いいたします。