Buffistas Building a Better Board
Do you have problems, concerns or recommendations about the technical side of the Phoenix? Air them here. Compliments also welcome.
To-do list
I can't tell what's happening from that post. I don't seem to be looking at the original, it seems like it's a URL-encoded version of it.
But it's definitely because of quotes that are opened and don't close, around the URL. for sure. I'm not sure what you're saying about that Rob, but what happens is, as I said earlier to Gar, if you've opened quotes, but not closed them, in a link, you've got a link to the entire remaining text of the page, haven't you?
The problem is, really really broken HTML, and what the browser chooses to do about it. Lots of browsers just auto-close unbroken tags at the end of a TD or TABLE.
We could just tell people to be careful?
While reaffirming that I love this board beyond belief, this is where I'd gently like to request the ability to preview posts. Not everyone will use it (unless it's a mandatory part of the post message function) - but most infamous tag-droppers (hi - my name is Cindy) probably would. It would put some of the responsibility for tags gone bad - back on the posters. I guess it wouldn't show that certain open tags could break the board though.
The bronze beta is coded so that if any tag that is supposed to be closed is left open, the carat converts to a bracket and the tag isn't activated. For example, if I intended to put "John H" in bold, but only put the opening b tag, what I'd see, either when I previewed or posted, would be [b]John H[/b] - which tells me I didn't close the tag, and so "John H" does not appear as bold.
I have no technical knowledge, so I don't know if that's feasible for you.
I'm sorry I was so unclear in describing the problem. I think the post Jon links to it a problem with bad HTML generated by Phoenix. That we can fix.
Here's the bad link, made harmless:
<p>Your modem too slow? <a href="http://story.news.yahoo.com/%20news?tmpl=story2&
cid=300&e=17&
u=/ibsys/20021108/lo_wisc/1382225%22%3ETry%20this.%3C/a%3E%3C/p%3E%3Chr%20
align=%22LEFT%22%20size=%222%22%20width=%2275%%22%20
noshade%3E%3Cp%20class=" normal-text="">
</a>
Note how the link has an attribute (class=) that uses double quotes as delimiters. If a Phoenix user were to try to paste such a link into a message, it's my theory that Phoenix will wrap the entire URL with double quotes, which doesn't work.
OK, I still would like to make sure the URL converter handles links with quotes in them correctly, but I can't say for sure that's the only thing wrong with the post Jon linked to. I think the HTML there is already corrupted by the bad link.
When I said I was working in Perl, I should have said "but of course this board uses PHP" -- have you ever done PHP? If you've worked in Perl it will be no big deal.
Nope, what little CGI work I've done has been done in Perl. But from what I read about PHP, I think you're right about it being no big deal.
Note how the link has an attribute (class=) that uses double quotes as delimiters.
The class attribute isn't supposed to be a part of the link. in fact, everything after the "Try%20this" looks like some weird-ass converted entities that should have been in the html that normally follows a post, notably the
t hr
tag and the header the post following.
Jon's right, Rob, you've misinterpreted it a little -- see that "%3E" part?
That's the closing bracket of the tag, or rather the URL-encoded version of it, so that part is really
>try this
and the rest of the page is caught up in it. I don't know why it's got encoded or half-encoded or whatever.
I agree with Cindy that previewing is a good idea. At another site I use you're not allowed to post right away, you
must
preview at least once. You don't get much help, just "Doesn't look like you expected? Maybe you'd better read the HTML Tips" but still, it does help you find and correct mistakes.
But if we preview a very broken post, we'll be in the same place where we couldn't edit Betsy's post.
Previewing less broken posts could be good, but it also won't catch unclosed tags that happen at the end of the post.
So we'll still have to caveat heavily.
What do you think about some kind of "Safe Mode" means of editing, ita, like I mentioned a few posts back?
There must be some way in which we can put the bad code in a sandbox so it stops being part of the page, like replacing the HTML brackets with [[[tag]]] or something?
Having to go into the database by hand is a bit scary. You're the only person who can do that, right?
Ummm... guys.... I messed up. All those URL-encoded entities were added by Mozilla when I downloaded the page to my HD. Here's what the page really looks like.
I blame the tequilla.
OK thinking about ways of checking for problematic HTML.
I've got two methods I've played with (in Perl).
- every time we find an opening tag, we push it onto an array; every time we find a closing tag, if it's the closing tag which matches the last item of the array, we remove the last item of the array; a good result is an empty array, but if it's not empty, we add closing tags, in reverse order of course, to the post.
- every time we find an opening tag, we increment the number of that tag in a hash, so we have %hash{number_of_open_a_tags} = x; every time we find a closing tag we decrement that number; a good result is all tags at zero; but if they're not zero, we need that many closing tags added to the post
Problems with A: it won't work correctly with crossed tags, like this:
<b> something in bold <i> something in bold and italic </b> no longer bold, but still italic </i>
it'll get out of step, but the HTML, despite being Very Bad In Principle, won't actually be problematic for the page as a whole.
Problems with B: no maintaining of order, because it's a hash.