From 7ad6213b615f925684bd5afd52f064c7e29653fa Mon Sep 17 00:00:00 2001 From: Yorhel Date: Sun, 21 Dec 2008 11:26:56 +0100 Subject: Basic skin generator + example skin for testing How it works: Create new directory in static/s/ Create a 'conf' file (see the test skin for a template) Run skingen.pl, which will generate a style.css and boxbg.png This process will probably be automated using a simple web interface or something... There's no skin selector yet, so Util/LayoutHTML.pm has to be modified to view the generated skin. --- lib/VNDB/Util/LayoutHTML.pm | 1 + 1 file changed, 1 insertion(+) (limited to 'lib') diff --git a/lib/VNDB/Util/LayoutHTML.pm b/lib/VNDB/Util/LayoutHTML.pm index e5ced8f6..0c125b35 100644 --- a/lib/VNDB/Util/LayoutHTML.pm +++ b/lib/VNDB/Util/LayoutHTML.pm @@ -19,6 +19,7 @@ sub htmlHeader { # %options->{ title, js, noindex, search } title $o{title}; Link rel => 'shortcut icon', href => '/favicon.ico', type => 'image/x-icon'; Link rel => 'stylesheet', href => $self->{url_static}.'/f/style.css', type => 'text/css', media => 'all'; + Link rel => 'stylesheet', href => $self->{url_static}.'/s/test/style.css', type => 'text/css', media => 'all'; if($o{js}) { script type => 'text/javascript', src => $self->{url_static}.'/f/forms.js'; end; } -- cgit v1.2.3 From 99c38fd5886778178cd752a91ca41d9686de0ce6 Mon Sep 17 00:00:00 2001 From: Yorhel Date: Tue, 23 Dec 2008 09:44:09 +0100 Subject: A DRY appreach to skins: there's only one main CSS file now So, instead of using separate smaller CSS files to overwrite directives in the main (/static/f/style.css) file, I decided to generate one CSS file for each skin, which includes everything needed to render the page. The template for this skin is now /data/skingen/style.css. I just don't feel like maintaining two separate files when changing something to the CSS. Also converted the old layout into a skin directory (angel), since the default skin isn't in the CSS template anymore. --- lib/VNDB/Util/LayoutHTML.pm | 1 - 1 file changed, 1 deletion(-) (limited to 'lib') diff --git a/lib/VNDB/Util/LayoutHTML.pm b/lib/VNDB/Util/LayoutHTML.pm index 0c125b35..eb71b819 100644 --- a/lib/VNDB/Util/LayoutHTML.pm +++ b/lib/VNDB/Util/LayoutHTML.pm @@ -18,7 +18,6 @@ sub htmlHeader { # %options->{ title, js, noindex, search } head; title $o{title}; Link rel => 'shortcut icon', href => '/favicon.ico', type => 'image/x-icon'; - Link rel => 'stylesheet', href => $self->{url_static}.'/f/style.css', type => 'text/css', media => 'all'; Link rel => 'stylesheet', href => $self->{url_static}.'/s/test/style.css', type => 'text/css', media => 'all'; if($o{js}) { script type => 'text/javascript', src => $self->{url_static}.'/f/forms.js'; end; -- cgit v1.2.3 From c59111e989844e670aea7a1e6af3bdd134e6cebc Mon Sep 17 00:00:00 2001 From: Yorhel Date: Tue, 23 Dec 2008 12:06:42 +0100 Subject: Added skin selector to profile page --- lib/VNDB/DB/Users.pm | 2 +- lib/VNDB/Handler/Users.pm | 7 ++++++- lib/VNDB/Util/LayoutHTML.pm | 3 ++- 3 files changed, 9 insertions(+), 3 deletions(-) (limited to 'lib') diff --git a/lib/VNDB/DB/Users.pm b/lib/VNDB/DB/Users.pm index 501bb8bb..6f1a13c6 100644 --- a/lib/VNDB/DB/Users.pm +++ b/lib/VNDB/DB/Users.pm @@ -64,7 +64,7 @@ sub dbUserEdit { my %h; defined $o{$_} && ($h{$_.' = ?'} = $o{$_}) - for (qw| username mail rank show_nsfw show_list |); + for (qw| username mail rank show_nsfw show_list skin |); $h{'passwd = decode(?, \'hex\')'} = $o{passwd} if defined $o{passwd}; diff --git a/lib/VNDB/Handler/Users.pm b/lib/VNDB/Handler/Users.pm index daba59e6..10cf07ad 100644 --- a/lib/VNDB/Handler/Users.pm +++ b/lib/VNDB/Handler/Users.pm @@ -299,6 +299,7 @@ sub edit { { name => 'mail', template => 'mail' }, { name => 'usrpass', required => 0, minlength => 4, maxlength => 64, template => 'asciiprint' }, { name => 'usrpass2', required => 0, minlength => 4, maxlength => 64, template => 'asciiprint' }, + { name => 'skin', enum => [ '', keys %{$self->{skins}} ], required => 0, default => '' }, { name => 'flags_list', required => 0, default => 0 }, { name => 'flags_nsfw', required => 0, default => 0 }, ); @@ -308,6 +309,7 @@ sub edit { $o{username} = $frm->{usrname} if $frm->{usrname}; $o{rank} = $frm->{rank} if $frm->{rank}; $o{mail} = $frm->{mail}; + $o{skin} = $frm->{skin}; $o{passwd} = md5_hex($frm->{usrpass}) if $frm->{usrpass}; $o{show_list} = $frm->{flags_list} ? 1 : 0; $o{show_nsfw} = $frm->{flags_nsfw} ? 1 : 0; @@ -321,6 +323,7 @@ sub edit { $frm->{usrname} ||= $u->{username}; $frm->{rank} ||= $u->{rank}; $frm->{mail} ||= $u->{mail}; + $frm->{skin} ||= $u->{skin}; $frm->{flags_list} = $u->{show_list} if !defined $frm->{flags_list}; $frm->{flags_nsfw} = $u->{show_nsfw} if !defined $frm->{flags_nsfw}; @@ -341,7 +344,7 @@ sub edit { $self->authCan('usermod') ? ( [ input => short => 'usrname', name => 'Username' ], [ select => short => 'rank', name => 'Rank', options => [ - map [ $_, $self->{user_ranks}[$_][0] ], 1..$#{$self->{user_ranks}} ] ], + map [ $_, $self->{user_ranks}[$_][0] ], 1..$#{$self->{user_ranks}} ] ], ) : ( [ static => label => 'Username', content => $frm->{usrname} ], ), @@ -353,6 +356,8 @@ sub edit { [ passwd => short => 'usrpass2', name => 'Confirm pass.' ], [ part => title => 'Options' ], + [ select => short => 'skin', name => 'Prefered skin', options => [ + map [ $_ eq $self->{skin_default} ? '' : $_, $self->{skins}{$_} ], sort keys %{$self->{skins}} ] ], [ check => short => 'flags_list', name => qq|Allow other people to see my visual novel list (/u$uid/list) |. qq|and wishlist (/u$uid/wish)| ], diff --git a/lib/VNDB/Util/LayoutHTML.pm b/lib/VNDB/Util/LayoutHTML.pm index eb71b819..8f067a36 100644 --- a/lib/VNDB/Util/LayoutHTML.pm +++ b/lib/VNDB/Util/LayoutHTML.pm @@ -12,13 +12,14 @@ our @EXPORT = qw|htmlHeader htmlFooter|; sub htmlHeader { # %options->{ title, js, noindex, search } my($self, %o) = @_; + my $skin = $self->authInfo->{skin} || $self->{skin_default}; # heading html; head; title $o{title}; Link rel => 'shortcut icon', href => '/favicon.ico', type => 'image/x-icon'; - Link rel => 'stylesheet', href => $self->{url_static}.'/s/test/style.css', type => 'text/css', media => 'all'; + Link rel => 'stylesheet', href => $self->{url_static}.'/s/'.$skin.'/style.css', type => 'text/css', media => 'all'; if($o{js}) { script type => 'text/javascript', src => $self->{url_static}.'/f/forms.js'; end; } -- cgit v1.2.3 From faa541ec2040538f2cb86710c6a1e4f98f27a0ac Mon Sep 17 00:00:00 2001 From: Yorhel Date: Tue, 23 Dec 2008 15:19:44 +0100 Subject: CSS + skin generator fixes The skin generator itself is now pretty much finished. Unless people want more control over what they can change, that is. --- lib/VNDB/Handler/Discussions.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/VNDB/Handler/Discussions.pm b/lib/VNDB/Handler/Discussions.pm index 286e3ee5..06693590 100644 --- a/lib/VNDB/Handler/Discussions.pm +++ b/lib/VNDB/Handler/Discussions.pm @@ -54,7 +54,7 @@ sub thread { table; for my $i (0..$#$p) { local $_ = $p->[$i]; - my $class = $i % 2 == 0 ? 'odd ' : ''; + my $class = $i % 2 ? 'odd ' : ''; $class .= 'deleted' if $_->{hidden}; Tr class => $class; td class => 'tc1'; -- cgit v1.2.3 From ec19b9b6a6efa35f29636d69c23ea98fbd88f142 Mon Sep 17 00:00:00 2001 From: Yorhel Date: Fri, 26 Dec 2008 12:41:16 +0100 Subject: 'All items' tab to multi-tab forms --- lib/VNDB/Util/FormHTML.pm | 3 +++ 1 file changed, 3 insertions(+) (limited to 'lib') diff --git a/lib/VNDB/Util/FormHTML.pm b/lib/VNDB/Util/FormHTML.pm index 80b8c4f3..ff23682d 100644 --- a/lib/VNDB/Util/FormHTML.pm +++ b/lib/VNDB/Util/FormHTML.pm @@ -216,6 +216,9 @@ sub htmlForm { a href => "#$short", id => "jt_sel_$short", $subs[$_*2]; end; } + li class => 'left'; + a href => '#all', id => 'jt_sel_all', 'All items'; + end; end; } -- cgit v1.2.3 From 6713e044e0b1a0a9dbb61da7a2ce6f252dc95f12 Mon Sep 17 00:00:00 2001 From: Yorhel Date: Sat, 27 Dec 2008 10:57:33 +0100 Subject: [spoiler] tag produces mouseover-style spoilers instead of ROT13 --- lib/VNDB/Func.pm | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'lib') diff --git a/lib/VNDB/Func.pm b/lib/VNDB/Func.pm index 9abacad0..1833be37 100644 --- a/lib/VNDB/Func.pm +++ b/lib/VNDB/Func.pm @@ -98,7 +98,6 @@ sub bb2html { my $e = sub { local $_ = shift; - tr/A-Za-z/N-ZA-Mn-za-m/ if !@_ && grep /spoiler/, @open; s/&/&/g; s/>/>/g; s/'; next } + elsif ($_ eq '[/spoiler]') { + if($open[$#open] eq 'spoiler') { + $result .= ''; + pop @open; + } + next; + } elsif($_ eq '[/url]') { if($open[$#open] eq 'url') { $result .= ''; pop @open; -- cgit v1.2.3 From 6a490c8c2c7c60e5530ace67fb5e526575939849 Mon Sep 17 00:00:00 2001 From: Yorhel Date: Sat, 27 Dec 2008 11:03:18 +0100 Subject: Fix for vndb-date-bug-thingy VNDB::* code uses UTC for everything, while PgSQL uses the server local time zone by default. update_vncache() has this same bug and should actually be fixed as well... but it's not that important. :-) --- lib/VNDB/DB/Releases.pm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/VNDB/DB/Releases.pm b/lib/VNDB/DB/Releases.pm index b2c78d5e..6af2f736 100644 --- a/lib/VNDB/DB/Releases.pm +++ b/lib/VNDB/DB/Releases.pm @@ -3,6 +3,7 @@ package VNDB::DB::Releases; use strict; use warnings; +use POSIX 'strftime'; use Exporter 'import'; our @EXPORT = qw|dbReleaseGet dbReleaseAdd dbReleaseEdit|; @@ -27,7 +28,7 @@ sub dbReleaseGet { $o{vid} ? ( 'rv.vid = ?' => $o{vid} ) : (), defined $o{unreleased} ? ( - q|rr.released !s TO_CHAR('today'::timestamp, 'YYYYMMDD')::integer| => $o{unreleased} ? '>' : '<=' ) : (), + q|rr.released !s ?| => [ $o{unreleased} ? '>' : '<=', strftime('%Y%m%d', gmtime) ] ) : (), ); my @join = ( -- cgit v1.2.3 From 99645030d202d7af2edcfc22645d251cd52cac2a Mon Sep 17 00:00:00 2001 From: Yorhel Date: Sat, 27 Dec 2008 13:40:32 +0100 Subject: Re-added the release list dropdown to VN pages --- lib/ChangeLog | 8 ++++++++ lib/VNDB/Handler/ULists.pm | 3 ++- lib/VNDB/Handler/VNPage.pm | 6 +++--- 3 files changed, 13 insertions(+), 4 deletions(-) (limited to 'lib') diff --git a/lib/ChangeLog b/lib/ChangeLog index 5eb214ff..e0c76517 100644 --- a/lib/ChangeLog +++ b/lib/ChangeLog @@ -6,6 +6,14 @@ TODO: (preferably with the option to re-add them when unhiding) + Add a link for the hidden 'h' option at /hist +2.1 - ? + - Skin support + - 'show all items' tab to large forms + - Allow items to be selected using the mouse on the dropdown search + - [spoiler] tag produces mouseover-style spoilers instead of ROT13 + - Fixed tiny timezone-related bug + - Re-added release list dropdown on VN pages + 2.0 - 2008-12-20 - New layout - Massive code rewrite: diff --git a/lib/VNDB/Handler/ULists.pm b/lib/VNDB/Handler/ULists.pm index 5353dbc9..f86cba83 100644 --- a/lib/VNDB/Handler/ULists.pm +++ b/lib/VNDB/Handler/ULists.pm @@ -70,7 +70,8 @@ sub rlist { $f->{e} =~ /^([rv])(\d+)$/ && $1 eq 'r' ? (rstat => $2) : (vstat => $2) ) if $f->{e} ne 'del'; - $self->resRedirect('/r'.$id, 'temp'); + (my $ref = $self->reqHeader('Referer')||"/r$id") =~ s/^\Q$self->{url}//; + $self->resRedirect($ref, 'temp'); } diff --git a/lib/VNDB/Handler/VNPage.pm b/lib/VNDB/Handler/VNPage.pm index 35a9ac8c..b53b60ee 100644 --- a/lib/VNDB/Handler/VNPage.pm +++ b/lib/VNDB/Handler/VNPage.pm @@ -397,9 +397,9 @@ sub _releases { a href => "/r$rel->{id}", title => $rel->{original}||$rel->{title}, $rel->{title}; end; td class => 'tc5'; - if($rel->{ulist}) { - a href => "/r$rel->{id}"; - lit liststat $rel->{ulist}; + if($self->authInfo->{id}) { + a href => "/r$rel->{id}", id => "rlsel_$rel->{id}"; + lit $rel->{ulist} ? liststat $rel->{ulist} : '--'; end; } else { txt ' '; -- cgit v1.2.3 From 8f28a60b4ea5c3a25a962472e133a16fb1b2a642 Mon Sep 17 00:00:00 2001 From: Yorhel Date: Sun, 28 Dec 2008 14:24:05 +0100 Subject: Order skin list by their full name instead of directory name --- lib/VNDB/Handler/Users.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/VNDB/Handler/Users.pm b/lib/VNDB/Handler/Users.pm index 10cf07ad..f2bb0fa6 100644 --- a/lib/VNDB/Handler/Users.pm +++ b/lib/VNDB/Handler/Users.pm @@ -357,7 +357,7 @@ sub edit { [ part => title => 'Options' ], [ select => short => 'skin', name => 'Prefered skin', options => [ - map [ $_ eq $self->{skin_default} ? '' : $_, $self->{skins}{$_} ], sort keys %{$self->{skins}} ] ], + map [ $_ eq $self->{skin_default} ? '' : $_, $self->{skins}{$_} ], sort { $self->{skins}{$a} cmp $self->{skins}{$b} } keys %{$self->{skins}} ] ], [ check => short => 'flags_list', name => qq|Allow other people to see my visual novel list (/u$uid/list) |. qq|and wishlist (/u$uid/wish)| ], -- cgit v1.2.3 From 412b3bb8baeef93869c92687956a007841d4492c Mon Sep 17 00:00:00 2001 From: Yorhel Date: Sun, 28 Dec 2008 14:31:31 +0100 Subject: Fall back to default skin if the selected skin doesn't exist anymore --- lib/VNDB/Util/LayoutHTML.pm | 1 + 1 file changed, 1 insertion(+) (limited to 'lib') diff --git a/lib/VNDB/Util/LayoutHTML.pm b/lib/VNDB/Util/LayoutHTML.pm index 8f067a36..30a10ce3 100644 --- a/lib/VNDB/Util/LayoutHTML.pm +++ b/lib/VNDB/Util/LayoutHTML.pm @@ -13,6 +13,7 @@ our @EXPORT = qw|htmlHeader htmlFooter|; sub htmlHeader { # %options->{ title, js, noindex, search } my($self, %o) = @_; my $skin = $self->authInfo->{skin} || $self->{skin_default}; + $skin = $self->{skin_default} if !-d "$VNDB::ROOT/static/s/$skin"; # heading html; -- cgit v1.2.3 From ed73cef37914303ca1790a37c6f5bec13b326b1f Mon Sep 17 00:00:00 2001 From: Yorhel Date: Mon, 29 Dec 2008 12:26:25 +0100 Subject: Added [quote] tag formatting, fixed URL parser, and updated d9 --- lib/ChangeLog | 2 ++ lib/VNDB/Func.pm | 25 +++++++++++++++++++++---- 2 files changed, 23 insertions(+), 4 deletions(-) (limited to 'lib') diff --git a/lib/ChangeLog b/lib/ChangeLog index e0c76517..1f29a195 100644 --- a/lib/ChangeLog +++ b/lib/ChangeLog @@ -13,6 +13,8 @@ TODO: - [spoiler] tag produces mouseover-style spoilers instead of ROT13 - Fixed tiny timezone-related bug - Re-added release list dropdown on VN pages + - Added [quote] tag to bb2html + - fixed URL parser in bb2html 2.0 - 2008-12-20 - New layout diff --git a/lib/VNDB/Func.pm b/lib/VNDB/Func.pm index 1833be37..330dad7d 100644 --- a/lib/VNDB/Func.pm +++ b/lib/VNDB/Func.pm @@ -86,6 +86,7 @@ sub userstr { # [url=..] [/url] # [raw] .. [/raw] # [spoiler] .. [/spoiler] +# [quote] .. [/quote] # v+, v+.+ # http://../ sub bb2html { @@ -94,7 +95,7 @@ sub bb2html { $raw =~ s/\r//g; return '' if !$raw && $raw ne "0"; - my($result, $length, @open) = ('', 0, 'first'); + my($result, $length, $rmnewline, @open) = ('', 0, 0, 'first'); my $e = sub { local $_ = shift; @@ -108,17 +109,33 @@ sub bb2html { for (split /(\s|\n|\[[^\]]+\])/, $raw) { next if !defined $_; + next if $_ eq ''; + + $rmnewline = s/\n//g if $rmnewline; + next if $_ eq ''; my $lit = $_; if($open[$#open] ne 'raw') { if ($_ eq '[raw]') { push @open, 'raw'; next } elsif ($_ eq '[spoiler]') { push @open, 'spoiler'; $result .= ''; next } - elsif ($_ eq '[/spoiler]') { + elsif ($_ eq '[quote]') { + push @open, 'quote'; + $result .= '
' if !$maxlength; + $rmnewline++; + next + } elsif ($_ eq '[/spoiler]') { if($open[$#open] eq 'spoiler') { $result .= ''; pop @open; } next; + } elsif ($_ eq '[/quote]') { + if($open[$#open] eq 'quote') { + $result .= '
' if !$maxlength; + $rmnewline++; + pop @open; + } + next; } elsif($_ eq '[/url]') { if($open[$#open] eq 'url') { $result .= ''; @@ -130,7 +147,7 @@ sub bb2html { push @open, 'url'; next; } elsif(!grep(/url/, @open) && - s{(.*)(http|https)://(.+[0-9a-zA-Z=/])(.*)} + s{(.*)(http|https)://(.+[\d\w=/-])(.*)} {$e->($1).qq|'.$e->('link').''.$e->($4)}e) { $length += 4; last if $maxlength && $length > $maxlength; @@ -155,7 +172,7 @@ sub bb2html { $result .= $e->($_); } - $result .= '' + $result .= $_ eq 'url' ? '' : $_ eq 'quote' ? '' : '' while((local $_ = pop @open) ne 'first'); $result .= '...' if $maxlength && $length > $maxlength; -- cgit v1.2.3 From f000aaf69e345bae4fc5581e5028463c85cfdafb Mon Sep 17 00:00:00 2001 From: Yorhel Date: Mon, 29 Dec 2008 13:42:32 +0100 Subject: Updating changelog --- lib/ChangeLog | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) (limited to 'lib') diff --git a/lib/ChangeLog b/lib/ChangeLog index 1f29a195..92532247 100644 --- a/lib/ChangeLog +++ b/lib/ChangeLog @@ -1,12 +1,4 @@ -TODO: - + The current implementation of the hidden flag *SUCKS*, seriously needs - some revising: - + Add a 'change' when hiding/unhiding an item - + Remove all references to an item when it's hidden - (preferably with the option to re-add them when unhiding) - + Add a link for the hidden 'h' option at /hist - -2.1 - ? +2.1 - 2008-12-29 - Skin support - 'show all items' tab to large forms - Allow items to be selected using the mouse on the dropdown search -- cgit v1.2.3