>>71
forgot to add that turning the CSS selector and Admin functions into drop-down menus and moving them to the right side of board and thread title headers would remove that top bar entirely on the front page.
>>216
I remember at least one or two boards on 2ch that used it, though I can't remember which (moon language and such, you see).
I apologize for the dumb question I made at the end of >>218. I forgot that Kareha permasages (not closes) a thread after the limit is exceeded, so there's no need for a hypothetical 1001th post anyway! orz
Plus if you were to allow those tags in HTML, you should do the same for WakabaMark (which actually takes its cue from Markdown, so I don't see why it has a different name).
> Reintroduction of "Marked for deletion (old)"
I actually don't like that, and think wakaba should no longer use the futaba style of dropping threads by default. Why not use the least-popular option instead? If a thread is in demand, let it live.
>>236
I mean, thread titles in <h2> and post headers in <h3>.
rel=nofollow for internal links as discussed in http://wakaba.c3.cx/sup/kareha.pl/1127092367/
Kareha can't use different layouts for posts on different pages, except by CSS trickery. I could add the second colon, though.
Also, I've implemented optional thread closing now, but there's no extra post. That would just be a total mess to implement, and would make re-opening threads annoying, if such a feature was requested. It replaces the posting form with a notice that the thread has been closed, instead.
>>220
I meant only using the extra post for autoclose situations where the thread has exceeded the defined postcount limit in config.pl. As for the implementation, couldn't you just have Kareha use post_stuff() and (somehow) replace the timestamp with "Over XXXX Thread"?
Hey, I just noticed this: where did the admin link go? Or are you working on a separate interface already? :D
Also, I forgot to mention: fusianasan works now! Put it in as your name to test it!
If we must discuss Shiichan's bug (which I believe we don't): I like the one where it sometimes turns an existing thread at the end of the All thread list into a thread with no subject, creation date set as 31 Dec 1969: 19:00 and then set to -1 posts (!) - and when you post in it, you 0GET and your IP appears as the subject.
It's a brilliant, better than fusianasan! Try it out: http://dis.4chan.org/read.php/dis/1121735647/
All right, new version installed. This one has a bunch of layout changes, and some big changes in the CSS, so you'll need to make sure the CSS is loaded by shift-reloading. Also, fixing all the CSS files was a huge pain in the ass. Have a look around to see if there are any obvious mistakes, but be gentle, because this has given me a headache.
Also, I couldn't be arsed to fix Amber, since it was just a joke in the first place.
I think it'd be a better idea to have some kind of load-balancing/distributed server cluster approach, like what dmpk2k was working on for Wakaba.
>>313 Like lots of people use them anyway </sarcasm>. Yes, security is a good idea. What are the holes, anyway?
If you want to have a look at what the code actually does to dig out flaws, here is the current version:
sub sanitize_html($%)
{
my ($html,%tags)=@_;
my (@stack,$clean);
my $entity_re=qr/&(?!\#[0-9]+;|\#x[0-9a-fA-F]+;|amp;)/;
while($html=~/(?:([^<]+)|<([^<>]*)>?)/g)
{
my ($text,$tag)=($1,$2);
if($text)
{
$text=~s/$entity_re/&/g;
$text=~s/>/>/g;
$clean.=$text;
}
else
{
if($tag=~m!^\s*(/?)\s*([a-z0-9_:\-\.]+)(?:\s+(.*?)|)\s*(/?)\s*$!si)
{
my ($closing,$name,$args,$implicit)=($1,lc($2),$3,$4);
if($tags{$name})
{
if($closing)
{
if(grep { $_ eq $name } @stack)
{
my $entry;
do {
$entry=pop @stack;
$clean.="</$entry>";
} until $entry eq $name;
}
}
else
{
my %args;
$args=~s/\s/ /sg;
while($args=~/([a-z0-9_:\-\.]+)(?:\s*=\s*(?:'([^']*?)'|"([^"]*?)"|['"]?([^'" ]*))|)/gi)
{
my ($arg,$value)=(lc($1),defined($2)?$2:defined($3)?$3:$4);
$value=$arg unless defined($value);
my $type=$tags{$name}{args}{$arg};
if($type)
{
my $passes=1;
if($type=~/url/i) { $passes=0 unless $value=~/(?:^$protocol_re:|^[^:]+$)/ }
if($type=~/number/i) { $passes=0 unless $value=~/^[0-9]+$/ }
if($passes)
{
$value=~s/$entity_re/&/g;
if($value=~/"/) { $value="'$value'" }
else { $value="\"$value\"" }
$args{$arg}=$value;
}
}
}
my $cleanargs=join " ",map { "$_=$args{$_}" } keys %args;
$implicit="/" if($tags{$name}{empty});
push @stack,$name unless $implicit;
$clean.="<$name";
$clean.=" $cleanargs" if $cleanargs;
$clean.=" $implicit" if $implicit;
$clean.=">";
}
}
}
}
}
my $entry;
while($entry=pop @stack) { $clean.="</$entry>" }
return $clean;
}(Lots of stuff in here, click "whole post"!)
> How about listing what dmpk2k or you have done already?
Truth be told, I haven't even looked over his contributions yet. I'm doing some work on Kareha first. He did bandwidth load balancing for Wakaba across several servers, and image file archiving, at least. Plus some proxy checking and other goodies.
> Split threads and posts into separate tables. You're repeating the lasthit and parent column over and over.
Bad idea. Adds a lot of code complexity without adding any new functionality. The current solution is simple and robust.
> Automatic closing and moving of threads that do not get any activity in a certain timeframe (based on average activity frequency of the board)
This is nearly impossible to get right, and I don't think I'm going to try unless someone can think up a reliable algorithm that uses the data that is availble (not much).
> Reintroduction of "Marked for deletion (old)" (it's just handy to have that)
I tried several times, and concluded it wasn't worth the code and database overhead it would take. This feature is relatively easy to implement for Futaba-style post number limited boards (and Futaba implements it really stupidly), but it gets tricky when you have different deletion modes and want to do it right.
> Prune-limit mode that is defined by number of files or size sum of files on a board
Size limit is already implemented. I might add file limit, but I'm not sure it's all that useful, when you already have the size limit.
The rest, I agree with, and I will try to get most of it done. I'm sure there's some more stuff hidden in old threads, though!
>does that mean you approve of removing the style selector on subpages?
I was referring to the entire board, but as you later explained, it seems it can never be removed completely. Though removing it from subpages wouldn't be a bad idea I guess.
>Kareha has no "No File" check in the first place
That's what I thought, but then why is it in the Reply pages?
Other: Have you considered multi-page links with intervals of 100 posts at the top of subpages (ie, 1-, 101-, 201-)? Red, bold thread filesizes displayed near the bottom of subpages?
Something else to consider: separating the board description/rules template from the board- or site-wide announcements. Check out http://0ch.mine.nu/test/read.cgi/jikken/1120050851 to see what I mean.
Shift-reload already! Also, most people are familiar with "More options..." links and know when and when not to click them. I might see about styling it, though.