I’m pleased to announce the first release candidate of RT 3.6.6.
This release focuses mostly on performance improvements. The big
changes are:
- CSS and javascript files should be better cached on the client
- CSS files are now concatenated and squished to cut down on the number
of initial HTTP requests - ACL queries have been split apart into more small queries, which leads
to more effective caching and has better performance characteristics
on MySQL 5.x
There’s also some refactoring work going on to improve our support for
HTML mail. But more on that later.
-jesse
CORE
-
Applied
http://page.mi.fu-berlin.de/pape/rt3/patches/rt/3.6.5/less_warnings_in_error_log.patch
from
Dirk Pape to quiet some warnings - jesse -
RT.pm.in: Add support for loading RT_Vendor.pm by default before
RT_Local,
for greater consistency. - audreyt -
RT::Record - _DecodeLOB now respects RT::I18N::IsTextualContentType. -
audreyt -
_DecodeLOB: All text/* are treated as UTF-8, not only text/plain. -
audreyt -
Allow Template->ParseContent to not require Ticket and Txn - sartak
-
New callbacks from Dirk Pape: http://page.mi.fu-
berlin.de/pape/rt3/patches/rt/3.6.4/add_callbacks_to_admin_us
ers.patch - jesse -
Save the transaction ID of the outgoing message transaction - tla
-
get rid of overly verbose debug statement - tla
I18N
-
Japanese translation updates from Shinji Yamane - jesse
-
Updated dutch .po file from Marcel Kolkman - jesse
DOC
- We used the wrong variable name in html/Search/Chart (for fonts)
Thanks to
elacour at easter-eggs.com - jesse
INSTALL
-
Add new dep: CSS::Squish 0.06 - audreyt
-
bump required version of SB so people will get a fix that affect the
latest
change - ruz
-
RT::I18N - Introduce a new utility function, IsTextualContentType($type),
that determines whether $type can be sensibly converted to Unicode text.
Currently it uses this regex (case-insensitively):
^(?:text/(?:plain|html)|message/rfc822)\b The idea is to unify all the
inconsistent uses all over RT’s code (some tested for text/, some for
text/plain|message/rfc822, some for text/plain|text/html|message/)
to use
this function instead. -
Minor POD glitch - Say “function” when it said “method” but really
wasn’t. - audreyt -
RT::Transaction_Overlay: Be saner and allows explicitly calling $txn-
Content(Type => ‘text/html’), instead of relying on action-at-a-distance
$PreferredContentType. - audreyt -
MakeMIMEEntity now takes an optional “Type” field to denote the MIME Type
of the body. (Default to ‘text/plain’.) -
CreateTicket() now supports $ARGS{ContentType}, and
ProcessUpdateMessage()
now supports $ARGS{UpdateContentType}. - audreyt -
RFC dictates to encode by chars, so if char is two octets then it MUST be
in one chunk - ruz -
RT::Action::SendEmail - Support for multipart/* emails; we now textualify
all MIME parts, instead of collapsing the whole multipart. - audreyt -
RT::Action::SendEmail: Allow user-specified Content-Type in outgoing
templates. Currently, only text/* is supported for security reasons.
Eventually maybe multipart/* with all textual subparts might be allowed,
too. - audreyt -
RT::Attachment_Overlay - Fix several broken logic in ->OriginalContent:
- When $self->ContentEncoding eq ‘quoted-printable’, a premature
“return” prevented any encoding conversion from taking place. - A bogus Encode::_utf8_on($content) later prevented any encoding
conversion from taking place anyway.
- When $self->ContentEncoding eq ‘quoted-printable’, a premature
-
$attachment->Quote now respects RT::I18N::IsTextualContentType. - audreyt
-
RT::Transaction->ContentObj - Prefer the first part that matches
$PreferredContentType, instead of always ‘text/plain’. - audreyt -
RT::Transaction_Overlay - use RT::I18N::IsTextualContentType. - audreyt
-
RT::Transaction_Overlay: Signatures in text/html content objects
should be
removed in a way that doesn’t depend on whitespace. Also, remove an
unneccessary regex capture. - audreyt -
RT::Transaction_Overlay: Unify the idea of “textual” MIME types to
text/plain, text/html and message/*. (Previously it was defined
differently
for e.g. the first part and the other parts.) -
RT::Transaction_Overlay: Introduce the variable
$RT::Transaction::PreferredContentType to control the context
where ->Content() is evaluated in. If not set, it defaults
to text/plain. - audreyt
MINOR CLEANUP
-
HTML Table fixes from Dirk Pape
(http://page.mi.fu-berlin.de/pape/rt3/patches/rt/3.6.4/rt3.6-
xhtml-2.patch) - jesse -
In this case the
- was opened inside an IF block, but
outside the IF block. Thanks to Jason Long. - ruz -
The opening tag came before the IF statement, and the
closing tag was inside the IF statement. Thanks to Jason Long. - ruz -
convert mason comments into css comments - ruz
-
delete double width definition
-
don’t escape html - ruz
-
delete unused variable - ruz
-
handle spaces in field names when doing rt ls - falcone
-
move general if block into <%INIT> - ruz
-
pass a reference to @results into a callback, so extensions can fill it -
ruz -
squish our CSS into one big thing use CSS::Squish and dhandler - ruz
PERFORMANCE
-
add max-age to HTTP Caching “Expires” header - ruz
-
Don’t send Last-Modified field in a response when it’s not necessary
-
Explicitly mark our static files like css and js as publicly
cacheable - ruz
VIEW
-
A small fix to stop RT from complaining about categories when updating
custom fields via the web ui. Thanks to Brian Gallew - jesse -
add Ticket/Elements/ShowQueue and use it on create and in ShowBasics,
tiny
comp for overriding in extensions - ruz -
add closing tags for elements of lists - ruz
-
add handling of arguments with multiple values into
Widgets/SavedSearch - ruz -
add labeling of portlets that are based on components, it doesn’t support
localization, but it’s better than empty label -
allow to manage many portlets that are based on the same
comp by adding optional ‘id’ key - ruz -
add missing
- ruz
-
set the prefix so that CFs can be added during Group Creation - falcone
-
switch to /Elements/ShowLink - ruz
-
In charts, if there are no tickets found in a search, give an error-
message image instead of silently failing to load. - sartak -
add a callback for SelfService/Elements/Tabs - sunnavy
-
added AfterShowHistory Callback in Ticket/History.html - sunnavy
-
added current_tab arg for AfterShowHistory Callback in
Ticket/Display.html - sunnavy -
added show_menu arg for Elements/Tabs and Elements/PageLayout, mainly for
RTx-TicketBottomTabs - sunnavy -
When creating or updating a ticket, we shouldn’t replace “\n” with
whitespace if it’s a multiple-value custom field type - sunnavy
ACL QUERIES
-
split _HasRight into _HasGroupRight and _HasRoleRight
-
use more queries for roles (sounds like a performance lose but is
really a win) - ruz -
split WhoHaveRoleRights into more queries so buggy MySQL’s optimizer
can do
the right thing - ruz -
unshift more global objects instead of pushing them, so we’ll get them
earlier in an upcoming refactoring -
do all things related to EquivObjects in HasRight and leave only
checks in _HasRight - ruz