webCOMAND

COMAND Package Content Types

Overview

Package content types provide a framework to group, distribute and install collections of objects.

Content Types

Click diagram elements to jump to additional details.

Package

A named collection of related objects designed to be downloaded together. Information about platform requirements and dependencies on other packages can be specified to help ensure the proper environment is available for the package.

Implements
Nothing
Extends
Fields
Title (Identifier) Type Properties Description
Package (Layout Type) Tab   Information about the method for users and interfaces.
Title (Data Type) Text Line   User-friendly name for the package.
Namespace (Data Type) Text Line   Namespace used to locate and differentiate the package from other packages.
Version (Data Type) Text Line   Three-element version number, in the format "1.0.0".
Requirements (Content Type) Platform Requirement List, Ref List of platform requirements that must be met for the package to be useful.
Dependencies (Content Type) Package List, Ref List of packages that must be exist in the repository for the package to be useful.
Contents (Content Type) Object List, Ref Collection of objects contained in the package. Like a folder, the contents are referenced to allow them to be embedded in another object's field.
Installers (Content Type) Installer Ref, List List of Installers used to install the package. If no installers are defined, the package will not be installed.
Documentation (Layout Type) Tab   Information about the package.
Description (Data Type) Text Box (Short)   Breif description of the package and its purpose.
Help (Data Type) Rich Text Box   Detailed explanation of the package and how it can be used.
Methods
Install() [PHP, Action]

Iterates through Installers and calls Install( $this ) on each. Installers typically copy appropriate contents to files in the file system under the COMAND Packages Folder.

Package Requirement

Represents hardware, software and other requirements for the installation and use of a package.

Implements
Nothing
Extends
Fields
Title (Identifier) Type Properties Description
Title (Data Type) Text Line   User-friendly name for the package requirement.
Description (Data Type) Rich Text Box   Explanation of the installer, what content types it will install and what it does to install them.
Methods
None

Installer

This content type is meant to be used as an interface or abstract content type for actual installers. It defines basic informational fields and method prototypes required by installers.

Implements
Nothing
Extends
Fields
Title (Identifier) Type Properties Description
Title (Data Type) Text Line   User-friendly name for the installer.
Description (Data Type) Rich Text Box   Explanation of the installer, what content types it will install and what it does to install them.
Methods
Install( $package ) [abstract, Action]

Installs an entire package, or specific objects within the package.

Uninstall( $package ) [abstract, Action]

Uninstalls an entire package, or specific objects within the package in order to "undo" changes made by the Install method.

IsInstalled( $package ) [abstract, Action]

Returns TRUE if the installer would not make any changes to the repository, file system or other resources if it were to install the package.

Reinstall( $package ) [public, Action]

Reinstalls a package, which is equivelent to calling Uninstall if IsInstalled returns TRUE, and then Install. This method is actually implemented as just described, but can be overridden when extended, if desired.

PHP Installer

An installer based on PHP code stored in a package.

Implements
Nothing
Extends
Fields
Title (Identifier) Type Properties Description
Package (Content Type) Package Ref Package that contains the installer class and components.
InstallerClassName (Data Type) Text Line   Name of the PHP class that implements the Installer interface inside Package. The class name should be fully qualified with its namespace.
Methods
Install() [PHP]

Calls the Install method of the Installer Class.

Uninstall() [PHP]

Calls the Uninstall method of the Installer Class.

IsInstalled() [PHP]

Calls the IsInstalled method of the Installer Class.

Reinstall() [PHP]

Calls the Reinstall method of the Installer Class.

Product

A package designed to be uploaded to the Market for discovery, sales and distribution.

Implements
Nothing
Extends
Fields
Title (Identifier) Type Properties Description
Product (Layout Type) Tab   Information about the product, to be made available in the webCOMAND Market.
Marketing Description (Data Type) Rich Text Box   Promotional description about the product.
Media (Content Type) Media List Collection of screenshots, videos and other promotional media about the product.
Author (Data Type) Text Line   Name of the author.
This field will likely be broken out to Creator, Contributors and Publisher, which all reference Contact (Object/Content/Subject/Contact{Person,Organization}).
License (Content Type) Product License Ref Type of product license.
Methods
None

Product License

Information about how a product can be used, for purchasing and on-going rights. The license is a key Product field, which is displayed in the Market and affects the sales process.

Implements
Nothing
Extends
Fields
Title (Identifier) Type Properties Description
Type (Content Type) Product License Type Ref Type or class of license.
Description (Data Type) Text Box   Breif explanation of the license, as well as set up and on-going pricing.
Price (Data Type) Currency   Cost to download and install product, in US currency.
Methods
None

Product License Type

Represents common license types, to help provide consistent and understandable license options to Market consumers.

Implements
Nothing
Extends
Fields
Title (Identifier) Type Properties Description
Title (Data Type) Text Line   Name for the type of license.
Summary (Data Type) Text Box   Breif explanation of the license, in simple high-level terms.
Agreement (Data Type) Rich Text Box   Long-form license agreement, in legal form.
Methods
None

Restrictions

Only users with full-authorization are able to change the package content types.

The package content types should not be changed under normal circumstances because they form the foundation of the package management system critical to COMAND features and functionality.

Changes to these content types risk breaking fundamental dependencies and assumptions critical to software and other content types.

While not recommended, it is important to keep in mind that the package content types can be changed, and it is not unreasonable for an isolated systems to add fields or updated meta-data. Whenever possible though, they should not be changed, especially in repositories connected to a greater network.