RT 3.7.80 - First RT 3.8 beta release

Ruslan has rolled the tarball for the first Beta release of RT 3.8.
The changelog appears below.

Most of the infrastructure-level changes we expect to make for RT 3.8
have been rolled in. Right now, we’re fixing bugs, cleaning things up
and starting to integrate a number of RT extensions into the core
release.

RT 3.7.80 isn’t recommended for production use, but feedback is
appreciated.

Best,
Jesse

Config:
* IMPORTANT: New way to defined hash and array options using Set()
function, old style “@XXX = (…) unless @XXX;” may result in
bugs higly
undesireble, read also UPGRADING
* New RT::Config class to interact with configs, load additional
files and
access metadata
* new API to get and set config options
* old read access is backward comaptible
* now we search for configs in local/etc
* added base code to allow users to change vairous options via
the web UI,
there is already some per user options available and more will
be added
later.

General UI:
* Messages forwarding from ticket history to external persons.
* Per-user options:
** UI layout
** hight of message boxes
** Date/Time display format
** Summary rows
* Show user entry using /Elements/ShowUser component so it’s easier
to customize and make things consistent everywhere in the UI
** switch to Mail::Address for formatting, so result would be a
correct
email string to copy and paste into other places.
** show as “Real Name” email@address (login) by default
** drop some parts if those are duplications
* Allow to add/delete users to/from groups right from user’s
admin pages
* Add a 404 page to RT

Tickets:
* Users may choose order of transactions in tickets’ history
* new link that allow users to download attachmentes
with MIME headers
* add Forward action
* Inline any size of text if $MaxInlineBody option is undefined
or 0
* on ticket create if status not equal to new and started date
is not defined then we set it to now to be consistent with
logic in SetStatus

Date/Time:
* new config option $DateTimeFormat
* multiple output formats, available as per-user option
* better support for timezones, available as per-user option
* many new tests of the RT::Date API
* fix time units handling, ‘1/8’ didn’t work

Custom fields:
* Run-time generated custom field values.
* New type of CustomFields with autocompletion
* Pattern column is now longer as some regular expressions
can be really lenght.
* Admin UI: allow to search disabled fields
* Admin UI: type selector save states between calls
* Fix a bug in CustomField->Create where assigned Queue is not
properly
associated with the newly created CF
* merged duplicated CF handling code

Query Builder:
* Fixed “is not linked to ticket #N” search
* Added the following TicketSQL fields: Linked, LinkedTo and
LinkedFrom.
No integration into web UI, however these mainly required in
scrips
and/or custom code.
* Allow WebPath,WebBaseURL and WebURL in format strings
* Embedable Query Builder.
* html/Search/Elements/ConditionRow - component that outputs one
criteria
row, so it’s possible to disable some options or add new one.
* Generic TicketSQL parser, so we have it in one place instead
of several places.
* Many fixes in corner cases of building query tree

Scrips:
* New conditions: CloseTicket and ReopenTicket
* Stage field didn’t work during creation of a scrip in the WebUI
* Fix scrips in TransactionBatch stage
* Run scrips on both ends of a link by default

Shredder:
* The shredder is in core with new features. Read UPGRADING.
* New option ‘no_tickets’ in RT::Shredder::Plugin::Users
* Several ways to dump deleted objects
* add support for %t template in file names
* Allow user to download dump via browser right after deletion
* ::Plugin::Tickets
** replace old search options with ‘query’ so you can use TicketSQL
** add ‘with_linked’ option
** add ‘apply_query_to_linked’ option

GnuPG integration:
* verification, decryption, signing and encrypting
* per queue options
* transparent support of keyservers
* re-verifivation after importing public key
* integration with gpg-agent to avoid passphraseless keys or
passphrases in the config
* per user private keys
* read also perldoc lib/RT/Crypt/GnuPG.pm

Extending RT and local customization:
* Generilized listing of collections, /Elements/CollectionList is
a replacement for TicketList that add similar features we could
use
for tickets for other collections, like Queues, Users, Scrips,
etc.
So it’s possible to use the following things:
** display formats
** paging
** sorting
** column maps
* Several error messages we send to users converted into templates.
* Make clicky feature (read docs/extending_clickable_links.pod).
* It’s possible pass any set of arguments into templates.
* Generic API to send emails related to tickets and not.
* New generic UI widgets for selects, input and booleans.
* Column maps are availble for all objects.
* Generic support of key.{subkey} in format strings.
* Support of CheckBox.{Name} and RadioButton.{Name}

3.7+ extensions:
* Tickets advisory locking
* Tickets aging

Sessions handling:
* RT::Interface::Web::Session - generic object to handle all
session backends.
* new AutoLogoff system-wide option
* new sbin/rt-clean-sessions script to cleanup unused sessions

Database:
* IMPORTANT: MySQL has new schema for versions higher or equal to
4.1.0
* Pattern column for custom fields is now longer as some regular
expressions
can be really lenghty.
* New indexes that proved its effectivness

rt-setup-database
* Complete rewrite.
* All functions have been moved into RT::Handle class, so it’s
possible to
use features of this util from custom code
* It’s possible to define different schemas for different
versions of
the same RDBMS. Read also UPGRADING.mysql
* print information about DB we’re going to act on
* allow users and/or extension to override DB properties via ENV
* Many extensions to format of data files:
** allow to defin @Initial/@Final list of sub references
** allow to create groups and add them as members to other groups
** allow to add users into groups
** allow to create scrips on multiple queues at once
** enable custom fields by default
** allow to define ACLs for CFs
** allow to apply a CF to queue(s) instead of global

rt-mailgate
* don’t die when --url is not specified, but print error and exit,
user is not interested in information about line of the code.
* add value of $ENV{EXTENSION} to message header
in the ‘X-RT-Mail-Extension’ field. And pass through non standard
–extension values in this field too.
* better errors handling

Performance and memory footprint:
* Constant memory usage in rt-mailgate.
* Lower memory footprint when images are proccessed by mason.
* don’t copy text in EncodeUTF8
* /Elements/Callback has been replaced with $m->callback call.
The element still works, but issue a warning. New function is
much faster then calling a component.
* add CallbackOnce option, to allow run callbacks only once
* init html scrubber object only once
* run column map component only once for the first
row of the collection
* Record::LoadByCols: don’t create local copy of arguments unles
DB is case sensetive even if it’s sensetive create only one
copy and change inplace
* Replaced in many places repeated heavy calls in one block
with one call
* run callbacks and output text once per paragraph
instead of per line, speed up displaying of tickets greatly
with many text parts
* Pass IDs of objects where it’s possible instead of other unique
fields to hit chache more often and/or avoid request to DB

HTML cleanups, XHTML compatibility, layout chnages:
* many missing closing tags have been returned to its place
* added quotes around attributes for all tags
* closed tags br, img and input tags with ’ />’ syntax
* downcase tags and attributes names

Java Script:
* deleted duplicate .js files
* new classes management utilities
* reviewed visibility utilities, now we use CSS to hide/show
things instead
playing games with DOM what is wrong
* Set/clear all checkboxes features now work for one group. In
previouse
versions it’s been applied to all checkboxes on the page.

Other changes and code cleanups:
* Deprecated API have been dropped.
* don’t return empty strings instead of undef so NULL can be
distinguished from empty strings
* Cleand up a lot of errorless uninit warnings
* no more perl 5.6.x compatible code
* converted all named functions in mason components into
anon functions, as the former is incorrect and may result
in problems when different components define the same function
* never call ‘exit’, because it may hide errors
* log errors and rollback transactions only when it’s possible
* RT::Transaction: refactored rights checks into CurrentUserCanSee
* fixed and reworked sending email via SMTP server
* don’t add empty $args{‘Body’} to MIME as ->make_singlepart
method doesn’t
catch this case and we create useless empty attachments and too
nested
entities. Now we do the right thing in all cases: text body,
file upload,
body+upload or none of those at all.
* add support for $LogStackTraces = ‘error’ and other levels,
so it possible to log stack traces only starting from some
level
* log stacktraces into syslog too as many users use default
setup which doesn’t log to file and for production uses syslog
is prefered.

Test suite:
* Reworked test suite, no more tests inlined in the code
and other improvements.
* initial parallel test support for RT::Test.
* test syntax of comps with a mason compiler

PGP.sig (186 Bytes)

Jesse Vincent wrote:

RT 3.7.80 isn’t recommended for production use, but feedback is
appreciated.

The upgrade of “RT’s system database objects” is a little painful. With
seven directories between 3.6 and 3.8, and three commands for each
directory, each time getting prompted for the database password, yuck.

Any way it can be simplified? At the very least, could the seven
directories be consolidated into a single directory, containing all the
changes?
Jason

Jesse Vincent wrote:

RT 3.7.80 isn’t recommended for production use, but feedback is
appreciated.

The upgrade of “RT’s system database objects” is a little painful.
With seven directories between 3.6 and 3.8, and three commands for
each directory, each time getting prompted for the database
password, yuck.

You can use an alternate invocation that specifies the database
password…

Any way it can be simplified?

I know I’ve seen a shell script floating around which walks all
upgrades after a specified version. I’d love a patch that added an
upgrade target that does that.

At the very least, could the seven directories be consolidated into
a single directory, containing all the changes?

That would actually screw over anyone upgrading from within 3.7.

PGP.sig (186 Bytes)

Jesse,

What is " ** Summary rows" under per-user options?

Also, deleting custom field values (not object custom field values) is not
working for me under 3.7 HEAD with SQLite.

Thanks!2008/3/6 Jesse Vincent jesse@bestpractical.com:

Ruslan has rolled the tarball for the first Beta release of RT 3.8. The
changelog appears below.

Most of the infrastructure-level changes we expect to make for RT 3.8 have
been rolled in. Right now, we’re fixing bugs, cleaning things up and
starting to integrate a number of RT extensions into the core release.

RT 3.7.80 isn’t recommended for production use, but feedback is
appreciated.

Best,
Jesse

Config:

  • IMPORTANT: New way to defined hash and array options using Set()
    function, old style “@XXX = (…) unless @XXX;” may result in bugs
    higly
    undesireble, read also UPGRADING
  • New RT::Config class to interact with configs, load additional files
    and
    access metadata
  • new API to get and set config options
  • old read access is backward comaptible
  • now we search for configs in local/etc
  • added base code to allow users to change vairous options via the web
    UI,
    there is already some per user options available and more will be
    added
    later.

General UI:

  • Messages forwarding from ticket history to external persons.
  • Per-user options:
    ** UI layout
    ** hight of message boxes
    ** Date/Time display format
    ** Summary rows
  • Show user entry using /Elements/ShowUser component so it’s easier
    to customize and make things consistent everywhere in the UI
    ** switch to Mail::Address for formatting, so result would be a correct
    email string to copy and paste into other places.
    ** show as “Real Name” email@address (login) by default
    ** drop some parts if those are duplications
  • Allow to add/delete users to/from groups right from user’s admin
    pages
  • Add a 404 page to RT

Tickets:

  • Users may choose order of transactions in tickets’ history
  • new link that allow users to download attachmentes
    with MIME headers
  • add Forward action
  • Inline any size of text if $MaxInlineBody option is undefined or 0
  • on ticket create if status not equal to new and started date
    is not defined then we set it to now to be consistent with
    logic in SetStatus

Date/Time:

  • new config option $DateTimeFormat
  • multiple output formats, available as per-user option
  • better support for timezones, available as per-user option
  • many new tests of the RT::Date API
  • fix time units handling, ‘1/8’ didn’t work

Custom fields:

  • Run-time generated custom field values.
  • New type of CustomFields with autocompletion
  • Pattern column is now longer as some regular expressions
    can be really lenght.
  • Admin UI: allow to search disabled fields
  • Admin UI: type selector save states between calls
  • Fix a bug in CustomField->Create where assigned Queue is not properly
    associated with the newly created CF
  • merged duplicated CF handling code

Query Builder:

  • Fixed “is not linked to ticket #N” search
  • Added the following TicketSQL fields: Linked, LinkedTo and
    LinkedFrom.
    No integration into web UI, however these mainly required in scrips
    and/or custom code.
  • Allow WebPath,WebBaseURL and WebURL in format strings
  • Embedable Query Builder.
  • html/Search/Elements/ConditionRow - component that outputs one
    criteria
    row, so it’s possible to disable some options or add new one.
  • Generic TicketSQL parser, so we have it in one place instead
    of several places.
  • Many fixes in corner cases of building query tree

Scrips:

  • New conditions: CloseTicket and ReopenTicket
  • Stage field didn’t work during creation of a scrip in the WebUI
  • Fix scrips in TransactionBatch stage
  • Run scrips on both ends of a link by default

Shredder:

  • The shredder is in core with new features. Read UPGRADING.
  • New option ‘no_tickets’ in RT::Shredder::Plugin::Users
  • Several ways to dump deleted objects
  • add support for %t template in file names
  • Allow user to download dump via browser right after deletion
  • ::Plugin::Tickets
    ** replace old search options with ‘query’ so you can use TicketSQL
    ** add ‘with_linked’ option
    ** add ‘apply_query_to_linked’ option

GnuPG integration:

  • verification, decryption, signing and encrypting
  • per queue options
  • transparent support of keyservers
  • re-verifivation after importing public key
  • integration with gpg-agent to avoid passphraseless keys or
    passphrases in the config
  • per user private keys
  • read also perldoc lib/RT/Crypt/GnuPG.pm

Extending RT and local customization:

  • Generilized listing of collections, /Elements/CollectionList is
    a replacement for TicketList that add similar features we could use
    for tickets for other collections, like Queues, Users, Scrips, etc.
    So it’s possible to use the following things:
    ** display formats
    ** paging
    ** sorting
    ** column maps
  • Several error messages we send to users converted into templates.
  • Make clicky feature (read docs/extending_clickable_links.pod).
  • It’s possible pass any set of arguments into templates.
  • Generic API to send emails related to tickets and not.
  • New generic UI widgets for selects, input and booleans.
  • Column maps are availble for all objects.
  • Generic support of key.{subkey} in format strings.
  • Support of CheckBox.{Name} and RadioButton.{Name}

3.7+ extensions:

  • Tickets advisory locking
  • Tickets aging

Sessions handling:

  • RT::Interface::Web::Session - generic object to handle all
    session backends.
  • new AutoLogoff system-wide option
  • new sbin/rt-clean-sessions script to cleanup unused sessions

Database:

  • IMPORTANT: MySQL has new schema for versions higher or equal to 4.1.0
  • Pattern column for custom fields is now longer as some regular
    expressions
    can be really lenghty.
  • New indexes that proved its effectivness

rt-setup-database

  • Complete rewrite.
  • All functions have been moved into RT::Handle class, so it’s possible
    to
    use features of this util from custom code
  • It’s possible to define different schemas for different versions of
    the same RDBMS. Read also UPGRADING.mysql
  • print information about DB we’re going to act on
  • allow users and/or extension to override DB properties via ENV
  • Many extensions to format of data files:
    ** allow to defin @Initial/@Final list of sub references
    ** allow to create groups and add them as members to other groups
    ** allow to add users into groups
    ** allow to create scrips on multiple queues at once
    ** enable custom fields by default
    ** allow to define ACLs for CFs
    ** allow to apply a CF to queue(s) instead of global

rt-mailgate

  • don’t die when --url is not specified, but print error and exit,
    user is not interested in information about line of the code.
  • add value of $ENV{EXTENSION} to message header
    in the ‘X-RT-Mail-Extension’ field. And pass through non standard
    –extension values in this field too.
  • better errors handling

Performance and memory footprint:

  • Constant memory usage in rt-mailgate.
  • Lower memory footprint when images are proccessed by mason.
  • don’t copy text in EncodeUTF8
  • /Elements/Callback has been replaced with $m->callback call.
    The element still works, but issue a warning. New function is
    much faster then calling a component.
  • add CallbackOnce option, to allow run callbacks only once
  • init html scrubber object only once
  • run column map component only once for the first
    row of the collection
  • Record::LoadByCols: don’t create local copy of arguments unles
    DB is case sensetive even if it’s sensetive create only one
    copy and change inplace
  • Replaced in many places repeated heavy calls in one block
    with one call
  • run callbacks and output text once per paragraph
    instead of per line, speed up displaying of tickets greatly
    with many text parts
  • Pass IDs of objects where it’s possible instead of other unique
    fields to hit chache more often and/or avoid request to DB

HTML cleanups, XHTML compatibility, layout chnages:

  • many missing closing tags have been returned to its place
  • added quotes around attributes for all tags
  • closed tags br, img and input tags with ’ />’ syntax
  • downcase tags and attributes names

Java Script:

  • deleted duplicate .js files
  • new classes management utilities
  • reviewed visibility utilities, now we use CSS to hide/show things
    instead
    playing games with DOM what is wrong
  • Set/clear all checkboxes features now work for one group. In
    previouse
    versions it’s been applied to all checkboxes on the page.

Other changes and code cleanups:

  • Deprecated API have been dropped.
  • don’t return empty strings instead of undef so NULL can be
    distinguished from empty strings
  • Cleand up a lot of errorless uninit warnings
  • no more perl 5.6.x compatible code
  • converted all named functions in mason components into
    anon functions, as the former is incorrect and may result
    in problems when different components define the same function
  • never call ‘exit’, because it may hide errors
  • log errors and rollback transactions only when it’s possible
  • RT::Transaction: refactored rights checks into CurrentUserCanSee
  • fixed and reworked sending email via SMTP server
  • don’t add empty $args{‘Body’} to MIME as ->make_singlepart method
    doesn’t
    catch this case and we create useless empty attachments and too
    nested
    entities. Now we do the right thing in all cases: text body, file
    upload,
    body+upload or none of those at all.
  • add support for $LogStackTraces = ‘error’ and other levels,
    so it possible to log stack traces only starting from some
    level
  • log stacktraces into syslog too as many users use default
    setup which doesn’t log to file and for production uses syslog
    is prefered.

Test suite:

  • Reworked test suite, no more tests inlined in the code
    and other improvements.
  • initial parallel test support for RT::Test.
  • test syntax of comps with a mason compiler

List info:
The rt-devel Archives

Jesse,

What is " ** Summary rows" under per-user options?

Same thing it was in 3.6. # of rows to show in the trivial search
widgets on the home page.

Also, deleting custom field values (not object custom field values)
is not working for me under 3.7 HEAD with SQLite.

Is RT passing or failing tests? (also, 3.7 head or 3.8-TESTING?)

PGP.sig (186 Bytes)

Ruslan has rolled the tarball for the first Beta release of RT 3.8.

RT 3.7.80 isn’t recommended for production use, but feedback is
appreciated.

Hi all,
Where can I download the beta tarball of RT 3.8?
I’ve searched and searched, but cannot find it!

Best regards, Justin
University of Brighton.

Hi Rainer,
Thanks, but I did look there and I can’t find the beta!

The latest development snapsnot I can see in /pub/rt/devel/ is
rt-3.7.15.tar.gz dated 25-Jul-2007.

Justin

Rainer Duffner wrote:

justin@brighton.ac.uk schrieb:

Ruslan has rolled the tarball for the first Beta release of RT 3.8.

RT 3.7.80 isn’t recommended for production use, but feedback is
appreciated.

Hi all,
Where can I download the beta tarball of RT 3.8?
I’ve searched and searched, but cannot find it!

Best regards, Justin
University of Brighton.


List info: The rt-devel Archives

http://download.bestpractical.com/pub/rt/devel/

Bestpractical.com → Goto RT → Goto Download → Goto bottom of page,
click on the link for the dev snapshots.
Obviously, Bestpractical would like to avoid the general user trying
these and pester their support with it ;-))
But I don’t think it’s that difficult to find.

Maybe Jesse would like to wrap-up another release - this one if from
February/March :wink:

Rainer

Hi Rainer,
Thanks, but I did look there and I can’t find the beta!

The latest development snapsnot I can see in /pub/rt/devel/ is
rt-3.7.15.tar.gz dated 25-Jul-2007.

http://download.bestpractical.com/pub/rt/devel/?M=D

(Sorted by date, descending)

PGP.sig (186 Bytes)

Ruslan has rolled the tarball for the first Beta release of RT 3.8.

RT 3.7.80 isn’t recommended for production use, but feedback is
appreciated.

Hi all,
Where can I download the beta tarball of RT 3.8?
I’ve searched and searched, but cannot find it!

It’s only available via subversion:

svn co svn://svn.bestpractical.com/rt/branches/3.8-TESTING

after checkout, run “autoconf” to generate configure script.

Hi Rainer,
Thanks, but I did look there and I can’t find the beta!

The latest development snapsnot I can see in /pub/rt/devel/ is
rt-3.7.15.tar.gz dated 25-Jul-2007.

RT-3.7.80.tar.gz
Note the capital R.

Jo