コメント欄から各種書式付きテキストの記述を可能にします。
テストしてみたい方はこちらでどうぞ。
[extend comment box]
リストボックスから選択、またはコメント欄で直接書式を指定して、各種書式付きのテキストを記述する事が出来ます。
下記の書式が利用できます。
| リスト | 通常のリストの書式と同様 |
| 見出し | 通常の見出しの書式と同様 |
| 引用 | 通常の引用の書式と同様 |
| 整形済みテキスト | 通常の整形済みテキストの書式と同様 |
| 空行 | テキストボックスに空白文字のみを記述。 |
| 定義リスト | 通常の定義リストの書式と同様 |
| 表 | 通常の表の書式と同様 |
| 水平線 | 通常の水平線の書式と同様 |
リストボックスから書式を選択した場合は、それぞれの書式の先頭文字が指定された状態になるので、先頭文字を除いた文字列を入力して下さい。
水平線はリストから選ぶだけで入力できます。
関連するカスタマイズ
- UNDO機能 UNDO機能を使用したい場合
- 同一ページ内複数コメント 下記のコードはこのカスタマイズ適用後の物に対して、変更を行っています。
resource.txtへの追加
| commentlabel | コメント |
| comment2label | コメント(Lv2) |
| comment3label | コメント(Lv3) |
| headerlabel | 見出し |
| header2label | 見出し(Lv2) |
| header3label | 見出し(Lv3) |
| linelabel | 水平線 |
| quotelabel | 引用 |
| prelabel | 整形 |
| tablelabel | 表(カンマ区切り) |
| deflabel | 定義(言葉:定義) |
| undolabel | 元に戻す |
do_comment()内の変更
sub do_comment {
my ($content) = $database{$form{mypage}};
my $datestr = &get_now;
my $namestr = $form{myname} ? " ''[[$form{myname}]]'' : " : " ";
# yakty del [multi comment] start
#if ($content =~ s/(^|\n)(\Q$embed_comment\E)/- $datestr$namestr$form{mymsg}\n$1$2/) {
# ;
#} else {
# $content =~ s/(^|\n)(\Q$embed_rcomment\E)/$1$2\n- $datestr$namestr$form{mymsg}/;
#}
# yakty del [multi comment] end
# yakty add [extend comment box(undo)] start
if($form{mycmtmark} eq 'undo'){
my $timestamp = &get_info($form{mypage}, $info_UpdateTimeStamp);
if(time - $timestamp < $force_update_interval
and length($ENV{REMOTE_ADDR}) > 0 and $ENV{REMOTE_ADDR} eq &get_info($form{mypage}, $info_UpdateRemoteAddr)){
&do_undo;
} else {
&do_read;
}
return;
}
# yakty add [extend comment box(undo)] end
# yakty add [multi comment] start
my $cmtno = 0 + $form{mycmtno};
my $contenthead = "";
$form{mymsg} = $form{mycmtmark} . $form{mymsg}; # yakty add [extend comment box]
for(my $i=0; $i<=$cmtno; $i++){
if($content =~ /(^|\n)((\Q$embed_comment\E)|(\Q$embed_rcomment\E))/){
$contenthead .= $`;
$content = $';
my $matchstr = $&;
if($i == $cmtno){
# yakty add [extend comment box] start
$form{mymsg} =~ /^((\*{1,$header_level})|(>{1,3})|[\s:,]|(\-*))(.*)$/;
my ($mark,$cmtmsg) = ($1,$+);
if($mark =~ /^\-{0,3}$/){
$mark = "-" unless($mark);
if ($matchstr =~ s/(\Q$embed_comment\E)/$mark $datestr$namestr$cmtmsg\n$1/) {
;
} else {
$matchstr =~ s/(\Q$embed_rcomment\E)/$1\n$mark $datestr$namestr$cmtmsg/;
}
} elsif($mark =~ /\s+/ and $cmtmsg eq ""){
if ($matchstr =~ s/(\Q$embed_comment\E)/\n$1/) {
;
} else {
$matchstr =~ s/(\Q$embed_rcomment\E)/$1\n/;
}
} else {
if ($matchstr =~ s/(\Q$embed_comment\E)/$mark$cmtmsg\n$1/) {
;
} else {
$matchstr =~ s/(\Q$embed_rcomment\E)/$1\n$mark$cmtmsg/;
}
}
# yakty add [extend comment box] end
# yakty del [extend comment box] start
# if ($matchstr =~ s/(\Q$embed_comment\E)/- $datestr$namestr$form{mymsg}\n$1/) {
# ;
# } else {
# $matchstr =~ s/(\Q$embed_rcomment\E)/$1\n- $datestr$namestr$form{mymsg}/;
# }
# yakty del [extend comment box] end
}
$contenthead .= $matchstr;
}
}
$content = $contenthead . $content;
# yakty add [multi comment] end
if ($form{mymsg}) {
$form{mymsg} = $content;
$form{mytouch} = 'on';
$form{myfrozen} = &get_info($form{mypage}, $info_IsFrozen);
&do_write;
} else {
$form{mycmd} = 'read';
&do_read;
}
}
embedded_to_html()内の変更
この変更はリストボックスで書式を選択したい場合以外は適用しなくても構いません。
UNDO機能はこの変更を適用しないと使用できません。
sub embedded_to_html {
my ($embedded) = @_;
my $escapedmypage = &escape($form{mypage});
my $escapedmyname = &escape($form{myname}); # yakty add [use cookie]
if ($embedded eq $embed_comment or $embedded eq $embed_rcomment) {
my $lastmodified = &get_info($form{mypage}, $info_LastModified);
my $lastRevision = &get_info($form{mypage}, $info_LastRevision); # yakty add [revision diff]
$comment_no++; # yakty add [multi comment]
return <<"EOD";
@{[sprintf(qq(<a name="c%d"> </a>), $comment_no)]}<!-- yakty add [link to part(comment)] -->
<form action="$url_xcg" method="post"><!-- yakty mod [for XREA] -->
<input type="hidden" name="mycmd" value="comment">
<input type="hidden" name="mypage" value="$escapedmypage">
<input type="hidden" name="myLastModified" value="$lastmodified">
<input type="hidden" name="myLastRevision" value="$lastRevision">
<input type="hidden" name="mytouch" value="on">
<input type="hidden" name="mycmtno" value="$comment_no"><!-- yakty add [multi comment] -->
$resource{yourname}
<input type="text" name="myname" value="$escapedmyname" size="10"><!-- yakty mod [use cookie] -->
<input type="text" name="mymsg" value="" size="60">
<!-- yakty add [extend comment box] start -->
<select name="mycmtmark">
<option value="">$resource{commentlabel}</option>
<option value="--">$resource{comment2label}</option>
<option value="---">$resource{comment3label}</option>
<option value="*">$resource{headerlabel}</option>
<option value="**">$resource{header2label}</option>
<option value="***">$resource{header3label}</option>
<option value="----">$resource{linelabel}</option>
<option value=">">$resource{quotelabel}</option>
<option value=" ">$resource{prelabel}</option>
<option value=",">$resource{tablelabel}</option>
<option value=":">$resource{deflabel}</option>
<option value="undo">$resource{undolabel}</option>
</select>
<!-- yakty add [extend comment box] end -->
<input type="submit" value="$resource{commentbutton}">
</form>