Just in time Edit

isnot.jp/wiki [Permalink] [編集] [差分]

最終更新:2005-04-17 18:15:47

あたらしいプラグインを実装した。まずはフッターにある「Edit」ボタンを押してみてください。いかがでしょう。

よいところ、気になるところ

参考

MirrorMan
「編集」の動きはJitEdit?と同じ。それ以外のあらゆる要素がJavaScript?で実装されている。また、QuickHackBar?というのが、まさにやりたかったモノにかなり近い。

* マウスを重ねるとおおよそ文章の位置と対応しているソースが表示されるので、クリックすると一行編集。

* 上から下へドラッグすると、複数行をまとめて編集。

これらの先例がある。似ているところもある。こちらのほうはまだまだ半端であります。

Bookmarklet

 javascript:void(show_hide('clippad'))

ソース1 plugin

 #=============================================================================
 # すぐに編集する。【パラグラフプラグイン】
 #=============================================================================
 # いしだなおと 2004-07-06
 sub just_in_time_edit_layer {
     my $page = shift || $main::in{"p"};
     my $time = time();
     if ($page =~ /\[|\]/) {
         &Util::error("ページ名にブラケットを含めることはできません。");
     }
     if($page ne '' or &Wiki::exists_page($page)){
         $time   = &Wiki::get_last_modified($page);
     }
 
     my $edit_form = qq{
 <div id="clippad">
 <div class="form">
 <form id="myform" class="form" method="post" action="%s">
 <input type="hidden" name="a" value="save" />
 <input type="hidden" name="t" value="%s" />
 <input type="hidden" name="p" value="%s" />
 
 <div class="caption"><a name="c">%sの編集</a></div>
 <div class="textarea">
 <textarea name="source" id="source" accesskey="e" cols="64" rows="5" warp="hard">
 %s
 </textarea><br />
 </div>
 <div class="button">
 <input type="submit" name="do_save" value=" 保 存 " />&nbsp;
 <input type="submit" name="preview" value="プレビュー" />&nbsp;
 <input type="button" class="button" name="hide_button" value="hide Edit" onclick="show_hide('clippad');" />&nbsp;
 <br />
 </div>
 </form>
 </div>
 </div>
 
 <div class="form">
 <form name="buttons" class="form" method="post" action="#">
 <input type="button" class="button" name="show_hide_button" value="Edit" onclick="show_hide('clippad');" />
 </form>
 </div>
 };
 
 return sprintf(
     $edit_form, 
     $main::EDIT_SCRIPT, 
     &Util::escapeHTML($time), 
     &Util::escapeHTML($page), 
     &Util::escapeHTML($page), 
     &Util::escapeHTML(&Wiki::get_page($page)), 
 );
 }

ソース2 JavaScript?

 <script type="text/javascript">
 function show_hide(id) {
  var marker = document.buttons.show_hide_button;
  if (! document.getElementById) return;
  if (marker.value == "hide Edit"){
   document.getElementById(id).style.visibility = "hidden";
   marker.value = "Edit";
  }else{
   document.getElementById(id).style.visibility = "visible";
   marker.value = "hide Edit";
  }
 }
 </script>

ソース3 CSS

 form {
  margin: 0px; 
 } 
 div#clippad {
 /* display: none; */
  visibility: hidden;
  position: absolute;
  left: 5px;
  top: 5px;
  width: 600px;
  overflow: scroll;
  margin: 0em;
  padding: 1em;
  border-width: 6px;
  border-style: double;
  border-color: black;
  background-color: white;
  color: black;
 }
 div#clippad form input {
  font-weight: bolder; 
  background: white; 
  border: 1px solid black; 
  padding: 0.3em; 
  letter-spacing: 0.1em; 
  width: 8.5em; 
 } 
 label {
  font-weight: bold; 
  letter-spacing: 0.1em; 
 } 

ご意見

お名前: コメント:

[FrontPage]

いしだなおと it@isnot.jp