'print_html_start', 'print_html_end',
'print_html_head_start', 'print_html_head_end',
'print_html_body_start', 'print_html_body_end',
- 'print_viewer_page',
+ 'print_viewer_page', 'print_goto',
'write_index', 'write_static_viewer_page', 'write_static_goto',
'ong',
'eval_bb', 'bb_to_bbcode', 'bb_to_html'
###PERL_CGI_FRAME_PATH: CGI_FRAME_PATH = /bsta/f
###PERL_CGI_GOTO_PATH: CGI_GOTO_PATH = /bsta/g
###PERL_CGI_INFO_PATH: CGI_INFO_PATH = /bsta/i
+###PERL_CGI_LIST_PATH: CGI_LIST_PATH = /bsta/goto.htm
###PERL_CGI_LOGO_PATH: CGI_LOGO_PATH = /bsta/botmlogo.png
###PERL_CGI_TIMER_PATH: CGI_TIMER_PATH = /bsta/timer.js
###PERL_CGI_VIEWER_PATH: CGI_VIEWER_PATH = /bsta/v
###PERL_DATA_DEFAULT_PATH: DATA_DEFAULT_PATH = /botm/data/bsta/default
###PERL_DATA_LIST_PATH: DATA_LIST_PATH = /botm/data/bsta/list
###PERL_DATA_NOACCESS_PATH: DATA_NOACCESS_PATH = /botm/data/bsta/noaccess
+###PERL_DATA_SETTINGS_PATH: DATA_SETTINGS_PATH = /botm/data/bsta/settings
###PERL_DATA_STATE_PATH: DATA_STATE_PATH = /botm/data/bsta/state
###PERL_DATA_WORDS_PATH: DATA_WORDS_PATH = /botm/data/bsta/words/
###PERL_WWW_PATH: WWW_PATH = /botm/www/
+###PERL_WWW_GOTO_PATH: WWW_GOTO_PATH = /botm/www/1190/bsta/goto.htm
###PERL_WWW_INDEX_PATH: WWW_INDEX_PATH = /botm/www/1190/bsta/index.htm
###PERL_SCHEME: SCHEME = http
print $fh html_encode_line("\n".$data->{'content'});
}
+sub print_goto {
+ (
+ my $file,
+ my $state,
+ my $settings,
+ my $goto_list,
+ my $password_ok,
+ ) = @_;
+
+ my $fh;
+ my $last_frame;
+ my $ong_state;
+ my $password_query;
+
+ $last_frame = int($state->{'last'});
+ $ong_state = int($state->{'state'});
+ $password_query = url_query_encode({'p', $settings->{'password'}});
+
+ my $_title = html_entity_encode_dec($settings->{'story'}, 1);
+ my $_website_name = html_entity_encode_dec(WEBSITE_NAME() , 1);
+ my $_base_url = html_entity_encode_dec(CGI_PATH() , 1);
+
+ if (ref($file)) {
+ $fh=$file;
+ unless (seek($fh, 0, 0)) {
+ #don't actually fail here
+ }
+ }
+ else {
+ unless (open_encoded($fh, ">:encoding(UTF-8)", $file)) {
+ return 0;
+ }
+ }
+
+ print_html_start($fh);
+ print_html_head_start($fh);
+
+ print $fh ' <title>GOTO • '.$_title.' • '.$_website_name.'</title>'."\n";
+
+ print_html_head_end($fh);
+ print_html_body_start($fh);
+
+ print $fh ' <div id="inst" class="ins">'."\n";
+
+ print $fh ' <div id="title">'."\n";
+ print $fh ' <h1 id="titletext">'.$_title.'</h1>'."\n";
+ print $fh ' </div>'."\n";
+
+ print $fh ' </div>'."\n";
+ print $fh ' <div id="insb" class="ins">'."\n";
+
+ print $fh ' <div id="chat">'."\n";
+
+ for (my $frame = 0; ; $frame += 1) {
+ unless (
+ $password_ok || (
+ ($frame <= $last_frame) &&
+ ($ong_state >= STATE->{'waiting'})
+ )
+ ) {
+ last;
+ }
+ my $title;
+ my $ongtime;
+ my @time_tab;
+ my $time_text;
+ my $timer_color;
+ my $frame_text;
+ my $viewer_url;
+
+ $ongtime = $goto_list->{'ongtime-'.$frame};
+ $title = $goto_list->{'title-' .$frame};
+ if (($ongtime eq '') && ($title eq '')) {
+ my $frame_data_path = join_path(PATH_SEPARATOR(), DATA_PATH(), $frame);
+ my %frame_data = read_data_file($frame_data_path);
+ $ongtime = $frame_data{'ongtime'};
+ $title = $frame_data{'title'};
+ unless (keys %frame_data) {
+ last;
+ }
+ }
+
+ if ($ongtime ne '') {
+ @time_tab = gmtime($ongtime);
+ $time_text = sprintf(
+ '%02d.%02d.%02d %02d:%02d',
+ $time_tab[3],
+ $time_tab[4]+1,
+ $time_tab[5]%100,
+ $time_tab[2],
+ $time_tab[1]
+ );
+ }
+ else {
+ $time_text = (($frame <= $last_frame) && ($ong_state >= STATE->{'waiting'})) ?
+ 'EE.EE.EE EE:EE' : '--.--.-- --:--';
+ }
+ if ($title eq '') {
+ $title = '_';
+ }
+ $timer_color = (($frame > $last_frame) || ($ong_state < STATE->{'waiting'})) ?
+ 'cz' : (
+ (($frame == $last_frame) && ($ong_state < STATE->{'ready'})) ?
+ 'ni' : 'br'
+ );
+ $frame_text = sprintf('%03d',$frame);
+ $viewer_url = merge_url(
+ {'path' => CGI_VIEWER_PATH()},
+ {'path' => $frame}
+ ); # TODO: consider static here?
+ if ($password_ok) {
+ $viewer_url = merge_url($viewer_url, {'query' => $password_query, 'append_query' => 1, 'preserve_fragment' => 1});
+ }
+
+ my $_viewer_url = html_entity_encode_dec($viewer_url, 1);
+ my $_title = html_entity_encode_dec($title , 1);
+
+ print $fh ' <span class="'.$timer_color.'">'.$frame_text.'</span> '.$time_text.' <a href="'.$_viewer_url.'">'.$_title.'</a><br>'."\n";
+ }
+ print $fh ' </div>'."\n";
+
+ print $fh ' <div id="underlinks">'."\n";
+ print $fh ' <a href="'.$_base_url.'">BSTA</a>'."\n";
+ print $fh ' </div>'."\n";
+
+ print $fh ' </div>'."\n";
+
+ print_html_body_end($fh, $ong_state == STATE->{'inactive'});
+ print_html_end($fh);
+
+ unless (ref($file)) {
+ close ($fh);
+ }
+ else {
+ truncate ($fh , tell($fh));
+ }
+
+ return 1;
+}
+
sub print_viewer_page {
(
my $file,
);
}
}
+ if (_x_encoded('-f',WWW_GOTO_PATH())) {
+ $goto_url = CGI_LIST_PATH();
+ }
}
my $bbcode_url = ($text_mode == TEXT_MODE->{'bb'}) ?
merge_url(
}
sub write_static_goto {
+ (my $state_ref, my $settings_ref, my $goto_ref) = @_;
+ my %state;
+ my %settings;
+ my %goto_list;
+ %state = (ref ($state_ref)) ?
+ %$state_ref :
+ read_data_file(DATA_STATE_PATH());
+ %settings = (ref ($settings_ref)) ?
+ %$settings_ref :
+ read_data_file(DATA_SETTINGS_PATH());
+ %goto_list = (ref ($goto_ref)) ?
+ %$goto_ref :
+ read_data_file(DATA_SETTINGS_PATH());
+
+ return print_goto(
+ WWW_GOTO_PATH(),
+ \%state,
+ \%settings,
+ \%goto_list,
+ 0, # password OK
+ );
}
# ONG the frame + attachment & stuff. NOT update state file.