2006.12.15 Friday | 14:47

  BlueShoes のファイルマネージャ ふるいむかし

ダウンロードサイト

結論から言うと、そのままでは動きません。
さらに言うと、IE でしか動きません。
サイトの更新はほとんど止まっているようなので、
サンプルとして使ってみる・・・
みたいな感じです。



上記は、Windows で動かしていますが、
php の以下の書き方の為にエラーになります

<?php/***********************/


これは、Windows 以外では動くようです。
ベータ版では修正されているようなのですが、他のところがエラーになるので
結局これを修正して使う事になります。

フリーソフトの Repl-Ace で一括置換して、php と / の間にスペースを入れました

後、上記画像で表示されているポップアップ表示にもバグがあるので
修正が必要です。さらに、画像を表示する際にダウンロードにならないように
ソースを変更する必要があります

images\applications\filemanager\fileManager.ie6.js
function displayMenu(obj) {
clickOnItem(obj);menu1.style.leftPos+=10;menu1.style.posLeft=event.clientX;
var nTop = document.getElementsByTagName("BODY")[0].scrollTop;
if ( event.clientY > 300 ) {
	nTop -= 140;
}
menu1.style.posTop=nTop+event.clientY;
menu1.style.display="block";
fileContextMenuActive = true;
menu1.setCapture();
}

オリジナルは、nTop が無いのでファイルが多くて
スクロールする場合にポップアップがついて来ない

applications\filemanager\viewer.php
//header("Content-Disposition: attachment; filename={$_REQUEST['file']}");

HTTP ヘッダに対する出力をコメントにする
( これは、ダウンロード時のファイル名を決定するヘッダ )

それと、WEBでは出なかったエラーですが修正しないと local では動きません
また、これに関しては、; を ;\n に変換しないと修正しづらいです。
function &readLanguage($path) {if (!$this->_IniHandler->loadFile($path)) return NULL;
$ret = $this->_IniHandler->get()
return $ret;
}

$this->_IniHandler->get() を直接 return してエラーになっていたので、
いったん変数にセットして return しています。


最後にやっと環境設定ですが、applications\filemanager\index.php に追加します
// 追加部分
$fileManagerSettings = array(
  'basePath'                => 'C:/Documents and Settings/lightbox/My Documents/',
  'showRelative'            => TRUE, 
  'maxFileUploadSize'       => '1000000', 
  'jsBasePath'              => '/php/blueshoes/javascript/', 
  'imgBasePath'             => '/php/blueshoes/images/', 
  'language'                => 'en', 
);

// 既存部分
$pos     = strpos(__FILE__, 'index.php');
$tmpFile = substr(__FILE__, 0, $pos);
$APP['path']['bsRoot'] = str_replace("\\", '/', realpath($tmpFile . '../../')) . '/';
$APP['path']['applications'] = $APP['path']['bsRoot'] . 'applications/';
require_once($APP['path']['applications'] . 'filemanager/global.conf.php');
require_once($APP['path']['core'] . 'file/Bs_Dir.class.php');
require_once($APP['path']['core'] . 'file/Bs_File.class.php');
$file =& new Bs_File();$dir  =& new Bs_Dir();
$basePath = $dir->realPath($fileManagerSettings['basePath']);
$fileManagerSettingsDefault = array(
'showRelative'            => TRUE, 
'maxFileUploadSize'       => '1000000', 
'maxFilesToShow'          => 300, 
'jsBasePath'              => '/_bsJavascript/', 
'imgBasePath'             => '/_bsImages/', 
'language'                => 'en', 
'fileExtensions'          => '__FILE__', 
);

下の既存部分は、実際は改行が除かれています。
( そんな事するから動かないんですけど・・・ )


basePath がファイルを読み出すためのパスです。
jsBasePath と imgBasePath は、HTML として読み出す URL です 
maxFilesToShow は、一度に表示できるファイル数です


日本語化は、applications\filemanager\lang\text.en.txt の中身を変えて、
そのキャラクタセットのメタタグを表示側の HTML 記述に追加します。

例:file.php


このファイルマネージャでは、ファイル編集機能がある為
以下のようにして日本語対応をしました

applications\filemanager\editor.php
<?
print '<meta http-equiv="Content-Type" content="text/html; charset=';
$ret = mb_detect_encoding( $fileContent,'SJIS,EUC-JP,UTF-8' );
if ( $ret == 'SJIS' ) {
	print "shift_jis";
}
if ( $ret == 'EUC-JP' ) {
	print $ret;
}
if ( $ret == 'UTF-8' ) {
	print $ret;
}
print '">';
?>