1. Data Model:

The basic table that has all the information about dotlrn-catalog courses is:

I

Indexes: "dotlrn_catalog_pkey" primary key, btree (course_id) Foreign-key constraints: "$1" FOREIGN KEY (course_id) REFERENCES cr_revisions(revision_id)

The new content_type and attribute table are created with the after-install apm-callback-proc as follows:

content::type::new -content_type "dotlrn_catalog" \ -pretty_name "DotLRN Catalog" \ -pretty_plural "DotLRN Catalog" \ -table_name "dotlrn_catalog" \ -id_column "course_id"

# now set up the attributes that by default we need for the course content::type::attribute::new \ -content_type "dotlrn_catalog" \ -attribute_name "course_key" \ -datatype "string" \ -pretty_name "Course Key" \ -pretty_plural "Course Key" \ -sort_order 1 \ -column_spec "varchar(50)"

content::type::attribute::new \ -content_type "dotlrn_catalog" \ -attribute_name "course_name" \ -datatype "string" \ -pretty_name "Course Name" \ -sort_order 2 \ -column_spec "varchar(200)"

content::type::attribute::new \ -content_type "dotlrn_catalog" \ -attribute_name "course_info" \ -datatype "text" \ -pretty_name "Course Information" \ -sort_order 3 \ -column_spec "text"

content::type::attribute::new \ -content_type "dotlrn_catalog" \ -attribute_name "assessment_id" \ -datatype "integer" \ -pretty_name "Assessment ID" \ -sort_order 4 \ -column_spec "integer"