]> bicyclesonthemoon.info Git - ott/bsta/blobdiff - bsta_lib.1.pm
Done comment system
[ott/bsta] / bsta_lib.1.pm
index 78c80a6fa315f6772e782ef0ca2e6be93dd3e29d..935bc2660152a322c77c36bdc136a7e394517a7c 100644 (file)
@@ -181,10 +181,10 @@ use constant tags_html => {
        '/fq'    => '</div>',
        'tq'     => '<div class="tq">',
        '/tq'    => '</div>',
-       'quote'  => '<div class="tq">',
-       'quote=' => '<div class="tq"><b class="br">',
-       'quote/='=> '</b> wrote:<br>',
-       '/quote' => '</div>',
+       'quote'  => '<div class="opomba"><div class="opomba_text">',
+       'quote=' => '<div class="opomba"><div class="opomba_info"><b>',
+       'quote/='=> '</b> wrote:</div><div class="opomba_text">',
+       '/quote' => '</div></div>',
        'ni'     => '<span class="ni">',
        '/ni'    => '</span>',
        'br'     => '<span class="br">',
@@ -951,6 +951,8 @@ sub print_viewer_page {
        );
        my $show_command_link = ($next_available || (!$access));
        my $show_command_cursor = ((!$next_available) || ($command eq ''));
+       my $show_words = ($password_ok || ($access && !$launch));
+       
        my $frame_indirect = !(
                (!$access) || (
                        ($frame <= $last_frame) &&
@@ -1074,20 +1076,20 @@ sub print_viewer_page {
        
        if ($password_ok) {
                $password_query = url_query_encode({'p', $settings->{'password'}});
-               $goto_url        = merge_url($goto_url       , {'query' => $password_query, 'append_query' => 1});
-               $info_url        = merge_url($info_url       , {'query' => $password_query, 'append_query' => 1});
-               $words_url       = merge_url($words_url      , {'query' => $password_query, 'append_query' => 1});
-               $bbcode_url      = merge_url($bbcode_url     , {'query' => $password_query, 'append_query' => 1});
-               $viewer_url      = merge_url($viewer_url     , {'query' => $password_query, 'append_query' => 1});
-               $viewer_0_url    = merge_url($viewer_0_url   , {'query' => $password_query, 'append_query' => 1});
-               $viewer_prev_url = merge_url($viewer_prev_url, {'query' => $password_query, 'append_query' => 1});
-               $viewer_next_url = merge_url($viewer_next_url, {'query' => $password_query, 'append_query' => 1});
-               $viewer_last_url = merge_url($viewer_last_url, {'query' => $password_query, 'append_query' => 1});
+               $goto_url        = merge_url($goto_url       , {'query' => $password_query, 'append_query' => 1, 'preserve_fragment' => 1});
+               $info_url        = merge_url($info_url       , {'query' => $password_query, 'append_query' => 1, 'preserve_fragment' => 1});
+               $words_url       = merge_url($words_url      , {'query' => $password_query, 'append_query' => 1, 'preserve_fragment' => 1});
+               $bbcode_url      = merge_url($bbcode_url     , {'query' => $password_query, 'append_query' => 1, 'preserve_fragment' => 1});
+               $viewer_url      = merge_url($viewer_url     , {'query' => $password_query, 'append_query' => 1, 'preserve_fragment' => 1});
+               $viewer_0_url    = merge_url($viewer_0_url   , {'query' => $password_query, 'append_query' => 1, 'preserve_fragment' => 1});
+               $viewer_prev_url = merge_url($viewer_prev_url, {'query' => $password_query, 'append_query' => 1, 'preserve_fragment' => 1});
+               $viewer_next_url = merge_url($viewer_next_url, {'query' => $password_query, 'append_query' => 1, 'preserve_fragment' => 1});
+               $viewer_last_url = merge_url($viewer_last_url, {'query' => $password_query, 'append_query' => 1, 'preserve_fragment' => 1});
                if ($frame_indirect) {
-                       $frame_url     = merge_url($frame_url      , {'query' => $password_query, 'append_query' => 1});
+                       $frame_url     = merge_url($frame_url      , {'query' => $password_query, 'append_query' => 1, 'preserve_fragment' => 1});
                }
                if ($nextframe_indirect) {
-                       $frame_next_url= merge_url($frame_next_url , {'query' => $password_query, 'append_query' => 1});
+                       $frame_next_url= merge_url($frame_next_url , {'query' => $password_query, 'append_query' => 1, 'preserve_fragment' => 1});
                }
        }
        my $_base_url        = html_entity_encode_dec($base_url       , 1);
@@ -1239,7 +1241,9 @@ sub print_viewer_page {
        print $fh '<a href="'.$_goto_url.'">GOTO</a>'."\n";
        print $fh '     <span style="float: right;">'."\n      ";
        if ($text_mode == TEXT_MODE->{'normal'}) {
-               print $fh '<a href="'.$_words_url.'">'.$words_link_text.'</a> | ';
+               if ($show_words) {
+                       print $fh '<a href="'.$_words_url.'">'.$words_link_text.'</a> | ';
+               }
        }
        else {
                print $fh '<a href="'.$_viewer_url.'">Without</a> | ';
@@ -1251,7 +1255,7 @@ sub print_viewer_page {
        print $fh "    </div>\n";
        print $fh "   </div>\n";
        
-       if ($text_mode == TEXT_MODE->{'words'}) {
+       if (($text_mode == TEXT_MODE->{'words'}) && $show_words) {
                print_comments($fh, $context, $settings, $words_data);
        }
        
@@ -1276,9 +1280,69 @@ sub print_comments {
        my $frame = int($context->{'frame'});
        my $page = int($context->{'words_page'});
        my $post_count = int($words_data->{'posts'});
+       my $id_start = $page * COMMENT_PAGE_LENGTH();
+       my $id_stop = $id_start + COMMENT_PAGE_LENGTH();
+       my $older = ($page > 0) ? ($page-1) : '';
+       my $newer;
+       my $password_query;
+       if ($id_stop >= $post_count) {
+                       $id_stop = $post_count;
+       }
+       else {
+               $newer = $page+1;
+       }
+       my $links;
+       
+       my $words_url = merge_url(
+               {'path' => CGI_VIEWER_PATH()},
+               {
+                       'path' => $frame,
+                       'query' => {'b' => TEXT_MODE->{'words'}},
+               }
+       );
+       my $older_url = merge_url(
+               $words_url,
+               {
+                       'query' => {'i' => $page-1},
+                       'fragment' => 'insw',
+                       'append_query' => 1
+               }
+       );
+       my $newer_url = merge_url(
+               $words_url,
+               {
+                       'query' => {'i' => $page+1},
+                       'fragment' => 'insw',
+                       'append_query' => 1
+               }
+       );
+       
+       if ($password_ok) {
+               $password_query = url_query_encode({'p', $settings->{'password'}});
+               $older_url = merge_url($older_url, {'query' => $password_query, 'append_query' => 1, 'preserve_fragment' => 1});
+               $newer_url = merge_url($older_url, {'query' => $password_query, 'append_query' => 1, 'preserve_fragment' => 1});
+       }
        
        my $_post_url = html_entity_encode_dec(CGI_WORDS_PATH(), 1);
        my $_password = html_entity_encode_dec($settings->{'password'}, 1);
+       my $_older_url = html_entity_encode_dec($older_url, 1);
+       my $_newer_url = html_entity_encode_dec($newer_url, 1);
+       
+       if (($older ne '') || ($newer ne '')) {
+               $links .= '    <div class="underlinks">'."\n";
+               $links .= '     ';
+               if ($older ne '') {
+                       $links .= '<a href="'.$_older_url.'">Older</a>'
+               }
+               if (($older ne '') && ($newer ne '')) {
+                       $links .= ' | ';
+               }
+               if ($newer ne '') {
+                       $links .= '<a href="'.$_newer_url.'">Newer</a>';
+               }
+               $links .= "\n";
+               $links .= '    </div>'."\n";
+       }
        
        print $fh '   <div class="space"></div>'."\n";
        print $fh '   <div id="insw" class="ins">'."\n";
@@ -1287,15 +1351,14 @@ sub print_comments {
        print $fh '     <h1 class="titletext" id="wordstitletext">Words</h1>'."\n";
        print $fh '    </div>'."\n";
        
+       if ($links ne '') {
+               print $fh $links;
+       }
+       
        print $fh '    <div class="undertext" id="words">'."\n";
        
        if ($post_count > 0) {
-               my $start = $page * COMMENT_PAGE_LENGTH();
-               my $stop = $start + COMMENT_PAGE_LENGTH();
-               if ($stop > $post_count) {
-                       $stop = $post_count;
-               }
-               for (my $i=$start; $i<$stop; ++$i) {
+               for (my $i=$id_start; $i<$id_stop; ++$i) {
                        my $ID = $words_data->{'content'}->[$i];
                        my $post_path = join_path(PATH_SEPARATOR(), DATA_WORDS_PATH(), $ID);
                        my %post_data = read_data_file($post_path);
@@ -1328,21 +1391,59 @@ sub print_comments {
                                        $time_tab[1]
                                );
                        }
+                       my $quote_url = merge_url(
+                               {'path' => CGI_WORDS_PATH()},
+                               {
+                                       'query' => {
+                                               'f' => $frame,
+                                               'quote' => $ID,
+                                               'p' => ($password_ok ? $settings->{'password'} : '')
+                                       }
+                               }
+                       );
+                       my $edit_url = merge_url(
+                               {'path' => CGI_WORDS_PATH()},
+                               {
+                                       'query' => {
+                                               'f' => $frame,
+                                               'edit' => $ID,
+                                               'key' => $post_data{'key'},
+                                               'username' => $post_data{'name'},
+                                               'p' => ($password_ok ? $settings->{'password'} : '')
+                                       }
+                               }
+                       );
+                       my $remove_url = merge_url(
+                               {'path' => CGI_WORDS_PATH()},
+                               {
+                                       'query' => {
+                                               'f' => $frame,
+                                               'remove' => $ID,
+                                               'key' => $post_data{'key'},
+                                               'username' => $post_data{'name'},
+                                               'p' => ($password_ok ? $settings->{'password'} : '')
+                                       }
+                               }
+                       );
                        
-                       my $_ID   = html_entity_encode_dec($ID, 1);
-                       my $_name = html_entity_encode_dec($post_data{'name'}, 1);
+                       my $_ID         = html_entity_encode_dec($ID, 1);
+                       my $_name       = html_entity_encode_dec($post_data{'name'}, 1);
+                       my $_quote_url  = html_entity_encode_dec($quote_url, 1);
+                       my $_edit_url   = html_entity_encode_dec($edit_url, 1);
+                       my $_remove_url = html_entity_encode_dec($remove_url, 1);
                        
                        print $fh '     <div id="'.$_ID.'"class="opomba">'."\n";
                        print $fh '      <div class="opomba_info">'."\n";
-                       print $fh '       '.$i.': '.$_name;
+                       print $fh '       <a href="#'.$_ID.'" class="bi hu">'.$i.': '.$_name;
                        if ($post_time_text ne '') {
                                print $fh ' &bull; '.$post_time_text;
                        }
                        if ($edit_time_text ne '') {
                                print $fh ' &bull; '.$edit_time_text;
                        }
+                       print $fh '</a>'."\n";
                        print $fh '       <div class="pr">'."\n";
-                       print $fh '        edit | remove'."\n";
+                       print $fh '        <a href="'.$_quote_url.'" class="bi hu">quote</a> | <a href="'.$_edit_url.'" class="bi hu">edit</a> | <a href="'.$_remove_url.'" class="bi hu">remove</a>'."\n";
                        print $fh '       </div>'."\n";
                        print $fh '      </div>'."\n";
                        print $fh '      <div class="opomba_text">'."\n";
@@ -1353,8 +1454,8 @@ sub print_comments {
                }
        }
        
-       print $fh '     <form method="get" action="'.$_post_url.'">'."\n";
-       print $fh '      <b>Your words</b>'."\n";
+       print $fh '     <form method="post" action="'.$_post_url.'">'."\n";
+       print $fh '      <b>Your words:</b>'."\n";
        print $fh '      <textarea class="inta" name="words" rows="4"></textarea>'."\n";
        print $fh '      <table cellpadding="0" cellspacing="0" border="0"><tr>'."\n";
        print $fh '       <td><b>Your name: </b></td>'."\n";
@@ -1367,7 +1468,10 @@ sub print_comments {
        print $fh '      </tr><tr>'."\n";
        print $fh '       <td><b>Leave this empty: </b></td>'."\n";
        print $fh '       <td><input class="intx" type="text" name="password2" value=""></td>'."\n";
-       print $fh '       <td><input class="inbt" type="submit" name="post" value="Send"></td>'."\n";
+       print $fh '       <td>'."\n";
+       print $fh '        <input class="inbt" type="submit" name="post" value="Send">'."\n";
+       print $fh '        <input class="inbt" type="submit" name="preview" value="Preview">'."\n";
+       print $fh '       </td>'."\n";
        print $fh '      </tr></table>'."\n";
        print $fh '      <input type="hidden" name="f" value="'.$frame.'">'."\n";
        if ($password_ok) {
@@ -1376,6 +1480,10 @@ sub print_comments {
        print $fh '     </form>'."\n";
        print $fh '    </div>'."\n";
        
+       if ($links ne '') {
+               print $fh $links;
+       }
+       
        print $fh '   </div>'."\n";
 }
 
@@ -1750,7 +1858,7 @@ sub ong {
                                $write_data = 1;
                        }
                        if ($write_data) {
-                               $r = write_data_file($frame_data_path, '', '', \%frame_data);
+                               $r = write_data_file($frame_data_path, \%frame_data);
                                unless ($r) {
                                        print STDERR "fail writing $frame_data_path\n";
                                        if ($print) {
@@ -1761,7 +1869,7 @@ sub ong {
                        }
                        $goto_list{'title-'  .$frame} = $frame_full_data{'title'};
                        $goto_list{'ongtime-'.$frame} = $frame_full_data{'ongtime'};
-                       $r = write_data_file(DATA_LIST_PATH(), '', '', \%goto_list);
+                       $r = write_data_file(DATA_LIST_PATH(), \%goto_list);
                        unless ($r) {
                                print STDERR "fail writing ".DATA_LIST_PATH()."\n";
                                if ($print) {