Reorganize to reduce number of variables used
When formatting days in iCal, do so in the user's timezone
ballard has its own msie6.css
css fixes for ie6

the main concern here is to make RT work and not so ugly on ie6.
most changes are plain position fixes, but here is the weird one:

though we hide ".message-stanza.closed" in history-folding.css,
ie6 hides "Show quoted text" span too, which is actually
".message-stanza-folder.closed", so I had to force the display
in msie6.css like:

    span.message-stanza-folder {
        display: inline !important;
    }
CSS fix that lets Firefox flow the data table below the chart

This is necessary on dashboards (or the homepage) when a chart gets
squeezed into a titlebox in a column.
web2 and ballard don't have the same titlebox margins as aileron

This prevents chart images from running up against the titlebox title.
css fix to make extra buttons visible on ie6

this includes "Clear All", "Check All" buttons in /Search/Bulk.html
Advise about GPG configuration in GPG error message

When logging error messages from GPG, also provide a pointer to
RT_Config.pm to help the user configure or disable GPG support.
Remove and re-add the site CSS element instead of updating it in-place

Not all browsers support updating the innerHTML/children of <style>
elements, notably IE 8.  Arguably we could use the standard DOM's
insertRule and IE's addRule to manage the content of <style> elements,
but it's simpler and more straight-forward to remove and recreate the
<style> element each time.
Add eval to trap fatal on scrip condition lookup when the condition id is 0.
Liberally handle email addresses surrounded by single quotes in incoming headers

Outlook is known to produce mail headers like so:

    Cc: "John Smith" <'jsmith@example.com'>

While Mr. Smith won't have received the original mail Cc'd to him and
RT, RT can at least notify him of future mail on the ticket if
$ParseNewMessageForTicketCcs is enabled.

This commit handles incoming mail.  There are still many places that
directly parse mail headers from the database and don't strip
surrounding single quotes.  For example, headers like the above will
still produce incorrect suggestions for the "One-time Cc/Bcc" fields on
ticket reply/comment pages.  To fix this for good, we need to first
consolidate all email address/header parsing into RT::EmailParser and
then fix the problem in a single place.
text/plain can also contain invalid utf8 data

so don't test mimetype, but check if it's pure ascii instead

see issue #20191
Clean up a warning when iterating large search results.

If you do a search that returns more results than your
$TicketsItemMapSize then Tickets->ItemMap sets the last link to 'undef'
because it doesn't know the last result in the set (it only knows the
subset).  Unfortunately, this caused warnings in two places that were
only checking for 'next' and assuming 'last' would be defined.
Create fresh MySQL databases with a default charset of UTF8

MySQL databases upgraded from < 3.8.0 to >= 3.8.0 run an ALTER DATABASE
command which sets the default character set to utf8 (via 947937e in
upgrade-mysql-schema.pl).  Fresh databases never set a default, but
always created tables as UTF8.  A consistent set of defaults between
upgraded and fresh DBs will help prevent bugs in the future.

Pointed out by Christian Loos in [rt3 #21773].
keep cf select values as an arrayref if there are multiple values in ticket clone

otherwise those values won't be able to cloned correctly.

btw the ticket clone code is used when creating a new link ticket on ticket
display page.

see also #20400
Support displaying the Extra Info box on users

Mostly useful if you're using MoreAboutRequestorExtraInfo
update mysql schema for email fields to utf8

utf8 data is valid nowadays.
move helpers into RT::Test from a test file
validator: create Principal in force resolve mode

If principal is missing in {Group,User}->Principal relation then
user have two choices: delete pointing object or create
new principal record. It was decided to do nothing in auto-force
-resolve mode. However, absent principal means that $group->Disabled
returns undef and we use that call in other places. undef may cause
infinite loop while trying to restore other records, for example CGM.

prompt_action is only used in this place, so it's ok to change its
behavior.
test edge case in validator