概要。使うパソコンやブラウザが増えるとブックマークの管理とか共有って面倒だ。だから、ウェブページがブックマークだと助かるかもしれない。簡単に増やしたり消したりできるようなインターフェイスを作るよりは簡単なテキストを書き換えるだけだと楽だと思う。さらに階層化は必須だろう。
認証機能と編集機能を付けました
テキストで編集できることが便利なンラインブックマークスクリプトに編集機能をつけました。どんなテキストを書けばよいのかは、前回2008-04-03 - ITで遊ぶを参照。
認証機能と編集機能を付けました。ただ、本当に付けただけなので注意。その辺は自己責任でお願いします。
設置の仕方
ソースコード
PHPライセンスで。
<?php $password='password'; //パスワード $file='./bookmark.dat'; //ブックマークファイルの格納先 header('Content-type: text/html; charset=utf-8'); ini_set('session.cookie_lifetime','2592000'); ini_set('session.gc_maxlifetime','2592000'); session_name('74thbookmark'); session_cache_limiter('private'); session_start(); if( $_SESSION['74thbookmark'] != 1 ){ if( $_POST['password'] === $password ){ $_SESSION['74thbookmark']=1; }else{ ?> <html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head><body> <h1>74th bookmark</h1> <form action="./" method="post"><input type="password" name="password" /><input type="submit" /></form> </body></html> <?php exit(); } }else if( isset($_GET['logout'])){ unset($_SESSION['74thbookmark']); ?> <html><body>Logout</body></html> <?php exit(); }else if( isset($_GET['edit']) ){ if( isset($_POST['text']) ){ $fp=fopen($file,'w'); fwrite($fp,mb_convert_encoding($_POST['text'],'utf-8')); fclose($fp); } $fp=fopen($file,'r'); ?> <html><head><body> <form method="POST"> <input type="submit"><a href="./">back</a><br /> <textarea name="text" cols="100" rows="40" wrap="off"><?php while($a=fgets($fp)){ echo($a); } ?></textarea><br /> </form> </body></html> <?php exit(); } $fp = fopen($file,'r'); $bookmark = array(); $bookmark[0]=array(); $refere = array(); $refere[0]=0; $category = array(); $j=0; $depth=0; while( $line = fgets($fp) ){ if( mb_ereg('^(\*+)(.+)$',$line,$result) ){ $j++; $depth = strlen($result[1]); $refere[$depth]=$j; $category[$j][0]=$refere[$depth-1]; $category[$j][1]=trim($result[2]); $category[$j][2]=$depth; $bookmark[$j]=array(); }else if( mb_ereg('^(\S+) (.+)$',$line,$result)){ $link[0]=$result[1]; $link[1]=trim($result[2]); array_push($bookmark[$j],$link); } } ?> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <script language="JavaScript"> <!-- var beforecategory='m0'; function OpenCategory(category) { if( document.all['c'+category] ){ if( document.all['c'+category].style.display == "none" ){ if( document.all['b'+category] ){ document.all['b'+beforecategory].style.display = "none"; document.all['b'+category].style.display = "block"; beforecategory=category; } document.all['c'+category].style.display = "block"; }else{ document.all['c'+category].style.display = "none"; } }else{ if( document.all['b'+category] ){ document.all['b'+beforecategory].style.display = "none"; document.all['b'+category].style.display = "block"; beforecategory=category; } } } //--> </script> </head><body> <table width="100%"><tr><td width="40%" align="left" valign="top"> <?php echo("<a href=\"javaScript:OpenCategory('m0')\">トップ</a><br />\n"); $see=1; $mark=''; for($i=1;isset($category[$i]);$i++){ if($category[$i][2] > $see){ echo("<div id=\"cm".$category[$i][0]."\" style=\"display:none\">\n"); $mark=''; for($j=1;$j<$category[$i][2];$j++){ $mark.='*'; } $see = $category[$i][2]; }else{ for($j=0;$j<($see - $category[$i][2]);$j++){ echo("</div>\n"); } $mark=''; for($j=1;$j<$category[$i][2];$j++){ $mark.='*'; } $see = $category[$i][2]; } echo($mark."<a href=\"javaScript:OpenCategory('m".$i."')\">".$category[$i][1]."</a><br />\n"); } ?> </td><td align="left" valign="top"> <?php for($i=0;isset($bookmark[$i]);$i++){ if(count($bookmark[$i])!=0){ if($i==0){ echo("<div id=\"bm0\" style=\"display:block\">\n"); }else{ echo("<div id=\"bm".$i."\" style=\"display:none\">\n"); } foreach($bookmark[$i] as $one){ echo('<a href="'.$one[0].'">'.$one[1]."</a><br />\n"); } echo("</div>\n"); } } ?> </td></table> <a href="./?edit">edit</a> <a href="./?logout">logout</a> </body></html>
で、
作った自分は手放せなくなりました。