[Rt-commit] rt branch, 3.9-merge-rtfm, updated. rt-3.9.6-1108-g1510369

Alex Vandiver alexmv at bestpractical.com
Wed Dec 8 16:55:55 EST 2010


The branch, 3.9-merge-rtfm has been updated
       via  1510369fa8ef2ad566f991e77f6cd7d41399b638 (commit)
       via  0d642e2d5abd86b9fe62136702092dff2472c7fa (commit)
       via  695e3aee3e107ff36772f98865ae38b976beef06 (commit)
       via  c2b01411f07875fb3949053b80a647281fc66c80 (commit)
       via  e91a6a4ac5488846a0f54c401fe9ed997d803285 (commit)
       via  d9a722b012c0e562bec6744f364b91beb5afa0d1 (commit)
       via  db9a9a21ba6b89de9fda159c48fba184a5d8bf4a (commit)
       via  178a7ed72880d0b1c4dbcee8d5de4f9b06e533e7 (commit)
      from  5c0a860e6f0b92cb3d84e02b84f8e6c0bf7b5a64 (commit)

Summary of changes:
 README.rtfm                               |   82 ------
 docs/schema.html                          |  228 -----------------
 etc/RT_Config.pm.in                       |    2 +-
 share/html/Articles/Topics.html           |    2 +-
 share/po/hr.po                            |    8 -
 share/po/pl.po                            |    8 -
 t/articles/articles.t                     |    2 +-
 t/articles/basic-api.t                    |    2 +-
 t/articles/{uri-rtfm.t => uri-articles.t} |    0
 tools/factory.mysql                       |  393 ----------------------------
 tools/factory.pg                          |  397 -----------------------------
 tools/license_tag                         |  245 ------------------
 12 files changed, 4 insertions(+), 1365 deletions(-)
 delete mode 100644 README.rtfm
 delete mode 100644 docs/schema.html
 rename t/articles/{uri-rtfm.t => uri-articles.t} (100%)
 delete mode 100644 tools/factory.mysql
 delete mode 100644 tools/factory.pg
 delete mode 100644 tools/license_tag

- Log -----------------------------------------------------------------
commit 178a7ed72880d0b1c4dbcee8d5de4f9b06e533e7
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Wed Dec 8 16:43:22 2010 -0500

    Remove old RTFM readme

diff --git a/README.rtfm b/README.rtfm
deleted file mode 100644
index fb5a7c6..0000000
--- a/README.rtfm
+++ /dev/null
@@ -1,82 +0,0 @@
-RTFM (The RT FAQ Manager) is a tool for maintaining an organizational
-knowledgebase. Out of the box, it integrates with RT 3.4.2 or later
-(Also available from bestpractical.com)
-
-Best Practical sells support and customization for RT and RTFM.  Feel
-free to contact us at sales at bestpractical.com if you have any
-questions about our service offerings.
-
-RTFM requires a few modules in addition to RT's standard dependencies.
-The 'perl Makefile.PL' command will check that you have all of the
-required modules installed; if not, they will either be auto-installed
-during the 'make' step, or you can opt to install them by hand using
-the CPAN shell or with any system-specific package management software
-you may have.
-
-Installation instructions:
---------------------------
-
-NOTE that upgrade steps are described in UPGRADING
-
-1) Install RT 3.4.2 or newer (Do not use this with 3.8.0 as
-   there are incompatibilities)
-
-2) Once RT appears to be happily installed, cd into the directory
-   where you unpacked RTFM.
-
-3) perl Makefile.PL
-
-4) make install
-
-5) make initdb
-
-6) If you are running 3.8, you need to enable RTFM in your 
-   RT_SiteConfig.pm file.  You can do this by adding the following
-   line:
-
-   Set(@Plugins,qw(RT::FM));
-
-   If you already have a @Plugins line, you must add RT::FM to your
-   existing plugin list.
-
-7) Clear your mason cache.  This is most often accomplished with
-   rm -rf /opt/rt3/var/mason_data/*
-
-8) Stop and start your web server
-
-9) Before you can add content to RTFM articles, you will need to configure
-   classes and custom fields. For details, see lib/RT/FM/Introduction.pod
-
-Further reading:
------------------------------------------------------
-
-lib/RT/FM/Introduction.pod - quick overview and configuration
-
-You can read this using the perldoc utility, viewing the
-source or using the RT-OnlineDocs extension
-
-Development
-------------------------------------------------------
-
-If you would like to run RTFM's tests, you need to
-set a few environment variables
-RT_DBA_USER - a user who can create a database on your 
-              RDBMS (such as root on mysql)
-RT_DBA_PASSWORD - the password for RT_DBA_USER
-PERL5LIB - the path to your RT libraries (/opt/rt3/lib)
-
-RT_DBA_USER=user RT_DBA_PASSWORD=password PERL5LIB=/opt/rt3/lib make test
-
-These are intended to be run before installing RTFM.
-Like RT, RTFM expects to be able to create a new database called rt3test
-on your system.
-
-Bug reporting and discussion lists:
------------------------------------------------------
-
-You probably want to discuss RTFM on rt-users at lists.bestpractical.com.
-(Send mail to rt-users-request at lists.fsck.com to subscribe)
-
-Bug reports can be sent to rtfm-bugs at bestpractical.com. You can look
-at open bug reports at http://rt3.fsck.com/. Log in as guest/guest
-to see the content of bug reports.

commit db9a9a21ba6b89de9fda159c48fba184a5d8bf4a
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Wed Dec 8 16:44:32 2010 -0500

    Remove ancient RTFM schema

diff --git a/docs/schema.html b/docs/schema.html
deleted file mode 100644
index a17f7b5..0000000
--- a/docs/schema.html
+++ /dev/null
@@ -1,228 +0,0 @@
-<html>
- <head>
-<title>RTFM 2.0 Schema</title>
-</head>
-<body>
-
-<h1>FM_Articles</h1>
- <h2>Fields:</h2>
- <dl><dt>
-  id INTEGER NOT NULL  AUTO_INCREMENT
-  </dt>
-<dd></dd>
-<dt>
-  Name varchar(255) NULL  
-  </dt>
-<dd>A short, ideally unique, identifier for this article</dd>
-<dt>
-  Summary varchar(255) NULL  
-  </dt>
-<dd>A brief summary of this article</dd>
-<dt>
-  SortOrder integer NULL  
-  </dt>
-<dd>When articles are automatically ordered by RTFM, this field defines which
-articles should be listed first. (Lower numbers are listed first)</dd>
-<dt>
-  Class integer NULL
-  </dt>
-<dd>Foreign key to <b>FM_Classes</b></dd>
-<dt>
-  URI varchar(255)
-  </dt>
-<dd>A cached copy of this article's URI. Used to speed article relationship searches.</dd>
-
-</dl>
-
-  An "Article" is RTFM's central element. Each article belongs to
-  one and only one "Class".
-
-  Adtitionally, articles can have a number of "ArticleCFValues" which
-  correspond to the "CustomFields" for the Article's class.
-
-<h1>FM_Classes</h1>
- <h2>Fields:</h2>
- <dl><dt>
-  id INTEGER NOT NULL  AUTO_INCREMENT
-  </dt>
-<dd></dd>
-<dt>
-  Name varchar(255) NULL  
-  </dt>
-<dd>A short name for this class. Used to help categorize articles and access to
-articles</dd>
-<dt>
-  Description varchar(255) NULL  
-
-  </dt>
-<dd>A brief description of what this class is used for.</dd>
-<dt>
-  SortOrder integer NULL  
-  </dt>
-<dd>Used to automatically order classes in listings.</dd>
-<dt>
-  Disabled int(2) not null default '0'
-  </dt>
-<dd>Boolean used to determine whether this class is currently active</dd>
-
-</dl>
-
-       <p> Classes are an analog to RT's "Queue."  
-        
-
-       <p> Within RTFM, rights to a class and all articles within that class can be granted to an RT user or group, using RT's ACL system.  Class objects contain the necessary metadata to be ACLed within RT.
-
-<h1>FM_CustomFields</h1><h1>
- <h2>Fields:</h2>
- <dl><dt>
-  id INTEGER NOT NULL  AUTO_INCREMENT
-  </dt>
-<dd></dd>
-<dt>
-  Name varchar(200) NULL  
-  </dt>
-<dd>A short name for this custom field. </dd>
-<dt>
-  Type varchar(200) NULL  
-  </dt>
-<dd>A custom field's type determines its behaviour. Available types are: 
-SelectSingle SelectMultiple FreeformSingle FreeformMultiple TextSingle
-</dd>
-<dt>
-  Description varchar(200) NULL  
-  </dt>
-<dd>A freeform description for this custom field</dd>
-<dt>
-  SortOrder integer NULL  
-  </dt>
-<dd>When custom fields are automatically ordered by RTFM, this field defines which
-articles should be listed first. (Lower numbers are listed first)</dd>
-
-</dl>
-
-<p>Almost all data and metadata related to an "Article" is attached to it in the form of CustomFields. 
-
-
-
-<p>Within RTFM, rights to a CustomField can be granted to an RT user or group, using RT's ACL system.  Class objects contain the necessary metadata to be ACLed within RT.
-
-
-<h1>FM_ClassCustomFields</h1>
- <h2>Fields:</h2>
- <dl><dt>
-  id INTEGER NOT NULL  AUTO_INCREMENT
- </dt>
-<dd></dd>
-<dt>
-  Class integer not NULL  
- </dt>
-<dd>Foreign key to FM_Class.id</dd>
-<dt>
-  CustomField integer not NULL  
-</dt>
-<dd>Foreign key to FM_CustomFields.id </dd>
-</dl>
-
-<p>ClassCustomFields is a simple mapping table that allows a single CustomField to apply to more than one Class.
-
-<h1>FM_CustomFieldValues</h1>
- <h2>Fields:</h2>
- <dl><dt>
-  id INTEGER NOT NULL  AUTO_INCREMENT
- </dt>
-<dd></dd>
-<dt>
-  CustomField int NOT NULL  
- </dt>
-<dd>Foreign key to FM_CustomFields.id </dd>
-<dt>
-  Name varchar(255) NULL  
- </dt>
-<dd>What this custom field value is called. This is the name that shows up in a
-list of possible values for a custom field.</dd>
-<dt>
-  Description varchar(255) NULL  
- </dt>
-<dd>A brief description of what this value is used for, in the
-context of the custom field.</dd>
-<dt>
-  SortOrder integer NULL  
-  </dt>
-<dd>When values are automatically ordered by RTFM, this field defines which
-articles should be listed first. (Lower numbers are listed first)</dd>
-</dl>
-
-
-
-        <p>CustomFieldValues contains a list of acceptable values for each SelectSingle or SelectMultiple CustomField.
-
-<h1>ArticleCFValues</h1>
- <h2>Fields:</h2>
- <dl><dt>
-  id INTEGER NOT NULL  AUTO_INCREMENT
- </dt>
-<dd></dd>
-<dt>
-  Article int NOT NULL  
- </dt>
-<dd>Foreign key to FM_Articles.id</dd>
-<dt>
-  CustomField int NOT NULL  
- </dt>
-<dd>Foreign key to FM_CustomFields.id</dd>
-<dt>
-  Content text
-  </dt>
-<dd>
-	To ensure data integrity, even as the "current" acceptable values for a
-    Custom Field change, the content is
-	stored by value, rather than by reference in the ArticleCFValues table.
-    This has the added benefit of allowing "Select" custom fields
-	to be converted to "Freeform" custom fields without losing data.
-
-</dd></dl>
-	
-	<p>ArticleCFValues contains a list of current values for each applicable CustomField for each article.
-        
-
-<h1>FM_Transactions</h1>
- <h2>Fields:</h2>
- <dl><dt>
-  id INTEGER NOT NULL  AUTO_INCREMENT
- </dt>
-<dd></dd>
-<dt>
-  Article integer NULL  
- </dt>
-<dd>Foreign key to FM_Articles.id</dd>
-<dt>
-  ChangeLog text NULL  
- </dt>
-<dd>A textual description of the content of this change</dd>
-<dt>
-  Type varchar(64) NULL  
- </dt>
-<dd>What sort of field is being changed. One of Link, Core, Custom</dd>
-<dt>
-  Field varchar(64) NOT NULL DEFAULT '',
-</dt> <dd>
-If Type is "Core": the name of the core field we're changing<br>
-If Type is "Custom": Weak foreign key to FM_CustomFields.id<br>
-If Type is "Link" a description of what sort of link we're referring to.
-(RefersTo, ReferredToBy)
-</dd> 
-<dt> OldContent text NOT NULL DEFAULT ""  </dt>
-<dd>The old value of the field in question</dd>
-<dt> NewContent text NOT NULL DEFAULT "" </dt>
-<dd>The new value of the field in question</dd></dl>
-        
-
-
-
-       <p>Each transaction describes a single update to an "Article".
-
-
-
-
-</body>
-</html>	

commit d9a722b012c0e562bec6744f364b91beb5afa0d1
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Wed Dec 8 16:45:35 2010 -0500

    Rename test to reflrect RTFM -> Articles

diff --git a/t/articles/uri-rtfm.t b/t/articles/uri-articles.t
similarity index 100%
rename from t/articles/uri-rtfm.t
rename to t/articles/uri-articles.t

commit e91a6a4ac5488846a0f54c401fe9ed997d803285
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Wed Dec 8 16:47:48 2010 -0500

    Remove an RTFM mention from RT_Config

diff --git a/etc/RT_Config.pm.in b/etc/RT_Config.pm.in
index 9cb46b9..21c7981 100755
--- a/etc/RT_Config.pm.in
+++ b/etc/RT_Config.pm.in
@@ -1138,7 +1138,7 @@ Set($MessageBoxIncludeSignatureOnComment, 1);
 Support implicit links in WikiText custom fields?  A true value
 causes InterCapped or ALLCAPS words in WikiText fields to
 automatically become links to searches for those words.  If used on
-RTFM articles, it links to the RTFM article with that name.
+Articles, it links to the Article with that name.
 
 =cut
 

commit c2b01411f07875fb3949053b80a647281fc66c80
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Wed Dec 8 16:48:03 2010 -0500

    Remove RTFM mentions from po files

diff --git a/share/po/hr.po b/share/po/hr.po
index f56a31a..2ceedc6 100644
--- a/share/po/hr.po
+++ b/share/po/hr.po
@@ -6113,10 +6113,6 @@ msgstr ""
 msgid "RTAddressRegexp option in the config doesn't match %1"
 msgstr ""
 
-#: NOT FOUND IN SOURCE
-msgid "RTFM Error"
-msgstr "RTFM greška"
-
 #: share/html/Admin/Users/Modify.html:77 share/html/Elements/RT__User/ColumnMap:66 share/html/User/Prefs.html:69
 msgid "Real Name"
 msgstr "Pravo ime"
@@ -8386,10 +8382,6 @@ msgstr ""
 msgid "Use system default (%1)"
 msgstr ""
 
-#: NOT FOUND IN SOURCE
-msgid "Use the dropdown menus to select which transactions you want to extract into a new RTFM article"
-msgstr "Koristi padajuće izbornike za odabir transakcija koje zeliš ekstrahirati u novi RTFM članak"
-
 #: lib/RT/Config.pm:368
 msgid "Use this to protect the format of plain text"
 msgstr ""
diff --git a/share/po/pl.po b/share/po/pl.po
index 2537c07..9e77785 100644
--- a/share/po/pl.po
+++ b/share/po/pl.po
@@ -6616,10 +6616,6 @@ msgstr "Email w RT wymaga autoryzacji podpisu PGP. Albo nie podpisałeś wiadomo
 msgid "RTAddressRegexp option in the config doesn't match %1"
 msgstr ""
 
-#: NOT FOUND IN SOURCE
-msgid "RTFM Error"
-msgstr "BÅ‚Ä…d RTFM"
-
 #: share/html/Admin/Users/Modify.html:77 share/html/Elements/RT__User/ColumnMap:66 share/html/User/Prefs.html:69
 msgid "Real Name"
 msgstr "ImiÄ™ i nazwisko"
@@ -8990,10 +8986,6 @@ msgstr ""
 msgid "Use system default (%1)"
 msgstr ""
 
-#: NOT FOUND IN SOURCE
-msgid "Use the dropdown menus to select which transactions you want to extract into a new RTFM article"
-msgstr "Użyj rozwijalnych list, aby wybrać transakcje, z których chcesz utworzyć nowy artykuł RTFM"
-
 #: lib/RT/Config.pm:368
 msgid "Use this to protect the format of plain text"
 msgstr ""

commit 695e3aee3e107ff36772f98865ae38b976beef06
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Wed Dec 8 16:50:41 2010 -0500

    Fix a FM_ObjectTopics -> ObjectTopics rename

diff --git a/share/html/Articles/Topics.html b/share/html/Articles/Topics.html
index 7cdb257..74ab5b8 100644
--- a/share/html/Articles/Topics.html
+++ b/share/html/Articles/Topics.html
@@ -100,7 +100,7 @@ if ($id or $showall) {
         TYPE   => 'left',
         ALIAS1 => 'main',
         FIELD1 => 'id',
-        TABLE2 => 'FM_ObjectTopics',
+        TABLE2 => 'ObjectTopics',
         FIELD2 => 'ObjectId',
     );
     $Articles->Limit(

commit 0d642e2d5abd86b9fe62136702092dff2472c7fa
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Wed Dec 8 16:54:11 2010 -0500

    Remove old RTFM versions of tools; RT versions already live in devel/

diff --git a/tools/factory.mysql b/tools/factory.mysql
deleted file mode 100644
index d04a351..0000000
--- a/tools/factory.mysql
+++ /dev/null
@@ -1,393 +0,0 @@
-#!/usr/bin/perl
-#$Header: /raid/RT/polysched/sbin/factory,v 1.2 2001/12/07 03:51:09 jesse Exp $
-use DBI;
-
-my $database  = shift;
-my $namespace = shift;
-
-my $CollectionBaseclass = 'RT::SearchBuilder';
-my $RecordBaseclass     = 'RT::Record';
-
-my $driver   = 'mysql';
-my $hostname = 'localhost';
-my $user     = 'root';
-my $password = '';
-
-my $Attribution = "
-# Autogenerated by DBIx::SearchBuilder factory (by <jesse\@bestpractical.com>)
-# WARNING: THIS FILE IS AUTOGENERATED. ALL CHANGES TO THIS FILE WILL BE LOST.  
-# 
-# !! DO NOT EDIT THIS FILE !!
-#
-";
-
-my $dsn = "DBI:$driver:database=$database;host=$hostname";
-
-my $dbh = DBI->connect( $dsn, $user, $password );
-
-#get all tables out of database
-my @tables = $dbh->tables();
-
- at tables = grep { /^FM_/i } map {s/`\Q$database\E`\.`(.*)`/$1/; $_} @tables;
-my ( %tablemap, $typemap, %modulemap );
-
-foreach my $table (@tables) {
-    print "We're looking at $table\n";
-
-    $table =~ s/customfield/CustomField/gi;
-    $table =~ s/value/Value/gi;
-    $table =~ s/cfvalue/CFValue/gi;
-    $table =~ s/fm_/FM_/;
-    $table =~ s/_(.)/"_".uc($1)/e;
-
-
-    $tablemap{$table}  = $table;
-    $modulemap{$table} = $table;
-    if ( $table =~ /^FM_((?:Object)?Class)es$/i || $table =~ /^FM_(.*?)(s?)$/i ) {
-        my $item = $1;
-        $item = ucfirst($item);
-        $tablemap{$item}  = $table;
-        $modulemap{$item} = $item;
-        print "Shoving $item into the map as a pointer to $table\n";
-    }
-}
-$tablemap{'CreatedBy'} = 'User';
-$tablemap{'UpdatedBy'} = 'User';
-
-$typemap{'id'}            = 'ro';
-$typemap{'Creator'}       = 'auto';
-$typemap{'Created'}       = 'auto';
-$typemap{'Updated'}       = 'auto';
-$typemap{'UpdatedBy'}     = 'auto';
-$typemap{'LastUpdated'}   = 'auto';
-$typemap{'LastUpdatedBy'} = 'auto';
-
-foreach my $table (@tables) {
-    next if ($table eq 'sessions');
-
-    print "We're looking at $table\n";
-
-
-    my $tablesingle = $table;
-    $tablesingle =~ s/^FM_//gi;
-    $tablesingle = ucfirst($tablesingle);
-    $tablesingle =~ s/customfield/CustomField/gi;
-    $tablesingle =~ s/value/Value/gi;
-    $tablesingle =~ s/cfvalue/CFValue/gi;
-    if ($tablesingle =~ /^Classes$/i) {
-        $tablesingle = "Class";
-    } elsif ($tablesingle =~ /^ObjectClasses$/i) {
-        $tablesingle = "ObjectClass";
-    } else {
-        $tablesingle =~ s/s$//;
-    }
-    my $tableplural = $tablesingle . "Collection";
-
-
-
-    my %requirements;
-
-    my $CollectionClassName = $namespace . "::" . $tableplural;
-    my $RecordClassName     = $namespace . "::" . $tablesingle;
-
-    my $path = $namespace;
-    $path =~ s/::/\//g;
-
-    my $RecordClassPath     = $path . "/" . $tablesingle . ".pm";
-    my $CollectionClassPath = $path . "/" . $tableplural . ".pm";
-
-    #create a collection class
-    my $CreateInParams;
-    my $CreateOutParams;
-    my $ClassAccessible = "";
-    my $FieldsPod       = "";
-    my $CreatePod       = "";
-    my %fields;
-    my $sth = $dbh->prepare("DESCRIBE $table");
-    $sth->execute;
-
-    while ( my $row = $sth->fetchrow_hashref() ) {
-        my $field   = $row->{'Field'};
-        my $type    = $row->{'Type'};
-        my $default = $row->{'Default'};
-        $fields{$field} = 1;
-
-        #generate the 'accessible' datastructure
-
-        if ( $typemap{$field} eq 'auto' ) {
-            $ClassAccessible .= "        $field => 
-		{read => 1, auto => 1,";
-        }
-        elsif ( $typemap{$field} eq 'ro' ) {
-            $ClassAccessible .= "        $field =>
-		{read => 1,";
-        }
-        else {
-            $ClassAccessible .= "        $field => 
-		{read => 1, write => 1,";
-
-        }
-
-        $ClassAccessible .= " type => '$type', default => '$default'},\n";
-
-        #generate pod for the accessible fields
-        $FieldsPod .= "
-=item $field
-
-Returns the current value of $field. 
-(In the database, $field is stored as $type.)
-
-";
-
-        unless ( $typemap{$field} eq 'auto' || $typemap{$field} eq 'ro' ) {
-            $FieldsPod .= "
-
-=item Set$field VALUE
-
-
-Set $field to VALUE. 
-Returns (1, 'Status message') on success and (0, 'Error Message') on failure.
-(In the database, $field will be stored as a $type.)
-
-";
-        }
-
-        $FieldsPod .= "
-=cut
-
-";
-
-        print "Checking module map for $field\n";
-
-        if ( $modulemap{$field} ) {
-            print " found it!\n";
-            $FieldsPod .= "
-=item ${field}Obj
-
-Returns the $modulemap{$field} Object which has the id returned by $field
-
-
-=cut
-
-sub ${field}Obj {
-	my \$self = shift;
-	my \$$field =  ${namespace}::$modulemap{$field}->new(\$self->CurrentUser);
-	\$$field->Load(\$self->$field());
-	return(\$$field);
-}
-";
-            $requirements{ $tablemap{$field} } =
-              "use ${namespace}::$modulemap{$field};";
-
-        }
-
-        unless ( $typemap{$field} eq 'auto' || $field eq 'id' ) {
-
-            #generate create statement
-            $CreateInParams .= "                $field => '$default',\n";
-            $CreateOutParams .=
-              "                         $field => \$args{'$field'},\n";
-
-            #gerenate pod for the create statement	
-            $CreatePod .= "  $type '$field'";
-            $CreatePod .= " defaults to '$default'" if ($default);
-            $CreatePod .= ".\n";
-
-        }
-
-    }
-
-    $Create = "
-sub Create {
-    my \$self = shift;
-    my \%args = ( 
-$CreateInParams
-		  \@_);
-    \$self->SUPER::Create(
-$CreateOutParams);
-
-}
-";
-    $CreatePod .= "\n=cut\n\n";
-
-    my $CollectionClass = $Attribution .
-
-      "
-
-=head1 NAME
-
-  $CollectionClassName -- Class Description
- 
-=head1 SYNOPSIS
-
-  use $CollectionClassName
-
-=head1 DESCRIPTION
-
-
-=head1 METHODS
-
-=cut
-
-package $CollectionClassName;
-
-use $CollectionBaseclass;
-use $RecordClassName;
-
-use base qw($CollectionBaseclass);
-
-
-sub _Init {
-    my \$self = shift;
-    \$self->{'table'} = '$table';
-    \$self->{'primary_key'} = 'id';
-
-";
-
-    if ( $fields{'SortOrder'} ) {
-
-        $CollectionClass .= "
-
-  # By default, order by name
-  \$self->OrderBy( ALIAS => 'main',
-                  FIELD => 'SortOrder',
-                  ORDER => 'ASC');
-";
-    }
-    $CollectionClass .= "
-    return ( \$self->SUPER::_Init(\@_) );
-}
-
-
-=item NewItem
-
-Returns an empty new $RecordClassName item
-
-=cut
-
-sub NewItem {
-    my \$self = shift;
-    return($RecordClassName->new(\$self->CurrentUser));
-}
-" . MagicImport($CollectionClassName);
-
-    my $RecordClassHeader = $Attribution . "
-
-=head1 NAME
-
-$RecordClassName
-
-
-=head1 SYNOPSIS
-
-=head1 DESCRIPTION
-
-=head1 METHODS
-
-=cut
-
-package $RecordClassName;
-use $RecordBaseclass; 
-";
-
-    foreach my $key ( keys %requirements ) {
-        $RecordClassHeader .= $requirements{$key} . "\n";
-    }
-    $RecordClassHeader .= "
-
-use base qw( $RecordBaseclass );
-
-sub _Init {
-  my \$self = shift; 
-
-  \$self->Table('$table');
-  \$self->SUPER::_Init(\@_);
-}
-
-";
-
-    my $RecordClass = "
-
-$RecordClassHeader
-
-$RecordInit
-
-=item Create PARAMHASH
-
-Create takes a hash of values and creates a row in the database:
-
-$CreatePod
-
-$Create
-
-$FieldsPod
-
-sub _CoreAccessible {
-    {
-     
-$ClassAccessible
- }
-};
-
-" . MagicImport($RecordClassName);
-
-    print "About to make $RecordClassPath, $CollectionClassPath\n";
-    `mkdir -p $path`;
-
-    open( RECORD, ">$RecordClassPath" );
-    print RECORD $RecordClass;
-    close(RECORD);
-
-    open( COL, ">$CollectionClassPath" );
-    print COL $CollectionClass;
-    close($COL);
-
-}
-
-sub MagicImport {
-    my $class = shift;
-
-    #if (exists \$warnings::{unimport})  {
-    #        no warnings qw(redefine);
-
-    my $content = "
-        eval \"require @{[$class]}_Overlay\";
-        if (\$@ && \$@ !~ /^Can't locate/) {
-            die \$@;
-        };
-
-        eval \"require @{[$class]}_Local\";
-        if (\$@ && \$@ !~ /^Can't locate/) {
-            die \$@;
-        };
-
-
-
-
-=head1 SEE ALSO
-
-This class allows \"overlay\" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-If you'll be working with perl 5.6.0 or greater, each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-@{[$class]}_Overlay, @{[$class]}_Local
-
-=cut
-
-
-1;
-";
-
-    return $content;
-}
-
-# }}}
-
diff --git a/tools/factory.pg b/tools/factory.pg
deleted file mode 100644
index 32b607f..0000000
--- a/tools/factory.pg
+++ /dev/null
@@ -1,397 +0,0 @@
-#!/usr/bin/perl
-#$Header: /raid/RT/polysched/sbin/factory,v 1.2 2001/12/07 03:51:09 jesse Exp $
-use DBI;
-
-use strict;
-
-use vars qw($VERSION);
-
-$VERSION = qw($Revision$) [2];
-
-my $database  = shift;
-my $namespace = shift;
-
-my $CollectionBaseclass = 'RT::PAS::SearchBuilder';
-my $RecordBaseclass     = 'RT::PAS::Record';
-
-my $driver   = 'Pg';
-my $hostname = 'localhost';
-my $user     = 'pas';
-my $password = '';
-
-my $Attribution = "# \$Header\$
-
-# Autogenerated by DBIx::SearchBuilder factory (by <jesse\@bestpractical.com>)
-# WARNING: THIS FILE IS AUTOGENERATED. ALL CHANGES TO THIS FILE WILL BE LOST.  
-# 
-# !! DO NOT EDIT THIS FILE !!
-#
-";
-
-my $dsn = "DBI:$driver:dbname=$database;host=$hostname";
-
-my $dbh = DBI->connect( $dsn, $user, $password );
-
-#get all tables out of database
-my @tables = $dbh->tables();
-
-my ( %tablemap, %typemap, %modulemap );
-
-foreach my $table (@tables) {
-    next if ( $table eq 'sessions' );
-    $tablemap{$table}  = $table;
-    $modulemap{$table} = $table;
-    if ( $table =~ /^(.*)s$/ ) {
-        $tablemap{$1}  = $table;
-        $modulemap{$1} = $1;
-    }
-}
-$tablemap{'CreatedBy'} = 'User';
-$tablemap{'UpdatedBy'} = 'User';
-
-$typemap{'id'}            = 'ro';
-$typemap{'Creator'}       = 'auto';
-$typemap{'Created'}       = 'auto';
-$typemap{'Updated'}       = 'auto';
-$typemap{'UpdatedBy'}     = 'auto';
-$typemap{'LastUpdated'}   = 'auto';
-$typemap{'LastUpdatedBy'} = 'auto';
-
-foreach my $table (@tables) {
-    next if ( $table eq 'sessions' );
-    my $tablesingle = $table;
-    $tablesingle =~ s/s$//;
-    $tablesingle = join ( '', map( ucfirst, split ( '_', $tablesingle )));
-    
-    print "Now working on $tablesingle\n";
-
-    my %requirements;
-
-    my $CollectionClassName = $namespace . "::" . $tablesingle . "Collection";
-    my $RecordClassName     = $namespace . "::" . $tablesingle;
-
-    my $path = $namespace;
-    $path =~ s/::/\//g;
-
-    my $RecordClassPath     = $path . "/" . $tablesingle . ".pm";
-    my $CollectionClassPath = $path . "/" . $tablesingle . "Collection.pm";
-
-    #create a collection class
-    my $CreateInParams;
-    my $CreateOutParams;
-    my $ClassAccessible = "";
-    my $FieldsPod       = "";
-    my $CreatePod       = "";
-    my ($sth);
-
-    if ( $driver eq 'Pg' ) {
-        $sth = $dbh->prepare(
-"SELECT a.attname, format_type(a.atttypid, a.atttypmod), a.attnotnull, a.atthasdef, a.attnum
-    FROM pg_class c, pg_attribute a WHERE c.relname = '$table' AND a.attnum > 0 AND a.attrelid = c.oid
-    ORDER BY a.attnum" );
-    }
-    elsif ( $driver eq 'mysql' ) {
-        $sth = $dbh->prepare("DESCRIBE $table");
-    }
-
-    $sth->execute;
-    while ( my $row = $sth->fetchrow_hashref() ) {
-
-        my ( $field, $type, $default, $immutable );
-        if ( $driver eq 'Pg' ) {
-
-            $field   = $row->{'attname'};
-            $type    = $row->{'format_type'};
-            $default = $row->{'atthasdef'};
-
-            if ( $default != 0 ) {
-                my $tth = $dbh->prepare(
-"SELECT substring(d.adsrc for 128) FROM pg_attrdef d, pg_class c
-	                        WHERE c.relname = 'acct' AND c.oid = d.adrelid AND d.adnum = "
-                      . $row->{'attnum'} );
-                $tth->execute();
-                my @default = $tth->fetchrow_array;
-                $default = $default[0];
-            }
-
-        }
-        elsif ( $driver eq 'mysql' ) {
-            $field   = $row->{'Field'};
-            $type    = $row->{'Type'};
-            $default = $row->{'Default'};
-
-        }
-
-        #generate the 'accessible' datastructure
-
-        # Some things just should not be mutable.	
-        if (    ( $field eq 'id' )
-             or ( $field eq 'created_by' )
-             or ( $field eq 'created_on' ) ) {
-            $ClassAccessible .= "        $field => {'read' => 1 },\n";
-            $immutable = 1;
-
-        }
-        else {
-            $ClassAccessible .=
-              "        $field => {'read' => 1, 'write' => 1},\n";
-        }
-
-        #generate pod for the accessible fields
-        $FieldsPod .= "
-=item $field
-
-Returns the current value of $field. 
-(In the database, $field is stored as $type.)
-
-";
-
-        unless ($immutable) {
-
-            $FieldsPod .= "
-=item set_$field VALUE
-
-Set $field to VALUE. 
-Returns (1, 'Status message') on success and (0, 'Error Message') on failure.
-(In the database, $field will be stored as a $type.)
-";
-
-        }
-
-        $FieldsPod .= "
-
-=cut
-
-";
-
-        my $fieldref = $field;
-        $fieldref =~ s/_id$//g;
-        if ( $tablemap{$fieldref} ) {
-            $FieldsPod .= "
-=item ${fieldref}Obj
-
-Returns the $tablemap{$fieldref} object which has the id returned by $field
-
-
-=cut
-
-sub ${fieldref}_obj {
-	my \$self = shift;
-	my \$$fieldref = new ${namespace}::$tablemap{$fieldref}(\$self->CurrentUser);
-	\$$fieldref->Load(\$self->$field());
-	return(\$$fieldref);
-}
-";
-
-            $requirements{ $tablemap{$fieldref} } =
-              "use ${namespace}::" . ucfirst( $tablemap{$fieldref} ) . ";";
-
-        }
-
-        unless ( $field =~ /^Created(On|By)$/ ) {
-
-            #generate create statement
-            $CreateInParams .= "                $field => '$default',\n";
-            $CreateOutParams .=
-              "                         $field => \$args{'$field'},\n";
-
-            #gerenate pod for the create statement	
-            $CreatePod .= "	$field			$type ";
-            $CreatePod .= " 	(defaults to '$default')" if ($default);
-            $CreatePod .= ".\n";
-        }
-    }
-
-    my $Create = "
-sub create {
-    my \$self = shift;
-    my \%args = ( 
-$CreateInParams,
-		  \@_);
-    \$self->SUPER::Create(
-$CreateOutParams);
-
-}
-";
-    $CreatePod .= "\n=cut\n\n";
-
-    my $CollectionClass = "# \$Header\$
-# Autogenerated by DBIx::SearchBuilder factory (by <jesse\@fsck.com>)
-
-=head1 NAME
-
-  $CollectionClassName -- Class Description
- 
-=head1 SYNOPSIS
-
-  use $CollectionClassName
-
-=head1 DESCRIPTION
-
-
-=head1 METHODS
-
-=cut
-
-package $CollectionClassName;
-
-use $CollectionBaseclass;
-use $RecordClassName;
-
-\@ISA= qw($CollectionBaseclass);
-
-
-sub _Init {
-    my \$self = shift;
-    \$self->{'table'} = '$table';
-    \$self->{'primary_key'} = 'id';
-
-";
-
-    if ( $tablemap{'SortOrder'} ) {
-
-        $CollectionClass .= "
-
-  # By default, order by name
-  \$self->OrderBy( ALIAS => 'main',
-                  FIELD => 'SortOrder',
-                  ORDER => 'ASC');
-";
-    }
-    $CollectionClass .= "
-    return ( \$self->SUPER::_Init(\@_) );
-}
-
-
-=item NewItem
-
-Returns an empty new $RecordClassName item
-
-=cut
-
-sub NewItem {
-    my \$self = shift;
-    return($RecordClassName->new(\$self->CurrentUser));
-}
-" . MagicImport($CollectionClassName);
-
-    my $RecordClassHeader = $Attribution . "
-
-=head1 NAME
-
-$RecordClassName
-
-
-=head1 SYNOPSIS
-
-=head1 DESCRIPTION
-
-=head1 METHODS
-
-=cut
-
-package $RecordClassName;
-use $RecordBaseclass; 
-";
-
-    foreach my $key ( keys %requirements ) {
-        $RecordClassHeader .= $requirements{$key} . "\n";
-    }
-    $RecordClassHeader .= "
-
-use vars qw( \@ISA );
-\@ISA= qw( $RecordBaseclass );
-
-sub _Init {
-  my \$self = shift; 
-
-  \$self->Table('$table');
-  \$self->SUPER::_Init(\@_);
-}
-
-";
-
-    my $RecordClass = "
-
-$RecordClassHeader
-
-
-=item Create PARAMHASH
-
-Create takes a hash of values and creates a row in the database:
-
-$CreatePod
-
-$Create
-
-$FieldsPod
-
-sub _ClassAccessible {
-    {
-     
-$ClassAccessible
- }
-};
-
-" . MagicImport($RecordClassName);
-
-    print "About to make $RecordClassPath, $CollectionClassPath\n";
-    `mkdir -p $path`;
-
-    open( RECORD, ">$RecordClassPath" );
-    print RECORD $RecordClass;
-    close(RECORD);
-
-    open( COL, ">$CollectionClassPath" );
-    print COL $CollectionClass;
-    close(COL);
-
-}
-
-sub MagicImport {
-    my $class = shift;
-
-    #if (exists \$warnings::{unimport})  {
-    #        no warnings qw(redefine);
-
-    my $content = "
-        eval \"require @{[$class]}_Overlay\";
-        if (\$@ && \$@ !~ /^Can't locate/) {
-            die \$@;
-        };
-
-        eval \"require @{[$class]}_Local\";
-        if (\$@ && \$@ !~ /^Can't locate/) {
-            die \$@;
-        };
-
-
-
-
-=head1 SEE ALSO
-
-This class allows \"overlay\" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-If you'll be working with perl 5.6.0 or greater, each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-@{[$class]}_Overlay, @{[$class]}_Local
-
-=cut
-
-
-1;
-";
-
-    return $content;
-}
-
-# }}}
-
diff --git a/tools/license_tag b/tools/license_tag
deleted file mode 100644
index d552ed6..0000000
--- a/tools/license_tag
+++ /dev/null
@@ -1,245 +0,0 @@
-#!/usr/bin/perl
-
-
-# BEGIN BPS TAGGED BLOCK {{{
-# 
-# COPYRIGHT:
-#  
-# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC 
-#                                          <jesse 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/copyleft/gpl.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 $LICENSE  = <<'EOL';
-
-COPYRIGHT:
-
-This software is Copyright (c) 1996-2010 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/copyleft/gpl.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.
-
-EOL
-
-use File::Find;
-
-my @MAKE = qw(Makefile);
-
-File::Find::find({ no_chdir => 1, wanted => \&tag_pm}, 'lib');
-File::Find::find({ no_chdir => 1, wanted => \&tag_mason}, 'html');
-File::Find::find({ no_chdir => 1, wanted => \&tag_script}, 'sbin');
-File::Find::find({ no_chdir => 1, wanted => \&tag_script}, 'bin');
-tag_makefile ('README');
-
-
-sub tag_mason {
-        my $pm = $_;
-        next unless (-f $pm);
-        next if ($pm =~ /images/);
-        open(FILE,"<$pm") || die "Failed to open $pm";
-        my $file = (join "", <FILE>); 
-        close (FILE);
-        my $pmlic = $LICENSE;
-        $pmlic =~ s/^/%# /mg;
-        $pmlic =~ s/\s*$//mg;
-
-        print "$pm - ";
-        if ($file =~ /^%# BEGIN BPS TAGGED BLOCK {{{/ms) {
-                print "has license section";
-             $file =~ s/^%# BEGIN BPS TAGGED BLOCK {{{(.*?)%# END BPS TAGGED BLOCK }}}/%# BEGIN BPS TAGGED BLOCK {{{\n$pmlic%# END BPS TAGGED BLOCK }}}/ms;
-             
-
-        } else {
-                print "no license section";
-             $file ="%# BEGIN BPS TAGGED BLOCK {{{\n$pmlic%# END BPS TAGGED BLOCK }}}\n". $file;
-        }
-        $file =~ s/%# END BPS TAGGED BLOCK }}}(\n+)/%# END BPS TAGGED BLOCK }}}\n/mg;
-        print "\n";
-        
-        
-
-
-        open (FILE, ">$pm") || die "couldn't write new file";
-        print FILE $file;
-        close FILE;
-
-}
-
-
-sub tag_makefile {
-        my $pm = shift;
-        open(FILE,"<$pm") || die "Failed to open $pm";
-        my $file = (join "", <FILE>); 
-        close (FILE);
-        my $pmlic = $LICENSE;
-        $pmlic =~ s/^/# /mg;
-        $pmlic =~ s/\s*$//mg;
-
-
-        print "$pm - ";
-        if ($file =~ /^# BEGIN BPS TAGGED BLOCK {{{/ms) {
-                print "has license section";
-             $file =~ s/^# BEGIN BPS TAGGED BLOCK {{{(.*?)# END BPS TAGGED BLOCK }}}/# BEGIN BPS TAGGED BLOCK {{{\n$pmlic\n# END BPS TAGGED BLOCK }}}/ms;
-             
-
-        } else {
-                print "no license section";
-             $file ="# BEGIN BPS TAGGED BLOCK {{{\n$pmlic\n# END BPS TAGGED BLOCK }}}\n". $file;
-        }
-        $file =~ s/# END BPS TAGGED BLOCK }}}(\n+)/# END BPS TAGGED BLOCK }}}\n/mg;
-        print "\n";
-        
-        
-
-
-        open (FILE, ">$pm") || die "couldn't write new file";
-        print FILE $file;
-        close FILE;
-
-}
-
-
-sub tag_pm {
-        my $pm = $_;
-        next unless $pm =~ /\.pm/s;
-        open(FILE,"<$pm") || die "Failed to open $pm";
-        my $file = (join "", <FILE>); 
-        close (FILE);
-        my $pmlic = $LICENSE;
-        $pmlic =~ s/^/# /mg;
-        $pmlic =~ s/\s*$//mg;
-
-
-        print "$pm - ";
-        if ($file =~ /^# BEGIN BPS TAGGED BLOCK {{{/ms) {
-                print "has license section";
-             $file =~ s/^# BEGIN BPS TAGGED BLOCK {{{(.*?)# END BPS TAGGED BLOCK }}}/# BEGIN BPS TAGGED BLOCK {{{\n$pmlic\n# END BPS TAGGED BLOCK }}}/ms;
-             
-
-        } else {
-                print "no license section";
-             $file ="# BEGIN BPS TAGGED BLOCK {{{\n$pmlic\n# END BPS TAGGED BLOCK }}}\n". $file;
-        }
-        $file =~ s/# END BPS TAGGED BLOCK }}}(\n+)/# END BPS TAGGED BLOCK }}}\n/mg;
-        print "\n";
-        
-        
-
-
-        open (FILE, ">$pm") || die "couldn't write new file $pm";
-        print FILE $file;
-        close FILE;
-
-}
-
-
-sub tag_script {
-        my $pm = $_;
-        return unless (-f $pm);
-        open(FILE,"<$pm") || die "Failed to open $pm";
-        my $file = (join "", <FILE>); 
-        close (FILE);
-        my $pmlic = $LICENSE;
-        $pmlic =~ s/^/# /msg;
-        $pmlic =~ s/\s*$//mg;
-
-        print "$pm - ";
-        if ($file =~ /^# BEGIN BPS TAGGED BLOCK {{{/ms) {
-                print "has license section";
-             $file =~ s/^# BEGIN BPS TAGGED BLOCK {{{(.*?)# END BPS TAGGED BLOCK }}}/# BEGIN BPS TAGGED BLOCK {{{\n$pmlic\n# END BPS TAGGED BLOCK }}}/ms;
-             
-
-        } else {
-                print "no license section";
-                if ($file =~ /^(#!.*?)\n/) {
-
-            my  $lic ="# BEGIN BPS TAGGED BLOCK {{{\n$pmlic\n# END BPS TAGGED BLOCK }}}\n";
-                $file =~ s/^(#!.*?)\n/$1\n$lic/; 
-
-                } 
-        }
-        $file =~ s/# END BPS TAGGED BLOCK }}}(\n+)/# END BPS TAGGED BLOCK }}}\n/mg;
-        print "\n";
-        
-
-        open (FILE, ">$pm") || die "couldn't write new file";
-        print FILE $file;
-        close FILE;
-
-}
-

commit 1510369fa8ef2ad566f991e77f6cd7d41399b638
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Wed Dec 8 16:55:51 2010 -0500

    Purge last vestiges of FM not in etc/rtfm

diff --git a/t/articles/articles.t b/t/articles/articles.t
index 3ecf802..c6fe651 100644
--- a/t/articles/articles.t
+++ b/t/articles/articles.t
@@ -18,7 +18,7 @@ use_ok('RT::CustomField');
 my $cf = RT::CustomField->new($RT::SystemUser);
 isa_ok($cf, 'RT::CustomField');
 
-($id,$msg) = $cf->Create( Name => 'FM::Sample-'.$$,
+($id,$msg) = $cf->Create( Name => 'Articles::Sample-'.$$,
              Description => 'Test text cf',
              LookupType => RT::Article->CustomFieldLookupType,
              Type => 'Freeform'
diff --git a/t/articles/basic-api.t b/t/articles/basic-api.t
index acbdcd8..f9f9f89 100644
--- a/t/articles/basic-api.t
+++ b/t/articles/basic-api.t
@@ -35,7 +35,7 @@ can_ok($class, 'CurrentUserHasRight');
 my $cf = RT::CustomField->new($RT::SystemUser);
 isa_ok($cf, 'RT::CustomField');
 
-($id,$msg) = $cf->Create( Name => 'FM::Sample-'.$$,
+($id,$msg) = $cf->Create( Name => 'Articles::Sample-'.$$,
              Description => 'Test text cf',
              LookupType => RT::Article->CustomFieldLookupType,
              Type => 'Text'

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


More information about the Rt-commit mailing list