
jesse at bestpractical
Jun 15, 2006, 4:49 AM
Post #1 of 1
(4034 views)
Permalink
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 - -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Live from the Nordic Perl Workshop, it gives me great pleasure to announce the immediate release of RT 3.6.0. This release features a number of really exciting changes, as well as a large number of not- so-exciting improvements and bug fixes. This release is the result of three separate lines of development over more than a year. Within several minutes, the release should be available from: http://download.bestpractical.com/pub/rt/release/rt-3.6.0.tar.gz The distribution's PGP signature will be available at: http://download.bestpractical.com/pub/rt/release/rt-3.6.0.tar.gz.sig Below, you'll find an annotated change log and release notes list. I'd like to extend my gratitude to the many, many individuals and organizations who have contributed to this release. In particular, I'd like to thank Kevin Riggle for his work building the change log below. This summer marks RT's 10th birthday and I'm absolutely thrilled to be able to release RT 3.6.0 to commemorate the occasion This is, by far, the most significant new release of RT since version 3.0 and is, by far, the release of RT that features the most code written by developers other than myself. I am constantly humbled and amazed by the strength and diversity of the RT community. Best, Jesse Vincent Best Practical Exciting New Features - - ------------------------------- Redid the RT UI in XHTML and CSS. Made sure the UI fails gracefully in less-featureful browsers. Gave RT a clean new look with the 3.5-default stylesheet, but also added a 3.4-compatability stylesheet to closely mimic the visual style of RT 3.4. Gave users the ability to customize their RT home page with boxes containing their saved searches, lists of their queues and tickets, and their Reminders. Gave users the ability to set their default search preferences -- how many rows per page to display, what fields to display, and how to order the tickets. Introduced basic reporting and charting. Added Reminders on tickets. Added the ability to make custom fields link to and include content from other systems. Added bulk update of custom fields. Security - - -------- Changed /^$foo$/ regexes to 'eq $foo' to prevent regex insertion exploits. Core - - ---- Made general improvements to the documentation, fixed typos, added comments, ran perltidy, and generally tried to make the code cleaner and more understanable. Updated a number of module version dependencies, including DBIx::SearchBuilder, XML::RSS. RT-Ticket: 6713 Added dependencies on Text::WikiFormat, Calendar::Simple RT-Ticket: 6491 Updated the Postgres dependency. Made global pre-defined searches into attributes of RT::System. Made saving a search to RT::System work. Made SeeQueue permission filtering happen in AddRecord so both Next() and ItemsArrayRef work. Added an OwnGroups method in User_Overlay.pm to get a collection of groups of which the user is a member. Revamped ObjectTypeStr in RT::Record according to suggestions. Introduced basic reporting functionality to RT. Improved reporting functionality to group by day, month, and year. Fixed "group by id" in reports, which was broken by refactoring. Added an AsHREF method RT::URI, as per the promised Links API. Generalized Elements/QueryString to work with arrays in %ARGS. Compensate if ->Resolver isn't a valid object when trying to resolve a URI. Changed "Updated FM" to "Updated Article" in RT::Record. Added the total number of tickets found to the statistical reports. Added autohandler code to deal properly with fractional units of time. Clarified the documentation and added tests for RT::Record- >FirstAttribute. Thanks to Todd Chapman. Fixed the autohandler that serves out images on misconfigured or downlevel platforms. Cleaned up how the content-type is set for CSS and JavaScript. Conquered a redirect bug at long last; perlbug #17650 was the culprit. Removed two duplicate methods in lib/RT/User_Overlay.pm. Discovered and patched by Joby Walker. Changed RT::Record to use the server-side function to lowercase values, if the Handle will give us one. Thanks to Tom Yu. Added EquivObjects support for ACL queries. Thanks to Todd Chapman. Replaced %FIELDS in Tickets_Overlay.pm (which has pseudohash meaning) with %FIELD_METADATA. Changed the joins for sorting watchers and group members on a ticket to a left join. Applied merge bugfixes. Thanks to Jeff Voskamp and Joe Micciche. Changed webmux.pl to process the JavaScript files with Mason. Gave the algorithm for picking transaction content a reasonable-enough fallback case. Changed Ticket_Overlay.pm to check the PrincipalId it gets to do the right thing if it's our own email address, instead of our own principal. Removed an unneeded join to attachments in Ticket_Overlay.pm. RT-Ticket: 7149 Cleaned up attachment creation in lib/RT/Attachment_Overlay.pm. Thanks to Ruslan Zakirov. RT-Ticket: 7143 Made minor cleanups to RT::Record. Thanks to Ruslan Zakirov. RT-Ticket: 7148 Applied Todd Chapman's patch, which (1) orders user members of a group by Name, (2) doesn't list them in the select if they're already a member, and (3) doesn't list the group itself because a group can't have itself as a member. Cleaned up the way we were opening files in the image autohandler, including setting binmode and flushing the buffers to prevent loading the entire file into memory. Added support for an optional OPERATOR argument in LimitLinked(From|To) in Tickets_Overlay.pm, and added this to methods Limit(HasMemeber|DependsOn|...). Added support in _LinkLimit for IS NOT NULL queries ala "has at least one link of defined type". Also, the operator '!=' didn't work at all - - -- now it works with the meaning "has no link with defined ticket". Fixed the things broken by the queries changes, eg. "id = 123 OR MemberOf = 123". All breakages were already covered in the tests. RT-Ticket: 7324 Bumped the Postgres dependency. Joby Walker at the University of Washington discovered incorrect ordering behaviour with DBD::Pg 1.42 and earlier. Made RT::Record not update the TimeTaken value, if the given transaction is on something other than a ticket. Fixed the new sorting behavior so as to not break the Bulk update page (and by extension, the spreadsheet download). Thanks to David Schweikert for the catch. Made Ticket_Overlay.pm canonicalize a user-supplied email address and then compare it case-insensitively when checking it against the current user's email address. RT::Attachment should only convert attachments if $enc'oding contains something. Updated the Create, _?AddLink, and DeleteLink methods in RT::Ticket to deal properly with the $StrictLinkACL configuration option. Moved all ACL checks from _AddLink to AddLink in RT::Ticket. Prevented the re-creation of the transaction if the user tries to create a link which already exists. Web UI - - ------ Applied TitleBox and CSS fixes. Thanks to Gogod. Made TitleBox use <div> instead of <table>. Wrapped a div#all right inside <body> to avoid a margin problem on IE. Used div.right-column and div.left-column to split columns. Set up the login form and homepage semantics and associated CSS. Moved TitleBox to Widgets/ Changed calls to TitleBoxStart + TitleBoxEnd into a single call to TitleBox which contains the content. Deprecated TitleBoxStart + TitleBoxEnd. Allowed users to override the display options for pre-defined searches. Allowed users to configure the Quicksearch portlet. Added the new MyAdminQueues and MySupportQueues portlets. Allowed users to configure the "RT at a glance" page with pre-defined searches, allowed components, and saved searches. Cleaned up Search/Build.html to reduce duplicated code. Fixed title_right_href in the TitleBox element. Cleaned up the original Quicksearch to use QueueSummary for summary portlets. Fixed a bug where MyRT only got one component in a pane. Added a SelectionBox Widget which works for both JavaScript and CGI. Made the front page customization UI use the SelectionBox widget. Added minimum regression tests for frontpage customization. Removed all referrers and "go back"s. Moved selectAll to form onSubmit. Made SummaryRow a user preference. Added subtabs to MyRT. Ensured that the MyRT components selected are within the given Available ones. Ensured that permissions are checked when saving searches to RT::System. Ensured that permissions are checked with the correct object when saving a search. Moved _parse_saved_search and _load_container_object to RT::Interface::Web. Made highlighted menu options the right size. Renamed "My Requests" to "Unowned Tickets". Allowed AutoSave mode for the SelectionBox widget. Made the error when a saved search fails more readable and prevented a deleterious side-effect. Made the code test if saved search is listed as an available item in the "RT at a glance" preferences. Fixed certain search-related actions, which weren't displaying the page footer due to calls to $m->abort();. Fixed the bug which prevented displaying the page footer when creating a ticket. Refactored bulk update to use more standard components. Fixed the regexp injecting checkbox into bulk edit format. Added support for bulk update of custom fields. Added support for search paging in the bulk update UI. Significantly cleaned up the search UI. Fixed the code which builds FormatString to prevent if from html- escaping loc(). Updated webrt.css to restore the black text color for titleboxright text. Made the overview search for stalled tickets in addition to open and new tickets. Added support for sorting by requestor/watcher. Merged forward a clicky-headers fix from 3.4. Removed "Search by group membership" from search UI, since it hit horrible scaling issues. Allowed the user to select minutes or hours when entering time worked/left/etc. Allowed click-to-sort on Requestor/Cc/AdminCc. Added support for search display preferences. Renamed "Quick Search" to "Simple Search". Added tabs for SearchOptions. Renamed "quick" search to "Googlish" search in the code. Fixed Googleish simple search. Fixed support for uploading attachmends in SelfService mode. Thanks to HC Chien. Applied an XHTML overhaul from gugod. Clarified and renamed some buttons in QueryBuilder. Updated Quicksearch to add Status search and Switch content searches to subject searches. Added code to pay attention to the saved search preference for "Unlimited results per page". Applied more XHTML fixes. Thanks to gugod. Lowercased all HTML tags and attribute names. Double-quoted attribute values. Changed <font> -> <span>, <b> -> <strong>, <br> -> <br/>, and <i> -> <em>. Provided better defaulting for searching for 'no rows per page'. Forced the homepage to preserve its format and rows per page when the user clicks through the Saved Search titlebars. Added a custom field Category Admin UI. Added Owner to the ticket basics page. Reimplemented "Hours/Minutes" selects for time worked/estimated/spent. Fixed the Combobox layout in w3m. Added a <label> to html/Elements/Admin/PickObjects Added supporting JavaScript for the cascaded selectbox. Removed the Category from Combobox, since it didn't make any sense. Added support for multiple combo boxes. Refactored the Combobox into a Widget. Added a ComboBox for Pattern on the custom field Modify page with friendly hints. Added a link into Reminders from Tickets_Overlay.pm. Refactored out common code for Bulk.html. Added Combobox handling to Bulk.html. Relabeled the custom field validation field as "Validation" instead of "Pattern". Fixed TimeEstimated and TimeWorked defaulting on the ticket creation page. Thanks to John Gedeon. Made ticket reports grouped by Status show all statuses, even if some values are 0. Improved highlighting on the ResolvedByOwner report. Added all the little images used by the CSS. Integrated the top actions, menu, logo, footer, and some other stuff into the new CSS layout. Modified the page layout to get rid of the pesky horizontal scrollbar. Fixed a broken callback in Elements/PageLayout. Changed the EditCustomFieldSelect element to treat empty custom field categories as empty, not as "the same as above". Changed the meaning of an empty catagory to "show all", not "show uncategorised". Fixed Safari borkenness with the ComboBox element. Safari segfaults with .styles.display='none'; switched it to the less pretty but still workable .styles.visibility='invisible';. Changed the Reminders element to only update the reminders if we were actually submitting on them. Also changed it to not open reminders if we didn't have a checkbox for them. Moving the search query into the search body in Search/Chart. Allowed filtering of custom fields Removed the newlines from the <input> tags. Made search-by-any-custom-field work. Cleaned up custom field-list filtering. Added a callback to html/Tools/Elements/Tabs. Attempted to prevent the footer from showing up on redirects on some servers. Moved "Owner" to right after "Queue" in the list of Basics to edit. Move the JavaScript into a separate file. Added calendar popups for date fields. Added editing of Reminders. Gave RT::Date ->Date and ->Time methods. Added proper separators in the menus. Fixed the conditional display of the actions menu. Changed the hideshow() function to return false so the click isn't passed through after capture and the page doesn't jump to the top. Fixed hideshow() to make it more generalized as well as more cross- browser. Moved all the JavaScript to html/NoAuth/js. Improved TitleBox rollup/rolldown. Added class="hidden" to all hidden inputs. Added class="radio" to all radio inputs. Added class="checkbox" to all checkbox inputs. Added class="button" to all submit and reset inputs. Made some style changes and class-ified a few missed inputs. Moved the 'Show details'/'Show basics' links to the actions/subactions menu. They now work via Javascript and CSS, much like hideshow. For users who don't have JavaScript enabled, both basics and details will be displayed, since a JavaScript onload event is what hides the details at first. Ironed out a bunch of cosmetic IE bugs. Made titleboxes stateful using JavaScript and cookies. The generated titlebox IDs should be unique. Bullet-proofed titlebox ID generation. Cleaned up how the content-type is set for CSS and JavaScript. Fixed the styling on /Elements/Login. Fixed TitleBoxes to do the right side titles as well. Allowed TitleBoxes to not be hideable (and made this true for the Login titleboxes). Removed an unused spacer image Pulled the Best Practical logo out into a separate element, since it's being used in two places now. Documented some of the various CSS tricks used. Removed $RT::Logger->crit(...) debugging calls from the ticket creation and display pages. Fixed the menu arrows to work in IE. Fixed a mangled TitleBox call in Elements/ShowRequestor which was preventing hide and show from working. Styled up the Brief/Full headers links. Gave default focus to the username field on the login form. Made the history display nicer looking -- lots of cosmetic changes. Updated the SimpleSearch form and index.html to use the true simple search (Search/Simple.html). Gave semantic meaning to the message stanza coloring. (It indicates depth.) Added an onload hook mechanism in the JavaScript. Thanks to Robert Spier. Fixed the positioning of the hide/show widget in IE6. Styled approvals and made the approval display much more semantic. RT-Ticket: 6846 Applied a patch to fix the calendar display. Thanks to Kevin Falcone. RT-Ticket: 6821 Pulled most of the styles out of the JavaScript and into the forms CSS. Added a preliminary print stylesheet. Made the state of rollup links more accessible to users without CSS. Fixed the statefulness of the titlebox hide/show widget. Changed CalPopup.html to be a better size and removed its footer. Added a 3.4-compatability stylesheet, which closely mimics the visual style of RT 3.4. Rolled the functionality from RT::Extension::RedirectUnprivilegedUsers into core RT. RT now sends unprivileged users who request Ticket/Display.html addresses to the equivalent SelfService/Display.html address instead. Added per-component CSS IDs to the Header element for very specific styling. Taged the last <ul> in the system menu with a class for planned future use in re-structuring the menu CSS. Attached class="rolled-up" to a more semantic element. Fixed styles to make transaction subjects no longer look threaded. Styled titleboxes with a border and background to separate them a little better from each other. (rt-devel users noted that there seemed too much whitespace and not enough distinction.) Applied a patch to fix the ordering of attachments. Thanks to Ruslan Zakirov. Added a ModifyQuery callback to Search/Simple.html to allow modification of the query before the Googleish search module gets it. Cleaned up the SelectQueue element and added caching for performance. Changed the SelectNewTicketQueue element to use SelectQueue. Fixed off-by-one numbering on the message stanza coloring. Only show the 'Edit' action on the index.html page if the user can ModifySelf. Applied a patch for cleaner XHTML from Steve Peters. Added BeforeSessionDelete and AfterSessionDelete callback hooks to html/NoAuth/Logout.html. Fixed the ShowMessageStanza element to output newlines as <br />. Fixed the Menu element to not display empty menus. Fixed the parsing of message headers in the ShowMessageHeaders element and cleaned the component up a little. Added BeforeForm and AfterForm callbacks to the Login element. Fixed custom field formatting in IE. Added Ticket/Elements/ShowTime, which cleverly figures out whether displaying time in hours or minutes is more appropriate, and updated ShowBasics to use it. Display "Save" when editing a search even if search isn't dirty, since can be a rename. Allowed sorting searches by a custom field. Allowed sorting searches by multiple custom fields in the UI. Added support for the PAW search format. ("In a PAW sort, a sort is first done based on ownership of the ticket (where all tickets owned by the user are assigned a 1, all unowned tickets are assigned a 2, and all remaining tickets are assigned a 3; these values are used for the first sort), and then a sort is performed based on priority.") Removed the old right-style menu CSS and made the left-style the default so it's easier to fiddle with. Reorganized the whole page header to squash some bugs and make it function better. Moved the logo div out of the quickbar and on its own. Fixed stacked menu spacing in IE. Added a default callback to html/User/Elements/Tabs. Fixed up the 3.4-compat styles to account for HTML and CSS changes. RT-Ticket: 7082 Applied a patch to show queue descriptions in quicksearch preferences. Thanks to Joby Walker. RT-Ticket: 7056 Applied a patch to improve the browser compatibility of the calendar popup. Thanks to Peter Popovics. RT-Ticket: 7053 Cleaned up the titlebox styling in IE. Thanks to Peter Popovics. RT-Ticket: 6762 Changed SelfService/Elements/Tabs to go directly to the 'Create' page if the user only has access to one queue, instead of showing the list of queues. Thanks to Kenneth Marshall. Cleaned up the logic in ShowHistory. Added better menu styling, which should eliminate menu wrapping. Fixed the handling of time units in autohandler -- '1/8' didn't work. Changed autohandler to only filter arguments once. Cleaned up the autohandler codepaths. Made the Name sufix -TimeUnits optional in Elements/SelectTimeUnits. Removed the -TimeUnits suffix in the files which call SelectTimeUnits. Added FormLeftColumn, FormRightColumn, and UpdateLogic callbacks to html/User/Prefs.html to make extending Prefs cleaner. Added MassageCustomFields callbacks to Ticket/Elements/EditCustomFields and Elements/ShowCustomFields to make it easier to hide away a custom field on ticket display/edit. Added a print stylesheet. Thanks to Koos van den Hout. Disambiguated the two copies of Owner in ModifyAll.html. Also, deal with the case where the user doesn't change either value. Patched html/Ticket/Elements/Reminders to correct the following behaviors -- (1) When maintaining reminders from /Ticket/Display.html, all reminder subjects for that ticket were being reset to blank when "Save" was pressed, and (2) When maintaining reminders from /Ticket/Reminders.html, only one field per reminder would actually be updated when "Save" was pressed. Thanks to Mark Roedel. RT-Ticket: 7150, 7151, 7152, 7153, 7155, 7156, 7157, 7158, 7159, 7160, 7161, 7162, 7164, 7165, 7166 Fixed Mason warnings in: Elements/CollectionAsTable/Header, Elements/Menu, Elements/MessageBox, Elements/SelectDate, Elements/SelectWatcherType, Elements/TicketList, Search/Bulk.html, Search/Elements/BuildFormatString, Search/Elements/EditSearches, Ticket/Elements/AddWatchers, Ticket/Elements/ShowTransactionAttachments, Ticket/ModifyAll.html, Ticket/Reminders.html, Tools/Offline.html, and Widgets/TitleBox. Thanks to Jim Meyer. Added addClass and delClass JavaScript functions. Removed style.display=[none,block] calls. Added the setCheckbox(form, name, state) function that sets all checkbox inputs under the form element with the defined name to the state. Updated the Submit element to make use of the new changes. Fixed the indentation of Elements/EditCustomFieldSelect. Thanks to Jim Meyer. Applied the bits of Jim Meyer's 'fixes' patch to Elements/EditCustomFieldSelect which still seemed relevant. RT-Ticket: 7154 Silenced warnings in Search/Results.html. Thanks to Jim Meyer. Cleaned up html/Elements/ListActions based on a patch from Ruslan Zakirov. Explicitly set the background to white. Added a FormStart callback to Ticket/Create.html, Modify.html, ModifyAll.html, ModifyDates.html, ModifyLinks.html, ModifyPeople.html, and Update.html. Added a default callback to ModifyAll.html, ModifyDates.html, and ModifyPeople.html for great justice. Updated Reminder editing to reflect API changes. Wrapped the mason directive for setting the content-type in ahah.js in a Javascript comment. Tried to make rt.js do the right thing with headers. Made the ShowCustomFields element open links to other systems in new windows. Fixed the whitespace in Results.tsv, and changed the header to list custom fields as CF-... Changed the offline upload parser to try to treat date as ISO first, falling back to unknown. Kept the offline upload form from tacking on an extra newline on each submit. Minimized yo-yo-ing of status when uploading if possible. Allowed false values as possible values in uploads, as long as they're defined. Allowed Cc, AdminCc, and Requestor to be either email addresses or users in uploads. Changed RT::Action::CreateTicket to accept either the singular or the plural form of Requestor, Cc, and AdminCc. Added a Titlebox component for compatibility with 3.4. Added Titlebox wrappers for 3.4 compatibility RT-Ticket: 7424 Applied a patch to remove duplicate class="..." in the CSS. Thanks to Todd Chapman. RT-Ticket: 7415 Removed a bunch of invalid slash (/) characters from titlebox IDs in the CSS. Allowed multiple-OrderBy searches. Fixed multiple OrderBy's on edit. Applied a HTML arrow cleanup. Thanks to Joshua Colson. Changed Elements/SelectQueue to cache in the session instead of the mason cache. Changed the last 'elsif' into an 'else' in Ticket/Elements/ShowTime, which ensures that the time is still displayed, even if we can't do clever things with it. Patched the Ticket page not to link you to the Admin/Users/Modify.html page if you don't have the AdminUsers privilege, since otherwise you'd just get a blank page. Thanks to David Schweikert. Addded spaces around the Left, Right, Up, and Down arrows on the EditFormat and EditQuery elements and the SelectionBox widget because of a bug in WWW::Mechanize (see http://rt.cpan.org/Ticket/Display.html?id=18921). Changed html/Search/Chart to display GIFs If the system GD library can't display PNGs. RT-Ticket: 7511 Applied a patch to add EditComponentName and ShowComponentName callbacks to the EditCustomField and ShowCustomField elements, respectively. Thanks to Todd Chapman. Fixed some horizontal scrolling problems. (The query builder will still cause horizontal scroll if the window isn't wide enough, as a result of its layout.) Made the quick ticket creation widget set the requestor to the current user. Fixed the SelectNewTicketQueue element to default properly. Included the Cc and AdminCc fields in the CSV download. Changed the ticket history to attempt to downsample HTML-only e-mail messages into plain text. Search - - ------ Made saving a search to RT::System work. Significantly cleaned up the search UI. Removed "Search by group membership" from search UI, since it hit horrible scaling issues. Renamed "quick" search to "Googlish" search in the code. Fixed Googleish simple search. Clarified and renamed some buttons in QueryBuilder. Added FullText search back to simple search. Fixed a Simple Search bug which occurred when searching by multiple values of one criterion. Fixed an error message level in SavedSearch to be less noisy. Moving the search query into the search body in Search/Chart. Made search-by-any-custom-field work. Updated the SimpleSearch form and index.html to use the true simple search (Search/Simple.html). Fixed clause-addition in Query Builder to account for custom fields, which don't match /\w+/. Added a ModifyQuery callback to Search/Simple.html to allow modification of the query before the Googleish search module gets it. Display "Save" when editing a search even if search isn't dirty, since can be a rename. Change the Quicksearch element to escape quotes and slashes in TicketSQL and then URI escape. Also turned off the automatic HTML escaping that Mason does so the query isn't TicketSQL-HTML-URI escaped. Allowed sorting searches by a custom field. Allowed sorting searches by multiple custom fields in the UI. Added support for the PAW search format. ("In a PAW sort, a sort is first done based on ownership of the ticket (where all tickets owned by the user are assigned a 1, all unowned tickets are assigned a 2, and all remaining tickets are assigned a 3; these values are used for the first sort), and then a sort is performed based on priority.") Fixed searching by owner's fields. Now owner is now WATCHERFIELD instead of an ENUM. Added a backward compatible variant for Owner, so 'next' searches should work. (When Owner was an ENUM, we could automagically search for "Owner = 'xxx'" and find the Owner by both id and Name. We've preserved this behavior, but it takes more code now. For other operators (not '=' or '!='), or when subfield(subkey) is specified, search on Owner works as for other watchers.) Fixed searches like "Cc.Name <> 'SomeBody'", which were skipping tickets with an empty Cc list. Fixed some of some 'uninitialized' warnings on searches. Added a test suite for all corner cases of the new watcher-searching code (22search_tix_by_watcher.t). Removed debugging lines from 20-sort-by-requestor.t. Fixed the sort-by-requestor tests to only compare non-nulls, since the tests would otherwise fail on some database backends because they sort nulls differently than Perl does. Fixed Search/Build.html to use the Rows value it gets, instead of hard-forcing it to 50 all the time. Fixed searching on global custom fields Sending and Receiving Email - - --------------------------- Changed RT::Action::SendEmail to only hang onto the first four and the last six References headers when replying. Added some utility functions in 04send_email.t: first_txn, count_xns, first_attach and count_attachs. Used simple file_content function in 04send_email.t instead of `cat`. Got rid of the 'uninitialized' warnings in RT::Action::SendEmail. Allowed mail plugins to complete actions in RT::Interface::Email. Custom Fields - - ------------- Added support for bulk update of custom fields. Fixed custom fields to pay attention to defaults, when said defaults are specified. `CF.Pattern` now works at the API level. It rejects invalid regexes as patterns and validates new CF values against the current pattern. Added a simple UI to set custom field patterns. Added Combobox and Cascaded custom field types. Allowed custom field values to now be integers. Fixed some bulk custom field deletion issues. Refactored the Cascaded custom field type. It now applies to all Select-ish custom fields by introducing a "Category" member field for a CFV. Stubbed out $cfv->Category and $cfv->SetCategory, as well as a $cfv- >Create that accepts Category as a key. Implemented $cfv->Category and $cfv->SetCategory, via attributes. Introduced a cascaded select field. Allowed the creation of a custom field with a pattern. Provided feedback when the user tries to create an invalid custom field. Added a custom field Category Admin UI. Improved the diagnostics on custom field sanity tests. Added validation for combo fields. Forced combo fields to never wrap. Added a ComboBox for Pattern on the custom field Modify page with friendly hints. Fixed a system error on bulk update caused by Combobox custom fields. Relabeled the custom field validation field as "Validation" instead of "Pattern". Changed the EditCustomFieldSelect element to treat empty custom field categories as empty, not as "the same as above". Changed the meaning of an empty catagory to "show all", not "show uncategorised". Cleaned up custom field-list filtering. Fixed the misvalidation of single-input fields. Changed the validation code for single-value fields to check that the empty string is a valid value when the existing value is deleted. Added regression tests for this. Added a warning if there are invalid custom fields at ticket-creation time. Fixed clause-addition in Query Builder to account for custom fields, which don't match /\w+/. Required that the object not only be defined but also valid before pulling values from it in Elements/EditCustomField. Added support for named custom fields in templates. Made CreateTickets handle custom fields. Provided more flexible support for custom fields whose names contain dashes and spaces in CreateTickets templates. Made limiting based on custom fields make sure that the custom fields in question are on the right queue. Otherwise negative searches might be wrong. Added MassageCustomFields callbacks to Ticket/Elements/EditCustomFields and Elements/ShowCustomFields to make it easier to hide away a custom field on ticket display/edit. Changed ObjectCustomFields to squish out duplicate SortOrders if they exist; this should be impossible, so the O(n) updates are mostly justified. Fixed searching on global custom fields Added the ability to make custom fields link to and include content from other systems. Made the ShowCustomFields element open links to other systems in new windows. Fixed a bug that stopped search on global custom fields. RT-Ticket: 7511 Applied a patch to add EditComponentName and ShowComponentName callbacks to the EditCustomField and ShowCustomField elements, respectively. Thanks to Todd Chapman. Added failing tests for several custom field searches. Fixed the custom field searches which were causing the tests to fail. The CustomFields alias could be undef, we not always join to this table, and we should cache both aliases we use (ObjectCustomFieldValues and CustomFields). Add a test for the CF.{cfname} search format. Backported CustomFields fixes from 3.7. Added back the CustomField metafield to fix empty results when sorting by CF. Changed RemoveFromObject in CustomField_Overlay.pm to return the value of the ->Delete call, since it can fail. Internationalization - - -------------------- RT-Ticket: 6418, 6123, 6364, 6429, 6322, 6583, 6585, 6517, 6654, 6627, 6897, 6976, 7106, 7090 Updated translations: Hungarian (Vajko Peter), Dutch (Niels Bakker), Czech (Jan Okrouhly), Italian (Angelo Turreta), German (Torsten Brumm, David Schmit), French (Michel Robitaille, Jerome Fenal), Polish (Piotr Sliwa), Spanish (typo fixes, Leonardo Richero; updated translation, Carlos Velasco), Danish (Jonas Nielsen), Russian (Andrew Kornilov), Indonesian (James Briggs), Japanese (Daisuke Maki) Localised the format in predefined searches with __loc{text}__. Applied a patch from Jerome Fenal to make extract-message-catalog play nice with svn checkouts. RT-Ticket: 7001 Localized "Reports". Thanks to Jerome Fenal for the catch. Configuration - - ------------- Removed the need for $MyTicketsLength and $MyRequestsLength in RT::Config. Made AllowedComponent (the components users are allowed to add to their MyRT page) configurable in RT_Config. Set the default value for $RedistributeAutoGeneratedMessages to "privileged". Cleaned up SiteConfig.pm. Added the $WebDefaultStylesheet configuration option, which sets the default stylesheet to use. (Current options are 3.5-default and 3.4- compat.) Added the $RT::WikiImplicitLinks option, which controls whether WikiText fields should automatically make ALLCAPS or InterCaps words into links to searches for those words. (Defaults to false.) Added the configuration option $LogStackTraces, which generates stack traces to a file or the screen. RT-Ticket: 7121 Applied a patch to make the Web-based ACL tests honor RT::WebPath. Thanks to Todd Chapman. RT-Ticket: 7122 Applied a patch to honor a changed $rtname variable when running the test suite. Thanks to Todd Chapman. Switched the semantics of the $LinkTransactionsRun1Scrip and the default value. If you haven't set this value, you won't be affected. Thanks to Todd Chapman. Added the $StrictLinkACL configuration option. When it is enabled (as it is by default), the user must have the ModifyTicket right on both tickets to link them together. If it is disabled, the user can link the tickets with ModifyTicket on either or both tickets. Regression Testing - - ------------------ Fixed 'make regression' so as to allow it to be run as a non-root user. Added minimum regression tests for frontpage customization. Cleaned up and expanded the ACL test suite to be more robust. Improved the diagnostics on custom field sanity tests. Added plans to a bunch of tests. Added additional tests for bugs related to having no requestor when sorting by requestor. Made the test text reflect the number of tickets the test is looking for. Cleaned the tests to print diagnostic messages only if $ENV{TEST_VERBOSE} is true ('prove -v' sets this). Changed diagnostic messages to print the URL we are testing. Added some utility functions in 04send_email.t: first_txn, count_xns, first_attach and count_attachs. Used simple file_content function in 04send_email.t instead of `cat`. Added a test suite for all corner cases of the new watcher-searching code (22search_tix_by_watcher.t). Removed debugging lines from 20-sort-by-requestor.t. Fixed the sort-by-requestor tests to only compare non-nulls, since the tests would otherwise fail on some database backends because they sort nulls differently than Perl does. RT-Ticket: 7121 Applied a patch to make the Web-based ACL tests honor RT::WebPath. Thanks to Todd Chapman. RT-Ticket: 7122 Applied a patch to honor a changed $rtname variable when running the test suite. Thanks to Todd Chapman. Added a tailing test -- paging, ORDER BY, JOIN, and DISTINCT collude to produce incorrect results, unless the DISTINCT is done very carefully. Made tests reentrant in lib/RT/Tickets_Overlay_SQL.pm. Added a plan to the scrip-ordering tests Added the beginnings of CLI tests. Added most of the 'frob this database field on the ticket' tests I think the CLI is going to want. Added tests for listing and showing tickets from the command line. Added tests for modification of users, groups, and queues from the CLI. Added tests for a basic (not-yet-implemented) CLI mechanism to create and modify custom fields Applied a patch to make the RT 3.5 test-suite obey the configuration directives for server and port, so you don't have to be testing on localhost and port 80. Thanks to Todd Chapman. Gave the RT CLI tests a plan. Tweaked the new CLI tests to handle servers and ports which are not localhost and 80, respectively, a la Todd Chapman's patch. RT-Ticket: 7425 Applied test fixes. Thanks to Todd Chapman. Updated the CLI test suite to check that commenting and replying actually work now. Added tests for merging tickets via the CLI. Spec'd out tests for 'take'ing and 'steal'ing tickets via the CLI. Added failing tests for several custom field searches. Add a test for the CF.{cfname} search format. Fixed the test count for the CLI tests. Ordered attributes in 13-attribute-tests.t by Id, as some tests depend on that. Added tests for the new $StrictLinkACL configuration option, the re- creation of the transaction on the creation of a duplicate link, and all associated changes. Scrips - - ------ Fixed a misleading error in lib/RT/Scrip_Overlay.pm, which referred to IsApplicable instead of Commit. Performed a minor refactoring in RT::Action::CreateTickets. Provided more flexible support for custom fields whose names contain dashes and spaces in CreateTickets templates. Changed RT::Action::CreateTickets to parse embedded newlines. Also changed it to anchor column alias matches at beginning and end, so they don't pick up things like 'CustomField-Summary Status' as =~ /Summary/. Added support for multiple Requestors, Ccs, AdminCcs, or links on one line in RT::Action::CreateTickets. Documented and standardized the UpdateType field in RT::Action::CreateTickets. Fix another possible infinite loop bug in RT::Action::CreateTickets. Added the ForceOwner field in RT::Action::CreateTickets to force ownership. RT-Ticket: 7295 Changed the ordering on scrips to sort them by their description, so you can force them to run in a particular order by prepending numbers to their descriptions. Updated the perldoc, the UPGRADING document, and the EditScrips UI element to reflect this and wrote tests for it. Added a plan to the scrip-ordering tests In RT::Action::CreateTickets: (1) collapsed ForceOwner and Owner in RT::Action::CreateTickets, (2) fixed updating of (Admin)Ccs, (3) set UpdateType to default to 'correspond', (4) defaulted the content-type to 'text/plain', (5) added code to update custom fields during processing, added better error handling when the ticket id doesn't exist when trying to update it, and (6) removed the requirement that 'id' be the first column. (In fact, specifying an id is no longer required at all. Blank or non-existant 'id' columns will cause the code to assume that the ticket is new, and come up with an automatic template id for the row.) Changed RT::Action::CreateTicket to accept either the singular or the plural form of Requestor, Cc, and AdminCc. Modified Ticket/Elements/PreviewScrips to check and report to the logs if a scrip couldn't fire. Documentation - - ------------- Documented some of the various CSS tricks used. Added Calendar::Simple to the dependency list. Thanks to Kevin Falcone. Added a note about the AHAH support. Development Tools - - ----------------- Added var, local, and share to svn:ignore. Applied a patch from Jerome Fenal to make extract-message-catalog play nice with svn checkouts. Added SQL statement logging. RT-Ticket: 7063 Added the ability to shell out to an outside program to install dependencies (eg. Gentoo's 'g-cpan' utility). A variant of a patch from Ruslan Zakirov. Changed the 'rt-test-dependencies' script: (1) to install modules after all checks, (2) to test that CPAN.pm is configured and exit otherwise, (3) to 'use eval' with CPAN.pm, and (4) to output some suggestions if CPAN shell fails terribly. RSS Feeds - - --------- Added a <link> tag in the Header element to enable RSS AutoDiscovery. Changed the RSS file to use a more accurate Content-Type. REST Interface - - -------------- Made commenting and corresponding via the REST interface work. Cleaned up the REST comment form and the dhandler a bit. Fixed the error-out in the REST interface after commenting via the CLI tool. Standardized the REST Forms to use <%INIT> instead of <%perl>. Made merging tickets via the REST interface and the CLI tool work. Stopped using the deprecated RT::Queue::CustomFields method in the REST interface. Made the REST interface accept 'take|steal|untake' as Action arguments. Fixed the REST interface not to check the rights, since SetOwner will do that for us. Returned a more descriptive message when one user tries to steal a ticket from another user. Changed the REST interface to vsplit the Requestor, Cc and AdminCc fields when creating a ticket, allowing multiple watchers to be specified. rt Command-Line Tool - - -------------------- Added CLI support for custom fields from lwang at Cluster FS. Laid out a skeleton for the CLI tests Added a 'quit' command (also 'exit') to exit from the shell. This makes testing via Test::Expect a *lot* easier. Added basic documentation for the shell Added the beginnings of CLI tests. Added most of the 'frob this database field on the ticket' tests I think the CLI is going to want. Added basic Term::ReadLine support to the CLI. Added tests for listing and showing tickets from the command line. Added tests for modification of users, groups, and queues from the CLI. Added tests for a basic (not-yet-implemented) CLI mechanism to create and modify custom fields Gave the RT CLI tests a plan. Tweaked the new CLI tests to handle servers and ports which are not localhost and 80, respectively, a la Todd Chapman's patch. Fixed the RT command-line tool to not spew the entire help text for the command you just typed if you screw something up, so you don't have to scroll up a couple pages to see the actual error message. Changed most of the todo_skip CLI tests to TODO tests, so we can see when they start passing. Made the CLI tool grab a form from the server to get default values when creating new objects. Made the command-line tool not spew the entire help text if you give it an unrecognized command. Made the command-line tool ignore a leading 'rt' in a command in shell mode (eg. 'rt create' should do the same thing as just 'create'); added a test for this. Discovered that, when attempting to comment via the command-line tool, the RT instance thought it was being asked to find a ticket with an id of 'comment'. Flipped the order of the terms in the URL we're requesting so that they fit the canonical order. Fixed the default server location of the command-line tool to point to RT's default location. Made the command-line tool default to shell mode if no arguments are passed to it. Copied the old commenting code over to the place where the new codepath is looking for it. Updated the CLI test suite to check that commenting and replying actually work now. Applied a patch to make the CLI tool only invoke Term::ReadLine when we're actually going to be using it. Thanks to David Schweikert. Made merging tickets via the REST interface and the CLI tool work. Added tests for merging tickets via the CLI. Spec'd out tests for 'take'ing and 'steal'ing tickets via the CLI. Fixed the test count for the CLI tests. Added custom summary "ticket lists" using the command-line tool's lists (combining the -f and -s options). Added take/untake/steal commands to the CLI. - -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.3 (Darwin) iD8DBQFEkUbhEi9d9xCOQEYRApieAKDEHu55PYb/BLB6yEEIAG9Gj47UzACdHouF LCid+m0eqjjAqG4Zruy2LRg= =Jyq0 - -----END PGP SIGNATURE----- -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.3 (Darwin) iD8DBQFEkUk4Ei9d9xCOQEYRAnClAJ0ZFUhMx5/yKanW1f0fFMUaHikN+wCfdwlA QE/lqUZt5+ET3bnu2aL6sdA= =J7l6 -----END PGP SIGNATURE----- _______________________________________________ RT-Announce mailing list RT-Announce[at]lists.bestpractical.com http://lists.bestpractical.com/cgi-bin/mailman/listinfo/rt-announce
|