の形で呼ぶ。
//
// anchor_idはフレームを使う場合最低限各フレームごとに設定。お互い他のフレームを書換えたときにへんな干渉をさけるため。
// その他ページの種別毎などで変えてもよいが、あまり小分けにするとcookieが増える。
// 同じanchor_idで保存されるcookieは1セットのみ。でも単独ページ表示のサイトなら概ねこれで充分。
anchor_id = "anc_main";
noanchor = false; // bodyにanchorをしかけたときなど場合によって一時無効にするためのフラグ。
// アンカーの記憶。
function anchor_save(object_id, page_id) {
if(noanchor) { anchor_erase(); return; }
get_scroll();
setcookie(anchor_id+"_pid", page_id, 0);
setcookie(anchor_id+"_st", scroll_top, 0);
setcookie(anchor_id+"_sl", scroll_left, 0);
if(object_id) {
object_top = scroll_top + get_object_top(object_id);
object_left = scroll_left + get_object_left(object_id);
setcookie(anchor_id+"_oid", object_id, 0);
setcookie(anchor_id+"_ot", object_top, 0);
setcookie(anchor_id+"_ol", object_left, 0);
} else {
setcookie(anchor_id+"_oid", "", -1);
setcookie(anchor_id+"_ot", "", -1);
setcookie(anchor_id+"_ol", "", -1);
}
}
// アンカーの適用。
function anchor_apply(page_id) {
if((saved_page_id = getcookie(anchor_id+"_pid")) && page_id != saved_page_id) { return; }
get_scroll();
if((anchor_st = getcookie(anchor_id+"_st")) != "" && (anchor_sl = getcookie(anchor_id+"_sl")) != "") {
anchor_st = parseInt(anchor_st);
anchor_sl = parseInt(anchor_sl);
} else {
anchor_st = scroll_top;
anchor_sl = scroll_left;
}
if((object_id = getcookie(anchor_id+"_oid"))
&& (anchor_ot = getcookie(anchor_id+"_ot")) != ""
&& (anchor_ol = getcookie(anchor_id+"_ol")) != "") {
offset_top = (scroll_top + get_object_top(object_id)) - parseInt(anchor_ot);
offset_left = (scroll_left + get_object_left(object_id)) - parseInt(anchor_ol);
} else {
offset_top = offset_left = 0;
}
window.scrollTo(anchor_sl + offset_left, anchor_st + offset_top);
}
// アンカー消去。あえてとっておく必要がなければanchor_apply()後すぐ消去が望ましい。
function anchor_erase() {
setcookie(anchor_id+"_pid", "", -1);
setcookie(anchor_id+"_st", "", -1);
setcookie(anchor_id+"_sl", "", -1);
setcookie(anchor_id+"_oid", "", -1);
setcookie(anchor_id+"_ot", "", -1);
setcookie(anchor_id+"_ol", "", -1);
}
//-->
倉金家ホームページ
趣味の部屋/ホームページ余話
同期会のサイトで写真や資料などをFTPフォルダに入れて公開していますが、FTPは使いなれていない人が多くアクセスしにくいと評判が悪かったので、サーバー側に無料のファイルブラウザWebShareというのを導入してみました。少々修正と改良を施しましたが写真や資料のアルバムとしてたいへん便利で使いやすく重宝しています。超お薦めです。 |
|
|
実は高校の同期会のサイトで写真や各種資料をホームページとは別にFTPフォルダに入れて公開している。 通常のFTPだとなれていない人には使いにくいし、かなり大量(数千)の写真や資料がありファイル名だけ見たのではさっぱりわからない。 そこでサーバー側に 普通のhttpブラウザでつながるファイルブラウザ、 もちろん無料ので写真のサムネイルなどの表示機能のあるもの、を導入しようと探してみたところ、 必見!エレガントなWebファイルマネージャ「WebShare」(http://www.moongift.jp/2007/09/webshare/)などという必見記事を見て WebShareというソフトがよさそうだ、試してみようということでさっそく http://webshare.fr/よりダウンロード。 (注...今はもうこれらのサイトはなくなったようです) 結果からいうと最新のブラウザ特にInternetExplorerでは少々表示や動作に問題があってコードを修正し、さらに使いやすいように多少改良を施したりしたが、 なかなかとってもいい感じ。 ためしに見るならこちら。Public Loginが設定してあります。 Public Loginではファイルの閲覧の他、お薦めに追加、コメントの追加が可能にしてあります。またお試しフォルダ内では書込可能です。 → WebShare Demo
|
修正と多少改良を施したコードはこちら。
|
ダウンロード、解凍して中の_INSTALL_webshare.shをテキストエディタで編集し(インストール先を指定など)、実行するとファイルがコピーされます。 あとはDocuments/Read meを読んで設定をすればOKです。 付属のGPLライセンスに基いてお使いください。 もちろん例によってバグ、不具合等の保障は一切いたしません。 問題や気に入らない点などありましたら自分で直してください。最終版Ver.K1.7.4はヘテムルのサーバーに移設してphp7.3で一部機能が動かなくなったので修正しました。
|
改良あるいは改造した内容は以下のようなところ。 1. | できるだけ最新のブラウザで問題なく動くようコードを修正しました。 | 2. | ごみ箱が動作しなかったので動作するようコードを追加、修正しました。 | 3. | FTP接続がうまくいかなかったので修正しました。(PASSIVEモード追加など。) | 4. | FTP接続の場合やブックマーク画面のアイコンがファイルタイプアイコンしか表示されなかったのでなるべく縮小画像を表示するよう改良しました。 | 5. | コメントをタイトル代りに使えるようナビゲータ画面の各項目に表示するようにしました。 | 6. | 編集権限のない場合の編集メニューやロックアイコンなど不要な表示は無効化、あるいは非表示にするなどしてわかりやすくしました。 | 7. | 動作の不具合あるいはバグと思われる部分を、見つけたものについてはかたっぱしから修正しました。 | 8. | 縮小画像、コメント、ブックマーク等のデータが元ファイルの移動、リネーム、削除などと連動するようにしました。 | 9. | ファイル名に日本語を使った場合うまく表示されない、動作しないなど問題があったので修正しました。 | | またEUC-JPのサーバーで使うと日本語が一部文字化けするのを修正しました。 | 10. | データベースサーバーにSQLiteも使えるようにしました。(元はMySQLのみ。) |
|
ちょっとてこずったのが9のファイル名に日本語を使った場合の対応。 結局phpのファイル名を取得する関数basename()が日本語だとうまく働かないことがわかり自前の関数を作って対応したが、調べてみるとバグとして以前から認識されているらしく私が知らなかっただけか。 それにしてもこんな重大なバグをほうっておくなんてずいぶんひどいなー。無料でなかったら文句を言うところ。新しいバージョンではちゃんと直っているのかな。
|
|
|