[Bps-public-commit] rt-extension-assets branch, 1.0-trunk, created. 0e86af3db0db0d8adfbaaf3517ae58d71fd09d14

Alex Vandiver alexmv at bestpractical.com
Mon Jan 27 17:19:22 EST 2014


The branch, 1.0-trunk has been created
        at  0e86af3db0db0d8adfbaaf3517ae58d71fd09d14 (commit)

- Log -----------------------------------------------------------------
commit 75d34e143bf22bcb4189dc381e2e6168db5f21e4
Merge: a64cb65 622061b
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Fri Aug 23 18:29:40 2013 -0400

    Merge branch 'bulk-update'


commit f78d5cf3ba5ceb5760916d84c3488ccedd4a2be1
Author: Kevin Falcone <falcone at bestpractical.com>
Date:   Wed Sep 4 13:55:27 2013 -0400

    Run RT's license_tag on the assets extension.

diff --git a/html/Admin/Assets/Catalogs/Create.html b/html/Admin/Assets/Catalogs/Create.html
index 135af44..2f2be79 100644
--- a/html/Admin/Assets/Catalogs/Create.html
+++ b/html/Admin/Assets/Catalogs/Create.html
@@ -1,3 +1,50 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
 <& /Admin/Elements/Header, Title => loc("Create catalog") &>
 <& /Elements/Tabs &>
 <& /Elements/ListActions, actions => \@results &>
diff --git a/html/Admin/Assets/Catalogs/CustomFields.html b/html/Admin/Assets/Catalogs/CustomFields.html
index 1502e73..bfbf2d2 100644
--- a/html/Admin/Assets/Catalogs/CustomFields.html
+++ b/html/Admin/Assets/Catalogs/CustomFields.html
@@ -1,3 +1,50 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
 <& /Elements/Header, Title => loc("Catalog [_1]: Edit Custom Fields", $Catalog->Name) &>
 <& /Elements/Tabs &>
 <& /Admin/Elements/EditCustomFields,
diff --git a/html/Admin/Assets/Catalogs/Elements/EditBasics b/html/Admin/Assets/Catalogs/Elements/EditBasics
index aa16f97..48f6f4b 100644
--- a/html/Admin/Assets/Catalogs/Elements/EditBasics
+++ b/html/Admin/Assets/Catalogs/Elements/EditBasics
@@ -1,3 +1,50 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
 <table>
   <tr>
     <td class="label"><label for="Name"><&|/l&>Name</&></label></td>
diff --git a/html/Admin/Assets/Catalogs/GroupRights.html b/html/Admin/Assets/Catalogs/GroupRights.html
index 5f83d5c..f9dae76 100644
--- a/html/Admin/Assets/Catalogs/GroupRights.html
+++ b/html/Admin/Assets/Catalogs/GroupRights.html
@@ -1,3 +1,50 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
 <& /Admin/Elements/Header, Title => loc("Catalog [_1]: Modify group rights", $Catalog->Name) &>
 <& /Elements/Tabs &>
 <& /Elements/ListActions, actions => \@results &>
diff --git a/html/Admin/Assets/Catalogs/Modify.html b/html/Admin/Assets/Catalogs/Modify.html
index 774791f..70c411b 100644
--- a/html/Admin/Assets/Catalogs/Modify.html
+++ b/html/Admin/Assets/Catalogs/Modify.html
@@ -1,3 +1,50 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
 <& /Admin/Elements/Header, Title => loc("Catalog [_1]: Modify basics", $catalog->Name) &>
 <& /Elements/Tabs &>
 <& /Elements/ListActions, actions => \@results &>
diff --git a/html/Admin/Assets/Catalogs/Roles.html b/html/Admin/Assets/Catalogs/Roles.html
index e55a980..d2d680a 100644
--- a/html/Admin/Assets/Catalogs/Roles.html
+++ b/html/Admin/Assets/Catalogs/Roles.html
@@ -1,3 +1,50 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
 <& /Elements/Header, Title => loc("Catalog [_1]: Modify roles", $catalog->Name) &>
 <& /Elements/Tabs &>
 <& /Elements/ListActions, actions => \@results &>
diff --git a/html/Admin/Assets/Catalogs/UserRights.html b/html/Admin/Assets/Catalogs/UserRights.html
index 6dc9796..98d8f12 100644
--- a/html/Admin/Assets/Catalogs/UserRights.html
+++ b/html/Admin/Assets/Catalogs/UserRights.html
@@ -1,3 +1,50 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
 <& /Admin/Elements/Header, Title => loc("Catalog [_1]: Modify user rights", $Catalog->Name) &>
 <& /Elements/Tabs &>
 <& /Elements/ListActions, actions => \@results &>
diff --git a/html/Admin/Assets/Catalogs/index.html b/html/Admin/Assets/Catalogs/index.html
index ef88635..aa8ef3b 100644
--- a/html/Admin/Assets/Catalogs/index.html
+++ b/html/Admin/Assets/Catalogs/index.html
@@ -1,3 +1,50 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
 <& /Admin/Elements/Header, Title => loc("Admin Catalogs") &>
 <& /Elements/Tabs &>
 
diff --git a/html/Admin/Assets/index.html b/html/Admin/Assets/index.html
index 9140c58..551ee60 100644
--- a/html/Admin/Assets/index.html
+++ b/html/Admin/Assets/index.html
@@ -1,3 +1,50 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
 <& /Elements/Header, Title => loc('Asset Administration') &>
 <& /Elements/Tabs &>
 <& /Elements/ListMenu, menu => Menu()->child('tools')->child('config')->child('assets') &>
diff --git a/html/Admin/Global/CustomFields/Catalog-Assets.html b/html/Admin/Global/CustomFields/Catalog-Assets.html
index daf1076..0d39da8 100644
--- a/html/Admin/Global/CustomFields/Catalog-Assets.html
+++ b/html/Admin/Global/CustomFields/Catalog-Assets.html
@@ -1,3 +1,50 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
 <& /Admin/Elements/Header, Title => $title &>
 <& /Elements/Tabs &>
 <& /Admin/Elements/EditCustomFields, %ARGS, title => $title, ObjectType => "RT::Catalog", Object=> $object, SubType => "RT::Asset" &>
diff --git a/html/Asset/Create.html b/html/Asset/Create.html
index ed2d704..f6932ec 100644
--- a/html/Asset/Create.html
+++ b/html/Asset/Create.html
@@ -1,3 +1,50 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
 <& /Elements/Header, Title => loc("Create a new asset in catalog [_1]", $catalog->Name),
     RT->Config->Get('AssetBasicCustomFieldsOnCreate')
       ? (
diff --git a/html/Asset/CreateInCatalog.html b/html/Asset/CreateInCatalog.html
index 01a2507..acd1b42 100644
--- a/html/Asset/CreateInCatalog.html
+++ b/html/Asset/CreateInCatalog.html
@@ -1,3 +1,50 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
 <& /Elements/Header,
     Title => loc("Create new asset") &>
 <& /Elements/Tabs &>
diff --git a/html/Asset/CreateLinkedTicket.html b/html/Asset/CreateLinkedTicket.html
index fa865c9..45535f6 100644
--- a/html/Asset/CreateLinkedTicket.html
+++ b/html/Asset/CreateLinkedTicket.html
@@ -1,3 +1,50 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
 <%args>
 $Asset => undef
 $Requestors => ''
diff --git a/html/Asset/Display.html b/html/Asset/Display.html
index aa3eb84..63f8ec1 100644
--- a/html/Asset/Display.html
+++ b/html/Asset/Display.html
@@ -1,3 +1,50 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
 <& /Elements/Header, Title => loc("Asset #[_1]: [_2]", $asset->id, $asset->Name) &>
 <& /Elements/Tabs &>
 
diff --git a/html/Asset/Elements/AssetSearchBasics b/html/Asset/Elements/AssetSearchBasics
index 2246111..f4ebe67 100644
--- a/html/Asset/Elements/AssetSearchBasics
+++ b/html/Asset/Elements/AssetSearchBasics
@@ -1,3 +1,50 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
 <&| /Widgets/TitleBox, title => 'Basics' &>
 <table>
 <tr class="asset-catalog"><td class="label"><label for="Catalog"><&|/l&>Catalog</&></label></td>
diff --git a/html/Asset/Elements/AssetSearchCFs b/html/Asset/Elements/AssetSearchCFs
index 265fb76..8211f9d 100644
--- a/html/Asset/Elements/AssetSearchCFs
+++ b/html/Asset/Elements/AssetSearchCFs
@@ -1,3 +1,50 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
 <&| /Widgets/TitleBox, title => $Grouping ? loc($Grouping) : loc('Custom Fields'), hide_empty => 1 &>
 % my $CFs = RT::CustomFields->new( $session{CurrentUser} );
 % $CFs->LimitToCatalog( $CatalogObj->Id );
diff --git a/html/Asset/Elements/CreateInCatalog b/html/Asset/Elements/CreateInCatalog
index f92c01d..b754821 100644
--- a/html/Asset/Elements/CreateInCatalog
+++ b/html/Asset/Elements/CreateInCatalog
@@ -1,3 +1,50 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
 <form action="<% RT->Config->Get("WebPath") %>/Asset/Create.html" id="AssetCreateInCatalog">
   <&|/l_unsafe,
     $m->scomp("/Asset/Elements/SelectCatalog"),
diff --git a/html/Asset/Elements/CreateLinkedTicket b/html/Asset/Elements/CreateLinkedTicket
index d4d673b..2c5b8ca 100644
--- a/html/Asset/Elements/CreateLinkedTicket
+++ b/html/Asset/Elements/CreateLinkedTicket
@@ -1,3 +1,50 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
 <%args>
 $AssetObj
 $Requestors => ''
diff --git a/html/Asset/Elements/EditBasics b/html/Asset/Elements/EditBasics
index 704ef40..409eb37 100644
--- a/html/Asset/Elements/EditBasics
+++ b/html/Asset/Elements/EditBasics
@@ -1,3 +1,50 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
 <table>
 % if ($AssetObj->id) {
   <tr class="asset-catalog">
diff --git a/html/Asset/Elements/EditDates b/html/Asset/Elements/EditDates
index 0dd1faa..4575459 100644
--- a/html/Asset/Elements/EditDates
+++ b/html/Asset/Elements/EditDates
@@ -1,3 +1,50 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
 <table>
   <tr>
     <td class="label"><&|/l&>Created</&>:</td>
diff --git a/html/Asset/Elements/EditPeople b/html/Asset/Elements/EditPeople
index 096347c..86bc4b3 100644
--- a/html/Asset/Elements/EditPeople
+++ b/html/Asset/Elements/EditPeople
@@ -1,3 +1,50 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
 <table border="0" cellpadding="0" cellspacing="0">
 % for my $role ( $AssetObj->Roles ) {
 <tr class="asset-people-<% CSSClass($role) %>">
diff --git a/html/Asset/Elements/SelectStatus b/html/Asset/Elements/SelectStatus
index f448a7b..4535355 100644
--- a/html/Asset/Elements/SelectStatus
+++ b/html/Asset/Elements/SelectStatus
@@ -1,3 +1,50 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
 <& /Elements/SelectStatus, %ARGS &>
 <%init>
 if ($AssetObj and $AssetObj->Id) {
diff --git a/html/Asset/Elements/ShowBasics b/html/Asset/Elements/ShowBasics
index 63be10c..afe377f 100644
--- a/html/Asset/Elements/ShowBasics
+++ b/html/Asset/Elements/ShowBasics
@@ -1,3 +1,50 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
 <table>
   <tr class="asset-catalog">
     <td class="label"><&|/l&>Catalog</&>:</td>
diff --git a/html/Asset/Elements/ShowCatalog b/html/Asset/Elements/ShowCatalog
index 17928c0..36a31bb 100644
--- a/html/Asset/Elements/ShowCatalog
+++ b/html/Asset/Elements/ShowCatalog
@@ -1,3 +1,50 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
 <% $value %>
 <%ARGS>
 $Asset   => undef
diff --git a/html/Asset/Elements/ShowDates b/html/Asset/Elements/ShowDates
index 38515db..9a50752 100644
--- a/html/Asset/Elements/ShowDates
+++ b/html/Asset/Elements/ShowDates
@@ -1,3 +1,50 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
 <table>
   <tr>
     <td class="label"><&|/l&>Created</&>:</td>
diff --git a/html/Asset/Elements/ShowLinks b/html/Asset/Elements/ShowLinks
index 91e688b..d41cf3f 100644
--- a/html/Asset/Elements/ShowLinks
+++ b/html/Asset/Elements/ShowLinks
@@ -1 +1,48 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
 <& /Elements/ShowLinks, Object => delete $ARGS{AssetObj}, %ARGS &>
diff --git a/html/Asset/Elements/ShowPeople b/html/Asset/Elements/ShowPeople
index 03bbed6..50c5f64 100644
--- a/html/Asset/Elements/ShowPeople
+++ b/html/Asset/Elements/ShowPeople
@@ -1,3 +1,50 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
 <%args>
 $AssetObj
 </%args>
diff --git a/html/Asset/Elements/ShowRoleMembers b/html/Asset/Elements/ShowRoleMembers
index 29b5718..975f4ff 100644
--- a/html/Asset/Elements/ShowRoleMembers
+++ b/html/Asset/Elements/ShowRoleMembers
@@ -1,3 +1,50 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
 % my $users = $Group->UserMembersObj( Recursively => 0 );
 % while ( my $user = $users->Next ) {
 %     next if $Skip and $Skip->HasMember( $user->PrincipalId );
diff --git a/html/Asset/Elements/ShowSummary b/html/Asset/Elements/ShowSummary
index 642bd37..1c1a8be 100644
--- a/html/Asset/Elements/ShowSummary
+++ b/html/Asset/Elements/ShowSummary
@@ -1,3 +1,50 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
 <%args>
 $AssetObj
 </%args>
diff --git a/html/Asset/Helpers/CreateInCatalog b/html/Asset/Helpers/CreateInCatalog
index cb77bc2..9a15cd2 100644
--- a/html/Asset/Helpers/CreateInCatalog
+++ b/html/Asset/Helpers/CreateInCatalog
@@ -1,2 +1,49 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
 <& /Asset/Elements/CreateInCatalog &>
 % $m->abort;
diff --git a/html/Asset/Helpers/CreateLinkedTicket b/html/Asset/Helpers/CreateLinkedTicket
index 31b0cf9..0e6b410 100644
--- a/html/Asset/Helpers/CreateLinkedTicket
+++ b/html/Asset/Helpers/CreateLinkedTicket
@@ -1,3 +1,50 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
 <%args>
 $Asset
 $Requestors => ''
diff --git a/html/Asset/History.html b/html/Asset/History.html
index da93888..a393512 100644
--- a/html/Asset/History.html
+++ b/html/Asset/History.html
@@ -1,3 +1,50 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
 <& /Elements/Header, Title => loc("History of Asset #[_1]: [_2]", $asset->id, $asset->Name) &>
 <& /Elements/Tabs &>
 
diff --git a/html/Asset/Modify.html b/html/Asset/Modify.html
index 6baa320..7ff4646 100644
--- a/html/Asset/Modify.html
+++ b/html/Asset/Modify.html
@@ -1,3 +1,50 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
 <& /Elements/Header, Title => loc("Modify asset #[_1]: [_2]", $asset->id, $asset->Name) &>
 <& /Elements/Tabs &>
 
diff --git a/html/Asset/ModifyCFs.html b/html/Asset/ModifyCFs.html
index 8e80b53..0f1d930 100755
--- a/html/Asset/ModifyCFs.html
+++ b/html/Asset/ModifyCFs.html
@@ -1,3 +1,50 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
 <& /Elements/Header, Title => loc("Modify [_3] for asset #[_1]: [_2]", $asset->id, $asset->Name, $Grouping) &>
 <& /Elements/Tabs &>
 
diff --git a/html/Asset/ModifyDates.html b/html/Asset/ModifyDates.html
index 6721082..4693cb4 100755
--- a/html/Asset/ModifyDates.html
+++ b/html/Asset/ModifyDates.html
@@ -1,3 +1,50 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
 <& /Elements/Header, Title => loc("Modify dates for asset #[_1]: [_2]", $asset->id, $asset->Name) &>
 <& /Elements/Tabs &>
 
diff --git a/html/Asset/ModifyLinks.html b/html/Asset/ModifyLinks.html
index e15b09d..5758f97 100755
--- a/html/Asset/ModifyLinks.html
+++ b/html/Asset/ModifyLinks.html
@@ -1,3 +1,50 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
 <& /Elements/Header, Title => loc("Modify links for asset #[_1]: [_2]", $asset->id, $asset->Name) &>
 <& /Elements/Tabs &>
 
diff --git a/html/Asset/ModifyPeople.html b/html/Asset/ModifyPeople.html
index 611b925..a802167 100755
--- a/html/Asset/ModifyPeople.html
+++ b/html/Asset/ModifyPeople.html
@@ -1,3 +1,50 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
 <& /Elements/Header, Title => loc("Modify people related to asset #[_1]: [_2]", $asset->id, $asset->Name) &>
 <& /Elements/Tabs &>
 
diff --git a/html/Asset/Search/Bulk.html b/html/Asset/Search/Bulk.html
index 73be766..ef6edf4 100644
--- a/html/Asset/Search/Bulk.html
+++ b/html/Asset/Search/Bulk.html
@@ -1,3 +1,50 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
 <& /Elements/Header, Title => loc("Assets") &>
 <& /Elements/Tabs &>
 
diff --git a/html/Asset/Search/index.html b/html/Asset/Search/index.html
index f2be3df..e199fde 100644
--- a/html/Asset/Search/index.html
+++ b/html/Asset/Search/index.html
@@ -1,3 +1,50 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
 <%init>
 my $catalog_obj = LoadDefaultCatalog($ARGS{'Catalog'} || '');
 $ARGS{'Catalog'} = $catalog_obj->Id;
diff --git a/html/Asset/index.html b/html/Asset/index.html
index 30c2cb9..12053d4 100644
--- a/html/Asset/index.html
+++ b/html/Asset/index.html
@@ -1,3 +1,50 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
 <%init>
 my $assets = RT::Assets->new($session{CurrentUser});
 $assets->UnLimit;
diff --git a/html/Callbacks/RT-Extension-Assets/Elements/AddLinks/ExtraLinkInstructions b/html/Callbacks/RT-Extension-Assets/Elements/AddLinks/ExtraLinkInstructions
index 27d78a9..191da8c 100644
--- a/html/Callbacks/RT-Extension-Assets/Elements/AddLinks/ExtraLinkInstructions
+++ b/html/Callbacks/RT-Extension-Assets/Elements/AddLinks/ExtraLinkInstructions
@@ -1,2 +1,49 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
 <br>
 <&|/l&>Enter links to assets as "asset:###", where ### represents the asset ID.</&>
diff --git a/html/Callbacks/RT-Extension-Assets/Elements/Tabs/Privileged b/html/Callbacks/RT-Extension-Assets/Elements/Tabs/Privileged
index d4ddcaa..ce64174 100644
--- a/html/Callbacks/RT-Extension-Assets/Elements/Tabs/Privileged
+++ b/html/Callbacks/RT-Extension-Assets/Elements/Tabs/Privileged
@@ -1,3 +1,50 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
 <%args>
 $Path
 </%args>
diff --git a/html/Callbacks/RT-Extension-Assets/Elements/Tabs/SelfService b/html/Callbacks/RT-Extension-Assets/Elements/Tabs/SelfService
index 547f356..de03baf 100644
--- a/html/Callbacks/RT-Extension-Assets/Elements/Tabs/SelfService
+++ b/html/Callbacks/RT-Extension-Assets/Elements/Tabs/SelfService
@@ -1,3 +1,50 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
 <%args>
 $Path
 </%args>
diff --git a/html/Callbacks/RT-Extension-Assets/SelfService/Display.html/BeforeShowHistory b/html/Callbacks/RT-Extension-Assets/SelfService/Display.html/BeforeShowHistory
index cd22ce2..756fb4f 100644
--- a/html/Callbacks/RT-Extension-Assets/SelfService/Display.html/BeforeShowHistory
+++ b/html/Callbacks/RT-Extension-Assets/SelfService/Display.html/BeforeShowHistory
@@ -1 +1,48 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
 <& /Ticket/Elements/ShowAssets, Ticket => $ARGS{Ticket} &>
diff --git a/html/Callbacks/RT-Extension-Assets/Ticket/Create.html/AfterBasics b/html/Callbacks/RT-Extension-Assets/Ticket/Create.html/AfterBasics
index f1be388..37d3f51 100644
--- a/html/Callbacks/RT-Extension-Assets/Ticket/Create.html/AfterBasics
+++ b/html/Callbacks/RT-Extension-Assets/Ticket/Create.html/AfterBasics
@@ -1 +1,48 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
 <& /Ticket/Elements/ShowAssetsOnCreate, %ARGS &>
diff --git a/html/Callbacks/RT-Extension-Assets/Ticket/Elements/ShowSummary/LinksExtra b/html/Callbacks/RT-Extension-Assets/Ticket/Elements/ShowSummary/LinksExtra
index 82917de..94e8451 100644
--- a/html/Callbacks/RT-Extension-Assets/Ticket/Elements/ShowSummary/LinksExtra
+++ b/html/Callbacks/RT-Extension-Assets/Ticket/Elements/ShowSummary/LinksExtra
@@ -1,3 +1,50 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
 %# The LinksExtra callback is intended to modify the Links box, but we just want
 %# to put another box before it.
 <& /Ticket/Elements/ShowAssets, Ticket => $ARGS{Ticket} &>
diff --git a/html/Elements/Assets/AddPeople b/html/Elements/Assets/AddPeople
index f59cace..b0564c8 100644
--- a/html/Elements/Assets/AddPeople
+++ b/html/Elements/Assets/AddPeople
@@ -1,3 +1,50 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
 <%args>
 $Object
 </%args>
diff --git a/html/Elements/Assets/EditPeople b/html/Elements/Assets/EditPeople
index a6d31c8..d7a9875 100644
--- a/html/Elements/Assets/EditPeople
+++ b/html/Elements/Assets/EditPeople
@@ -1,3 +1,50 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
 <%args>
 $Object
 </%args>
diff --git a/html/Elements/Assets/EditRoleMembers b/html/Elements/Assets/EditRoleMembers
index 69bb1bb..53f5458 100644
--- a/html/Elements/Assets/EditRoleMembers
+++ b/html/Elements/Assets/EditRoleMembers
@@ -1,3 +1,50 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
 <%args>
 $Group       => undef
 $Recursively => 0
diff --git a/html/Elements/Assets/SelectRoleType b/html/Elements/Assets/SelectRoleType
index 88c5b25..08ad9b5 100644
--- a/html/Elements/Assets/SelectRoleType
+++ b/html/Elements/Assets/SelectRoleType
@@ -1,3 +1,50 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
 <%args>
 $Object
 $Name
diff --git a/html/Elements/MyAssets b/html/Elements/MyAssets
index 47d54e4..a6000ec 100644
--- a/html/Elements/MyAssets
+++ b/html/Elements/MyAssets
@@ -1 +1,48 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
 <& /User/Elements/AssetList, User => $session{'CurrentUser'}->UserObj, Roles => [qw(HeldBy)], Title => loc('My Assets') &>
diff --git a/html/Elements/RT__Asset/ColumnMap b/html/Elements/RT__Asset/ColumnMap
index 040d435..37a52c1 100644
--- a/html/Elements/RT__Asset/ColumnMap
+++ b/html/Elements/RT__Asset/ColumnMap
@@ -2,7 +2,7 @@
 %#
 %# COPYRIGHT:
 %#
-%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
 %#                                          <sales at bestpractical.com>
 %#
 %# (Except where explicitly superseded by other copyright notices)
diff --git a/html/Elements/RT__Catalog/ColumnMap b/html/Elements/RT__Catalog/ColumnMap
index 495aa8e..4fcdd1f 100644
--- a/html/Elements/RT__Catalog/ColumnMap
+++ b/html/Elements/RT__Catalog/ColumnMap
@@ -2,7 +2,7 @@
 %#
 %# COPYRIGHT:
 %#
-%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
 %#                                          <sales at bestpractical.com>
 %#
 %# (Except where explicitly superseded by other copyright notices)
diff --git a/html/SelfService/Asset/CreateLinkedTicket.html b/html/SelfService/Asset/CreateLinkedTicket.html
index 374592d..dfe5982 100644
--- a/html/SelfService/Asset/CreateLinkedTicket.html
+++ b/html/SelfService/Asset/CreateLinkedTicket.html
@@ -1,3 +1,50 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
 <%args>
 $id => undef
 </%args>
diff --git a/html/SelfService/Asset/Display.html b/html/SelfService/Asset/Display.html
index 5a8df75..8c4e3b4 100644
--- a/html/SelfService/Asset/Display.html
+++ b/html/SelfService/Asset/Display.html
@@ -1,3 +1,50 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
 <& /SelfService/Elements/Header, Title => loc("Asset #[_1]: [_2]", $asset->id, $asset->Name) &>
 
 <& /Asset/Elements/ShowSummary, AssetObj => $asset &>
diff --git a/html/SelfService/Asset/Helpers/CreateLinkedTicket b/html/SelfService/Asset/Helpers/CreateLinkedTicket
index d08e477..244a20e 100644
--- a/html/SelfService/Asset/Helpers/CreateLinkedTicket
+++ b/html/SelfService/Asset/Helpers/CreateLinkedTicket
@@ -1,3 +1,50 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
 <%args>
 $Asset
 </%args>
diff --git a/html/SelfService/Asset/History.html b/html/SelfService/Asset/History.html
index 9b364b2..5aa5b19 100644
--- a/html/SelfService/Asset/History.html
+++ b/html/SelfService/Asset/History.html
@@ -1,3 +1,50 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
 <& /SelfService/Elements/Header, Title => loc("History of Asset #[_1]: [_2]", $asset->id, $asset->Name) &>
 
 <& /Elements/ShowHistory,
diff --git a/html/SelfService/Asset/index.html b/html/SelfService/Asset/index.html
index e8695e4..06eb431 100644
--- a/html/SelfService/Asset/index.html
+++ b/html/SelfService/Asset/index.html
@@ -1,2 +1,49 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
 <& /SelfService/Elements/Header, Title => loc("My Assets") &>
 <& /User/Elements/AssetList, User => $session{'CurrentUser'}->UserObj, Roles => [''], Title => loc('My Assets') &>
diff --git a/html/Ticket/Elements/ShowAssets b/html/Ticket/Elements/ShowAssets
index e84a461..dea5f74 100644
--- a/html/Ticket/Elements/ShowAssets
+++ b/html/Ticket/Elements/ShowAssets
@@ -1,3 +1,50 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
 <%args>
 $Ticket
 $ShowRelatedTickets => 10
diff --git a/html/Ticket/Elements/ShowAssetsOnCreate b/html/Ticket/Elements/ShowAssetsOnCreate
index bdde691..0793704 100644
--- a/html/Ticket/Elements/ShowAssetsOnCreate
+++ b/html/Ticket/Elements/ShowAssetsOnCreate
@@ -1,3 +1,50 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
 <%args>
 $QueueObj
 $ARGSRef
diff --git a/html/User/Elements/AssetList b/html/User/Elements/AssetList
index 4e3de18..7cfb637 100644
--- a/html/User/Elements/AssetList
+++ b/html/User/Elements/AssetList
@@ -1,3 +1,50 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
 <%init>
 my $assets = RT::Assets->new($session{CurrentUser});
 for my $role (@Roles) {
diff --git a/html/User/Elements/Portlets/UserAssets b/html/User/Elements/Portlets/UserAssets
index 2559842..51919f1 100644
--- a/html/User/Elements/Portlets/UserAssets
+++ b/html/User/Elements/Portlets/UserAssets
@@ -1,3 +1,50 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
 %# Roles => [''] triggers the magical RoleLimit behavior that matches any role
 <& /User/Elements/AssetList, User => $User, Roles => [''], Title => loc('Assigned Assets') &>
 <%ARGS>
diff --git a/lib/RT/Asset.pm b/lib/RT/Asset.pm
index 25e6ec0..4ee46d6 100644
--- a/lib/RT/Asset.pm
+++ b/lib/RT/Asset.pm
@@ -1,3 +1,51 @@
+# BEGIN BPS TAGGED BLOCK {{{
+#
+# COPYRIGHT:
+#
+# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+#                                          <sales at bestpractical.com>
+#
+# (Except where explicitly superseded by other copyright notices)
+#
+#
+# LICENSE:
+#
+# This work is made available to you under the terms of Version 2 of
+# the GNU General Public License. A copy of that license should have
+# been provided with this software, but in any event can be snarfed
+# from www.gnu.org.
+#
+# This work is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301 or visit their web page on the internet at
+# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+#
+#
+# CONTRIBUTION SUBMISSION POLICY:
+#
+# (The following paragraph is not intended to limit the rights granted
+# to you to modify and distribute this software under the terms of
+# the GNU General Public License and is only of importance to you if
+# you choose to contribute your changes and enhancements to the
+# community by submitting them to Best Practical Solutions, LLC.)
+#
+# By intentionally submitting any modifications, corrections or
+# derivatives to this work, or any other work intended for use with
+# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+# you are the copyright holder for those contributions and you grant
+# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+# royalty-free, perpetual, license to use, copy, create derivative
+# works based on those contributions, and sublicense and distribute
+# those contributions and any derivatives thereof.
+#
+# END BPS TAGGED BLOCK }}}
+
 use strict;
 use warnings;
 use 5.10.1;
diff --git a/lib/RT/Assets.pm b/lib/RT/Assets.pm
index 39bcba5..b7ad98e 100644
--- a/lib/RT/Assets.pm
+++ b/lib/RT/Assets.pm
@@ -1,3 +1,51 @@
+# BEGIN BPS TAGGED BLOCK {{{
+#
+# COPYRIGHT:
+#
+# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+#                                          <sales at bestpractical.com>
+#
+# (Except where explicitly superseded by other copyright notices)
+#
+#
+# LICENSE:
+#
+# This work is made available to you under the terms of Version 2 of
+# the GNU General Public License. A copy of that license should have
+# been provided with this software, but in any event can be snarfed
+# from www.gnu.org.
+#
+# This work is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301 or visit their web page on the internet at
+# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+#
+#
+# CONTRIBUTION SUBMISSION POLICY:
+#
+# (The following paragraph is not intended to limit the rights granted
+# to you to modify and distribute this software under the terms of
+# the GNU General Public License and is only of importance to you if
+# you choose to contribute your changes and enhancements to the
+# community by submitting them to Best Practical Solutions, LLC.)
+#
+# By intentionally submitting any modifications, corrections or
+# derivatives to this work, or any other work intended for use with
+# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+# you are the copyright holder for those contributions and you grant
+# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+# royalty-free, perpetual, license to use, copy, create derivative
+# works based on those contributions, and sublicense and distribute
+# those contributions and any derivatives thereof.
+#
+# END BPS TAGGED BLOCK }}}
+
 use strict;
 use warnings;
 
diff --git a/lib/RT/Catalog.pm b/lib/RT/Catalog.pm
index 4faf07f..ba10822 100644
--- a/lib/RT/Catalog.pm
+++ b/lib/RT/Catalog.pm
@@ -1,3 +1,51 @@
+# BEGIN BPS TAGGED BLOCK {{{
+#
+# COPYRIGHT:
+#
+# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+#                                          <sales at bestpractical.com>
+#
+# (Except where explicitly superseded by other copyright notices)
+#
+#
+# LICENSE:
+#
+# This work is made available to you under the terms of Version 2 of
+# the GNU General Public License. A copy of that license should have
+# been provided with this software, but in any event can be snarfed
+# from www.gnu.org.
+#
+# This work is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301 or visit their web page on the internet at
+# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+#
+#
+# CONTRIBUTION SUBMISSION POLICY:
+#
+# (The following paragraph is not intended to limit the rights granted
+# to you to modify and distribute this software under the terms of
+# the GNU General Public License and is only of importance to you if
+# you choose to contribute your changes and enhancements to the
+# community by submitting them to Best Practical Solutions, LLC.)
+#
+# By intentionally submitting any modifications, corrections or
+# derivatives to this work, or any other work intended for use with
+# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+# you are the copyright holder for those contributions and you grant
+# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+# royalty-free, perpetual, license to use, copy, create derivative
+# works based on those contributions, and sublicense and distribute
+# those contributions and any derivatives thereof.
+#
+# END BPS TAGGED BLOCK }}}
+
 use strict;
 use warnings;
 
diff --git a/lib/RT/Catalogs.pm b/lib/RT/Catalogs.pm
index a202713..9fc6495 100644
--- a/lib/RT/Catalogs.pm
+++ b/lib/RT/Catalogs.pm
@@ -1,3 +1,51 @@
+# BEGIN BPS TAGGED BLOCK {{{
+#
+# COPYRIGHT:
+#
+# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+#                                          <sales at bestpractical.com>
+#
+# (Except where explicitly superseded by other copyright notices)
+#
+#
+# LICENSE:
+#
+# This work is made available to you under the terms of Version 2 of
+# the GNU General Public License. A copy of that license should have
+# been provided with this software, but in any event can be snarfed
+# from www.gnu.org.
+#
+# This work is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301 or visit their web page on the internet at
+# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+#
+#
+# CONTRIBUTION SUBMISSION POLICY:
+#
+# (The following paragraph is not intended to limit the rights granted
+# to you to modify and distribute this software under the terms of
+# the GNU General Public License and is only of importance to you if
+# you choose to contribute your changes and enhancements to the
+# community by submitting them to Best Practical Solutions, LLC.)
+#
+# By intentionally submitting any modifications, corrections or
+# derivatives to this work, or any other work intended for use with
+# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+# you are the copyright holder for those contributions and you grant
+# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+# royalty-free, perpetual, license to use, copy, create derivative
+# works based on those contributions, and sublicense and distribute
+# those contributions and any derivatives thereof.
+#
+# END BPS TAGGED BLOCK }}}
+
 use strict;
 use warnings;
 
diff --git a/lib/RT/URI/asset.pm b/lib/RT/URI/asset.pm
index 8595389..94a551b 100644
--- a/lib/RT/URI/asset.pm
+++ b/lib/RT/URI/asset.pm
@@ -1,3 +1,51 @@
+# BEGIN BPS TAGGED BLOCK {{{
+#
+# COPYRIGHT:
+#
+# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+#                                          <sales at bestpractical.com>
+#
+# (Except where explicitly superseded by other copyright notices)
+#
+#
+# LICENSE:
+#
+# This work is made available to you under the terms of Version 2 of
+# the GNU General Public License. A copy of that license should have
+# been provided with this software, but in any event can be snarfed
+# from www.gnu.org.
+#
+# This work is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301 or visit their web page on the internet at
+# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+#
+#
+# CONTRIBUTION SUBMISSION POLICY:
+#
+# (The following paragraph is not intended to limit the rights granted
+# to you to modify and distribute this software under the terms of
+# the GNU General Public License and is only of importance to you if
+# you choose to contribute your changes and enhancements to the
+# community by submitting them to Best Practical Solutions, LLC.)
+#
+# By intentionally submitting any modifications, corrections or
+# derivatives to this work, or any other work intended for use with
+# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+# you are the copyright holder for those contributions and you grant
+# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+# royalty-free, perpetual, license to use, copy, create derivative
+# works based on those contributions, and sublicense and distribute
+# those contributions and any derivatives thereof.
+#
+# END BPS TAGGED BLOCK }}}
+
 use strict;
 use warnings;
 

commit 44c082942a5bbc757b8c9184b6ebe48276933c46
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Mon Sep 23 15:14:27 2013 -0400

    Bump versions in inc/

diff --git a/inc/Module/Install/RTx.pm b/inc/Module/Install/RTx.pm
index c9fe996..ac04c79 100644
--- a/inc/Module/Install/RTx.pm
+++ b/inc/Module/Install/RTx.pm
@@ -8,7 +8,7 @@ no warnings 'once';
 
 use Module::Install::Base;
 use base 'Module::Install::Base';
-our $VERSION = '0.31';
+our $VERSION = '0.32';
 
 use FindBin;
 use File::Glob     ();
@@ -136,6 +136,7 @@ install ::
         $has_etc{acl}++;
     }
     if ( -e 'etc/initialdata' ) { $has_etc{initialdata}++; }
+    if ( -d 'etc/upgrade/' )    { $has_etc{upgrade}++; }
 
     $self->postamble("$postamble\n");
     unless ( $subdirs{'lib'} ) {
@@ -164,6 +165,12 @@ install ::
 .
         $self->postamble("initdb ::\n$initdb\n");
         $self->postamble("initialize-database ::\n$initdb\n");
+        if ($has_etc{upgrade}) {
+            print "To upgrade from a previous version of this extension, use 'make upgrade-database'\n";
+            my $upgradedb = qq|\t\$(NOECHO) \$(PERL) -Ilib -I"$local_lib_path" -I"$lib_path" -Minc::Module::Install -e"RTxInitDB(qw(upgrade \$(NAME) \$(VERSION)))"\n|;
+            $self->postamble("upgrade-database ::\n$upgradedb\n");
+            $self->postamble("upgradedb ::\n$upgradedb\n");
+        }
     }
 }
 
@@ -209,4 +216,4 @@ sub requires_rt {
 
 __END__
 
-#line 329
+#line 336
diff --git a/inc/Module/Install/RTx/Factory.pm b/inc/Module/Install/RTx/Factory.pm
index 76ab761..6776688 100644
--- a/inc/Module/Install/RTx/Factory.pm
+++ b/inc/Module/Install/RTx/Factory.pm
@@ -32,12 +32,19 @@ sub RTxInitDB {
         "-I$lib_path",
         "$RT::SbinPath/rt-setup-database",
         "--action"      => $action,
-        "--datadir"     => "etc",
+        ($action eq 'upgrade' ? () : ("--datadir"     => "etc")),
         (($action eq 'insert') ? ("--datafile"    => "etc/initialdata") : ()),
         "--dba"         => $RT::DatabaseAdmin || $RT::DatabaseUser,
         "--prompt-for-dba-password" => '',
         (RT::System->can('AddUpgradeHistory') ? ("--package" => $name, "--ext-version" => $version) : ()),
     );
+    # If we're upgrading against an RT which isn't at least 4.2 (has
+    # AddUpgradeHistory) then pass --package.  Upgrades against later RT
+    # releases will pick up --package from AddUpgradeHistory.
+    if ($action eq 'upgrade' and
+        not RT::System->can('AddUpgradeHistory')) {
+        push @args, "--package" => $name;
+    }
 
     print "$^X @args\n";
     (system($^X, @args) == 0) or die "...returned with error: $?\n";
diff --git a/inc/Module/Install/ReadmeFromPod.pm b/inc/Module/Install/ReadmeFromPod.pm
index 6a80818..b5e03c3 100644
--- a/inc/Module/Install/ReadmeFromPod.pm
+++ b/inc/Module/Install/ReadmeFromPod.pm
@@ -7,7 +7,7 @@ use warnings;
 use base qw(Module::Install::Base);
 use vars qw($VERSION);
 
-$VERSION = '0.20';
+$VERSION = '0.22';
 
 sub readme_from {
   my $self = shift;

commit 14936f0a476421464a17dc18e9c871bd5b5fe2ff
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Mon Sep 23 15:15:03 2013 -0400

    Enable plugin before installing tables, so the lifecycle exists
    
    Attempting to insert the initialdata before enabling the plugin results
    in errors because the 'assets' lifecycle is not in the configuration.
    Swap the oerder such that the plugin is added to @Plugins prior to
    installing the database.

diff --git a/README b/README
index 220af79..8029119 100644
--- a/README
+++ b/README
@@ -7,6 +7,13 @@ INSTALLATION
     make install
         May need root permissions
 
+    Edit your /opt/rt4/etc/RT_SiteConfig.pm
+        Add this line:
+
+            Set(@Plugins, qw(RT::Extension::Assets));
+
+        or add "RT::Extension::Assets" to your existing @Plugins line.
+
     make initdb
         Only run this the first time you install this module.
 
@@ -16,13 +23,6 @@ INSTALLATION
         If you are upgrading this module, check for upgrading instructions
         in case changes need to be made to your database.
 
-    Edit your /opt/rt4/etc/RT_SiteConfig.pm
-        Add this line:
-
-            Set(@Plugins, qw(RT::Extension::Assets));
-
-        or add "RT::Extension::Assets" to your existing @Plugins line.
-
     Configure portlets for RT's Homepage and User Summary
         If you would like the MyAssets or FindAsset portlets to be available
         on RT at a Glance and Dashboards, you will need to copy
diff --git a/lib/RT/Extension/Assets.pm b/lib/RT/Extension/Assets.pm
index 622679a..f203269 100644
--- a/lib/RT/Extension/Assets.pm
+++ b/lib/RT/Extension/Assets.pm
@@ -333,6 +333,14 @@ RT->AddJavaScript("RTx-Assets.js");
 
 May need root permissions
 
+=item Edit your /opt/rt4/etc/RT_SiteConfig.pm
+
+Add this line:
+
+    Set(@Plugins, qw(RT::Extension::Assets));
+
+or add C<RT::Extension::Assets> to your existing C<@Plugins> line.
+
 =item make initdb
 
 Only run this the first time you install this module.
@@ -343,14 +351,6 @@ in your database.
 If you are upgrading this module, check for upgrading instructions
 in case changes need to be made to your database.
 
-=item Edit your /opt/rt4/etc/RT_SiteConfig.pm
-
-Add this line:
-
-    Set(@Plugins, qw(RT::Extension::Assets));
-
-or add C<RT::Extension::Assets> to your existing C<@Plugins> line.
-
 =item Configure portlets for RT's Homepage and User Summary
 
 If you would like the MyAssets or FindAsset portlets to be available on

commit a752139a327ebf658a4866f022693f0fa47b83b0
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Mon Sep 23 15:24:02 2013 -0400

    Swap to the new Plugin() line; since Assets is 4.2+, it is guaranteed to exist

diff --git a/README b/README
index 8029119..6c0cd4d 100644
--- a/README
+++ b/README
@@ -10,9 +10,7 @@ INSTALLATION
     Edit your /opt/rt4/etc/RT_SiteConfig.pm
         Add this line:
 
-            Set(@Plugins, qw(RT::Extension::Assets));
-
-        or add "RT::Extension::Assets" to your existing @Plugins line.
+            Plugin( "RT::Extension::Assets" );
 
     make initdb
         Only run this the first time you install this module.
diff --git a/lib/RT/Extension/Assets.pm b/lib/RT/Extension/Assets.pm
index f203269..a141566 100644
--- a/lib/RT/Extension/Assets.pm
+++ b/lib/RT/Extension/Assets.pm
@@ -337,9 +337,7 @@ May need root permissions
 
 Add this line:
 
-    Set(@Plugins, qw(RT::Extension::Assets));
-
-or add C<RT::Extension::Assets> to your existing C<@Plugins> line.
+    Plugin( "RT::Extension::Assets" );
 
 =item make initdb
 

commit 54e1940dfc0adac9a25905698bde040d78186c81
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Mon Sep 23 15:30:46 2013 -0400

    Tag lib/RT/Extension/Assets.pm and update year

diff --git a/README b/README
index 220af79..f69f8ce 100644
--- a/README
+++ b/README
@@ -89,7 +89,7 @@ BUGS
     or bug-RT-Extension-Assets at rt.cpan.org.
 
 LICENSE AND COPYRIGHT
-    This software is Copyright (c) 2012 by Best Practical Solutions
+    This software is Copyright (c) 2013 by Best Practical Solutions
 
     This is free software, licensed under:
 
diff --git a/lib/RT/Extension/Assets.pm b/lib/RT/Extension/Assets.pm
index 622679a..a193a63 100644
--- a/lib/RT/Extension/Assets.pm
+++ b/lib/RT/Extension/Assets.pm
@@ -1,3 +1,51 @@
+# BEGIN BPS TAGGED BLOCK {{{
+#
+# COPYRIGHT:
+#
+# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+#                                          <sales at bestpractical.com>
+#
+# (Except where explicitly superseded by other copyright notices)
+#
+#
+# LICENSE:
+#
+# This work is made available to you under the terms of Version 2 of
+# the GNU General Public License. A copy of that license should have
+# been provided with this software, but in any event can be snarfed
+# from www.gnu.org.
+#
+# This work is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301 or visit their web page on the internet at
+# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+#
+#
+# CONTRIBUTION SUBMISSION POLICY:
+#
+# (The following paragraph is not intended to limit the rights granted
+# to you to modify and distribute this software under the terms of
+# the GNU General Public License and is only of importance to you if
+# you choose to contribute your changes and enhancements to the
+# community by submitting them to Best Practical Solutions, LLC.)
+#
+# By intentionally submitting any modifications, corrections or
+# derivatives to this work, or any other work intended for use with
+# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+# you are the copyright holder for those contributions and you grant
+# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+# royalty-free, perpetual, license to use, copy, create derivative
+# works based on those contributions, and sublicense and distribute
+# those contributions and any derivatives thereof.
+#
+# END BPS TAGGED BLOCK }}}
+
 use strict;
 use warnings;
 package RT::Extension::Assets;
@@ -437,7 +485,7 @@ or L<bug-RT-Extension-Assets at rt.cpan.org>.
 
 =head1 LICENSE AND COPYRIGHT
 
-This software is Copyright (c) 2012 by Best Practical Solutions
+This software is Copyright (c) 2013 by Best Practical Solutions
 
 This is free software, licensed under:
 

commit f593668cbfc6de8558a01c61764619aca603f218
Merge: a752139 54e1940
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Mon Sep 23 15:31:12 2013 -0400

    Merge branch 'license-tagging'


commit 3aeea84e9ad02976c9f63bff4f86dbba2d6b5876
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Thu Sep 26 19:24:22 2013 -0400

    checkpoint

diff --git a/html/Asset/Search/Bulk.html b/html/Asset/Search/Bulk.html
index ef6edf4..5dd7078 100644
--- a/html/Asset/Search/Bulk.html
+++ b/html/Asset/Search/Bulk.html
@@ -139,7 +139,8 @@
 </form>
 
 <%INIT>
-$m->callback(ARGSRef => \%ARGS, CallbackName => 'Initial');
+my @results;
+$m->callback(ARGSRef => \%ARGS, Results => \@results, CallbackName => 'Initial');
 
 my $catalog_obj = LoadDefaultCatalog($ARGS{'Catalog'} || '');
 $ARGS{'Catalog'} = $catalog_obj->Id;
@@ -158,8 +159,7 @@ delete $ARGS{$_} foreach grep { $ARGS{$_} =~ /^$/ } keys %ARGS;
 
 $DECODED_ARGS->{'UpdateAssetAll'} = 1 unless @UpdateAsset;
 
-my @results;
-if ( $Update ) {
+if ( $ARGS{Update} ) {
     my @attributes  = $asset->WritableAttributes;
     @attributes = grep exists $ARGS{ 'Update'. $_ }, @attributes;
     my %basics = map { $_ => $ARGS{ 'Update'. $_ } } @attributes;
@@ -187,6 +187,5 @@ if ( $Update ) {
 }
 </%INIT>
 <%ARGS>
-$Update => 0
 @UpdateAsset => ()
 </%ARGS>

commit cb4582f3311bf2704a2307933984826befb808be
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Thu Sep 26 20:07:19 2013 -0400

    Prevent undef warning if there are no query params

diff --git a/html/Callbacks/RT-Extension-Assets/Elements/Tabs/Privileged b/html/Callbacks/RT-Extension-Assets/Elements/Tabs/Privileged
index ce64174..227ecf7 100644
--- a/html/Callbacks/RT-Extension-Assets/Elements/Tabs/Privileged
+++ b/html/Callbacks/RT-Extension-Assets/Elements/Tabs/Privileged
@@ -54,7 +54,7 @@ my $query_string = sub {
     my %args = @_;
     my $u    = URI->new();
     $u->query_form(map { $_ => $args{$_} } sort keys %args);
-    return $u->query;
+    return $u->query || '';
 };
 
 # Top level Assets menu

commit 81b6b7d81b39df300ee2e9151909c527112d4e10
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Thu Sep 26 20:07:42 2013 -0400

    Use   to prevent awkward word wrapping

diff --git a/html/Elements/RT__Asset/ColumnMap b/html/Elements/RT__Asset/ColumnMap
index 37a52c1..b183c5c 100644
--- a/html/Elements/RT__Asset/ColumnMap
+++ b/html/Elements/RT__Asset/ColumnMap
@@ -100,7 +100,7 @@ my $COLUMN_MAP = {
             my $Query = "RefersTo = 'asset:" . $Asset->id . "'";
             $Query .= " AND (" . join(" OR ", map { "Status = '$_'" } RT::Queue->ActiveStatusArray) . ")";
             my $SearchURL = RT->Config->Get('WebPath') . '/Search/Results.html?' . $m->comp('/Elements/QueryString', Query => $Query);
-            return \'[ <a href="',$SearchURL,\'">Active tickets</a> ]';
+            return \'[ <a href="',$SearchURL,\'">Active tickets</a> ]';
         }
     },
     InactiveTickets => {
@@ -110,7 +110,7 @@ my $COLUMN_MAP = {
             my $Query = "RefersTo = 'asset:" . $Asset->id . "'";
             $Query .= " AND (" . join(" OR ", map { "Status = '$_'" } RT::Queue->InactiveStatusArray) . ")";
             my $SearchURL = RT->Config->Get('WebPath') . '/Search/Results.html?' . $m->comp('/Elements/QueryString', Query => $Query);
-            return \'[ <a href="',$SearchURL,\'">Inactive tickets</a> ]';
+            return \'[ <a href="',$SearchURL,\'">Inactive tickets</a> ]';
         }
     },
 };

commit a25a058805c0ec0d9ece257efcc4db47605f30d3
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Thu Sep 26 20:08:20 2013 -0400

    Revert "checkpoint"
    
    This reverts commit 3aeea84e9ad02976c9f63bff4f86dbba2d6b5876, which was
    missing a commit message.

diff --git a/html/Asset/Search/Bulk.html b/html/Asset/Search/Bulk.html
index 5dd7078..ef6edf4 100644
--- a/html/Asset/Search/Bulk.html
+++ b/html/Asset/Search/Bulk.html
@@ -139,8 +139,7 @@
 </form>
 
 <%INIT>
-my @results;
-$m->callback(ARGSRef => \%ARGS, Results => \@results, CallbackName => 'Initial');
+$m->callback(ARGSRef => \%ARGS, CallbackName => 'Initial');
 
 my $catalog_obj = LoadDefaultCatalog($ARGS{'Catalog'} || '');
 $ARGS{'Catalog'} = $catalog_obj->Id;
@@ -159,7 +158,8 @@ delete $ARGS{$_} foreach grep { $ARGS{$_} =~ /^$/ } keys %ARGS;
 
 $DECODED_ARGS->{'UpdateAssetAll'} = 1 unless @UpdateAsset;
 
-if ( $ARGS{Update} ) {
+my @results;
+if ( $Update ) {
     my @attributes  = $asset->WritableAttributes;
     @attributes = grep exists $ARGS{ 'Update'. $_ }, @attributes;
     my %basics = map { $_ => $ARGS{ 'Update'. $_ } } @attributes;
@@ -187,5 +187,6 @@ if ( $ARGS{Update} ) {
 }
 </%INIT>
 <%ARGS>
+$Update => 0
 @UpdateAsset => ()
 </%ARGS>

commit 6b7ee5d1f16318c05eb7fd7f39bb289ca7f00694
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Thu Sep 26 20:09:07 2013 -0400

    Allow Initial callback to adjust results, as well as prevent updates
    
    This is the same commit as 3aeea84, but with a commit message.

diff --git a/html/Asset/Search/Bulk.html b/html/Asset/Search/Bulk.html
index ef6edf4..5dd7078 100644
--- a/html/Asset/Search/Bulk.html
+++ b/html/Asset/Search/Bulk.html
@@ -139,7 +139,8 @@
 </form>
 
 <%INIT>
-$m->callback(ARGSRef => \%ARGS, CallbackName => 'Initial');
+my @results;
+$m->callback(ARGSRef => \%ARGS, Results => \@results, CallbackName => 'Initial');
 
 my $catalog_obj = LoadDefaultCatalog($ARGS{'Catalog'} || '');
 $ARGS{'Catalog'} = $catalog_obj->Id;
@@ -158,8 +159,7 @@ delete $ARGS{$_} foreach grep { $ARGS{$_} =~ /^$/ } keys %ARGS;
 
 $DECODED_ARGS->{'UpdateAssetAll'} = 1 unless @UpdateAsset;
 
-my @results;
-if ( $Update ) {
+if ( $ARGS{Update} ) {
     my @attributes  = $asset->WritableAttributes;
     @attributes = grep exists $ARGS{ 'Update'. $_ }, @attributes;
     my %basics = map { $_ => $ARGS{ 'Update'. $_ } } @attributes;
@@ -187,6 +187,5 @@ if ( $Update ) {
 }
 </%INIT>
 <%ARGS>
-$Update => 0
 @UpdateAsset => ()
 </%ARGS>

commit 934dab06f8e216b11ecf7c6331d9a085a00f95f3
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Fri Sep 27 16:21:10 2013 -0400

    Set the "inverse" class on titlebox titles, which makes them render well on rudder

diff --git a/html/Asset/Create.html b/html/Asset/Create.html
index f6932ec..308af0e 100644
--- a/html/Asset/Create.html
+++ b/html/Asset/Create.html
@@ -63,11 +63,11 @@
 <div id="Asset-Create-basics">
 <a name="basics"></a>
 
-  <&| /Widgets/TitleBox, title => loc("Basics"), class => "asset-basics" &>
+  <&| /Widgets/TitleBox, title => loc("Basics"), class => "asset-basics", title_class => "inverse" &>
     <& Elements/EditBasics, %ARGS, AssetObj => $asset, CatalogObj => $catalog &>
   </&>
 
-  <&| /Widgets/TitleBox, title => loc("People"), class => "asset-people" &>
+  <&| /Widgets/TitleBox, title => loc("People"), class => "asset-people", title_class => "inverse" &>
     <& Elements/EditPeople, %ARGS, AssetObj => $asset &>
   </&>
 
@@ -75,7 +75,7 @@
 
 <div id="Asset-Create-details">
 <a name="details"></a>
-  <&| /Widgets/TitleBox, title => loc("Links"), class => "asset-links" &>
+  <&| /Widgets/TitleBox, title => loc("Links"), class => "asset-links", title_class => "inverse" &>
     <& /Elements/AddLinks,
         Object          => $asset,
         CustomFields    => $catalog->AssetCustomFields &>
@@ -83,6 +83,7 @@
 
   <& /Elements/EditCustomFieldCustomGroupings,
         Object => $asset,
+        TitleBoxARGS => { title_class => "inverse" },
         CustomFieldGenerator => sub { $catalog->AssetCustomFields } &>
 </div>
 
diff --git a/html/Asset/Elements/ShowSummary b/html/Asset/Elements/ShowSummary
index 1c1a8be..34ef997 100644
--- a/html/Asset/Elements/ShowSummary
+++ b/html/Asset/Elements/ShowSummary
@@ -66,7 +66,7 @@ for my $section (@sections) {
 }
 </%init>
 % for my $section (@sections) {
-<&| /Widgets/TitleBox, title => loc($section), title_href => $link{$section}, class => "asset-\L$section" &>
+<&| /Widgets/TitleBox, title => loc($section), title_href => $link{$section}, title_class => "inverse", class => "asset-\L$section" &>
     <& "Show$section", AssetObj => $AssetObj &>
 </&>
 % }
@@ -74,4 +74,5 @@ for my $section (@sections) {
 <& /Elements/ShowCustomFieldCustomGroupings,
      Object => $AssetObj,
      title_href => RT->Config->Get("WebPath") . "/Asset/ModifyCFs.html",
+     TitleBoxARGS => { title_class => "inverse" },
  &>
diff --git a/html/Asset/Modify.html b/html/Asset/Modify.html
index 7ff4646..9e9ccd6 100644
--- a/html/Asset/Modify.html
+++ b/html/Asset/Modify.html
@@ -54,11 +54,11 @@
   <input type="hidden" name="id" value="<% $asset->id %>">
   <input type="hidden" name="DisplayAfter" value="<% $DisplayAfter ? 1 : 0 %>">
 
-  <&| /Widgets/TitleBox, title => loc("Basics"), class => "asset-basics" &>
+  <&| /Widgets/TitleBox, title => loc("Basics"), class => "asset-basics", title_class => "inverse" &>
     <& Elements/EditBasics, %ARGS, AssetObj => $asset &>
   </&>
 
-  <&| /Widgets/TitleBox, title => loc("Custom Fields"), class => "asset-info-cfs" &>
+  <&| /Widgets/TitleBox, title => loc("Custom Fields"), class => "asset-info-cfs", title_class => "inverse" &>
     <& /Elements/EditCustomFields, Object => $asset, Grouping => '' &>
   </&>
 
diff --git a/html/Asset/ModifyDates.html b/html/Asset/ModifyDates.html
index 4693cb4..a5a3dd7 100755
--- a/html/Asset/ModifyDates.html
+++ b/html/Asset/ModifyDates.html
@@ -53,7 +53,7 @@
 <form method="post" enctype="multipart/form-data" id="ModifyAssetDates" action="ModifyDates.html">
   <input type="hidden" name="id" value="<% $asset->id %>">
 
-  <&| /Widgets/TitleBox, title => loc("Dates"), class => "asset-dates" &>
+  <&| /Widgets/TitleBox, title => loc("Dates"), class => "asset-dates", title_class => "inverse" &>
     <& Elements/EditDates, %ARGS, AssetObj => $asset &>
   </&>
 
diff --git a/html/Asset/ModifyLinks.html b/html/Asset/ModifyLinks.html
index 5758f97..79f004d 100755
--- a/html/Asset/ModifyLinks.html
+++ b/html/Asset/ModifyLinks.html
@@ -53,7 +53,7 @@
 <form method="post" enctype="multipart/form-data" id="ModifyAssetLinks" action="ModifyLinks.html">
   <input type="hidden" name="id" value="<% $asset->id %>">
 
-  <&| /Widgets/TitleBox, title => loc("Links"), class => "asset-links" &>
+  <&| /Widgets/TitleBox, title => loc("Links"), class => "asset-links", title_class => "inverse" &>
     <& /Elements/EditLinks, %ARGS, Object => $asset, Merge => 0 &>
   </&>
 
diff --git a/html/Asset/ModifyPeople.html b/html/Asset/ModifyPeople.html
index a802167..d781353 100755
--- a/html/Asset/ModifyPeople.html
+++ b/html/Asset/ModifyPeople.html
@@ -55,7 +55,7 @@
 <form method="post" enctype="multipart/form-data" id="ModifyAssetPeople" action="ModifyPeople.html">
   <input type="hidden" name="id" value="<% $asset->id %>">
 
-  <&| /Widgets/TitleBox, title => loc("People"), class => "asset-people" &>
+  <&| /Widgets/TitleBox, title => loc("People"), class => "asset-people", title_class => "inverse" &>
     <table width="100%" class="edit">
       <tr>
         <td width="30%"><& /Elements/Assets/EditPeople, %ARGS, Object => $asset &></td>
diff --git a/html/Asset/Search/Bulk.html b/html/Asset/Search/Bulk.html
index 5dd7078..ee6d626 100644
--- a/html/Asset/Search/Bulk.html
+++ b/html/Asset/Search/Bulk.html
@@ -73,7 +73,7 @@
     CheckAll => 1, ClearAll => 1,
 &>
 
-<&| /Widgets/TitleBox, title => loc("Basics"), class => "asset-basics" &>
+<&| /Widgets/TitleBox, title => loc("Basics"), class => "asset-basics", title_class => "inverse" &>
 <table>
   <tr class="asset-catalog">
     <td class="label"><label for="UpdateCatalog"><&|/l&>Catalog</&></label></td>
@@ -94,7 +94,7 @@
 </table>
 </&>
 
-<&| /Widgets/TitleBox, title => loc("People"), class => "asset-people" &>
+<&| /Widgets/TitleBox, title => loc("People"), class => "asset-people", title_class => "inverse" &>
 <table>
 % for my $rname ( $asset->Roles( ACLOnly => 0 ) ) {
 % my $role = $asset->Role( $rname );
diff --git a/html/Ticket/Elements/ShowAssets b/html/Ticket/Elements/ShowAssets
index dea5f74..970d180 100644
--- a/html/Ticket/Elements/ShowAssets
+++ b/html/Ticket/Elements/ShowAssets
@@ -106,7 +106,8 @@ $m->callback(
 </%init>
 <&| /Widgets/TitleBox,
     title => loc('Assets'),
-    class => 'ticket-assets'
+    class => 'ticket-assets',
+    title_class => "inverse",
     &>
 
 <form action="<% RT->Config->Get("WebPath") %>/Ticket/Display.html" method="POST" enctype="multipart/form-data">
diff --git a/html/Ticket/Elements/ShowAssetsOnCreate b/html/Ticket/Elements/ShowAssetsOnCreate
index 0793704..1b359a6 100644
--- a/html/Ticket/Elements/ShowAssetsOnCreate
+++ b/html/Ticket/Elements/ShowAssetsOnCreate
@@ -98,7 +98,8 @@ $m->callback(
 </%init>
 <&| /Widgets/TitleBox,
     title => loc('Assets'),
-    class => 'ticket-assets'
+    class => 'ticket-assets',
+    title_class => "inverse",
     &>
 
 % $m->callback( CallbackName => "Start", Queue => $QueueObj, Assets => $assets );
diff --git a/static/css/RTx-Assets.css b/static/css/RTx-Assets.css
index e805360..e33bc7c 100644
--- a/static/css/RTx-Assets.css
+++ b/static/css/RTx-Assets.css
@@ -24,25 +24,6 @@
 .asset-links    .titlebox .titlebox-title .left { background-color: #316531; }
 .ticket-assets  .titlebox .titlebox-title .left { background-color: #316531; }
 
-.asset-basics   .titlebox-title .left, .asset-basics    .titlebox-title .left a,
-.asset-info-cfs .titlebox-title .left, .asset-info-cfs  .titlebox-title .left a,
-.asset-people   .titlebox-title .left, .asset-people    .titlebox-title .left a,
-.asset-dates    .titlebox-title .left, .asset-dates     .titlebox-title .left a,
-.asset-links    .titlebox-title .left, .asset-links     .titlebox-title .left a,
-.ticket-assets  .titlebox-title .left, .ticket-assets   .titlebox-title .left a {
-    color: white;
-}
-
-.aileron .asset-basics      .titlebox-title .widget a,
-.aileron .asset-info-cfs    .titlebox-title .widget a,
-.aileron .asset-people      .titlebox-title .widget a,
-.aileron .asset-dates       .titlebox-title .widget a,
-.aileron .asset-links       .titlebox-title .widget a,
-.aileron .ticket-assets     .titlebox-title .widget a {
-    /* lighter color for the toggle arrow sprite, just like aileron/ticket.css */
-    background-position: center -7px;
-}
-
 /* People display */
 #comp-Asset-Display .asset-people table {
     width: 100%;

commit b2ba810c507ceb8eb9ee3f31c5eceef7ee421a5e
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Mon Sep 30 14:37:44 2013 -0400

    Bump the version slightly; still pre-1.0

diff --git a/lib/RT/Extension/Assets.pm b/lib/RT/Extension/Assets.pm
index c2b8703..eed1a23 100644
--- a/lib/RT/Extension/Assets.pm
+++ b/lib/RT/Extension/Assets.pm
@@ -50,7 +50,7 @@ use strict;
 use warnings;
 package RT::Extension::Assets;
 
-our $VERSION = '0.01';
+our $VERSION = '0.90';
 
 # Loaded so they're available and rights are injected.
 use RT::Catalog;

commit 833855ed3a1d32e60b519a57c1db06b718d80455
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Wed Oct 16 14:04:23 2013 -0400

    Ensure that assets on the ticket display page are full-width

diff --git a/META.yml b/META.yml
index 5f3d176..7c546b7 100644
--- a/META.yml
+++ b/META.yml
@@ -32,4 +32,4 @@ requires:
   perl: 5.10.1
 resources:
   license: http://opensource.org/licenses/gpl-license.php
-version: 0.01
+version: 0.90
diff --git a/static/css/RTx-Assets.css b/static/css/RTx-Assets.css
index e33bc7c..f17d305 100644
--- a/static/css/RTx-Assets.css
+++ b/static/css/RTx-Assets.css
@@ -73,6 +73,9 @@
 }
 
 /* Asset summary */
+.ticket-assets form {
+    display: inherit;
+}
 
 .ticket-assets .related-tickets {
     margin-top: 1em;

commit 8e0ee647bc1fa4d4a2feaf74c72bca4392814c55
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Wed Oct 16 15:05:17 2013 -0400

    Move ModifyAssetSearch earlier, so it can modify the set of roles

diff --git a/html/User/Elements/AssetList b/html/User/Elements/AssetList
index 7cfb637..4df4c6c 100644
--- a/html/User/Elements/AssetList
+++ b/html/User/Elements/AssetList
@@ -47,6 +47,7 @@
 %# END BPS TAGGED BLOCK }}}
 <%init>
 my $assets = RT::Assets->new($session{CurrentUser});
+$m->callback( CallbackName => 'ModifyAssetSearch', %ARGS, Assets => $assets, Roles => \@Roles );
 for my $role (@Roles) {
     $assets->RoleLimit(
         TYPE        => $role,
@@ -54,7 +55,6 @@ for my $role (@Roles) {
         SUBCLAUSE   => "Role$role",
     );
 }
-$m->callback( CallbackName => 'ModifyAssetSearch', %ARGS, Assets => $assets );
 my $Format = q[
     '<b><a href="__WebHomePath__/Asset/Display.html?id=__id__">__id__</a></b>/TITLE:#',
     '<b><a href="__WebHomePath__/Asset/Display.html?id=__id__">__Name__</a></b>/TITLE:Name',

commit 8bf3d5fc7805f2b915349150c0b169bd4f6a48bf
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Wed Oct 16 15:37:12 2013 -0400

    Ensure that OCF SortORder is applied, not CF SortOrder

diff --git a/lib/RT/Extension/Assets.pm b/lib/RT/Extension/Assets.pm
index eed1a23..12c0f4a 100644
--- a/lib/RT/Extension/Assets.pm
+++ b/lib/RT/Extension/Assets.pm
@@ -360,6 +360,7 @@ RT->AddJavaScript("RTx-Assets.js");
           if defined $catalog;
 
         $self->LimitToLookupType( RT::Asset->CustomFieldLookupType );
+        $self->ApplySortOrder;
 
         unless ($self->ContextObject) {
             my $obj = RT::Catalog->new( $self->CurrentUser );

commit c7a403ff94b46159965cb72367ec1e7219b8cb1c
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Wed Oct 16 15:37:30 2013 -0400

    Split People out into their own box

diff --git a/html/Asset/Elements/AssetSearchBasics b/html/Asset/Elements/AssetSearchBasics
index f4ebe67..6830407 100644
--- a/html/Asset/Elements/AssetSearchBasics
+++ b/html/Asset/Elements/AssetSearchBasics
@@ -65,20 +65,6 @@
     <td class="value"><input type="text" id="Description" name="Description" value="<% $ARGS{Description} || ''%>" /></td>
     <td class="label"><label for="!Description"><&|/l&>but not</&></td>
     <td class="value"><input type="text" id="!Description" name="!Description" value="<% $ARGS{"!Description"} || ''%>" /></td></tr>
-% for my $role (RT::Asset->Roles) {
-<tr class="asset-role-<% CSSClass($role) %>">
-  <td class="label"><label for="Role.<% $role %>"><% loc($role) %></td>
-  <td class="value">
-      <input type="text" id="Role.<% $role %>" name="Role.<% $role %>"
-             data-autocomplete="Users" value="<% $ARGS{"Role.$role"} || '' %>" />
-  </td>
-  <td class="label"><label for="!Role.<% $role %>"><&|/l&>but not</&></td>
-  <td class="value">
-      <input type="text" id="!Role.<% $role %>" name="!Role.<% $role %>"
-             data-autocomplete="Users" value="<% $ARGS{"!Role.$role"} || '' %>" />
-  </td>
-</tr>
-% }
 % my $CFs = RT::CustomFields->new( $session{CurrentUser} );
 % $CFs->LimitToCatalog( $CatalogObj->Id );
 % $CFs->LimitToGrouping( "RT::Asset" => "Basics" );
@@ -94,7 +80,6 @@
 </tr>
 % }
 </table>
-<& /Elements/Submit, Label => loc('Search'), Name => 'SearchAssets' &>
 </&>
 <%args>
 $CatalogObj => undef
diff --git a/html/Asset/Elements/AssetSearchBasics b/html/Asset/Elements/AssetSearchPeople
similarity index 68%
copy from html/Asset/Elements/AssetSearchBasics
copy to html/Asset/Elements/AssetSearchPeople
index f4ebe67..90cb20c 100644
--- a/html/Asset/Elements/AssetSearchBasics
+++ b/html/Asset/Elements/AssetSearchPeople
@@ -45,26 +45,8 @@
 %# those contributions and any derivatives thereof.
 %#
 %# END BPS TAGGED BLOCK }}}
-<&| /Widgets/TitleBox, title => 'Basics' &>
+<&| /Widgets/TitleBox, title => 'People' &>
 <table>
-<tr class="asset-catalog"><td class="label"><label for="Catalog"><&|/l&>Catalog</&></label></td>
-    <td class="value" colspan="3">
-<& /Asset/Elements/SelectCatalog, Name => 'Catalog', CheckRight => "ShowCatalog",
-       Default => $ARGS{'Catalog'}, OnChange => "jQuery('#AssetSearch').submit()" &>
-</td></tr>
-<tr class="asset-status"><td class="label"><label for="Status"><&|/l&>Status</&></label></td>
-    <td class="value" colspan="3">
-<& /Asset/Elements/SelectStatus, Name => 'Status', CatalogObj => $CatalogObj, DefaultValue => 1,
-       Default => ($ARGS{'Status'} || '') &>
-</td></tr>
-<tr class="asset-name"><td class="label"><label for="Name"><&|/l&>Name</&></label></td>
-    <td class="value"><input type="text" id="Name" name="Name" value="<% $ARGS{Name} || ''%>" /></td>
-    <td class="label"><label for="!Name"><&|/l&>but not</&></td>
-    <td class="value"><input type="text" id="!Name" name="!Name" value="<% $ARGS{"!Name"} || ''%>" /></td></tr>
-<tr class="asset-description"><td class="label"><label for="Description"><&|/l&>Description</&></label></td>
-    <td class="value"><input type="text" id="Description" name="Description" value="<% $ARGS{Description} || ''%>" /></td>
-    <td class="label"><label for="!Description"><&|/l&>but not</&></td>
-    <td class="value"><input type="text" id="!Description" name="!Description" value="<% $ARGS{"!Description"} || ''%>" /></td></tr>
 % for my $role (RT::Asset->Roles) {
 <tr class="asset-role-<% CSSClass($role) %>">
   <td class="label"><label for="Role.<% $role %>"><% loc($role) %></td>
@@ -81,7 +63,7 @@
 % }
 % my $CFs = RT::CustomFields->new( $session{CurrentUser} );
 % $CFs->LimitToCatalog( $CatalogObj->Id );
-% $CFs->LimitToGrouping( "RT::Asset" => "Basics" );
+% $CFs->LimitToGrouping( "RT::Asset" => "People" );
 % while (my $cf = $CFs->Next) {
 % my $name = "CF.{" . $cf->Name . "}";
 % my $value  = ref($ARGS{$name}) ? $ARGS{$name}[0] : $ARGS{$name} || '';
@@ -94,7 +76,6 @@
 </tr>
 % }
 </table>
-<& /Elements/Submit, Label => loc('Search'), Name => 'SearchAssets' &>
 </&>
 <%args>
 $CatalogObj => undef
diff --git a/html/Asset/Search/index.html b/html/Asset/Search/index.html
index e199fde..8ae09f5 100644
--- a/html/Asset/Search/index.html
+++ b/html/Asset/Search/index.html
@@ -71,6 +71,9 @@ my %search = ProcessAssetsSearchArguments(
 <form action="<% RT->Config->Get('WebPath') %>/Asset/Search/index.html" id="AssetSearch">
 <&| /Widgets/TitleBox, title => "Search Assets" &>
 <& /Asset/Elements/AssetSearchBasics, %ARGS, CatalogObj => $catalog_obj &>
+<& /Asset/Elements/AssetSearchPeople, %ARGS, CatalogObj => $catalog_obj &>
+<& /Elements/Submit, Label => loc('Search'), Name => 'SearchAssets' &>
+
 % foreach my $group ( RT::CustomField->CustomGroupings( "RT::Asset" ), '' ) {
     <& /Asset/Elements/AssetSearchCFs, %ARGS, Grouping => $group,
        CatalogObj => $catalog_obj &>

commit 3068d879dd99edf03bdcd5633fa3142ffc236ef5
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Wed Oct 16 15:40:45 2013 -0400

    Ensure that CFs in Dates and Links also get a chance to show

diff --git a/html/Asset/Search/index.html b/html/Asset/Search/index.html
index 8ae09f5..3867774 100644
--- a/html/Asset/Search/index.html
+++ b/html/Asset/Search/index.html
@@ -74,7 +74,7 @@ my %search = ProcessAssetsSearchArguments(
 <& /Asset/Elements/AssetSearchPeople, %ARGS, CatalogObj => $catalog_obj &>
 <& /Elements/Submit, Label => loc('Search'), Name => 'SearchAssets' &>
 
-% foreach my $group ( RT::CustomField->CustomGroupings( "RT::Asset" ), '' ) {
+% foreach my $group ( 'Dates', 'Links', RT::CustomField->CustomGroupings( "RT::Asset" ), '' ) {
     <& /Asset/Elements/AssetSearchCFs, %ARGS, Grouping => $group,
        CatalogObj => $catalog_obj &>
 % }

commit 7096f3f9ee3ff3739b0b801e9f53174306dd027a
Author: Kevin Falcone <falcone at bestpractical.com>
Date:   Fri Nov 8 14:52:40 2013 -0500

    Display the number of assets found.
    
    When running a search, mimic Tickets which tells you "Found 42 tickets".

diff --git a/html/Asset/Search/index.html b/html/Asset/Search/index.html
index 3867774..4c7bae4 100644
--- a/html/Asset/Search/index.html
+++ b/html/Asset/Search/index.html
@@ -54,8 +54,12 @@ my %search = ProcessAssetsSearchArguments(
     Assets => $assets, Catalog => $catalog_obj, ARGSRef => \%ARGS,
 );
 
+my $title = ( $ARGS{'SearchAssets'} or $ARGS{q} ) ?
+      loc("Found [quant,_1,asset]",$assets->Count)
+    : loc("Assets");
+
 </%init>
-<& /Elements/Header, Title => loc("Assets") &>
+<& /Elements/Header, Title => $title &>
 <& /Elements/Tabs &>
 
 % if ( $ARGS{'SearchAssets'} or $ARGS{q} ){

commit e7841f96f7f8b5505ce29a47230ced1a0250cbae
Author: Jim Brandt <jbrandt at bestpractical.com>
Date:   Thu Dec 12 10:25:13 2013 -0500

    Update Assets Admin page with correct menu

diff --git a/html/Admin/Assets/index.html b/html/Admin/Assets/index.html
index 551ee60..b1318b2 100644
--- a/html/Admin/Assets/index.html
+++ b/html/Admin/Assets/index.html
@@ -47,4 +47,4 @@
 %# END BPS TAGGED BLOCK }}}
 <& /Elements/Header, Title => loc('Asset Administration') &>
 <& /Elements/Tabs &>
-<& /Elements/ListMenu, menu => Menu()->child('tools')->child('config')->child('assets') &>
+<& /Elements/ListMenu, menu => Menu()->child('admin')->child('assets') &>

commit 83c9423c68d78fac03fca41107c0b1e694616acc
Author: Jim Brandt <jbrandt at bestpractical.com>
Date:   Thu Dec 12 10:27:12 2013 -0500

    Add link descriptions for Asset Admin page

diff --git a/html/Callbacks/RT-Extension-Assets/Elements/Tabs/Privileged b/html/Callbacks/RT-Extension-Assets/Elements/Tabs/Privileged
index 227ecf7..c580072 100644
--- a/html/Callbacks/RT-Extension-Assets/Elements/Tabs/Privileged
+++ b/html/Callbacks/RT-Extension-Assets/Elements/Tabs/Privileged
@@ -76,11 +76,17 @@ $global_cfs->child("assets", title => loc("Assets"), path => "/Admin/Global/Cust
 my $config = Menu()->child("admin");
 if ($config) {
     my $assets   = $config->child("tools")->add_before("assets", title => loc("Assets"), path => "/Admin/Assets/");
-    my $catalogs = $assets->child("catalogs", title => loc("Catalogs"), path => "/Admin/Assets/Catalogs/");
+    my $catalogs = $assets->child("catalogs",
+        title => loc("Catalogs"),
+        description => loc("Modify asset catalogs"),
+        path => "/Admin/Assets/Catalogs/");
     $catalogs->child("select", title => loc("Select"), path => $catalogs->path);
     $catalogs->child("create", title => loc("Create"), path => "Create.html");
 
-    my $cfs = $assets->child("cfs", title => loc("Custom Fields"), path => "/Admin/CustomFields/?Type=" . RT::Asset->CustomFieldLookupType);
+    my $cfs = $assets->child("cfs",
+        title => loc("Custom Fields"),
+        description => loc("Modify asset custom fields"),
+        path => "/Admin/CustomFields/?Type=" . RT::Asset->CustomFieldLookupType);
     $cfs->child("select", title => loc("Select"), path => $cfs->path);
     $cfs->child("create", title => loc("Create"), path => "/Admin/CustomFields/Modify.html?Create=1&LookupType=" . RT::Asset->CustomFieldLookupType);
 }

commit db7dc90a4367a11c77443e430a1f47eac96bd0cd
Author: Jim Brandt <jbrandt at bestpractical.com>
Date:   Thu Dec 12 11:04:35 2013 -0500

    Pass correct parameter name Asset with asset it

diff --git a/html/Callbacks/RT-Extension-Assets/Elements/Tabs/SelfService b/html/Callbacks/RT-Extension-Assets/Elements/Tabs/SelfService
index de03baf..95e481c 100644
--- a/html/Callbacks/RT-Extension-Assets/Elements/Tabs/SelfService
+++ b/html/Callbacks/RT-Extension-Assets/Elements/Tabs/SelfService
@@ -65,7 +65,7 @@ if ($Path =~ m{^/SelfService/Asset/} and $DECODED_ARGS->{id}) {
 
     if (Menu->child("new")) {
         my $actions = $page->child("actions", title => loc("Actions"));
-        $actions->child("create-linked-ticket", title => loc("Create linked ticket"), path => "/SelfService/Asset/CreateLinkedTicket.html?id=$id");
+        $actions->child("create-linked-ticket", title => loc("Create linked ticket"), path => "/SelfService/Asset/CreateLinkedTicket.html?Asset=$id");
     }
 }
 </%init>

commit 625965ad60d40b985c3d37467e3f00c31c6540f1
Author: Jim Brandt <jbrandt at bestpractical.com>
Date:   Thu Dec 12 11:10:44 2013 -0500

    Don't set a DefaultCatalog by default
    
    Setting it to the name of the initial default catalog led to an
    error if you changed the name of the default catalog, which we
    recommned.
    
    Leave the Set line in the config file as an example, but comment
    it out.

diff --git a/etc/Assets_Config.pm b/etc/Assets_Config.pm
index 587a92f..c7a631b 100644
--- a/etc/Assets_Config.pm
+++ b/etc/Assets_Config.pm
@@ -72,7 +72,7 @@ last-selected catalog thereafter.
 
 =cut
 
-Set($DefaultCatalog, 'General assets');
+# Set($DefaultCatalog, 'General assets');
 
 =item C<$AssetSearchFields>
 

commit 26b7e8d50d5551688d435575289546bf952e535b
Author: Jim Brandt <jbrandt at bestpractical.com>
Date:   Fri Dec 13 09:50:32 2013 -0500

    Add rights section to default assets configuration
    
    Without rights, rights checks for status changes in the lifecycle
    default to ModifyTicket or DeleteTicket, which isn't right for
    asset changes.

diff --git a/etc/Assets_Config.pm b/etc/Assets_Config.pm
index c7a631b..c537e42 100644
--- a/etc/Assets_Config.pm
+++ b/etc/Assets_Config.pm
@@ -43,7 +43,9 @@ Set(%Lifecycles,
             stolen    => [qw(allocated)],
             deleted   => [qw(allocated)],
         },
-
+        rights => {
+            '* -> *'        => 'ModifyAsset',
+        },
         actions => {
             '* -> allocated' => { label => "Allocate" },
             '* -> in-use'    => { label => "Now in-use" },

commit 12bb15ea57bf0bd2dd31e56a41676742fcfb8434
Author: Jim Brandt <jbrandt at bestpractical.com>
Date:   Fri Dec 13 14:43:27 2013 -0500

    Don't show User Summary link on SelfService pages

diff --git a/html/Asset/Elements/ShowRoleMembers b/html/Asset/Elements/ShowRoleMembers
index 975f4ff..e0c72d7 100644
--- a/html/Asset/Elements/ShowRoleMembers
+++ b/html/Asset/Elements/ShowRoleMembers
@@ -56,7 +56,11 @@
 %     if ($Note) {
  <span class="note"><% $Note %></span>
 %     }
-</a><a class="user-summary" href="<%RT->Config->Get('WebPath')%>/User/Summary.html?id=<% $user->Id %>">User Summary</a></h3>
+</a>
+% if ( $session{'CurrentUser'}->Privileged ){
+<a class="user-summary" href="<%RT->Config->Get('WebPath')%>/User/Summary.html?id=<% $user->Id %>">User Summary</a>
+% }
+</h3>
 % }
   <div class="details">
 <& /User/Elements/UserInfo,

commit 2d9aaf8080a549c0b7213d6b230f68ede0b7a7a9
Author: Jim Brandt <jbrandt at bestpractical.com>
Date:   Fri Dec 13 14:45:39 2013 -0500

    Add tutorial config and initialdata files

diff --git a/etc/Tutorial_Configuration.txt b/etc/Tutorial_Configuration.txt
new file mode 100644
index 0000000..f32772e
--- /dev/null
+++ b/etc/Tutorial_Configuration.txt
@@ -0,0 +1,24 @@
+# Configuration for the assets tutorial.
+# Copy and paste into your RT_SiteConfig.pm to test.
+
+Set(
+    $HomepageComponents,
+    [
+        qw(QuickCreate Quicksearch MyAdminQueues MySupportQueues MyReminders RefreshHomepage Dashboards SavedSearches FindUser MyAssets FindAsset) # loc_qw
+    ]
+);
+
+# Move UserAssets to the location you want on the User Summary page
+
+Set(@UserSummaryPortlets, (qw/ExtraInfo CreateTicket UserAssets ActiveTickets InactiveTickets/));
+
+# See the CustomFieldGroupings docs in RT_Config.pm for more info.
+# http://bestpractical.com/docs/rt/latest/RT_Config.html
+
+Set(%CustomFieldGroupings,
+    'RT::Asset' => {
+        'Asset Details' => ['Serial Number', 'Manufacturer', 'Type',
+            'Tracking Number'],
+        'Dates'         => ['Support Expiration', 'Issue Date'],
+    },
+);
diff --git a/etc/tutorialdata b/etc/tutorialdata
new file mode 100644
index 0000000..2589e82
--- /dev/null
+++ b/etc/tutorialdata
@@ -0,0 +1,91 @@
+ at Users = (
+    {  Name         => 'asset-tutorial-staff',
+       RealName     => 'Asset Staff User',
+       Password     => 'password',
+       EmailAddress => "asset-tutorial-staff\@localhost",
+       Comments     => "Sample Staff user for Assets tutorial",
+       Privileged   => '1',
+    },
+    {  Name         => 'asset-tutorial-user1',
+       RealName     => 'Asset End User',
+       Password     => 'password',
+       EmailAddress => "asset-tutorial-user1\@localhost",
+       Comments     => "Sample end user for Assets tutorial",
+    },
+);
+
+ at CustomFields = (
+    {   Name       => 'Serial Number',
+        Type       => 'FreeformSingle',
+        LookupType => 'RT::Catalog-RT::Asset',
+        ApplyTo    => 'General assets',
+    },
+    {   Name       => 'Tracking Number',
+        Type       => 'FreeformSingle',
+        LookupType => 'RT::Catalog-RT::Asset',
+        ApplyTo    => 'General assets',
+    },
+    {   Name       => 'Manufacturer',
+        Type       => 'SelectSingle',
+        LookupType => 'RT::Catalog-RT::Asset',
+        ApplyTo    => 'General assets',
+        MaxValues  => 1,
+        RenderType => 'Dropdown',
+        Values      => [
+            { Name => 'Apple', SortOrder => 1 },
+            { Name => 'Dell', SortOrder => 2 }, ],
+    },
+    {   Name       => 'Type',
+        Type       => 'SelectSingle',
+        LookupType => 'RT::Catalog-RT::Asset',
+        ApplyTo    => 'General assets',
+        MaxValues  => 1,
+        RenderType => 'Dropdown',
+        Values      => [
+            { Name => 'Desktop Computer', SortOrder => 1 },
+            { Name => 'Laptop Computer', SortOrder => 2 },
+            { Name => 'Server', SortOrder => 3 },
+            { Name => 'Mobile Phone', SortOrder => 4 },
+            { Name => 'Software', SortOrder => 5 },
+            { Name => 'Other', SortOrder => 6 }, ],
+    },
+    {   Name    => 'Issue Date',
+        Type    => 'Date',
+        LookupType => 'RT::Catalog-RT::Asset',
+        ApplyTo    => 'General assets',
+    },
+    {   Name    => 'Support Expiration',
+        Type    => 'Date',
+        LookupType => 'RT::Catalog-RT::Asset',
+        ApplyTo    => 'General assets',
+    },
+);
+
+push @ACL, map {
+        {
+            Right       => $_,
+            GroupDomain => 'SystemInternal',
+            GroupType   => 'Privileged',
+            ObjectType  => 'RT::Catalog',
+            ObjectId    => 'General assets',
+        }
+    } qw(ShowAsset ShowCatalog SeeCustomField CreateAsset
+         ModifyAsset ModifyCustomField);
+
+push @ACL, map {
+        {
+            Right       => $_,
+            GroupDomain => 'RT::System-Role',
+            GroupType   => 'HeldBy',
+        }
+    } qw(ShowAsset ShowCatalog);
+
+push @Final, sub {
+    # Update default catalog name
+    my $catalog = RT::Catalog->new(RT->SystemUser);
+    my ($ret, $msg) = $catalog->Load('General assets');
+    RT::Logger->error("Unable to load General assets catalog: $msg")
+        unless $ret;
+    $catalog->SetName('IT Department Assets');
+    return;
+};

commit a9cdf289e2b0d18ee31ea3f054fc0327b301e10c
Author: Jim Brandt <jbrandt at bestpractical.com>
Date:   Fri Dec 13 14:48:32 2013 -0500

    Add tutorial document
    
    Add as a module file to make it easier to find and link to
    on metacpan.

diff --git a/lib/RT/Extension/Assets/Tutorial.pm b/lib/RT/Extension/Assets/Tutorial.pm
new file mode 100644
index 0000000..0dd2838
--- /dev/null
+++ b/lib/RT/Extension/Assets/Tutorial.pm
@@ -0,0 +1,328 @@
+
+=head1 Introduction
+
+This is a basic tutorial for setting up asset tracking in RT using Best 
+Practical's Assets extension. At the end, you'll have a basic configuration 
+that lets you add assets, search for them, link them to tickets, etc.
+
+=begin HTML
+
+<p><img src="http://static.bestpractical.com/images/assets/asset-search.png" 
+alt="Asset Search Results" /></p>
+
+=end HTML
+
+You can follow along with the tutorial and try setting things up yourself to 
+get a feel for all of the administrative controls. If you want to get a jump 
+start, the files to set up this basic configuration are provided in the 
+L<RT::Extension::Assets> distribution in the F<etc> directory. For 
+configuration, look in F<etc/Tutorial_Configuration.txt>. You can copy all or 
+part and paste it in your F<RT_SiteConfig.pm>.
+
+To load the test catalog, custom fields, and users, add 
+C<RT::Extension::Assets> to your C<@Plugins> line after installing, then run 
+the following from your RT directory:
+
+    sbin/rt-setup-database --action insert --datafile \
+      local/plugins/RT-Extension-Assets/etc/tutorialdata
+
+This will change the default catalog name, create some users, and give those 
+users asset permissions. Only asset rights are granted, so you need to grant 
+additional rights if you want to experiment with creating tickets and linking 
+assets. The initial user passwords are 'password'. You should only run this on 
+a test RT instance as it is not intended to be used for configuring a 
+production system.
+
+=head1 Getting Started
+
+Install the extension following the instructions and some new tables will be 
+added to your RT database and the assets code will be installed. As with all 
+extensions, first add C<RT::Extension::Assets> to your C<@Plugins> line.
+
+There are a few configuration options you might set before starting. Assets 
+offers a C<$DefaultCatalog> feature that works similar to RT's 
+L<DefaultQueue|http://bestpractical.com/docs/rt/latest/RT_Config.html#DefaultQue
+ue>, but you can probably skip it for now since you don't have any catalogs yet.
+
+More interesting are some optional portlets you can activate to add asset data 
+to RT's pages. MyAssets and FindAsset portlets are available for placement on 
+RT at a Glance or in dashboards and a UserAssets portlet is available for the 
+user summary pages.
+
+These portlets are fairly self-explanitory and you can add them by finding 
+C<$HomepageComponents> and C<@UserSummaryPortlets> respectively in 
+F<RT_Config.pm>, copying to F<RT_SiteConfig.pm>, and adding the portlets you 
+want. There are also examples in the tutorial sample configuration file. Note 
+that C<$HomepageComponents> makes the portlets available, but doesn't put them 
+on RT at a Glance. To add them, just click the Edit link on the upper righthand 
+corner of the homepage. C<@UserSummaryPortlets> does automatically add the 
+"Assigned Assets" portlet to the User Summary page. It will appear based on the 
+position in the configuration, so just place it in the list where you want it 
+to appear.
+
+Once you have your configuration complete, restart your server and you're ready 
+to go.
+
+=head1 Catalogs
+
+For the initial configuration, we'll log in as RT's root user so we have full 
+rights on the asset configuration. You could also create an "Asset Admin" group 
+and assign appropriate rights to allow other users to manage catalogs.
+
+When you log in you'll see a new Assets menu, but before looking there we need 
+to look at catalogs and some other configuration. Catalogs are to assets what 
+queues are to tickets, so if you've used RT, the relationship should be fairly 
+familiar. Similar to the General queue, a "General assets" catalog is provided 
+to get you started. You can see it at Admin > Assets > Catalogs.
+
+We're going to use the default, but change it to a name more appropriate for 
+our use. Clicking on the asset name brings us to the catalog edit page and we 
+can update the name to "IT Department Assets". You can update the description 
+if you like as well.
+
+=begin HTML
+
+<p><img src="http://static.bestpractical.com/images/assets/edit-catalog.png" 
+alt="Edit Catalog" /></p>
+
+=end HTML
+
+You'll also notice that catalogs have a lifecycle just like queues. The assets 
+extension comes with a default assets lifecycle, but just like queues you can 
+create new ones with custom statuses and other configuration to allow RT to 
+reflect the states of your assets.
+
+You can find the asset lifecycle in the asset configuration file in your RT 
+installation at:
+
+    local/plugins/RT-Extension-Assets/etc/Assets_Config.pm
+
+The initial statuses are new, allocated, in-use, recycled, stolen, and deleted. 
+Depending on your process, you might add new ones like surplussed, donated, or 
+in-repair. To create a new asset lifecycle, just copy the default into 
+F<RT_SiteConfig.pm>, replace the top-level "assets" key with a new name, and 
+make your changes.
+
+=head1 Asset Custom Fields
+
+Next we need to create some custom fields to hold our asset metadata. You can 
+find asset custom fields at Admin > Assets > Custom Fields and they work just 
+like custom fields for other RT objects.
+
+=begin HTML
+
+<p><img src="http://static.bestpractical.com/images/assets/asset-cfs.png" 
+alt="Asset Custom Fields" /></p>
+
+=end HTML
+
+The extension will automatically provide some core values for your assets. Each 
+asset can have a Name and Description and, like tickets, they have statuses 
+based on the lifecycle configuration. You can use Name and Description however 
+you want and they are not required. However, many of the asset pages use these 
+fields so it's best to provide a descriptive name to make it easy for people 
+working in RT to identify the asset quickly. The manufacturer's product name 
+can be convenient (e.g., '15" Macbook Pro').
+
+Assets come with three user fields you can associate with an asset: Owner, Held 
+By, and Contact. These are provided to cover different types of assets, from 
+laptops to servers to software, and different asset management situations. 
+Owner can hold the user who bought the asset, maybe the head of the department 
+where the budget came from. Held by is who the asset is assigned to. Laptops 
+are assigned to a user and servers might be held (or managed) by the system 
+administrators. Contact can be used to set a manager who might need to know 
+about needed system updates or equipment with expiring support. Like tickets, 
+these roles give you places to attach rights, so use them however they work 
+best for you.
+
+Any other information you want to track will need custom fields. We'll start 
+with a few basic fields:
+
+=over
+
+=item * Serial Number (enter one value)
+
+The serial number from the asset.
+
+=item * Tracking Number (enter one value)
+
+An internal tracking number. RT will assign an asset ID as well, but you may 
+have other systems to integrate with or already have a way to assign asset ids 
+for accounting purposes.
+
+=item * Manufacturer (dropdown)
+
+Company that made the asset.
+
+=item * Type (dropdown)
+
+Is it a laptop, server, or cell phone?
+
+=item * Issue Date (date)
+
+When the asset was given to the owner (or held by) person.
+
+Assets keep a transaction history like tickets, so you may be able pull this 
+information from the "owner set to X" transaction. Creating a separate field 
+makes it easier to report on.
+
+=item * Support Expiration (date)
+
+When the current support contract expires.
+
+=back
+
+=head1 Custom Field Grouping
+
+Any custom fields you create will be displayed on the asset display page in a 
+default "Custom Fields" section. That may be sufficient, but assets also 
+supports RT's new custom field grouping feature, so we can group together some 
+similar custom fields and give them a custom name. If we add the following to 
+F<RT_SiteConfig.pm>:
+
+    Set(%CustomFieldGroupings,
+        'RT::Asset' => {
+            'Asset Details' => ['Serial Number', 'Manufacturer', 'Type',
+                'Tracking Number'],
+            'Dates'                 => ['Support Expiration', 'Issue Date'],
+        },
+    );
+
+and restart RT, the dates will be tacked on the end of the Dates portlet and we 
+get an Asset Details label on the other custom fields.
+
+=begin HTML
+
+<p><img 
+src="http://static.bestpractical.com/images/assets/asset-date-details.png" 
+alt="Asset Date and Details Display" /></p>
+
+=end HTML
+
+=head1 Asset Rights
+
+Now we've got the basic configuration in place to start recording asset data. 
+Next we need to assign some rights so people can view and edit asset 
+information. Our staff are all privileged users so we'll grant all view and 
+modify rights on our catalog to the Privileged role. We'll also include rights 
+to view and modify the catalog's custom fields, although you could set these 
+rights individually on each custom field if you wanted to allow users to see 
+some but not others.
+
+Similar to queues, you can set rights at the catalog level. Go to Admin > 
+Assets > Catalogs and click on the catalog you want to edit. Click Group Rights 
+in the submenu to assign asset rights to groups like the system Privileged 
+group.
+
+=begin HTML
+
+<p><img src="http://static.bestpractical.com/images/assets/catalog-rights.png" 
+alt="Catalog Rights" /></p>
+
+=end HTML
+
+We also want unprivileged users to be able to see their own assets to make it 
+easier to submit support requests. To give them just the Name and Description 
+on their own assets, we can grant SeeAssets and SeeCatalogs on the catalog to 
+the Held By role.
+
+All of the asset rights are described in the Assets documentation. You can get 
+much more detailed and fine-grained than this example, allowing selected groups 
+and users to view and modify multiple different asset custom fields across many 
+different catalogs.
+
+=head1 Working with Assets
+
+So now that we have all of that configuration done, what can we do? Here are a 
+few scenarios to give you some ideas.
+
+=head2 Add Assets to Your Catalogs
+
+To start, staff can now start adding assets to RT allowing you to manage what 
+you have, what state it's in, who currently has it, and when support expires. 
+You could set up an intake process to get new assets added as they come in, and 
+eventually have statuses updated as they are assigned, used, and eventually 
+cycled out.
+
+If you already have an asset database, even something simple like a 
+spreadsheet, you may be able to do an initial bulk import. Best Practical has 
+released L<RT::Extension::Assets::Import::CSV> which is a CSV import tool to 
+help you with this.
+
+=head2 Track Assets
+
+Your staff can now easily track work on assets by linking RT tickets to the 
+assets. Assume you have an issue with an asset, like a server needs a new power 
+supply. Your staff can use the asset search page to find the server. You'll 
+notice that the RT search box is context sensitive, so when you're on an asset 
+page, the search changes to Search Assets and you can search with that as well.
+
+Once you locate the server asset record, in the Actions menu you'll find 
+"Create linked ticket", which does just that. You select the queue and which 
+user to use from the asset as the Requestor, and you land on the ticket create 
+page with some information pre-filled.
+
+=begin HTML
+
+<p><img 
+src="http://static.bestpractical.com/images/assets/asset-ticket-create.png" 
+alt="Create Ticket for Asset Work" /></p>
+
+=end HTML
+
+As you can see in the screenshot, when you create a ticket with a linked asset, 
+you get an asset portlet on the create page and on the ticket display page as 
+well. If you navigate back to the asset, you'll see a link back to the ticket 
+in the Links section there. This gives you a record of all the tickets that 
+have been opened against this asset. If this is a common scenario for you, you 
+might even add a custom field on the ticket with the vendor tracking number of 
+the repair. During the repair, you might flip the asset to an 'in-repair' 
+status. Then when the ticket is resolved, flip it back to 'in-use'.
+
+=head2 End User Asset Tickets
+
+If an end user contacts us with some problems with their laptop, RT makes it 
+easy to find the correct laptop record and create a ticket for them. Since our 
+support staff do this frequently, they have added the Find User portlet to 
+their RT at a glance page and can quickly search for the user and go to their 
+User Summary page (new in RT 4.2).
+
+We have added the Assigned Assets portlet to the User Summary page, so the 
+laptop is right there on the page when we find the user. We can just click on 
+the asset, then use the "Create linked ticket" action as before to create the 
+new repair ticket.
+
+=head2 End User Self Service
+
+Assume we already assign passwords to our unprivileged users so they can use 
+RT's self service interface to submit tickets and they have basic permissions 
+to do so (SeeQueue on the designated queue, CreateTicket, etc.). Since we've 
+given some asset rights to unprivileged users, they can use RT's Self Service 
+interface to find their assets (e.g., laptops, cell phones, etc.) when 
+submitting support requests.
+
+When they log into the self service interface, they will see an Assets menu 
+that takes them to a page displaying assets assigned to them. In our example 
+configuration, this is based on the Held by setting we set when we gave out the 
+laptop. When they navigate to the asset, they will see the Actions menu with 
+the same "Create linked ticket" action our staff uses. When they click on that, 
+they'll end up on the simplified ticket create page for self service. When the 
+ticket is created, the laptop will already be linked to it, saving our staff 
+the work.
+
+=begin HTML
+
+<p><img 
+src="http://static.bestpractical.com/images/assets/asset-ticket-create.png" 
+alt="Create Ticket for Asset Work" /></p>
+
+=end HTML
+
+=head1 Summary
+
+This tutorial is only a quick overview showing how the assets extension can 
+help you track assets. There are many more features you'll find as you explore 
+the assets interface, like stacking multiple assets on a single ticket, bulk 
+update features similar to tickets, and the search interface. Have fun!
+
+1;

commit 6efb04bdad0c3454c486fa7b854428eb2a971745
Author: Jim Brandt <jbrandt at bestpractical.com>
Date:   Fri Dec 13 14:50:40 2013 -0500

    Check in images
    
    We'll host these on static.bestpractical.com, but check them
    in to track them with the extension and make them available
    locally for users.

diff --git a/doc/images/asset-cfs.png b/doc/images/asset-cfs.png
new file mode 100644
index 0000000..ebaf498
Binary files /dev/null and b/doc/images/asset-cfs.png differ
diff --git a/doc/images/asset-date-details.png b/doc/images/asset-date-details.png
new file mode 100644
index 0000000..4e8b21b
Binary files /dev/null and b/doc/images/asset-date-details.png differ
diff --git a/doc/images/asset-search.png b/doc/images/asset-search.png
new file mode 100644
index 0000000..debc158
Binary files /dev/null and b/doc/images/asset-search.png differ
diff --git a/doc/images/asset-ticket-create.png b/doc/images/asset-ticket-create.png
new file mode 100644
index 0000000..51f2fc5
Binary files /dev/null and b/doc/images/asset-ticket-create.png differ
diff --git a/doc/images/catalog-rights.png b/doc/images/catalog-rights.png
new file mode 100644
index 0000000..a4e9079
Binary files /dev/null and b/doc/images/catalog-rights.png differ
diff --git a/doc/images/edit-catalog.png b/doc/images/edit-catalog.png
new file mode 100644
index 0000000..9520930
Binary files /dev/null and b/doc/images/edit-catalog.png differ
diff --git a/doc/images/self-service-display.png b/doc/images/self-service-display.png
new file mode 100644
index 0000000..11dc3b5
Binary files /dev/null and b/doc/images/self-service-display.png differ

commit 12bec04b95fdce8866e2696209344124637a967f
Author: Jim Brandt <jbrandt at bestpractical.com>
Date:   Fri Dec 13 15:02:07 2013 -0500

    Move getting started docs into primary module file
    
    This will make it much easier to find on metacpan. We can
    move it back to docs when it becomes part of RT.

diff --git a/doc/getting-started.pod b/doc/getting-started.pod
deleted file mode 100644
index f048aca..0000000
--- a/doc/getting-started.pod
+++ /dev/null
@@ -1,205 +0,0 @@
-=encoding utf8
-
-=head1 Assets in RT
-
-Assets start as a small set of fundamental record data upon which you build
-custom fields (CFs) of any type you like to describe the assets you want to
-track.  By themselves, before you setup any CFs, assets are not very useful.
-
-Just like tickets are assigned to queues, assets are assigned to B<catalogs>.
-The default catalog is named "General assets", but we suggest you rename it and
-add additional catalogs to better fit your organization.
-
-You may want to use catalogs to separate assets into departments, general type
-of asset, hardware vs. software, etc.  Catalogs, like queues, are generally
-easiest to work with when there's more than few but less than many dozen.  The
-catalog of an asset should represent some fundamental quality of it (and many
-other assets!), that could just as easily be expressed as a custom field, but
-which is more important than other qualities for categorizing, sorting, and
-searching.
-
-=head2 Managing catalogs
-
-Catalogs are managed by RT adminstrators, or anyone with the L</AdminCatalog>
-right.  You can find the list of catalogs, create new catalogs, and manage
-existing ones under the Tools → Configuration → Assets → Catalogs menu.
-
-Currently you need to log out and log back in to see changes to catalogs in any
-of the catalog selection dropdowns.  This doesn't affect the catalog name
-displayed on individual asset pages.
-
-=head2 Adding fields
-
-You can see the current asset CFs by navigating to Tools → Configuration →
-Assets → Custom Fields.  From there you can use the "Create" link to create a
-new asset CF.  If you know you want to create a new CF right away, you can do
-so via Tools → Configuration → Assets → Custom Fields → Create.
-
-When creating a CF, be sure to select "Assets" in the "Applies To" dropdown.
-You'll also need to grant rights to the groups and/or roles which need to see
-the fields, otherwise they'll be hidden.  See the following section.
-
-Similar to ticket CFs, asset custom fields are added globally or to specific
-catalogs.  Only assets within those specific catalogs will have the CFs
-available.  After creating a CF, you'll need to visit the "Applies To" page to
-add it to the catalogs you want or make it global.
-
-=head2 Rights
-
-There are three rights controlling basic access to assets and two for
-catalogs.  Each right is grantable at the global level or individual catalog
-level, and grantable to system groups, asset roles, user groups, and individual
-users (just like ticket and queue rights).
-
-=head3 ShowAsset
-
-Allows viewing an asset record and it's core fields (but not CFs).  Without
-it, no assets can be seen.  Similar to ShowTicket.
-
-=head3 CreateAsset
-
-Allows creating assets and filling in the core fields (but not CFs).  Without
-it, no assets can be created.  Similar to CreateTicket.
-
-=head3 ModifyAsset
-
-Allows modifying existing assets and their core fields (but not CFs).  Without
-it, basic asset data cannot be modified after creation.  Similar to
-ModifyTicket.
-
-Most of your rights configuration will be on the CFs, and will likely need to
-be done for each CF.  This lets you fine tune which fields are visible to
-individual groups and/or roles of users.  Relevant CF rights are
-B<SeeCustomField> and B<ModifyCustomField>.
-
-Rights related to assets may also come from the L</Lifecycle statuses>
-configuration and restrict status transitions.
-
-=head3 ShowCatalog
-
-Allows seeing a catalog's name and other details when associated with assets.
-Without it, users will see "[a hidden catalog]" or a blank space where the
-catalog name would normally be.  Similar to SeeQueue.
-
-=head3 AdminCatalog
-
-Allows creating new catalogs and modifying all aspects of existing catalogs,
-including changing the CFs associated with the catalog, granting/revoking
-rights, and adding/removing role members.  This right should only be granted to
-administrators of RT.  Similar to AdminQueue.
-
-=head3 Typical configuration
-
-A typical configuration grants the system Privileged group the following:
-B<ShowAsset>, B<CreateAsset>, B<ModifyAsset>, and B<ShowCatalog> globally, and
-B<SeeCustomField> and B<ModifyCustomField> globally on all asset CFs.
-
-If you want self service users (Unprivileged) to be able to view the assets
-they hold, grant the Held By role B<ShowAsset> and B<ShowCatalog> globally and
-B<SeeCustomField> on the necessary asset CFs.
-
-=head2 People and Roles
-
-Just like tickets, assets have various roles which users and groups may be
-assigned to.  The intended usages of these roles are described below, but
-you're free to use them for whatever you'd like, of course.
-
-The roles provide ways to keep track of who is involved with each asset, as
-well as providing a place to grant rights that depend on the user's association
-with each asset.
-
-In addition to adding people to individual asset roles, you can also add role
-members at an entire catalog level.  These catalog-level roles are useful in
-cases when you might have an entire catalog of assets for which the same people
-should be the Contacts, or which are Held By the same group.  Unlike tickets
-where the queue watchers are invisible, catalog role members are visible
-because assets are generally much longer lived than tickets.  When a problem
-with an asset arises, it's easier to see who to create a ticket for.  On
-individual asset pages, catalog role members are shown with the text "(via this
-asset's catalog)" following each name.
-
-=head3 Owner
-
-The person responsible for the asset, perhaps the purchaser or manager.
-
-Restricted to a single user.  Not available at a catalog level.
-
-=head3 Held By
-
-The person or people who physically possess the asset or are actively using the
-asset (if it isn't physical).  This may be the same as the Contacts or may be
-different.  For example, a computer workstation may be "held by" a university
-professor, but the contact may be the IT staff member responsible for all
-assets in the professor's department.  This role is most similar to Requestor
-on tickets, although not equivalent.
-
-May be multiple users and/or groups.
-
-=head3 Contact
-
-The person or people who should be contacted with questions, problems,
-notifications, etc. about the asset.  Contacts share some of the same intended
-usages of both Requestors and Ccs on tickets.
-
-May be multiple users and/or groups.
-
-=head2 Lifecycle statuses
-
-One of the basic asset fields is "Status".  Similar to tickets, the valid
-statuses and their transitions and actions can be customized via RT's standard
-Lifecycles configuration (see "Lifecycles" in F<RT_Config.pm>).  The default
-lifecycle is named "assets".  You're free to modify it as much as you'd like,
-or add your own lifecycles.  Each catalog may have its own lifecycle.
-
-For the default "assets" configuration, see F<etc/Assets_Config.pm>.
-
-=head2 Field organization
-
-=head3 Groupings
-
-You can organize your asset CFs into visual and logical "groupings" as you see
-fit.  These groupings appear as separate boxes on the asset display page and
-become separate pages for editing (showing up in the per-asset menu).
-
-By default your CFs will appear in a B<Custom Fields> box on the asset display
-page and will be editable from a box of the same name on the B<Basics> editing
-page.
-
-Using the C<%CustomFieldGroupings> option (documented in F<etc/RT_Config.pm>),
-you can move individual CFs by name into one of the four built-in groupings
-(B<Basics>, B<People>, B<Dates>, and B<Links>) or create your own just by
-naming it.  An example, assuming a date CF named "Purchased" and two "enter one
-value" CFs named "Weight" and "Color":
-
-    # In etc/RT_SiteConfig.pm
-    Set(%CustomFieldGroupings,
-        'RT::Asset' => {
-            'Dates'                 => ['Purchased'],
-            'Physical Properties'   => ['Weight', 'Color'],
-        },
-    );
-
-This configuration snippet will move all three CFs out of the generic B<Custom
-Fields> box and into the B<Dates> box and a new box titled B<Physical
-Properties>.  The "Purchased" CF will be editable from the Dates page and a new
-page titled "Physical Properties" will appear in the menu to allow editing of
-the "Weight" and "Color" CFs.
-
-=head3 Ordering
-
-Within a box, CFs come after any built-in asset fields such as Name,
-Description, Created, Last Updated, etc.  The CFs themselves are ordered
-according to the sorting seen (and adjustable) on the global Asset Custom
-Fields page (Tools → Configuration → Global → Custom Fields → Assets) and the
-individual catalog Custom Fields pages (Tools → Configuration → Assets →
-Catalogs → (Pick one) → Custom Fields).
-
-Global asset CFs may be intermixed with per-catalog CFs with ordering.
-
-=head2 Importing existing data
-
-Another extension, L<RT::Extension::Assets::Import::CSV> provides tools to import
-new and update existing assets from a CSV dump.  Its configuration lets you
-map the fields in the CSV to the asset fields you've already created in RT.
-
-=cut
diff --git a/lib/RT/Extension/Assets.pm b/lib/RT/Extension/Assets.pm
index 12c0f4a..3cd63d9 100644
--- a/lib/RT/Extension/Assets.pm
+++ b/lib/RT/Extension/Assets.pm
@@ -404,7 +404,6 @@ If you would like the MyAssets or FindAsset portlets to be available on
 RT at a Glance and Dashboards, you will need to copy $HomepageComponents
 from RT_Config.pm to RT_SiteConfig.pm and add them to the list.
 
-
 If you would like the UserAssets portlet to show up on the User
 Summary page, you will need to copy @UserSummaryPortlets from RT_Config.pm to
 RT_SiteConfig.pm and add UserAssets to the list.
@@ -427,6 +426,208 @@ searching for assets; thereafter, it will defaultto the last-searched
 catalog. You may use either the catalog's name or its ID. This only
 affects the catalog selection on the asset search interface.
 
+=head1 USAGE
+
+Assets start as a small set of fundamental record data upon which you build
+custom fields (CFs) of any type you like to describe the assets you want to
+track.  By themselves, before you setup any CFs, assets are not very useful.
+
+Just like tickets are assigned to queues, assets are assigned to B<catalogs>.
+The default catalog is named "General assets", but we suggest you rename it and
+add additional catalogs to better fit your organization.
+
+You may want to use catalogs to separate assets into departments, general type
+of asset, hardware vs. software, etc.  Catalogs, like queues, are generally
+easiest to work with when there's more than few but less than many dozen.  The
+catalog of an asset should represent some fundamental quality of it (and many
+other assets!), that could just as easily be expressed as a custom field, but
+which is more important than other qualities for categorizing, sorting, and
+searching.
+
+=head2 Managing catalogs
+
+Catalogs are managed by RT adminstrators, or anyone with the L</AdminCatalog>
+right.  You can find the list of catalogs, create new catalogs, and manage
+existing ones under the Tools → Configuration → Assets → Catalogs menu.
+
+Currently you need to log out and log back in to see changes to catalogs in any
+of the catalog selection dropdowns.  This doesn't affect the catalog name
+displayed on individual asset pages.
+
+=head2 Adding fields
+
+You can see the current asset CFs by navigating to Admin >
+Assets > Custom Fields.  From there you can use the "Create" link to create a
+new asset CF.  If you know you want to create a new CF right away, you can do
+so via Admin > Assets > Custom Fields > Create.
+
+When creating a CF, be sure to select "Assets" in the "Applies To" dropdown.
+You'll also need to grant rights to the groups and/or roles which need to see
+the fields, otherwise they'll be hidden.  See the following section.
+
+Similar to ticket CFs, asset custom fields are added globally or to specific
+catalogs.  Only assets within those specific catalogs will have the CFs
+available.  After creating a CF, you'll need to visit the "Applies To" page to
+add it to the catalogs you want or make it global.
+
+=head2 Rights
+
+There are three rights controlling basic access to assets and two for
+catalogs.  Each right is grantable at the global level or individual catalog
+level, and grantable to system groups, asset roles, user groups, and individual
+users (just like ticket and queue rights).
+
+=head3 ShowAsset
+
+Allows viewing an asset record and it's core fields (but not CFs).  Without
+it, no assets can be seen.  Similar to ShowTicket.
+
+=head3 CreateAsset
+
+Allows creating assets and filling in the core fields (but not CFs).  Without
+it, no assets can be created.  Similar to CreateTicket.
+
+=head3 ModifyAsset
+
+Allows modifying existing assets and their core fields (but not CFs).  Without
+it, basic asset data cannot be modified after creation.  Similar to
+ModifyTicket.
+
+Most of your rights configuration will be on the CFs, and will likely need to
+be done for each CF.  This lets you fine tune which fields are visible to
+individual groups and/or roles of users.  Relevant CF rights are
+B<SeeCustomField> and B<ModifyCustomField>.
+
+Rights related to assets may also come from the L</Lifecycle statuses>
+configuration and restrict status transitions.
+
+=head3 ShowCatalog
+
+Allows seeing a catalog's name and other details when associated with assets.
+Without it, users will see "[a hidden catalog]" or a blank space where the
+catalog name would normally be.  Similar to SeeQueue.
+
+=head3 AdminCatalog
+
+Allows creating new catalogs and modifying all aspects of existing catalogs,
+including changing the CFs associated with the catalog, granting/revoking
+rights, and adding/removing role members.  This right should only be granted to
+administrators of RT.  Similar to AdminQueue.
+
+=head3 Typical configuration
+
+A typical configuration grants the system Privileged group the following:
+B<ShowAsset>, B<CreateAsset>, B<ModifyAsset>, and B<ShowCatalog> globally, and
+B<SeeCustomField> and B<ModifyCustomField> globally on all asset CFs.
+
+If you want self service users (Unprivileged) to be able to view the assets
+they hold, grant the Held By role B<ShowAsset> and B<ShowCatalog> globally and
+B<SeeCustomField> on the necessary asset CFs.
+
+=head2 People and Roles
+
+Just like tickets, assets have various roles which users and groups may be
+assigned to.  The intended usages of these roles are described below, but
+you're free to use them for whatever you'd like, of course.
+
+The roles provide ways to keep track of who is involved with each asset, as
+well as providing a place to grant rights that depend on the user's association
+with each asset.
+
+In addition to adding people to individual asset roles, you can also add role
+members at an entire catalog level.  These catalog-level roles are useful in
+cases when you might have an entire catalog of assets for which the same people
+should be the Contacts, or which are Held By the same group.  Unlike tickets
+where the queue watchers are invisible, catalog role members are visible
+because assets are generally much longer lived than tickets.  When a problem
+with an asset arises, it's easier to see who to create a ticket for.  On
+individual asset pages, catalog role members are shown with the text "(via this
+asset's catalog)" following each name.
+
+=head3 Owner
+
+The person responsible for the asset, perhaps the purchaser or manager.
+
+Restricted to a single user.  Not available at a catalog level.
+
+=head3 Held By
+
+The person or people who physically possess the asset or are actively using the
+asset (if it isn't physical).  This may be the same as the Contacts or may be
+different.  For example, a computer workstation may be "held by" a university
+professor, but the contact may be the IT staff member responsible for all
+assets in the professor's department.  This role is most similar to Requestor
+on tickets, although not equivalent.
+
+May be multiple users and/or groups.
+
+=head3 Contact
+
+The person or people who should be contacted with questions, problems,
+notifications, etc. about the asset.  Contacts share some of the same intended
+usages of both Requestors and Ccs on tickets.
+
+May be multiple users and/or groups.
+
+=head2 Lifecycle statuses
+
+One of the basic asset fields is "Status".  Similar to tickets, the valid
+statuses and their transitions and actions can be customized via RT's standard
+Lifecycles configuration (see "Lifecycles" in F<RT_Config.pm>).  The default
+lifecycle is named "assets".  You're free to modify it as much as you'd like,
+or add your own lifecycles.  Each catalog may have its own lifecycle.
+
+For the default "assets" configuration, see F<etc/Assets_Config.pm>.
+
+=head2 Field organization
+
+=head3 Groupings
+
+You can organize your asset CFs into visual and logical "groupings" as you see
+fit.  These groupings appear as separate boxes on the asset display page and
+become separate pages for editing (showing up in the per-asset menu).
+
+By default your CFs will appear in a B<Custom Fields> box on the asset display
+page and will be editable from a box of the same name on the B<Basics> editing
+page.
+
+Using the C<%CustomFieldGroupings> option (documented in F<etc/RT_Config.pm>),
+you can move individual CFs by name into one of the four built-in groupings
+(B<Basics>, B<People>, B<Dates>, and B<Links>) or create your own just by
+naming it.  An example, assuming a date CF named "Purchased" and two "enter one
+value" CFs named "Weight" and "Color":
+
+    # In etc/RT_SiteConfig.pm
+    Set(%CustomFieldGroupings,
+        'RT::Asset' => {
+            'Dates'                 => ['Purchased'],
+            'Physical Properties'   => ['Weight', 'Color'],
+        },
+    );
+
+This configuration snippet will move all three CFs out of the generic B<Custom
+Fields> box and into the B<Dates> box and a new box titled B<Physical
+Properties>.  The "Purchased" CF will be editable from the Dates page and a new
+page titled "Physical Properties" will appear in the menu to allow editing of
+the "Weight" and "Color" CFs.
+
+=head3 Ordering
+
+Within a box, CFs come after any built-in asset fields such as Name,
+Description, Created, Last Updated, etc.  The CFs themselves are ordered
+according to the sorting seen (and adjustable) on the global Asset Custom
+Fields page (Tools → Configuration → Global → Custom Fields → Assets) and the
+individual catalog Custom Fields pages (Tools → Configuration → Assets →
+Catalogs → (Pick one) → Custom Fields).
+
+Global asset CFs may be intermixed with per-catalog CFs with ordering.
+
+=head2 Importing existing data
+
+Another extension, L<RT::Extension::Assets::Import::CSV> provides tools to import
+new and update existing assets from a CSV dump.  Its configuration lets you
+map the fields in the CSV to the asset fields you've already created in RT.
+
 =head1 METHODS ADDED TO OTHER CLASSES
 
 =head2 L<RT::CustomField>
@@ -467,7 +668,7 @@ matching the same criteria are found.  Enabled CFs are preferentially loaded.
 
 Takes a numeric L<RT::Catalog> ID.  Limits the L<RT::CustomFields> collection
 to only those fields applied directly to the specified catalog.  This limit is
-OR'd with other L</LimitToCatalog> and L</LimitToGlobal> calls.
+OR'd with other L</LimitToCatalog> and C<LimitToGlobal> calls.
 
 Note that this will cause the collection to only return asset CFs.
 
@@ -479,7 +680,7 @@ Thomas Sibley <trs at bestpractical.com>
 
 All bugs should be reported via
 L<http://rt.cpan.org/Public/Dist/Display.html?Name=RT-Extension-Assets>
-or L<bug-RT-Extension-Assets at rt.cpan.org>.
+or bug-RT-Extension-Assets at rt.cpan.org.
 
 
 =head1 LICENSE AND COPYRIGHT

commit e45c0f9a433d69398cf34beb874c9081554d699a
Author: Jim Brandt <jbrandt at bestpractical.com>
Date:   Fri Dec 13 15:17:36 2013 -0500

    Update README and MANIFEST

diff --git a/MANIFEST b/MANIFEST
index 795ebb5..e33775b 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -1,3 +1,87 @@
+doc/images/asset-cfs.png
+doc/images/asset-date-details.png
+doc/images/asset-search.png
+doc/images/asset-ticket-create.png
+doc/images/catalog-rights.png
+doc/images/edit-catalog.png
+doc/images/self-service-display.png
+etc/acl.mysql
+etc/acl.Oracle
+etc/acl.Pg
+etc/Assets_Config.pm
+etc/initialdata
+etc/schema.mysql
+etc/schema.Oracle
+etc/schema.Pg
+etc/schema.SQLite
+etc/Tutorial_Configuration.txt
+etc/tutorialdata
+html/Admin/Assets/Catalogs/Create.html
+html/Admin/Assets/Catalogs/CustomFields.html
+html/Admin/Assets/Catalogs/Elements/EditBasics
+html/Admin/Assets/Catalogs/GroupRights.html
+html/Admin/Assets/Catalogs/index.html
+html/Admin/Assets/Catalogs/Modify.html
+html/Admin/Assets/Catalogs/Roles.html
+html/Admin/Assets/Catalogs/UserRights.html
+html/Admin/Assets/index.html
+html/Admin/Global/CustomFields/Catalog-Assets.html
+html/Asset/Create.html
+html/Asset/CreateInCatalog.html
+html/Asset/CreateLinkedTicket.html
+html/Asset/Display.html
+html/Asset/Elements/AssetSearchBasics
+html/Asset/Elements/AssetSearchCFs
+html/Asset/Elements/AssetSearchPeople
+html/Asset/Elements/CreateInCatalog
+html/Asset/Elements/CreateLinkedTicket
+html/Asset/Elements/EditBasics
+html/Asset/Elements/EditDates
+html/Asset/Elements/EditPeople
+html/Asset/Elements/SelectCatalog
+html/Asset/Elements/SelectStatus
+html/Asset/Elements/ShowBasics
+html/Asset/Elements/ShowCatalog
+html/Asset/Elements/ShowDates
+html/Asset/Elements/ShowLinks
+html/Asset/Elements/ShowPeople
+html/Asset/Elements/ShowRoleMembers
+html/Asset/Elements/ShowSummary
+html/Asset/Helpers/CreateInCatalog
+html/Asset/Helpers/CreateLinkedTicket
+html/Asset/History.html
+html/Asset/index.html
+html/Asset/Modify.html
+html/Asset/ModifyCFs.html
+html/Asset/ModifyDates.html
+html/Asset/ModifyLinks.html
+html/Asset/ModifyPeople.html
+html/Asset/Search/Bulk.html
+html/Asset/Search/index.html
+html/Callbacks/RT-Extension-Assets/Elements/AddLinks/ExtraLinkInstructions
+html/Callbacks/RT-Extension-Assets/Elements/Tabs/Privileged
+html/Callbacks/RT-Extension-Assets/Elements/Tabs/SelfService
+html/Callbacks/RT-Extension-Assets/SelfService/Display.html/BeforeShowHistory
+html/Callbacks/RT-Extension-Assets/Ticket/Create.html/AfterBasics
+html/Callbacks/RT-Extension-Assets/Ticket/Elements/ShowSummary/LinksExtra
+html/Elements/Assets/AddPeople
+html/Elements/Assets/EditPeople
+html/Elements/Assets/EditRoleMembers
+html/Elements/Assets/Search
+html/Elements/Assets/SelectRoleType
+html/Elements/FindAsset
+html/Elements/MyAssets
+html/Elements/RT__Asset/ColumnMap
+html/Elements/RT__Catalog/ColumnMap
+html/SelfService/Asset/CreateLinkedTicket.html
+html/SelfService/Asset/Display.html
+html/SelfService/Asset/Helpers/CreateLinkedTicket
+html/SelfService/Asset/History.html
+html/SelfService/Asset/index.html
+html/Ticket/Elements/ShowAssets
+html/Ticket/Elements/ShowAssetsOnCreate
+html/User/Elements/AssetList
+html/User/Elements/Portlets/UserAssets
 inc/Module/Install.pm
 inc/Module/Install/Base.pm
 inc/Module/Install/Can.pm
@@ -6,10 +90,32 @@ inc/Module/Install/Makefile.pm
 inc/Module/Install/Metadata.pm
 inc/Module/Install/ReadmeFromPod.pm
 inc/Module/Install/RTx.pm
+inc/Module/Install/RTx/Factory.pm
+inc/Module/Install/Substitute.pm
 inc/Module/Install/Win32.pm
 inc/Module/Install/WriteAll.pm
+lib/RT/Asset.pm
+lib/RT/Assets.pm
+lib/RT/Catalog.pm
+lib/RT/Catalogs.pm
 lib/RT/Extension/Assets.pm
+lib/RT/Extension/Assets/Tutorial.pm
+lib/RT/Lifecycle/Asset.pm
+lib/RT/URI/asset.pm
 Makefile.PL
 MANIFEST			This list of files
+MANIFEST.SKIP
 META.yml
+po/assets.pot
+po/en.po
 README
+static/css/RTx-Assets.css
+static/js/RTx-Assets.js
+xt/api.t
+xt/collection.t
+xt/compile.t
+xt/lib/RT/Extension/Assets/Test.pm.in
+xt/links.t
+xt/rights.t
+xt/roles.t
+xt/web.t
diff --git a/README b/README
index cbbeb20..9826826 100644
--- a/README
+++ b/README
@@ -43,6 +43,198 @@ CONFIGURATION
     catalog. You may use either the catalog's name or its ID. This only
     affects the catalog selection on the asset search interface.
 
+USAGE
+    Assets start as a small set of fundamental record data upon which you
+    build custom fields (CFs) of any type you like to describe the assets
+    you want to track. By themselves, before you setup any CFs, assets are
+    not very useful.
+
+    Just like tickets are assigned to queues, assets are assigned to
+    catalogs. The default catalog is named "General assets", but we suggest
+    you rename it and add additional catalogs to better fit your
+    organization.
+
+    You may want to use catalogs to separate assets into departments,
+    general type of asset, hardware vs. software, etc. Catalogs, like
+    queues, are generally easiest to work with when there's more than few
+    but less than many dozen. The catalog of an asset should represent some
+    fundamental quality of it (and many other assets!), that could just as
+    easily be expressed as a custom field, but which is more important than
+    other qualities for categorizing, sorting, and searching.
+
+  Managing catalogs
+    Catalogs are managed by RT adminstrators, or anyone with the
+    "AdminCatalog" right. You can find the list of catalogs, create new
+    catalogs, and manage existing ones under the Tools → Configuration →
+    Assets → Catalogs menu.
+
+    Currently you need to log out and log back in to see changes to catalogs
+    in any of the catalog selection dropdowns. This doesn't affect the
+    catalog name displayed on individual asset pages.
+
+  Adding fields
+    You can see the current asset CFs by navigating to Admin > Assets >
+    Custom Fields. From there you can use the "Create" link to create a new
+    asset CF. If you know you want to create a new CF right away, you can do
+    so via Admin > Assets > Custom Fields > Create.
+
+    When creating a CF, be sure to select "Assets" in the "Applies To"
+    dropdown. You'll also need to grant rights to the groups and/or roles
+    which need to see the fields, otherwise they'll be hidden. See the
+    following section.
+
+    Similar to ticket CFs, asset custom fields are added globally or to
+    specific catalogs. Only assets within those specific catalogs will have
+    the CFs available. After creating a CF, you'll need to visit the
+    "Applies To" page to add it to the catalogs you want or make it global.
+
+  Rights
+    There are three rights controlling basic access to assets and two for
+    catalogs. Each right is grantable at the global level or individual
+    catalog level, and grantable to system groups, asset roles, user groups,
+    and individual users (just like ticket and queue rights).
+
+   ShowAsset
+    Allows viewing an asset record and it's core fields (but not CFs).
+    Without it, no assets can be seen. Similar to ShowTicket.
+
+   CreateAsset
+    Allows creating assets and filling in the core fields (but not CFs).
+    Without it, no assets can be created. Similar to CreateTicket.
+
+   ModifyAsset
+    Allows modifying existing assets and their core fields (but not CFs).
+    Without it, basic asset data cannot be modified after creation. Similar
+    to ModifyTicket.
+
+    Most of your rights configuration will be on the CFs, and will likely
+    need to be done for each CF. This lets you fine tune which fields are
+    visible to individual groups and/or roles of users. Relevant CF rights
+    are SeeCustomField and ModifyCustomField.
+
+    Rights related to assets may also come from the "Lifecycle statuses"
+    configuration and restrict status transitions.
+
+   ShowCatalog
+    Allows seeing a catalog's name and other details when associated with
+    assets. Without it, users will see "[a hidden catalog]" or a blank space
+    where the catalog name would normally be. Similar to SeeQueue.
+
+   AdminCatalog
+    Allows creating new catalogs and modifying all aspects of existing
+    catalogs, including changing the CFs associated with the catalog,
+    granting/revoking rights, and adding/removing role members. This right
+    should only be granted to administrators of RT. Similar to AdminQueue.
+
+   Typical configuration
+    A typical configuration grants the system Privileged group the
+    following: ShowAsset, CreateAsset, ModifyAsset, and ShowCatalog
+    globally, and SeeCustomField and ModifyCustomField globally on all asset
+    CFs.
+
+    If you want self service users (Unprivileged) to be able to view the
+    assets they hold, grant the Held By role ShowAsset and ShowCatalog
+    globally and SeeCustomField on the necessary asset CFs.
+
+  People and Roles
+    Just like tickets, assets have various roles which users and groups may
+    be assigned to. The intended usages of these roles are described below,
+    but you're free to use them for whatever you'd like, of course.
+
+    The roles provide ways to keep track of who is involved with each asset,
+    as well as providing a place to grant rights that depend on the user's
+    association with each asset.
+
+    In addition to adding people to individual asset roles, you can also add
+    role members at an entire catalog level. These catalog-level roles are
+    useful in cases when you might have an entire catalog of assets for
+    which the same people should be the Contacts, or which are Held By the
+    same group. Unlike tickets where the queue watchers are invisible,
+    catalog role members are visible because assets are generally much
+    longer lived than tickets. When a problem with an asset arises, it's
+    easier to see who to create a ticket for. On individual asset pages,
+    catalog role members are shown with the text "(via this asset's
+    catalog)" following each name.
+
+   Owner
+    The person responsible for the asset, perhaps the purchaser or manager.
+
+    Restricted to a single user. Not available at a catalog level.
+
+   Held By
+    The person or people who physically possess the asset or are actively
+    using the asset (if it isn't physical). This may be the same as the
+    Contacts or may be different. For example, a computer workstation may be
+    "held by" a university professor, but the contact may be the IT staff
+    member responsible for all assets in the professor's department. This
+    role is most similar to Requestor on tickets, although not equivalent.
+
+    May be multiple users and/or groups.
+
+   Contact
+    The person or people who should be contacted with questions, problems,
+    notifications, etc. about the asset. Contacts share some of the same
+    intended usages of both Requestors and Ccs on tickets.
+
+    May be multiple users and/or groups.
+
+  Lifecycle statuses
+    One of the basic asset fields is "Status". Similar to tickets, the valid
+    statuses and their transitions and actions can be customized via RT's
+    standard Lifecycles configuration (see "Lifecycles" in RT_Config.pm).
+    The default lifecycle is named "assets". You're free to modify it as
+    much as you'd like, or add your own lifecycles. Each catalog may have
+    its own lifecycle.
+
+    For the default "assets" configuration, see etc/Assets_Config.pm.
+
+  Field organization
+   Groupings
+    You can organize your asset CFs into visual and logical "groupings" as
+    you see fit. These groupings appear as separate boxes on the asset
+    display page and become separate pages for editing (showing up in the
+    per-asset menu).
+
+    By default your CFs will appear in a Custom Fields box on the asset
+    display page and will be editable from a box of the same name on the
+    Basics editing page.
+
+    Using the %CustomFieldGroupings option (documented in etc/RT_Config.pm),
+    you can move individual CFs by name into one of the four built-in
+    groupings (Basics, People, Dates, and Links) or create your own just by
+    naming it. An example, assuming a date CF named "Purchased" and two
+    "enter one value" CFs named "Weight" and "Color":
+
+        # In etc/RT_SiteConfig.pm
+        Set(%CustomFieldGroupings,
+            'RT::Asset' => {
+                'Dates'                 => ['Purchased'],
+                'Physical Properties'   => ['Weight', 'Color'],
+            },
+        );
+
+    This configuration snippet will move all three CFs out of the generic
+    Custom Fields box and into the Dates box and a new box titled Physical
+    Properties. The "Purchased" CF will be editable from the Dates page and
+    a new page titled "Physical Properties" will appear in the menu to allow
+    editing of the "Weight" and "Color" CFs.
+
+   Ordering
+    Within a box, CFs come after any built-in asset fields such as Name,
+    Description, Created, Last Updated, etc. The CFs themselves are ordered
+    according to the sorting seen (and adjustable) on the global Asset
+    Custom Fields page (Tools → Configuration → Global → Custom Fields →
+    Assets) and the individual catalog Custom Fields pages (Tools →
+    Configuration → Assets → Catalogs → (Pick one) → Custom Fields).
+
+    Global asset CFs may be intermixed with per-catalog CFs with ordering.
+
+  Importing existing data
+    Another extension, RT::Extension::Assets::Import::CSV provides tools to
+    import new and update existing assets from a CSV dump. Its configuration
+    lets you map the fields in the CSV to the asset fields you've already
+    created in RT.
+
 METHODS ADDED TO OTHER CLASSES
   RT::CustomField
    LoadByNameAndCatalog
@@ -93,3 +285,10 @@ LICENSE AND COPYRIGHT
 
       The GNU General Public License, Version 2, June 1991
 
+POD ERRORS
+    Hey! The above document had some coding errors, which are explained
+    below:
+
+    Around line 451:
+        Non-ASCII character seen before =encoding in '→'. Assuming UTF-8
+

commit bc295dee97f60dd4f3fdb63249c504d50674d9d9
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Thu Dec 26 16:04:22 2013 -0500

    Append colons to main 4 status fields, for consistency with CFs

diff --git a/html/Asset/Elements/EditBasics b/html/Asset/Elements/EditBasics
index 409eb37..8e6be66 100644
--- a/html/Asset/Elements/EditBasics
+++ b/html/Asset/Elements/EditBasics
@@ -48,20 +48,20 @@
 <table>
 % if ($AssetObj->id) {
   <tr class="asset-catalog">
-    <td class="label"><label for="Catalog"><&|/l&>Catalog</&></label></td>
+    <td class="label"><label for="Catalog"><&|/l&>Catalog</&>:</label></td>
     <td><& /Asset/Elements/SelectCatalog, Default => $current{Catalog} &></td>
   </tr>
 % }
   <tr class="asset-name">
-    <td class="label"><label for="Name"><&|/l&>Name</&></label></td>
+    <td class="label"><label for="Name"><&|/l&>Name</&>:</label></td>
     <td><input name="Name" value="<% $current{Name} %>" size="50"></td>
   </tr>
   <tr class="asset-description">
-    <td class="label"><label for="Description"><&|/l&>Description</&></label></td>
+    <td class="label"><label for="Description"><&|/l&>Description</&>:</label></td>
     <td><input name="Description" value="<% $current{Description} %>" size="75"></td>
   </tr>
   <tr class="asset-status">
-    <td class="label"><label for="Status"><&|/l&>Status</&></label></td>
+    <td class="label"><label for="Status"><&|/l&>Status</&>:</label></td>
     <td><& /Asset/Elements/SelectStatus, Name => 'Status', AssetObj => $AssetObj, CatalogObj => $CatalogObj &></td>
   </tr>
 % if ( $AssetObj->id ) {

commit d5b1eb3f62cf1e02c685e515b62b176aaf829b2e
Merge: bc295de 12bb15e
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Thu Dec 26 18:05:30 2013 -0500

    Merge branch '1.0/bug-fixes'


commit 8d065123403bd3d96f6609307536845c9504dc56
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Thu Dec 26 18:27:18 2013 -0500

    Re-add necessary =encoding line

diff --git a/README b/README
index 9826826..f26dde9 100644
--- a/README
+++ b/README
@@ -285,10 +285,3 @@ LICENSE AND COPYRIGHT
 
       The GNU General Public License, Version 2, June 1991
 
-POD ERRORS
-    Hey! The above document had some coding errors, which are explained
-    below:
-
-    Around line 451:
-        Non-ASCII character seen before =encoding in '→'. Assuming UTF-8
-
diff --git a/lib/RT/Extension/Assets.pm b/lib/RT/Extension/Assets.pm
index 3cd63d9..a2dbc12 100644
--- a/lib/RT/Extension/Assets.pm
+++ b/lib/RT/Extension/Assets.pm
@@ -417,6 +417,8 @@ RT_SiteConfig.pm and add UserAssets to the list.
 
 =back
 
+=encoding utf8
+
 =head1 CONFIGURATION
 
 =head2 C<$DefaultCatalog>

commit 1d6f0871b7643ba587809ef4dea0f5046858356d
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Thu Dec 26 18:29:42 2013 -0500

    Trailing "1;" is unnecessary, and shows up in POD

diff --git a/lib/RT/Extension/Assets/Tutorial.pm b/lib/RT/Extension/Assets/Tutorial.pm
index 0dd2838..a71fd73 100644
--- a/lib/RT/Extension/Assets/Tutorial.pm
+++ b/lib/RT/Extension/Assets/Tutorial.pm
@@ -325,4 +325,4 @@ help you track assets. There are many more features you'll find as you explore
 the assets interface, like stacking multiple assets on a single ticket, bulk 
 update features similar to tickets, and the search interface. Have fun!
 
-1;
+=cut

commit c82ca516f10876840a987303db0dc86e040593c7
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Thu Dec 26 18:30:59 2013 -0500

    Unwrap incorrectly wrapped link

diff --git a/lib/RT/Extension/Assets/Tutorial.pm b/lib/RT/Extension/Assets/Tutorial.pm
index a71fd73..0668ac3 100644
--- a/lib/RT/Extension/Assets/Tutorial.pm
+++ b/lib/RT/Extension/Assets/Tutorial.pm
@@ -41,8 +41,8 @@ extensions, first add C<RT::Extension::Assets> to your C<@Plugins> line.
 
 There are a few configuration options you might set before starting. Assets 
 offers a C<$DefaultCatalog> feature that works similar to RT's 
-L<DefaultQueue|http://bestpractical.com/docs/rt/latest/RT_Config.html#DefaultQue
-ue>, but you can probably skip it for now since you don't have any catalogs yet.
+L<DefaultQueue|http://bestpractical.com/docs/rt/latest/RT_Config.html#DefaultQueue>,
+but you can probably skip it for now since you don't have any catalogs yet.
 
 More interesting are some optional portlets you can activate to add asset data 
 to RT's pages. MyAssets and FindAsset portlets are available for placement on 

commit f9dfafb72c277f084895234e93e1b8bcd3efc306
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Thu Dec 26 18:32:08 2013 -0500

    Trim trailing whitespace

diff --git a/lib/RT/Extension/Assets/Tutorial.pm b/lib/RT/Extension/Assets/Tutorial.pm
index 0668ac3..270820e 100644
--- a/lib/RT/Extension/Assets/Tutorial.pm
+++ b/lib/RT/Extension/Assets/Tutorial.pm
@@ -1,141 +1,141 @@
 
 =head1 Introduction
 
-This is a basic tutorial for setting up asset tracking in RT using Best 
-Practical's Assets extension. At the end, you'll have a basic configuration 
+This is a basic tutorial for setting up asset tracking in RT using Best
+Practical's Assets extension. At the end, you'll have a basic configuration
 that lets you add assets, search for them, link them to tickets, etc.
 
 =begin HTML
 
-<p><img src="http://static.bestpractical.com/images/assets/asset-search.png" 
+<p><img src="http://static.bestpractical.com/images/assets/asset-search.png"
 alt="Asset Search Results" /></p>
 
 =end HTML
 
-You can follow along with the tutorial and try setting things up yourself to 
-get a feel for all of the administrative controls. If you want to get a jump 
-start, the files to set up this basic configuration are provided in the 
-L<RT::Extension::Assets> distribution in the F<etc> directory. For 
-configuration, look in F<etc/Tutorial_Configuration.txt>. You can copy all or 
+You can follow along with the tutorial and try setting things up yourself to
+get a feel for all of the administrative controls. If you want to get a jump
+start, the files to set up this basic configuration are provided in the
+L<RT::Extension::Assets> distribution in the F<etc> directory. For
+configuration, look in F<etc/Tutorial_Configuration.txt>. You can copy all or
 part and paste it in your F<RT_SiteConfig.pm>.
 
-To load the test catalog, custom fields, and users, add 
-C<RT::Extension::Assets> to your C<@Plugins> line after installing, then run 
+To load the test catalog, custom fields, and users, add
+C<RT::Extension::Assets> to your C<@Plugins> line after installing, then run
 the following from your RT directory:
 
     sbin/rt-setup-database --action insert --datafile \
       local/plugins/RT-Extension-Assets/etc/tutorialdata
 
-This will change the default catalog name, create some users, and give those 
-users asset permissions. Only asset rights are granted, so you need to grant 
-additional rights if you want to experiment with creating tickets and linking 
-assets. The initial user passwords are 'password'. You should only run this on 
-a test RT instance as it is not intended to be used for configuring a 
+This will change the default catalog name, create some users, and give those
+users asset permissions. Only asset rights are granted, so you need to grant
+additional rights if you want to experiment with creating tickets and linking
+assets. The initial user passwords are 'password'. You should only run this on
+a test RT instance as it is not intended to be used for configuring a
 production system.
 
 =head1 Getting Started
 
-Install the extension following the instructions and some new tables will be 
-added to your RT database and the assets code will be installed. As with all 
+Install the extension following the instructions and some new tables will be
+added to your RT database and the assets code will be installed. As with all
 extensions, first add C<RT::Extension::Assets> to your C<@Plugins> line.
 
-There are a few configuration options you might set before starting. Assets 
-offers a C<$DefaultCatalog> feature that works similar to RT's 
+There are a few configuration options you might set before starting. Assets
+offers a C<$DefaultCatalog> feature that works similar to RT's
 L<DefaultQueue|http://bestpractical.com/docs/rt/latest/RT_Config.html#DefaultQueue>,
 but you can probably skip it for now since you don't have any catalogs yet.
 
-More interesting are some optional portlets you can activate to add asset data 
-to RT's pages. MyAssets and FindAsset portlets are available for placement on 
-RT at a Glance or in dashboards and a UserAssets portlet is available for the 
+More interesting are some optional portlets you can activate to add asset data
+to RT's pages. MyAssets and FindAsset portlets are available for placement on
+RT at a Glance or in dashboards and a UserAssets portlet is available for the
 user summary pages.
 
-These portlets are fairly self-explanitory and you can add them by finding 
-C<$HomepageComponents> and C<@UserSummaryPortlets> respectively in 
-F<RT_Config.pm>, copying to F<RT_SiteConfig.pm>, and adding the portlets you 
-want. There are also examples in the tutorial sample configuration file. Note 
-that C<$HomepageComponents> makes the portlets available, but doesn't put them 
-on RT at a Glance. To add them, just click the Edit link on the upper righthand 
-corner of the homepage. C<@UserSummaryPortlets> does automatically add the 
-"Assigned Assets" portlet to the User Summary page. It will appear based on the 
-position in the configuration, so just place it in the list where you want it 
+These portlets are fairly self-explanitory and you can add them by finding
+C<$HomepageComponents> and C<@UserSummaryPortlets> respectively in
+F<RT_Config.pm>, copying to F<RT_SiteConfig.pm>, and adding the portlets you
+want. There are also examples in the tutorial sample configuration file. Note
+that C<$HomepageComponents> makes the portlets available, but doesn't put them
+on RT at a Glance. To add them, just click the Edit link on the upper righthand
+corner of the homepage. C<@UserSummaryPortlets> does automatically add the
+"Assigned Assets" portlet to the User Summary page. It will appear based on the
+position in the configuration, so just place it in the list where you want it
 to appear.
 
-Once you have your configuration complete, restart your server and you're ready 
+Once you have your configuration complete, restart your server and you're ready
 to go.
 
 =head1 Catalogs
 
-For the initial configuration, we'll log in as RT's root user so we have full 
-rights on the asset configuration. You could also create an "Asset Admin" group 
+For the initial configuration, we'll log in as RT's root user so we have full
+rights on the asset configuration. You could also create an "Asset Admin" group
 and assign appropriate rights to allow other users to manage catalogs.
 
-When you log in you'll see a new Assets menu, but before looking there we need 
-to look at catalogs and some other configuration. Catalogs are to assets what 
-queues are to tickets, so if you've used RT, the relationship should be fairly 
-familiar. Similar to the General queue, a "General assets" catalog is provided 
+When you log in you'll see a new Assets menu, but before looking there we need
+to look at catalogs and some other configuration. Catalogs are to assets what
+queues are to tickets, so if you've used RT, the relationship should be fairly
+familiar. Similar to the General queue, a "General assets" catalog is provided
 to get you started. You can see it at Admin > Assets > Catalogs.
 
-We're going to use the default, but change it to a name more appropriate for 
-our use. Clicking on the asset name brings us to the catalog edit page and we 
-can update the name to "IT Department Assets". You can update the description 
+We're going to use the default, but change it to a name more appropriate for
+our use. Clicking on the asset name brings us to the catalog edit page and we
+can update the name to "IT Department Assets". You can update the description
 if you like as well.
 
 =begin HTML
 
-<p><img src="http://static.bestpractical.com/images/assets/edit-catalog.png" 
+<p><img src="http://static.bestpractical.com/images/assets/edit-catalog.png"
 alt="Edit Catalog" /></p>
 
 =end HTML
 
-You'll also notice that catalogs have a lifecycle just like queues. The assets 
-extension comes with a default assets lifecycle, but just like queues you can 
-create new ones with custom statuses and other configuration to allow RT to 
+You'll also notice that catalogs have a lifecycle just like queues. The assets
+extension comes with a default assets lifecycle, but just like queues you can
+create new ones with custom statuses and other configuration to allow RT to
 reflect the states of your assets.
 
-You can find the asset lifecycle in the asset configuration file in your RT 
+You can find the asset lifecycle in the asset configuration file in your RT
 installation at:
 
     local/plugins/RT-Extension-Assets/etc/Assets_Config.pm
 
-The initial statuses are new, allocated, in-use, recycled, stolen, and deleted. 
-Depending on your process, you might add new ones like surplussed, donated, or 
-in-repair. To create a new asset lifecycle, just copy the default into 
-F<RT_SiteConfig.pm>, replace the top-level "assets" key with a new name, and 
+The initial statuses are new, allocated, in-use, recycled, stolen, and deleted.
+Depending on your process, you might add new ones like surplussed, donated, or
+in-repair. To create a new asset lifecycle, just copy the default into
+F<RT_SiteConfig.pm>, replace the top-level "assets" key with a new name, and
 make your changes.
 
 =head1 Asset Custom Fields
 
-Next we need to create some custom fields to hold our asset metadata. You can 
-find asset custom fields at Admin > Assets > Custom Fields and they work just 
+Next we need to create some custom fields to hold our asset metadata. You can
+find asset custom fields at Admin > Assets > Custom Fields and they work just
 like custom fields for other RT objects.
 
 =begin HTML
 
-<p><img src="http://static.bestpractical.com/images/assets/asset-cfs.png" 
+<p><img src="http://static.bestpractical.com/images/assets/asset-cfs.png"
 alt="Asset Custom Fields" /></p>
 
 =end HTML
 
-The extension will automatically provide some core values for your assets. Each 
-asset can have a Name and Description and, like tickets, they have statuses 
-based on the lifecycle configuration. You can use Name and Description however 
-you want and they are not required. However, many of the asset pages use these 
-fields so it's best to provide a descriptive name to make it easy for people 
-working in RT to identify the asset quickly. The manufacturer's product name 
+The extension will automatically provide some core values for your assets. Each
+asset can have a Name and Description and, like tickets, they have statuses
+based on the lifecycle configuration. You can use Name and Description however
+you want and they are not required. However, many of the asset pages use these
+fields so it's best to provide a descriptive name to make it easy for people
+working in RT to identify the asset quickly. The manufacturer's product name
 can be convenient (e.g., '15" Macbook Pro').
 
-Assets come with three user fields you can associate with an asset: Owner, Held 
-By, and Contact. These are provided to cover different types of assets, from 
-laptops to servers to software, and different asset management situations. 
-Owner can hold the user who bought the asset, maybe the head of the department 
-where the budget came from. Held by is who the asset is assigned to. Laptops 
-are assigned to a user and servers might be held (or managed) by the system 
-administrators. Contact can be used to set a manager who might need to know 
-about needed system updates or equipment with expiring support. Like tickets, 
-these roles give you places to attach rights, so use them however they work 
+Assets come with three user fields you can associate with an asset: Owner, Held
+By, and Contact. These are provided to cover different types of assets, from
+laptops to servers to software, and different asset management situations.
+Owner can hold the user who bought the asset, maybe the head of the department
+where the budget came from. Held by is who the asset is assigned to. Laptops
+are assigned to a user and servers might be held (or managed) by the system
+administrators. Contact can be used to set a manager who might need to know
+about needed system updates or equipment with expiring support. Like tickets,
+these roles give you places to attach rights, so use them however they work
 best for you.
 
-Any other information you want to track will need custom fields. We'll start 
+Any other information you want to track will need custom fields. We'll start
 with a few basic fields:
 
 =over
@@ -146,8 +146,8 @@ The serial number from the asset.
 
 =item * Tracking Number (enter one value)
 
-An internal tracking number. RT will assign an asset ID as well, but you may 
-have other systems to integrate with or already have a way to assign asset ids 
+An internal tracking number. RT will assign an asset ID as well, but you may
+have other systems to integrate with or already have a way to assign asset ids
 for accounting purposes.
 
 =item * Manufacturer (dropdown)
@@ -162,8 +162,8 @@ Is it a laptop, server, or cell phone?
 
 When the asset was given to the owner (or held by) person.
 
-Assets keep a transaction history like tickets, so you may be able pull this 
-information from the "owner set to X" transaction. Creating a separate field 
+Assets keep a transaction history like tickets, so you may be able pull this
+information from the "owner set to X" transaction. Creating a separate field
 makes it easier to report on.
 
 =item * Support Expiration (date)
@@ -174,10 +174,10 @@ When the current support contract expires.
 
 =head1 Custom Field Grouping
 
-Any custom fields you create will be displayed on the asset display page in a 
-default "Custom Fields" section. That may be sufficient, but assets also 
-supports RT's new custom field grouping feature, so we can group together some 
-similar custom fields and give them a custom name. If we add the following to 
+Any custom fields you create will be displayed on the asset display page in a
+default "Custom Fields" section. That may be sufficient, but assets also
+supports RT's new custom field grouping feature, so we can group together some
+similar custom fields and give them a custom name. If we add the following to
 F<RT_SiteConfig.pm>:
 
     Set(%CustomFieldGroupings,
@@ -188,141 +188,141 @@ F<RT_SiteConfig.pm>:
         },
     );
 
-and restart RT, the dates will be tacked on the end of the Dates portlet and we 
+and restart RT, the dates will be tacked on the end of the Dates portlet and we
 get an Asset Details label on the other custom fields.
 
 =begin HTML
 
-<p><img 
-src="http://static.bestpractical.com/images/assets/asset-date-details.png" 
+<p><img
+src="http://static.bestpractical.com/images/assets/asset-date-details.png"
 alt="Asset Date and Details Display" /></p>
 
 =end HTML
 
 =head1 Asset Rights
 
-Now we've got the basic configuration in place to start recording asset data. 
-Next we need to assign some rights so people can view and edit asset 
-information. Our staff are all privileged users so we'll grant all view and 
-modify rights on our catalog to the Privileged role. We'll also include rights 
-to view and modify the catalog's custom fields, although you could set these 
-rights individually on each custom field if you wanted to allow users to see 
+Now we've got the basic configuration in place to start recording asset data.
+Next we need to assign some rights so people can view and edit asset
+information. Our staff are all privileged users so we'll grant all view and
+modify rights on our catalog to the Privileged role. We'll also include rights
+to view and modify the catalog's custom fields, although you could set these
+rights individually on each custom field if you wanted to allow users to see
 some but not others.
 
-Similar to queues, you can set rights at the catalog level. Go to Admin > 
-Assets > Catalogs and click on the catalog you want to edit. Click Group Rights 
-in the submenu to assign asset rights to groups like the system Privileged 
+Similar to queues, you can set rights at the catalog level. Go to Admin >
+Assets > Catalogs and click on the catalog you want to edit. Click Group Rights
+in the submenu to assign asset rights to groups like the system Privileged
 group.
 
 =begin HTML
 
-<p><img src="http://static.bestpractical.com/images/assets/catalog-rights.png" 
+<p><img src="http://static.bestpractical.com/images/assets/catalog-rights.png"
 alt="Catalog Rights" /></p>
 
 =end HTML
 
-We also want unprivileged users to be able to see their own assets to make it 
-easier to submit support requests. To give them just the Name and Description 
-on their own assets, we can grant SeeAssets and SeeCatalogs on the catalog to 
+We also want unprivileged users to be able to see their own assets to make it
+easier to submit support requests. To give them just the Name and Description
+on their own assets, we can grant SeeAssets and SeeCatalogs on the catalog to
 the Held By role.
 
-All of the asset rights are described in the Assets documentation. You can get 
-much more detailed and fine-grained than this example, allowing selected groups 
-and users to view and modify multiple different asset custom fields across many 
+All of the asset rights are described in the Assets documentation. You can get
+much more detailed and fine-grained than this example, allowing selected groups
+and users to view and modify multiple different asset custom fields across many
 different catalogs.
 
 =head1 Working with Assets
 
-So now that we have all of that configuration done, what can we do? Here are a 
+So now that we have all of that configuration done, what can we do? Here are a
 few scenarios to give you some ideas.
 
 =head2 Add Assets to Your Catalogs
 
-To start, staff can now start adding assets to RT allowing you to manage what 
-you have, what state it's in, who currently has it, and when support expires. 
-You could set up an intake process to get new assets added as they come in, and 
-eventually have statuses updated as they are assigned, used, and eventually 
+To start, staff can now start adding assets to RT allowing you to manage what
+you have, what state it's in, who currently has it, and when support expires.
+You could set up an intake process to get new assets added as they come in, and
+eventually have statuses updated as they are assigned, used, and eventually
 cycled out.
 
-If you already have an asset database, even something simple like a 
-spreadsheet, you may be able to do an initial bulk import. Best Practical has 
-released L<RT::Extension::Assets::Import::CSV> which is a CSV import tool to 
+If you already have an asset database, even something simple like a
+spreadsheet, you may be able to do an initial bulk import. Best Practical has
+released L<RT::Extension::Assets::Import::CSV> which is a CSV import tool to
 help you with this.
 
 =head2 Track Assets
 
-Your staff can now easily track work on assets by linking RT tickets to the 
-assets. Assume you have an issue with an asset, like a server needs a new power 
-supply. Your staff can use the asset search page to find the server. You'll 
-notice that the RT search box is context sensitive, so when you're on an asset 
+Your staff can now easily track work on assets by linking RT tickets to the
+assets. Assume you have an issue with an asset, like a server needs a new power
+supply. Your staff can use the asset search page to find the server. You'll
+notice that the RT search box is context sensitive, so when you're on an asset
 page, the search changes to Search Assets and you can search with that as well.
 
-Once you locate the server asset record, in the Actions menu you'll find 
-"Create linked ticket", which does just that. You select the queue and which 
-user to use from the asset as the Requestor, and you land on the ticket create 
+Once you locate the server asset record, in the Actions menu you'll find
+"Create linked ticket", which does just that. You select the queue and which
+user to use from the asset as the Requestor, and you land on the ticket create
 page with some information pre-filled.
 
 =begin HTML
 
-<p><img 
-src="http://static.bestpractical.com/images/assets/asset-ticket-create.png" 
+<p><img
+src="http://static.bestpractical.com/images/assets/asset-ticket-create.png"
 alt="Create Ticket for Asset Work" /></p>
 
 =end HTML
 
-As you can see in the screenshot, when you create a ticket with a linked asset, 
-you get an asset portlet on the create page and on the ticket display page as 
-well. If you navigate back to the asset, you'll see a link back to the ticket 
-in the Links section there. This gives you a record of all the tickets that 
-have been opened against this asset. If this is a common scenario for you, you 
-might even add a custom field on the ticket with the vendor tracking number of 
-the repair. During the repair, you might flip the asset to an 'in-repair' 
+As you can see in the screenshot, when you create a ticket with a linked asset,
+you get an asset portlet on the create page and on the ticket display page as
+well. If you navigate back to the asset, you'll see a link back to the ticket
+in the Links section there. This gives you a record of all the tickets that
+have been opened against this asset. If this is a common scenario for you, you
+might even add a custom field on the ticket with the vendor tracking number of
+the repair. During the repair, you might flip the asset to an 'in-repair'
 status. Then when the ticket is resolved, flip it back to 'in-use'.
 
 =head2 End User Asset Tickets
 
-If an end user contacts us with some problems with their laptop, RT makes it 
-easy to find the correct laptop record and create a ticket for them. Since our 
-support staff do this frequently, they have added the Find User portlet to 
-their RT at a glance page and can quickly search for the user and go to their 
+If an end user contacts us with some problems with their laptop, RT makes it
+easy to find the correct laptop record and create a ticket for them. Since our
+support staff do this frequently, they have added the Find User portlet to
+their RT at a glance page and can quickly search for the user and go to their
 User Summary page (new in RT 4.2).
 
-We have added the Assigned Assets portlet to the User Summary page, so the 
-laptop is right there on the page when we find the user. We can just click on 
-the asset, then use the "Create linked ticket" action as before to create the 
+We have added the Assigned Assets portlet to the User Summary page, so the
+laptop is right there on the page when we find the user. We can just click on
+the asset, then use the "Create linked ticket" action as before to create the
 new repair ticket.
 
 =head2 End User Self Service
 
-Assume we already assign passwords to our unprivileged users so they can use 
-RT's self service interface to submit tickets and they have basic permissions 
-to do so (SeeQueue on the designated queue, CreateTicket, etc.). Since we've 
-given some asset rights to unprivileged users, they can use RT's Self Service 
-interface to find their assets (e.g., laptops, cell phones, etc.) when 
+Assume we already assign passwords to our unprivileged users so they can use
+RT's self service interface to submit tickets and they have basic permissions
+to do so (SeeQueue on the designated queue, CreateTicket, etc.). Since we've
+given some asset rights to unprivileged users, they can use RT's Self Service
+interface to find their assets (e.g., laptops, cell phones, etc.) when
 submitting support requests.
 
-When they log into the self service interface, they will see an Assets menu 
-that takes them to a page displaying assets assigned to them. In our example 
-configuration, this is based on the Held by setting we set when we gave out the 
-laptop. When they navigate to the asset, they will see the Actions menu with 
-the same "Create linked ticket" action our staff uses. When they click on that, 
-they'll end up on the simplified ticket create page for self service. When the 
-ticket is created, the laptop will already be linked to it, saving our staff 
+When they log into the self service interface, they will see an Assets menu
+that takes them to a page displaying assets assigned to them. In our example
+configuration, this is based on the Held by setting we set when we gave out the
+laptop. When they navigate to the asset, they will see the Actions menu with
+the same "Create linked ticket" action our staff uses. When they click on that,
+they'll end up on the simplified ticket create page for self service. When the
+ticket is created, the laptop will already be linked to it, saving our staff
 the work.
 
 =begin HTML
 
-<p><img 
-src="http://static.bestpractical.com/images/assets/asset-ticket-create.png" 
+<p><img
+src="http://static.bestpractical.com/images/assets/asset-ticket-create.png"
 alt="Create Ticket for Asset Work" /></p>
 
 =end HTML
 
 =head1 Summary
 
-This tutorial is only a quick overview showing how the assets extension can 
-help you track assets. There are many more features you'll find as you explore 
-the assets interface, like stacking multiple assets on a single ticket, bulk 
+This tutorial is only a quick overview showing how the assets extension can
+help you track assets. There are many more features you'll find as you explore
+the assets interface, like stacking multiple assets on a single ticket, bulk
 update features similar to tickets, and the search interface. Have fun!
 
 =cut

commit 097abb59990a4e3738e2259b194a7a0ab777c827
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Thu Dec 26 18:36:46 2013 -0500

    Typo fixes

diff --git a/lib/RT/Extension/Assets/Tutorial.pm b/lib/RT/Extension/Assets/Tutorial.pm
index 270820e..3cfd442 100644
--- a/lib/RT/Extension/Assets/Tutorial.pm
+++ b/lib/RT/Extension/Assets/Tutorial.pm
@@ -49,12 +49,12 @@ to RT's pages. MyAssets and FindAsset portlets are available for placement on
 RT at a Glance or in dashboards and a UserAssets portlet is available for the
 user summary pages.
 
-These portlets are fairly self-explanitory and you can add them by finding
+These portlets are fairly self-explanatory and you can add them by finding
 C<$HomepageComponents> and C<@UserSummaryPortlets> respectively in
 F<RT_Config.pm>, copying to F<RT_SiteConfig.pm>, and adding the portlets you
 want. There are also examples in the tutorial sample configuration file. Note
 that C<$HomepageComponents> makes the portlets available, but doesn't put them
-on RT at a Glance. To add them, just click the Edit link on the upper righthand
+on RT at a Glance. To add them, just click the Edit link on the upper right-hand
 corner of the homepage. C<@UserSummaryPortlets> does automatically add the
 "Assigned Assets" portlet to the User Summary page. It will appear based on the
 position in the configuration, so just place it in the list where you want it

commit 6a1e006b0d238df10b26ec352da2f846a6fb5171
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Thu Dec 26 18:43:57 2013 -0500

    Simplify wording; also, because on 4.2 and above we recommend Plugin()

diff --git a/lib/RT/Extension/Assets/Tutorial.pm b/lib/RT/Extension/Assets/Tutorial.pm
index 3cfd442..8441576 100644
--- a/lib/RT/Extension/Assets/Tutorial.pm
+++ b/lib/RT/Extension/Assets/Tutorial.pm
@@ -19,9 +19,9 @@ L<RT::Extension::Assets> distribution in the F<etc> directory. For
 configuration, look in F<etc/Tutorial_Configuration.txt>. You can copy all or
 part and paste it in your F<RT_SiteConfig.pm>.
 
-To load the test catalog, custom fields, and users, add
-C<RT::Extension::Assets> to your C<@Plugins> line after installing, then run
-the following from your RT directory:
+To load the test catalog, custom fields, and users, follow the
+installation instructions in L<RT::Extension::Assets/INSTALLATION>, then
+run the following from your RT directory:
 
     sbin/rt-setup-database --action insert --datafile \
       local/plugins/RT-Extension-Assets/etc/tutorialdata

commit 115ad65002a58e5d4a7cf9af289324675fa484bf
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Thu Dec 26 18:44:15 2013 -0500

    Line up configuration lines

diff --git a/lib/RT/Extension/Assets/Tutorial.pm b/lib/RT/Extension/Assets/Tutorial.pm
index 8441576..36f57a1 100644
--- a/lib/RT/Extension/Assets/Tutorial.pm
+++ b/lib/RT/Extension/Assets/Tutorial.pm
@@ -182,9 +182,8 @@ F<RT_SiteConfig.pm>:
 
     Set(%CustomFieldGroupings,
         'RT::Asset' => {
-            'Asset Details' => ['Serial Number', 'Manufacturer', 'Type',
-                'Tracking Number'],
-            'Dates'                 => ['Support Expiration', 'Issue Date'],
+            'Asset Details' => ['Serial Number', 'Manufacturer', 'Type', 'Tracking Number'],
+            'Dates'         => ['Support Expiration', 'Issue Date'],
         },
     );
 

commit 09c1100afdbf411f32ae308fd2cacd049496553d
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Thu Dec 26 18:45:56 2013 -0500

    Minor wording changes

diff --git a/lib/RT/Extension/Assets/Tutorial.pm b/lib/RT/Extension/Assets/Tutorial.pm
index 36f57a1..83f1cb2 100644
--- a/lib/RT/Extension/Assets/Tutorial.pm
+++ b/lib/RT/Extension/Assets/Tutorial.pm
@@ -17,7 +17,7 @@ get a feel for all of the administrative controls. If you want to get a jump
 start, the files to set up this basic configuration are provided in the
 L<RT::Extension::Assets> distribution in the F<etc> directory. For
 configuration, look in F<etc/Tutorial_Configuration.txt>. You can copy all or
-part and paste it in your F<RT_SiteConfig.pm>.
+part of it and paste it into your F<RT_SiteConfig.pm>.
 
 To load the test catalog, custom fields, and users, follow the
 installation instructions in L<RT::Extension::Assets/INSTALLATION>, then
@@ -30,7 +30,7 @@ This will change the default catalog name, create some users, and give those
 users asset permissions. Only asset rights are granted, so you need to grant
 additional rights if you want to experiment with creating tickets and linking
 assets. The initial user passwords are 'password'. You should only run this on
-a test RT instance as it is not intended to be used for configuring a
+a test RT instance, as it is not intended to be used for configuring a
 production system.
 
 =head1 Getting Started

commit 3ff07e06ebe08b49393c088ed48d60d80d389307
Merge: d5b1eb3 09c1100
Author: Jim Brandt <jbrandt at bestpractical.com>
Date:   Mon Dec 30 14:37:56 2013 -0500

    Merge branch '1.0/tutorial'


commit d43c8ae36a611cb1af98b1f89f14f61ffcb7b18e
Author: Jesse Vincent <jesse at bestpractical.com>
Date:   Mon Oct 7 16:00:56 2013 -0400

    Cut some input sizes down so they will actually fit inside a reflowed layout

diff --git a/html/Admin/Assets/Catalogs/Elements/EditBasics b/html/Admin/Assets/Catalogs/Elements/EditBasics
index 48f6f4b..fbeef81 100644
--- a/html/Admin/Assets/Catalogs/Elements/EditBasics
+++ b/html/Admin/Assets/Catalogs/Elements/EditBasics
@@ -48,11 +48,11 @@
 <table>
   <tr>
     <td class="label"><label for="Name"><&|/l&>Name</&></label></td>
-    <td><input name="Name" value="<% $current{Name} %>" size="50"></td>
+    <td><input name="Name" value="<% $current{Name} %>" size="40"></td>
   </tr>
   <tr>
     <td class="label"><label for="Description"><&|/l&>Description</&></label></td>
-    <td><input name="Description" value="<% $current{Description} %>" size="75"></td>
+    <td><input name="Description" value="<% $current{Description} %>" size="40"></td>
   </tr>
   <tr class="lifecycle">
     <td class="label"><label for="Lifecycle"><&|/l&>Lifecycle</&></label></td>
diff --git a/html/Asset/Elements/EditBasics b/html/Asset/Elements/EditBasics
index 8e6be66..a3829fc 100644
--- a/html/Asset/Elements/EditBasics
+++ b/html/Asset/Elements/EditBasics
@@ -54,11 +54,11 @@
 % }
   <tr class="asset-name">
     <td class="label"><label for="Name"><&|/l&>Name</&>:</label></td>
-    <td><input name="Name" value="<% $current{Name} %>" size="50"></td>
+    <td><input name="Name" value="<% $current{Name} %>" size="40"></td>
   </tr>
   <tr class="asset-description">
     <td class="label"><label for="Description"><&|/l&>Description</&>:</label></td>
-    <td><input name="Description" value="<% $current{Description} %>" size="75"></td>
+    <td><input name="Description" value="<% $current{Description} %>" size="40"></td>
   </tr>
   <tr class="asset-status">
     <td class="label"><label for="Status"><&|/l&>Status</&>:</label></td>
diff --git a/html/Asset/Search/Bulk.html b/html/Asset/Search/Bulk.html
index ee6d626..7beef09 100644
--- a/html/Asset/Search/Bulk.html
+++ b/html/Asset/Search/Bulk.html
@@ -81,11 +81,11 @@
   </tr>
   <tr class="asset-name">
     <td class="label"><label for="UpdateName"><&|/l&>Name</&></label></td>
-    <td><input name="UpdateName" value="<% $ARGS{'Name'}||'' %>" size="50"></td>
+    <td><input name="UpdateName" value="<% $ARGS{'Name'}||'' %>" size="40"></td>
   </tr>
   <tr class="asset-description">
     <td class="label"><label for="UpdateDescription"><&|/l&>Description</&></label></td>
-    <td><input name="UpdateDescription" value="<% $ARGS{'Description'}||'' %>" size="75"></td>
+    <td><input name="UpdateDescription" value="<% $ARGS{'Description'}||'' %>" size="40"></td>
   </tr>
   <tr class="asset-status">
     <td class="label"><label for="UpdateStatus"><&|/l&>Status</&></label></td>

commit a56ae2a32db68571348e4e5242ac28914407e00a
Author: Jesse Vincent <jesse at bestpractical.com>
Date:   Mon Oct 7 16:01:29 2013 -0400

    Make the "create an asset" form contain a table for semi-reliable twocol layout.

diff --git a/html/Asset/Create.html b/html/Asset/Create.html
index 308af0e..0481c5d 100644
--- a/html/Asset/Create.html
+++ b/html/Asset/Create.html
@@ -55,14 +55,16 @@
 <& /Elements/Tabs &>
 
 <& /Elements/ListActions, actions => \@results &>
-
 <form method="post" enctype="multipart/form-data" id="CreateAsset" action="Create.html">
   <input type="hidden" name="id" value="new">
   <input type="hidden" name="Catalog" value="<% $catalog->id %>">
 
-<div id="Asset-Create-basics">
 <a name="basics"></a>
-
+<div id="Asset-Create-basics" class="asset-metadata">
+    <table>
+        <tbody>
+        <tr>
+            <td>
   <&| /Widgets/TitleBox, title => loc("Basics"), class => "asset-basics", title_class => "inverse" &>
     <& Elements/EditBasics, %ARGS, AssetObj => $asset, CatalogObj => $catalog &>
   </&>
@@ -70,16 +72,21 @@
   <&| /Widgets/TitleBox, title => loc("People"), class => "asset-people", title_class => "inverse" &>
     <& Elements/EditPeople, %ARGS, AssetObj => $asset &>
   </&>
-
-</div>
-
-<div id="Asset-Create-details">
-<a name="details"></a>
+  </td><td>
   <&| /Widgets/TitleBox, title => loc("Links"), class => "asset-links", title_class => "inverse" &>
     <& /Elements/AddLinks,
         Object          => $asset,
         CustomFields    => $catalog->AssetCustomFields &>
   </&>
+  </td>
+
+  </tr>
+  </tbody>
+  </table>
+</div>
+
+<div id="Asset-Create-details">
+<a name="details"></a>
 
   <& /Elements/EditCustomFieldCustomGroupings,
         Object => $asset,

commit aa28eaf78d59a0a563d64b62729343fd17b692e3
Author: Jesse Vincent <jesse at bestpractical.com>
Date:   Mon Oct 7 16:02:25 2013 -0400

    add some more html so we can style it

diff --git a/html/Asset/Elements/AssetSearchBasics b/html/Asset/Elements/AssetSearchBasics
index 6830407..f472430 100644
--- a/html/Asset/Elements/AssetSearchBasics
+++ b/html/Asset/Elements/AssetSearchBasics
@@ -45,7 +45,7 @@
 %# those contributions and any derivatives thereof.
 %#
 %# END BPS TAGGED BLOCK }}}
-<&| /Widgets/TitleBox, title => 'Basics' &>
+<&| /Widgets/TitleBox, title => 'Basics', class=>'asset-search-grouping asset-search-basics' &>
 <table>
 <tr class="asset-catalog"><td class="label"><label for="Catalog"><&|/l&>Catalog</&></label></td>
     <td class="value" colspan="3">
diff --git a/html/Asset/Elements/AssetSearchCFs b/html/Asset/Elements/AssetSearchCFs
index 8211f9d..a83c9ba 100644
--- a/html/Asset/Elements/AssetSearchCFs
+++ b/html/Asset/Elements/AssetSearchCFs
@@ -45,7 +45,7 @@
 %# those contributions and any derivatives thereof.
 %#
 %# END BPS TAGGED BLOCK }}}
-<&| /Widgets/TitleBox, title => $Grouping ? loc($Grouping) : loc('Custom Fields'), hide_empty => 1 &>
+<&| /Widgets/TitleBox, title => $Grouping ? loc($Grouping) : loc('Custom Fields'), hide_empty => 1, class=>'asset-search-grouping asset-search-cfs'  &>
 % my $CFs = RT::CustomFields->new( $session{CurrentUser} );
 % $CFs->LimitToCatalog( $CatalogObj->Id );
 % $CFs->LimitToGrouping( "RT::Asset" => $Grouping );
diff --git a/html/Asset/Elements/ShowSummary b/html/Asset/Elements/ShowSummary
index 34ef997..8b77bf0 100644
--- a/html/Asset/Elements/ShowSummary
+++ b/html/Asset/Elements/ShowSummary
@@ -65,6 +65,7 @@ for my $section (@sections) {
         . $AssetObj->id;
 }
 </%init>
+<div class="asset-metadata">
 % for my $section (@sections) {
 <&| /Widgets/TitleBox, title => loc($section), title_href => $link{$section}, title_class => "inverse", class => "asset-\L$section" &>
     <& "Show$section", AssetObj => $AssetObj &>
@@ -76,3 +77,4 @@ for my $section (@sections) {
      title_href => RT->Config->Get("WebPath") . "/Asset/ModifyCFs.html",
      TitleBoxARGS => { title_class => "inverse" },
  &>
+</div>

commit 9de016b63adc328ca53617fa1b230cfcbc259f05
Author: Jesse Vincent <jesse at bestpractical.com>
Date:   Mon Oct 7 16:03:11 2013 -0400

    wording change "but not" -> "not" for brevity

diff --git a/html/Asset/Elements/AssetSearchBasics b/html/Asset/Elements/AssetSearchBasics
index f472430..68f4f45 100644
--- a/html/Asset/Elements/AssetSearchBasics
+++ b/html/Asset/Elements/AssetSearchBasics
@@ -59,11 +59,11 @@
 </td></tr>
 <tr class="asset-name"><td class="label"><label for="Name"><&|/l&>Name</&></label></td>
     <td class="value"><input type="text" id="Name" name="Name" value="<% $ARGS{Name} || ''%>" /></td>
-    <td class="label"><label for="!Name"><&|/l&>but not</&></td>
+    <td class="label"><label for="!Name"><&|/l&>not</&></td>
     <td class="value"><input type="text" id="!Name" name="!Name" value="<% $ARGS{"!Name"} || ''%>" /></td></tr>
 <tr class="asset-description"><td class="label"><label for="Description"><&|/l&>Description</&></label></td>
     <td class="value"><input type="text" id="Description" name="Description" value="<% $ARGS{Description} || ''%>" /></td>
-    <td class="label"><label for="!Description"><&|/l&>but not</&></td>
+    <td class="label"><label for="!Description"><&|/l&>not</&></td>
     <td class="value"><input type="text" id="!Description" name="!Description" value="<% $ARGS{"!Description"} || ''%>" /></td></tr>
 % my $CFs = RT::CustomFields->new( $session{CurrentUser} );
 % $CFs->LimitToCatalog( $CatalogObj->Id );
@@ -75,7 +75,7 @@
 <tr>
   <td class="label"><label for="<% $name %>"><% $cf->Name %></label></td>
   <td class="value"><& /Elements/SelectCustomFieldValue, CustomField => $cf, Name => $name, Default => $value &></td>
-  <td class="label"><label for="!<% $name %>"><&|/l&>but not</&></label></td>
+  <td class="label"><label for="!<% $name %>"><&|/l&>not</&></label></td>
   <td class="value"><& /Elements/SelectCustomFieldValue, CustomField => $cf, Name => "!$name", Default => $negval &></td>
 </tr>
 % }
diff --git a/html/Asset/Elements/AssetSearchCFs b/html/Asset/Elements/AssetSearchCFs
index a83c9ba..8d660b6 100644
--- a/html/Asset/Elements/AssetSearchCFs
+++ b/html/Asset/Elements/AssetSearchCFs
@@ -58,7 +58,7 @@
 <tr>
   <td class="label"><label for="<% $name %>"><% $cf->Name %></label></td>
   <td class="value"><& /Elements/SelectCustomFieldValue, CustomField => $cf, Name => $name, Default => $value &></td>
-  <td class="label"><label for="!<% $name %>"><&|/l&>but not</&></label></td>
+  <td class="label"><label for="!<% $name %>"><&|/l&>not</&></label></td>
   <td class="value"><& /Elements/SelectCustomFieldValue, CustomField => $cf, Name => "!$name", Default => $negval &></td>
 </tr>
 %   }
diff --git a/html/Asset/Elements/AssetSearchPeople b/html/Asset/Elements/AssetSearchPeople
index 90cb20c..cf568bd 100644
--- a/html/Asset/Elements/AssetSearchPeople
+++ b/html/Asset/Elements/AssetSearchPeople
@@ -54,7 +54,7 @@
       <input type="text" id="Role.<% $role %>" name="Role.<% $role %>"
              data-autocomplete="Users" value="<% $ARGS{"Role.$role"} || '' %>" />
   </td>
-  <td class="label"><label for="!Role.<% $role %>"><&|/l&>but not</&></td>
+  <td class="label"><label for="!Role.<% $role %>"><&|/l&>not</&></td>
   <td class="value">
       <input type="text" id="!Role.<% $role %>" name="!Role.<% $role %>"
              data-autocomplete="Users" value="<% $ARGS{"!Role.$role"} || '' %>" />
@@ -71,7 +71,7 @@
 <tr>
   <td class="label"><label for="<% $name %>"><% $cf->Name %></label></td>
   <td class="value"><& /Elements/SelectCustomFieldValue, CustomField => $cf, Name => $name, Default => $value &></td>
-  <td class="label"><label for="!<% $name %>"><&|/l&>but not</&></label></td>
+  <td class="label"><label for="!<% $name %>"><&|/l&>not</&></label></td>
   <td class="value"><& /Elements/SelectCustomFieldValue, CustomField => $cf, Name => "!$name", Default => $negval &></td>
 </tr>
 % }

commit 0b768ba778262ce777f2ed7a509cc22108390ec9
Author: Jesse Vincent <jesse at bestpractical.com>
Date:   Mon Oct 7 16:03:11 2013 -0400

    styling hook for 'not'

diff --git a/html/Asset/Elements/AssetSearchBasics b/html/Asset/Elements/AssetSearchBasics
index 68f4f45..02e1298 100644
--- a/html/Asset/Elements/AssetSearchBasics
+++ b/html/Asset/Elements/AssetSearchBasics
@@ -59,11 +59,11 @@
 </td></tr>
 <tr class="asset-name"><td class="label"><label for="Name"><&|/l&>Name</&></label></td>
     <td class="value"><input type="text" id="Name" name="Name" value="<% $ARGS{Name} || ''%>" /></td>
-    <td class="label"><label for="!Name"><&|/l&>not</&></td>
+    <td class="label not"><label for="!Name"><&|/l&>not</&></td>
     <td class="value"><input type="text" id="!Name" name="!Name" value="<% $ARGS{"!Name"} || ''%>" /></td></tr>
 <tr class="asset-description"><td class="label"><label for="Description"><&|/l&>Description</&></label></td>
     <td class="value"><input type="text" id="Description" name="Description" value="<% $ARGS{Description} || ''%>" /></td>
-    <td class="label"><label for="!Description"><&|/l&>not</&></td>
+    <td class="label not"><label for="!Description"><&|/l&>not</&></td>
     <td class="value"><input type="text" id="!Description" name="!Description" value="<% $ARGS{"!Description"} || ''%>" /></td></tr>
 % my $CFs = RT::CustomFields->new( $session{CurrentUser} );
 % $CFs->LimitToCatalog( $CatalogObj->Id );
@@ -75,7 +75,7 @@
 <tr>
   <td class="label"><label for="<% $name %>"><% $cf->Name %></label></td>
   <td class="value"><& /Elements/SelectCustomFieldValue, CustomField => $cf, Name => $name, Default => $value &></td>
-  <td class="label"><label for="!<% $name %>"><&|/l&>not</&></label></td>
+  <td class="label not"><label for="!<% $name %>"><&|/l&>not</&></label></td>
   <td class="value"><& /Elements/SelectCustomFieldValue, CustomField => $cf, Name => "!$name", Default => $negval &></td>
 </tr>
 % }
diff --git a/html/Asset/Elements/AssetSearchCFs b/html/Asset/Elements/AssetSearchCFs
index 8d660b6..ad52e3b 100644
--- a/html/Asset/Elements/AssetSearchCFs
+++ b/html/Asset/Elements/AssetSearchCFs
@@ -58,7 +58,7 @@
 <tr>
   <td class="label"><label for="<% $name %>"><% $cf->Name %></label></td>
   <td class="value"><& /Elements/SelectCustomFieldValue, CustomField => $cf, Name => $name, Default => $value &></td>
-  <td class="label"><label for="!<% $name %>"><&|/l&>not</&></label></td>
+  <td class="label not"><label for="!<% $name %>"><&|/l&>not</&></label></td>
   <td class="value"><& /Elements/SelectCustomFieldValue, CustomField => $cf, Name => "!$name", Default => $negval &></td>
 </tr>
 %   }
diff --git a/html/Asset/Elements/AssetSearchPeople b/html/Asset/Elements/AssetSearchPeople
index cf568bd..347f033 100644
--- a/html/Asset/Elements/AssetSearchPeople
+++ b/html/Asset/Elements/AssetSearchPeople
@@ -54,7 +54,7 @@
       <input type="text" id="Role.<% $role %>" name="Role.<% $role %>"
              data-autocomplete="Users" value="<% $ARGS{"Role.$role"} || '' %>" />
   </td>
-  <td class="label"><label for="!Role.<% $role %>"><&|/l&>not</&></td>
+  <td class="label not"><label for="!Role.<% $role %>"><&|/l&>not</&></td>
   <td class="value">
       <input type="text" id="!Role.<% $role %>" name="!Role.<% $role %>"
              data-autocomplete="Users" value="<% $ARGS{"!Role.$role"} || '' %>" />
@@ -71,7 +71,7 @@
 <tr>
   <td class="label"><label for="<% $name %>"><% $cf->Name %></label></td>
   <td class="value"><& /Elements/SelectCustomFieldValue, CustomField => $cf, Name => $name, Default => $value &></td>
-  <td class="label"><label for="!<% $name %>"><&|/l&>not</&></label></td>
+  <td class="label not"><label for="!<% $name %>"><&|/l&>not</&></label></td>
   <td class="value"><& /Elements/SelectCustomFieldValue, CustomField => $cf, Name => "!$name", Default => $negval &></td>
 </tr>
 % }

commit 7f811fe0505098ed5edb76ed4e36560d5092d394
Author: Jesse Vincent <jesse at bestpractical.com>
Date:   Mon Oct 7 16:04:17 2013 -0400

    Brevity. In a column labeled 'tickets', don't repeat the words "tickets" twice per line

diff --git a/html/Elements/RT__Asset/ColumnMap b/html/Elements/RT__Asset/ColumnMap
index b183c5c..99e7c44 100644
--- a/html/Elements/RT__Asset/ColumnMap
+++ b/html/Elements/RT__Asset/ColumnMap
@@ -100,7 +100,7 @@ my $COLUMN_MAP = {
             my $Query = "RefersTo = 'asset:" . $Asset->id . "'";
             $Query .= " AND (" . join(" OR ", map { "Status = '$_'" } RT::Queue->ActiveStatusArray) . ")";
             my $SearchURL = RT->Config->Get('WebPath') . '/Search/Results.html?' . $m->comp('/Elements/QueryString', Query => $Query);
-            return \'[ <a href="',$SearchURL,\'">Active tickets</a> ]';
+            return \'[ <a href="',$SearchURL,\'">Active</a> ]';
         }
     },
     InactiveTickets => {
@@ -110,7 +110,7 @@ my $COLUMN_MAP = {
             my $Query = "RefersTo = 'asset:" . $Asset->id . "'";
             $Query .= " AND (" . join(" OR ", map { "Status = '$_'" } RT::Queue->InactiveStatusArray) . ")";
             my $SearchURL = RT->Config->Get('WebPath') . '/Search/Results.html?' . $m->comp('/Elements/QueryString', Query => $Query);
-            return \'[ <a href="',$SearchURL,\'">Inactive tickets</a> ]';
+            return \'[ <a href="',$SearchURL,\'">Inactive</a> ]';
         }
     },
 };

commit 7a0a4573479e83c6f6215eb4e32367851720ca21
Author: Jesse Vincent <jesse at bestpractical.com>
Date:   Mon Oct 7 16:05:17 2013 -0400

    This change would want to move into RT if it's accepted. it makes our search results not wrap funny

diff --git a/static/css/RTx-Assets.css b/static/css/RTx-Assets.css
index f17d305..fa3a101 100644
--- a/static/css/RTx-Assets.css
+++ b/static/css/RTx-Assets.css
@@ -15,6 +15,10 @@
     text-align: right;
 }
 
+.collection-as-table td {
+    white-space:nowrap;
+}
+
 /* Colors */
 
 .asset-basics   .titlebox .titlebox-title .left,

commit 13b1404911e4e94b24da99cda66ecfd11acfc5ef
Author: Jesse Vincent <jesse at bestpractical.com>
Date:   Mon Oct 7 16:18:37 2013 -0400

    First pass at comprehensive styling for assets

diff --git a/static/css/RTx-Assets.css b/static/css/RTx-Assets.css
index fa3a101..07f040e 100644
--- a/static/css/RTx-Assets.css
+++ b/static/css/RTx-Assets.css
@@ -89,3 +89,105 @@
     font-weight: bold;
     color: black;
 }
+.asset-metadata>div {
+    vertical-align: top;
+    min-width: 30%;
+    max-width: 30%;
+    padding-right: 1.5em;
+    display: inline-block;
+}
+
+.asset-metadata {
+    padding-top: 2em; /* nav overflows this :< */
+}
+
+/* on a little screen, let's just use a single column */
+ at media(max-width: 600px) {
+	.asset-metadata {
+	    padding-top: 6em; /* nav overflows this :< */
+	}
+	.asset-metadata>div {
+	    min-width: 100%;
+	    width: 100%;
+	}
+
+	#Asset-Create-basics>table,
+	#Asset-Create-basics>table>tbody>tr ,
+	#Asset-Create-basics>table>tbody>tr>td  {
+	    display: block;
+	}
+
+}
+
+/* On a reasonable-width screen, make better use of whitespace */
+ at media(min-width: 601px) {
+	.edit-custom-fields tr,
+    #ModifyAsset .asset-basics tr {
+	    display: inline-block;
+	    width: 50%;
+
+	}
+	.edit-custom-fields tr td.cflabel,
+    #ModifyAsset .asset-basics tr td.label,
+    #ModifyAsset .asset-basics tr td.cflabel {
+	    width: 13em;
+	}
+
+
+	/* Asset creation */
+
+	#Asset-Create-basics>table  {
+	    width: 100%;
+	    align: left;
+	}
+	#Asset-Create-basics>table>tbody>tr>td {
+	    padding-right: 2em;
+	}
+	#Asset-Create-basics>table>tbody>tr{
+	        vertical-align: top;
+	}
+
+
+}
+
+/* basic cleanups for the search UI's elements */
+
+.asset-search-grouping input.datepicker {
+    width: 7em;
+}
+ .asset-search-grouping td *{
+    max-width: 11em;
+ }
+.asset-search-grouping td.label.not {
+    min-width: 3em;
+    width: auto;
+    padding-left: 1em;
+}
+
+/* On a wide screen, use two columns for search criteria */
+ at media (min-width:1150px){
+	.asset-search-grouping.asset-search-cfs {
+
+	    display: inline-block;
+	    width: 45%;
+	    padding-right: 1em;
+	    vertical-align: top;
+	}
+	.titlebox.asset-search-grouping.asset-search-cfs {
+	    display: block;
+	    width: auto;
+	    padding: inherit;
+	}
+
+
+	.asset-search-basics tr {
+	    width: 49%;
+	    display:inline-block;
+	    white-space: nowrap;
+	}
+	.asset-search-basics tr>td {
+	    display:inline-block;
+	    width:10em;
+	}
+
+}

commit 2334f976937248afefc1676f9c8e5dfe681e5153
Author: sunnavy <sunnavy at bestpractical.com>
Date:   Mon Jan 13 00:44:25 2014 +0800

    like search page, widens to 2 columns for bulk update page too

diff --git a/html/Asset/Search/Bulk.html b/html/Asset/Search/Bulk.html
index 7beef09..388b750 100644
--- a/html/Asset/Search/Bulk.html
+++ b/html/Asset/Search/Bulk.html
@@ -73,7 +73,7 @@
     CheckAll => 1, ClearAll => 1,
 &>
 
-<&| /Widgets/TitleBox, title => loc("Basics"), class => "asset-basics", title_class => "inverse" &>
+<&| /Widgets/TitleBox, title => loc("Basics"), class => "asset-basics asset-bulk-basics", title_class => "inverse" &>
 <table>
   <tr class="asset-catalog">
     <td class="label"><label for="UpdateCatalog"><&|/l&>Catalog</&></label></td>
@@ -125,7 +125,7 @@
 %   my $cfs = $catalog_obj->AssetCustomFields;
 %   $cfs->LimitToGrouping( 'RT::Asset' => $group);
 %   if ( $cfs->Count ) {
-<&| /Widgets/TitleBox, title => 'Edit ' . ($group? loc($group) : loc('Custom Fields')) &>
+<&| /Widgets/TitleBox, class=>'asset-bulk-grouping asset-bulk-cfs', title => 'Edit ' . ($group? loc($group) : loc('Custom Fields')) &>
 <& /Elements/BulkCustomFields, CustomFields => $cfs, &>
 </&>
 %   }
diff --git a/static/css/RTx-Assets.css b/static/css/RTx-Assets.css
index 07f040e..9f9970d 100644
--- a/static/css/RTx-Assets.css
+++ b/static/css/RTx-Assets.css
@@ -164,8 +164,9 @@
     padding-left: 1em;
 }
 
-/* On a wide screen, use two columns for search criteria */
+/* On a wide screen, use two columns for search/bulk criteria */
 @media (min-width:1150px){
+    .asset-bulk-grouping.asset-bulk-cfs,
 	.asset-search-grouping.asset-search-cfs {
 
 	    display: inline-block;
@@ -173,18 +174,21 @@
 	    padding-right: 1em;
 	    vertical-align: top;
 	}
+    .titlebox.asset-bulk-grouping.asset-bulk-cfs,
 	.titlebox.asset-search-grouping.asset-search-cfs {
 	    display: block;
 	    width: auto;
 	    padding: inherit;
 	}
 
-
+    .asset-bulk-basics tr,
 	.asset-search-basics tr {
 	    width: 49%;
 	    display:inline-block;
 	    white-space: nowrap;
 	}
+
+    .asset-bulk-basics tr>td,
 	.asset-search-basics tr>td {
 	    display:inline-block;
 	    width:10em;

commit c5e508a6408b27326ff598ba75c1d3b990d8e244
Author: sunnavy <sunnavy at bestpractical.com>
Date:   Mon Jan 13 00:47:16 2014 +0800

    don't position "User Summary" as "absolute right" for small screens.
    
    by default(in RT's accordion.css), position css of "User Summary" link(used in
    ShowRoleMembers) is:
    
    {
        position: absolute;
        right: 0;
    }
    
    this could result in overlapping(with the content at the left side) when the
    screen is not wide enough. I tried "float: right", but then it shadows the
    following contents(like "Real Name Enoch Root") below it in small screens.
    
    using "relative" position in small screens works(no overlapping or hidding),
    though it doesn't look that good(since it's not at the right side).

diff --git a/static/css/RTx-Assets.css b/static/css/RTx-Assets.css
index 9f9970d..c6f7b1b 100644
--- a/static/css/RTx-Assets.css
+++ b/static/css/RTx-Assets.css
@@ -195,3 +195,11 @@
 	}
 
 }
+
+ at media (max-width:1440px){
+    /* on a not-wide-enough screen, don't position "User Summary" link as "absolute" in case of overlapping */
+    #comp-Asset-Display .asset-people a.user-summary {
+        position: relative;
+        white-space: nowrap;
+    }
+}

commit c0a29423e3aacf6ff71c04597a866ca66d6d2f79
Author: sunnavy <sunnavy at bestpractical.com>
Date:   Mon Jan 13 00:58:59 2014 +0800

    edge case fix so we can use 2-columns in modify pages generally.
    
    before, it works only on Chrome, now it also works on Safari/Firefox/IE10+.
    old IE still doesn't work though.

diff --git a/static/css/RTx-Assets.css b/static/css/RTx-Assets.css
index c6f7b1b..1f59dcb 100644
--- a/static/css/RTx-Assets.css
+++ b/static/css/RTx-Assets.css
@@ -124,7 +124,7 @@
 	.edit-custom-fields tr,
     #ModifyAsset .asset-basics tr {
 	    display: inline-block;
-	    width: 50%;
+	    width: 49%;
 
 	}
 	.edit-custom-fields tr td.cflabel,

commit 15163628e454cdcc77006ddbbd7ede896b2f268e
Author: sunnavy <sunnavy at bestpractical.com>
Date:   Mon Jan 13 01:22:05 2014 +0800

    2-columns layout for people widget in search/bulk

diff --git a/html/Asset/Elements/AssetSearchPeople b/html/Asset/Elements/AssetSearchPeople
index 347f033..3a85da5 100644
--- a/html/Asset/Elements/AssetSearchPeople
+++ b/html/Asset/Elements/AssetSearchPeople
@@ -45,7 +45,7 @@
 %# those contributions and any derivatives thereof.
 %#
 %# END BPS TAGGED BLOCK }}}
-<&| /Widgets/TitleBox, title => 'People' &>
+<&| /Widgets/TitleBox, class => "asset-search-people", title => 'People' &>
 <table>
 % for my $role (RT::Asset->Roles) {
 <tr class="asset-role-<% CSSClass($role) %>">
diff --git a/html/Asset/Search/Bulk.html b/html/Asset/Search/Bulk.html
index 388b750..fe7bcb4 100644
--- a/html/Asset/Search/Bulk.html
+++ b/html/Asset/Search/Bulk.html
@@ -94,7 +94,7 @@
 </table>
 </&>
 
-<&| /Widgets/TitleBox, title => loc("People"), class => "asset-people", title_class => "inverse" &>
+<&| /Widgets/TitleBox, title => loc("People"), class => "asset-people asset-bulk-people", title_class => "inverse" &>
 <table>
 % for my $rname ( $asset->Roles( ACLOnly => 0 ) ) {
 % my $role = $asset->Role( $rname );
diff --git a/static/css/RTx-Assets.css b/static/css/RTx-Assets.css
index 1f59dcb..64a9fd5 100644
--- a/static/css/RTx-Assets.css
+++ b/static/css/RTx-Assets.css
@@ -181,6 +181,8 @@
 	    padding: inherit;
 	}
 
+    .asset-bulk-people tr,
+    .asset-search-people tr,
     .asset-bulk-basics tr,
 	.asset-search-basics tr {
 	    width: 49%;
@@ -188,6 +190,8 @@
 	    white-space: nowrap;
 	}
 
+    .asset-bulk-people tr>td,
+    .asset-search-people tr>td,
     .asset-bulk-basics tr>td,
 	.asset-search-basics tr>td {
 	    display:inline-block;

commit 71dd6fa672b334c855b52bfb29c1c2c2c5814678
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Wed Jan 22 17:11:26 2014 -0500

    Switch to two-column layout on middling width displays

diff --git a/static/css/RTx-Assets.css b/static/css/RTx-Assets.css
index 64a9fd5..6c6da77 100644
--- a/static/css/RTx-Assets.css
+++ b/static/css/RTx-Assets.css
@@ -101,6 +101,13 @@
     padding-top: 2em; /* nav overflows this :< */
 }
 
+ at media(max-width: 800px) {
+	.asset-metadata>div {
+	    min-width: 45%;
+	    width: 45%;
+	}
+}
+
 /* on a little screen, let's just use a single column */
 @media(max-width: 600px) {
 	.asset-metadata {
@@ -146,8 +153,6 @@
 	#Asset-Create-basics>table>tbody>tr{
 	        vertical-align: top;
 	}
-
-
 }
 
 /* basic cleanups for the search UI's elements */

commit d84f15ae4122bb00d67a7bbe99fea4cffe7f0851
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Wed Jan 22 17:17:09 2014 -0500

    CSS tidy to standardize whitespace variations

diff --git a/static/css/RTx-Assets.css b/static/css/RTx-Assets.css
index 6c6da77..f1c2c94 100644
--- a/static/css/RTx-Assets.css
+++ b/static/css/RTx-Assets.css
@@ -16,40 +16,45 @@
 }
 
 .collection-as-table td {
-    white-space:nowrap;
+    white-space: nowrap;
 }
 
 /* Colors */
 
 .asset-basics   .titlebox .titlebox-title .left,
-.asset-info-cfs .titlebox .titlebox-title .left { background-color: #b32; }
-.asset-people   .titlebox .titlebox-title .left { background-color: #48c; }
-.asset-dates    .titlebox .titlebox-title .left { background-color: #633063; }
-.asset-links    .titlebox .titlebox-title .left { background-color: #316531; }
-.ticket-assets  .titlebox .titlebox-title .left { background-color: #316531; }
+.asset-info-cfs .titlebox .titlebox-title .left { background-color: #b32    }
+.asset-people   .titlebox .titlebox-title .left { background-color: #48c    }
+.asset-dates    .titlebox .titlebox-title .left { background-color: #633063 }
+.asset-links    .titlebox .titlebox-title .left { background-color: #316531 }
+.ticket-assets  .titlebox .titlebox-title .left { background-color: #316531 }
 
 /* People display */
+
 #comp-Asset-Display .asset-people table {
     width: 100%;
 }
+
 #comp-Asset-Display .asset-people td.label {
     vertical-align: top;
     width: 8em;
 }
+
 #comp-Asset-Display .asset-people h3 {
     margin: 0;
     padding: 0;
     line-height: 1.3;
     font-size: 100%;
 }
+
 #comp-Asset-Display .asset-people .details {
     padding: 0;
 }
 
 /* People editing */
+
 .asset-people .edit ul.role-members {
-    margin-top:     0;
-    padding-left:   0;
+    margin-top: 0;
+    padding-left: 0;
     list-style: none;
 }
 
@@ -77,6 +82,7 @@
 }
 
 /* Asset summary */
+
 .ticket-assets form {
     display: inherit;
 }
@@ -89,6 +95,7 @@
     font-weight: bold;
     color: black;
 }
+
 .asset-metadata>div {
     vertical-align: top;
     min-width: 30%;
@@ -98,71 +105,73 @@
 }
 
 .asset-metadata {
-    padding-top: 2em; /* nav overflows this :< */
+    padding-top: 2em; /* nav overflows this :( */;
 }
 
- at media(max-width: 800px) {
-	.asset-metadata>div {
-	    min-width: 45%;
-	    width: 45%;
-	}
+ at media (max-width: 800px) {
+    .asset-metadata>div {
+        min-width: 45%;
+        width: 45%;
+    }
 }
 
 /* on a little screen, let's just use a single column */
- at media(max-width: 600px) {
-	.asset-metadata {
-	    padding-top: 6em; /* nav overflows this :< */
-	}
-	.asset-metadata>div {
-	    min-width: 100%;
-	    width: 100%;
-	}
+ at media (max-width: 600px) {
+    .asset-metadata {
+        padding-top: 6em;
+        /* nav overflows this: < */;
+    }
 
-	#Asset-Create-basics>table,
-	#Asset-Create-basics>table>tbody>tr ,
-	#Asset-Create-basics>table>tbody>tr>td  {
-	    display: block;
-	}
+    .asset-metadata>div {
+        min-width: 100%;
+        width: 100%;
+    }
 
+    #Asset-Create-basics>table,
+    #Asset-Create-basics>table>tbody>tr,
+    #Asset-Create-basics>table>tbody>tr>td {
+        display: block;
+    }
 }
 
 /* On a reasonable-width screen, make better use of whitespace */
- at media(min-width: 601px) {
-	.edit-custom-fields tr,
+ at media (min-width: 601px) {
+    .edit-custom-fields tr,
     #ModifyAsset .asset-basics tr {
-	    display: inline-block;
-	    width: 49%;
+        display: inline-block;
+        width: 49%;
+    }
 
-	}
-	.edit-custom-fields tr td.cflabel,
+    .edit-custom-fields tr td.cflabel,
     #ModifyAsset .asset-basics tr td.label,
     #ModifyAsset .asset-basics tr td.cflabel {
-	    width: 13em;
-	}
+        width: 13em;
+    }
 
+    /* Asset creation */
+    #Asset-Create-basics>table {
+        width: 100%;
+        align: left;
+    }
 
-	/* Asset creation */
+    #Asset-Create-basics>table>tbody>tr>td {
+        padding-right: 2em;
+    }
 
-	#Asset-Create-basics>table  {
-	    width: 100%;
-	    align: left;
-	}
-	#Asset-Create-basics>table>tbody>tr>td {
-	    padding-right: 2em;
-	}
-	#Asset-Create-basics>table>tbody>tr{
-	        vertical-align: top;
-	}
+    #Asset-Create-basics>table>tbody>tr {
+        vertical-align: top;
+    }
 }
 
 /* basic cleanups for the search UI's elements */
-
 .asset-search-grouping input.datepicker {
     width: 7em;
 }
- .asset-search-grouping td *{
+
+.asset-search-grouping td * {
     max-width: 11em;
- }
+}
+
 .asset-search-grouping td.label.not {
     min-width: 3em;
     width: auto;
@@ -170,43 +179,44 @@
 }
 
 /* On a wide screen, use two columns for search/bulk criteria */
- at media (min-width:1150px){
+ at media (min-width:1150px) {
     .asset-bulk-grouping.asset-bulk-cfs,
-	.asset-search-grouping.asset-search-cfs {
+    .asset-search-grouping.asset-search-cfs {
+        display: inline-block;
+        width: 45%;
+        padding-right: 1em;
+        vertical-align: top;
+    }
 
-	    display: inline-block;
-	    width: 45%;
-	    padding-right: 1em;
-	    vertical-align: top;
-	}
     .titlebox.asset-bulk-grouping.asset-bulk-cfs,
-	.titlebox.asset-search-grouping.asset-search-cfs {
-	    display: block;
-	    width: auto;
-	    padding: inherit;
-	}
+    .titlebox.asset-search-grouping.asset-search-cfs {
+        display: block;
+        width: auto;
+        padding: inherit;
+    }
 
     .asset-bulk-people tr,
     .asset-search-people tr,
     .asset-bulk-basics tr,
-	.asset-search-basics tr {
-	    width: 49%;
-	    display:inline-block;
-	    white-space: nowrap;
-	}
+    .asset-search-basics tr {
+        width: 49%;
+        display: inline-block;
+        white-space: nowrap;
+    }
 
     .asset-bulk-people tr>td,
     .asset-search-people tr>td,
     .asset-bulk-basics tr>td,
-	.asset-search-basics tr>td {
-	    display:inline-block;
-	    width:10em;
-	}
-
+    .asset-search-basics tr>td {
+        display: inline-block;
+        width: 10em;
+    }
 }
 
- at media (max-width:1440px){
-    /* on a not-wide-enough screen, don't position "User Summary" link as "absolute" in case of overlapping */
+ at media (max-width:1440px) {
+
+    /* on a not-wide-enough screen, don't position "User Summary" link as
+     * "absolute" in case of overlapping */
     #comp-Asset-Display .asset-people a.user-summary {
         position: relative;
         white-space: nowrap;

commit 6125261bed1803f64e2831c220ff48878e509511
Merge: 3ff07e0 d84f15a
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Wed Jan 22 17:20:18 2014 -0500

    Merge branch '1.0/style'


commit 0975a056534a0ef3e9a1e56ec5ce69569389475f
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Mon Jan 27 15:54:19 2014 -0500

    Add catalog name to all asset modify and display pages

diff --git a/html/Asset/Create.html b/html/Asset/Create.html
index 308af0e..15f2fa9 100644
--- a/html/Asset/Create.html
+++ b/html/Asset/Create.html
@@ -56,6 +56,7 @@
 
 <& /Elements/ListActions, actions => \@results &>
 
+<span class="catalog <% CSSClass($AssetObj->CatalogObj->Name) %>">
 <form method="post" enctype="multipart/form-data" id="CreateAsset" action="Create.html">
   <input type="hidden" name="id" value="new">
   <input type="hidden" name="Catalog" value="<% $catalog->id %>">
@@ -89,6 +90,7 @@
 
   <& /Elements/Submit, Label => loc('Create asset') &>
 </form>
+</span>
 
 <%args>
 $id => ""
diff --git a/html/Asset/Display.html b/html/Asset/Display.html
index 63f8ec1..bab4f8a 100644
--- a/html/Asset/Display.html
+++ b/html/Asset/Display.html
@@ -52,6 +52,7 @@
 
 <& /Elements/ListActions &>
 
+<span class="catalog <% CSSClass($AssetObj->CatalogObj->Name) %>">
 <& Elements/ShowSummary, AssetObj => $asset &>
 
 % $m->callback(CallbackName => 'AfterShowSummary', ARGSRef => \%ARGS, Asset => $asset);
@@ -63,6 +64,7 @@
     &>
 
 % $m->callback(CallbackName => 'AfterShowHistory', ARGSRef => \%ARGS, Asset => $asset);
+</span>
 
 <%args>
 $id => undef
diff --git a/html/Asset/History.html b/html/Asset/History.html
index a393512..02dd751 100644
--- a/html/Asset/History.html
+++ b/html/Asset/History.html
@@ -48,11 +48,13 @@
 <& /Elements/Header, Title => loc("History of Asset #[_1]: [_2]", $asset->id, $asset->Name) &>
 <& /Elements/Tabs &>
 
+<span class="catalog <% CSSClass($AssetObj->CatalogObj->Name) %>">
 <& /Elements/ShowHistory,
     Object => $asset,
     ShowDisplayModes => 0,
     DisplayPath => 'History.html',
     &>
+</span>
 
 <%args>
 $id => undef
diff --git a/html/Asset/Modify.html b/html/Asset/Modify.html
index 9e9ccd6..366efb2 100644
--- a/html/Asset/Modify.html
+++ b/html/Asset/Modify.html
@@ -50,6 +50,7 @@
 
 <& /Elements/ListActions, actions => \@results &>
 
+<span class="catalog <% CSSClass($AssetObj->CatalogObj->Name) %>">
 <form method="post" enctype="multipart/form-data" id="ModifyAsset" action="Modify.html">
   <input type="hidden" name="id" value="<% $asset->id %>">
   <input type="hidden" name="DisplayAfter" value="<% $DisplayAfter ? 1 : 0 %>">
@@ -64,6 +65,7 @@
 
   <& /Elements/Submit, Label => loc('Save asset'), Name => "Update" &>
 </form>
+</span>
 
 <%args>
 $id             => undef
diff --git a/html/Asset/ModifyCFs.html b/html/Asset/ModifyCFs.html
index 0f1d930..4a1ff50 100755
--- a/html/Asset/ModifyCFs.html
+++ b/html/Asset/ModifyCFs.html
@@ -50,6 +50,7 @@
 
 <& /Elements/ListActions, actions => \@results &>
 
+<span class="catalog <% CSSClass($AssetObj->CatalogObj->Name) %>">
 <form method="post" enctype="multipart/form-data" id="ModifyAssetCFs" action="ModifyCFs.html">
   <input type="hidden" name="id" value="<% $asset->id %>">
   <input type="hidden" name="Grouping" value="<% $Grouping %>">
@@ -60,6 +61,7 @@
 
   <& /Elements/Submit, Label => loc('Save asset'), Name => "Update" &>
 </form>
+</span>
 
 <%args>
 $id         => undef
diff --git a/html/Asset/ModifyDates.html b/html/Asset/ModifyDates.html
index a5a3dd7..0c5bbfe 100755
--- a/html/Asset/ModifyDates.html
+++ b/html/Asset/ModifyDates.html
@@ -50,6 +50,7 @@
 
 <& /Elements/ListActions, actions => \@results &>
 
+<span class="catalog <% CSSClass($AssetObj->CatalogObj->Name) %>">
 <form method="post" enctype="multipart/form-data" id="ModifyAssetDates" action="ModifyDates.html">
   <input type="hidden" name="id" value="<% $asset->id %>">
 
@@ -59,6 +60,7 @@
 
   <& /Elements/Submit, Label => loc('Save asset'), Name => "Update" &>
 </form>
+</span>
 
 <%init>
 my $asset = LoadAsset($id);
diff --git a/html/Asset/ModifyLinks.html b/html/Asset/ModifyLinks.html
index 79f004d..1823d58 100755
--- a/html/Asset/ModifyLinks.html
+++ b/html/Asset/ModifyLinks.html
@@ -50,6 +50,7 @@
 
 <& /Elements/ListActions, actions => \@results &>
 
+<span class="catalog <% CSSClass($AssetObj->CatalogObj->Name) %>">
 <form method="post" enctype="multipart/form-data" id="ModifyAssetLinks" action="ModifyLinks.html">
   <input type="hidden" name="id" value="<% $asset->id %>">
 
@@ -59,6 +60,7 @@
 
   <& /Elements/Submit, Label => loc('Save asset'), Name => "Update" &>
 </form>
+</span>
 
 <%init>
 my $asset = LoadAsset($id);
diff --git a/html/Asset/ModifyPeople.html b/html/Asset/ModifyPeople.html
index d781353..99eb7de 100755
--- a/html/Asset/ModifyPeople.html
+++ b/html/Asset/ModifyPeople.html
@@ -52,6 +52,7 @@
 
 <& /Elements/ListActions, actions => \@results &>
 
+<span class="catalog <% CSSClass($AssetObj->CatalogObj->Name) %>">
 <form method="post" enctype="multipart/form-data" id="ModifyAssetPeople" action="ModifyPeople.html">
   <input type="hidden" name="id" value="<% $asset->id %>">
 
@@ -69,6 +70,7 @@
 
   <& /Elements/Submit, Label => loc('Save asset'), Name => "Update" &>
 </form>
+</span>
 
 <%init>
 my $asset = LoadAsset($id);

commit 0e86af3db0db0d8adfbaaf3517ae58d71fd09d14
Merge: 6125261 0975a05
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Mon Jan 27 17:18:40 2014 -0500

    Merge branch '1.0/add-catalog-css-class'
    
    Conflicts:
    	html/Asset/Create.html


-----------------------------------------------------------------------



More information about the Bps-public-commit mailing list