# Ir-i-BBS - interface for i-mode
# ----------------------------------
# Copyright (c) 1999 by Irao Computer System, All rights reserved.
#
my $copyright_imode = "(c)1999 by Irao";
my $copyright_imode_long = "(c)1999 by Irao
Computer System
";
# ここまで変更厳禁
# ここから 設定
# Content-length: ヘッダの設定です。
# 0 以外の値にすると、Content-length: ヘッダを吐きます
# 0 にすると吐きません
# i-modeでうまく動かないとき、0 にしてみてください。
my $print_content_length = 1;
# ここまで 設定
sub about_imode {
$about_data_imode = '
' . &load_about . '
';
$buffer = <<"EOB";
$copyright_imode_long
$about_data_imode
EOB
&$output_buffer;
exit;
}
sub write_imode_body {
my (@vals);
unless ($#rewrite_array < 0) {
my $i = 0;
foreach (@rewrite_array) {
$vals[$i++] = $_ if ($i == 4);
$vals[$i++] = ' value="' . $_ . '"';
}
if ($FORM{'saveform'} eq 'true') {
$extra_header = qq||;
$add = '保存用投稿フォーム
';
$vals[5] = qq| value="$FORM{'pass'}"|;
} else {
$add = '削除Passを入力してください!
';
}
}
my $check = q|保存用フォーム表示| unless ($FORM{'saveform'} eq 'true');
my $style = ($subtype eq 'astel')? 'a' : 'i';
$style .= 'style=';
$buffer = <<"EOB";
$add
EOB
&$output_buffer;
exit;
}
sub view_imode_head {
my ($arg) = @_;
require $ir_i_def_pl if (($imchr_title) && ($FORM{'sv'} =~ /^im$/i));
my $svim = ($FORM{'sv'} =~ /^im$/i)? '&sv=im' : '';
my $counterStr = '' . $mobile_counter_front_str . $a_count . $mobile_counter_back_str . ''
if ($mobile_counter_mode and $enable_counter);
if ($imode_post_button) {
$post_link =<<"EOP";
$counterStr
EOP
} else {
$post_link =<<"EOP";
${counterStr}1.投稿する
EOP
}
$buffer = <<"EOC";
${post_link}
EOBH
$icclen = length($buffer) if ($imode_auto);
}
sub view_imode_body {
my ($line, $add) = @_;
my ($addition, $url, $post_item, $pilen, $maxlen);
unless ($line) {
$buffer .= '投稿はありません
' . "\n";
return;
}
my ($subject, $name, $mail, $web, $message, $date, $host,
$addr, $agent, $pass, $unkey) = split("\t", $line);
chomp $unkey;
$date = &conv_date_imode($date);
if (defined $add) {
if ($add < 0) {
$addition = <<"EOAVIBM";
EOAVIBM
} else {
$addition = <<"EOAVIB";
EOAVIB
}
}
$name = qq|$name| if ($mail ne "");
$url = qq|URL| if ($web ne "");
$message = &conv_imchr($message);
$subject = &conv_imchr($subject);
$name = &conv_imchr($name);
$message = &conv_jschr($message);
$subject = &conv_jschr($subject);
$name = &conv_jschr($name);
$post_item = <<"EOBB";
$addition$date $url
$subject
$name$message
EOBB
$pilen = length($post_item);
$maxlen = $imode_auto_size * 1024;
if (($imode_auto) && ($icclen + $pilen > $maxlen) && !($force)) {
return 1;
} else {
$buffer .= $post_item;
$icclen += $pilen;
return 0;
}
}
sub view_imode_foot {
my ($nf, $called) = @_;
my ($next, $prev, $svim, $add, $ret_link);
$next = $start + $page_max;
$buffer .= '';
$svim = ($FORM{'sv'} =~ /^im$/i)? '&sv=im' : '';
$prev = $start - $page_max;
$prev = 0 if ($prev < 0);
$prev = $FORM{'p'} if ($FORM{'p'} > 0);
$tagp = ($imode_auto)? '&p=' . $start : '';
if ($called == 1) {
$add = '&action=delete';
} elsif ($called == 2) {
$add = '&action=select';
} else {
$ret_link = '';
}
$add = '&mode=log' if ($FORM{'mode'} =~ /^log$/i);
if ($start > 0) {
$buffer .= <<"EOB";
[4.前]
EOB
}
$buffer .= <<"EOB";
[0.TOP]
EOB
if ($nf) {
$buffer .= <<"EOB";
[6.次]
EOB
}
$buffer .= '' . $ret_link;
&$output_buffer;
}
sub view_imode_nums {
my ($st, $en, $al) = @_;
$buffer .= "${st}〜${en}件/全${al}件
";
$buffer .= "(検索; $global_logic_formula)
" if ($global_logic_formula);
$buffer .= "
";
}
sub view_log_imode_head {
my ($arg) = @_;
require $ir_i_def_pl if (($imchr_title) && ($FORM{'sv'} =~ /^im$/i));
my $svim = ($FORM{'sv'} =~ /^im$/i)? '&sv=im' : '';
if ($arg) {
my $next = $start + $page_max;
$buffer = <<"EOBH";
1.通常モード
EOBH
} else {
$buffer = <<"EOBH";
1.通常モード
EOBH
}
$icclen = length($buffer) if ($imode_auto);
}
sub view_log_imode {
$view_head = 'view_log_imode_head';
$view_body = 'view_imode_body';
$view_foot = 'view_imode_foot';
}
sub delete_imode_head {
my $style = ($subtype eq 'astel')? 'a' : 'i';
$style .= 'style=';
$buffer = <<"EOBH";
";
&view_imode_foot($nf, 1);
}
sub delete_imode {
$view_head = 'delete_imode_head';
$view_body = 'delete_imode_body';
$view_foot = 'delete_imode_foot';
&view;
}
sub select_imode_head {
my $style = ($subtype eq 'astel')? 'a' : 'i';
$style .= 'style=';
$buffer = <<"EOBH";
";
&view_imode_foot($nf, 2);
}
sub select_imode {
$view_head = 'select_imode_head';
$view_body = 'select_imode_body';
$view_foot = 'select_imode_foot';
&view;
}
sub modify_imode {
my ($subject, $name, $email, $web, $message, $pass, $num) = &modify();
$message =~ s/
/\n/gi;
map {
s/\&/\&/g;
s/\"/\"/g;
s/>/\>/g;
s/\</g;
} ($subject, $name, $message);
my $style = ($subtype eq 'astel')? 'a' : 'i';
$style .= 'style=';
$buffer = <<"EOB";
EOB
&$output_buffer;
exit;
}
sub error_imode {
my ($s) = @_;
$buffer = <<"EOB";
$s
EOB
&$output_buffer;
}
sub set_master_mode_imode {
my $style = ($subtype eq 'astel')? 'a' : 'i';
$style .= 'style=';
$buffer = <<"EOB";
マスターキー設定
EOB
&$output_buffer;
exit;
}
sub search_body_imode {
my ($mlog, $mlogic);
$mlog = ''
if ($FORM{'mode'} =~ /^log$/i);
if ($term_logic_enabled) {
$mlogic =<<'EOM';
AND
OR
EOM
}
$buffer = <<"EOB";
記事の検索
EOB
&$output_buffer;
exit;
}
sub search_imode_head {
my ($arg, $data) = @_;
&$view_head($arg);
# &view_imode_head($arg);
$buffer .= "$data の検索結果\n";
}
sub search_imode_foot {
my ($nf, $key, $logic) = @_;
my ($next, $prev, $query, $svim, $mlog);
$next = $start + $page_max;
$buffer .= '';
$svim = ($FORM{'sv'} =~ /^im$/i)? '&sv=im' : '';
$mlog = '&mode=log' if ($FORM{'mode'} =~ /^log$/i);
$prev = $start - $page_max;
$query = '&q=' . $key . '&l=' . $logic;
if ($start >= $page_max) {
$buffer .= <<"EOB";
[4.前]
EOB
}
$buffer .= <<"EOB";
| [0.TOP] |
EOB
if ($nf) {
$buffer .= <<"EOB";
[6.次]
EOB
}
$buffer .= ' |
';
&$output_buffer;
}
sub set_init_mode_imode {
local ($title, $email_admin, $envimgpath, $email_send, $bbs_url);
my ($def_pass) = $FORM{'new1'} if ($FORM{'action'} eq 'set_master');
$init_exist = &load_init($init_file);
my ($email_send_on, $email_send_off);
$email_send_on = ($email_send == 1)? 'checked' : '';
$email_send_off = ($email_send == 0)? 'checked' : '';
my $bbs_admin = $bbs_local . '?action=ch_master' .
'&authorize=' . $COOKIE{'authorize'};
$bbs_admin .= '&sv=im' if ($FORM{'sv'} =~ /^im$/i);
my $scr_path = 'http://' . $ENV{'SERVER_NAME'} . $ENV{'SCRIPT_NAME'};
$bbs_url = $scr_path
if ($bbs_url =~ /^\s*$/);
$buffer = <<"EOB";
掲示板の各種設定
管理パスワードの変更
EOB
&$output_buffer;
exit;
}
sub set_init_mode_imode2 {
local ($sendmail, $email_to, $email_from, $email_subj);
my ($def_pass) = $FORM{'new1'} if ($FORM{'action'} eq 'set_master');
$init_exist = &load_init($init_file);
$email_to = '@docomo.ne.jp' if ($email_to eq '(通知メールアドレス)');
$buffer = <<"EOB";
投稿通知の設定
EOB
&$output_buffer;
exit;
}
sub authorize_imode {
my ($msg) = @_;
my $style = ($subtype eq 'astel')? 'a' : 'i';
$style .= 'style=';
$buffer = <<"EOB";
$msg
パスワード認証
EOB
&$output_buffer;
exit;
}
sub output_buffer_imode {
my ($length, $header, $htmlhd, $body_atr, $akey1, $akey2);
local ($footer);
# Dxxxi ではアクセスキーに # と * が使えない
if ($ENV{'HTTP_USER_AGENT'} =~ m|DoCoMo/[\d.]+/D\d{3}i|){
$akey1 = '9';
$akey2 = '7';
} else {
$akey1 = '#';
$akey2 = '*';
}
my $title = ($subtype eq 'astel')? $astel_title : $imode_title;
my $svim = ($FORM{'sv'} =~ /^im$/i)?
'?sv=im' : '';
$body_atr = &set_body_color(%imode_body)
if ($ENV{'HTTP_USER_AGENT'} !~ /501i/);
my ($addition);
$addition = "
$version" if ($print_version);
# $extra_header .= ''
# if ($subtype eq 'astel' and not $allow_astel_savepage);
$htmlhd =<<"EOH";
$title$extra_header
$title$addition
EOH
$footer =<<"EOF";
$copyright_imode
EOF
unless ($buffer =~ s/\s*$//) {
$footer .=<<"EOF";
${akey1}.掲示板に戻る
EOF
}
my $rettop = (($ret_local) && ($ret_local !~ m|^\s*$|))? $ret_local : '';
$footer .=<<"EOF" if ($rettop);
${akey2}.トップに戻る
EOF
$svim = ($FORM{'sv'} =~ /^im$/i)?
'' : '';
$buffer =~ s//$svim/g;
&subst_secure if ($limit_mode);
$length = length($buffer) + length($htmlhd) + length($footer);
if ($print_content_length) {
$header =<<"EOH";
Content-Type: text/html;charset=Shift_JIS
Content-Length: $length
EOH
} else {
$header =<<"EOH";
Content-Type: text/html;charset=Shift_JIS
EOH
}
print "$header";
print "$htmlhd";
print "$buffer";
print "$footer";
}
1;