Add .htaccess file for public
Fixes the login page for some php/zend combinatations, which was not
displaying because of an extraneous end-of-PHP-tag ( "?>") at the end of
the AuthController.php file.  This commit also includes updates to the
comments in two table setting files from overly general templated
comments to more specific comments.
Merge pull request #8 from kupaka/master

Add .htaccess file for the public folder
Provide instructions for creating Ramp/Smart  MySQL accounts and the
demo and development databases, as well as data for the demo databases
and examples of virtual hosts for the demo and development databases.
Merge branch 'installationBranch'

Provide installation instructions for creating MySQL accounts and
databases for running Ramp/Smart.
Provide Installation Instructions Supporting Multiple Environments

Provide Ramp installation instructions, including instructions for
setting up multiple environments (e.g., production, testing, and
demo environments), each of which may have a different database,
set of menus, or color scheme.  Support differences in data, menus,
and color schemes among environments.  Specifically:

- Provide new INSTALL.txt file in installation directory; make minor
  updates to INSTALL_DB.txt and README.txt to reflect new INSTALL.txt.

- Rename application.ini to applicationTemplate.ini so that future
  software updates will not overwrite user-customized application.ini
  files.

- Comment out setting of APPLICATION_ENV in .htaccess, which was
  overriding settings coming from vhosts.

- Re-organize cascading stylesheets in public/css to allow different
  APPLICATION_ENV environments to have different color schemes.

- Define menu items in menu configuration files specific to the
  APPLICATION_ENV environment rather than in IndexController.  Create
  new menus for different environments.

- Create About files for Ramp and Smart.

- Move several table settings from the top-level settings directory
  down to appropriate sub-directories.
Improve formatting for HTML activity types
Fix Problems with Adding New Records to Tables

Fix a set of bugs related to adding new records to tables that were
introduced when new input validation was added (shortly before initial
commit, probably).  The fixes include:
  - Auto-increment fields were marked as required, even though
    it is OK (even preferable) for the user to leave them blank and let
    them be filled by the auto-increment.
  - Fields were being marked as required even if they had a default
    value (such as CURRENT_TIMESTAMP).
  - String types for which a length is not meaningful (e.g., text areas
    for MySQL text types) were being compared against a maximum length
    of 0 (indicating length not meaningful) and found to be invalid for
    being too long.
  - The default match-any-value option for selections (enumerated types)
    was being passed along as a user-specified value to add to a record,
    at least when the selection was read-only in the Add table setting.
    Fixed to treat the match-any-value value the same as null or empty
    string (not passed to Add).

In addition, move hard-coded strings in Application_Form_TableRecordEntry
to constants to help with future internationalization, since
Application_Form_TableRecordEntry was being modified anyway.
Allow greater customization of what users see; Update settings and menus

Allow greater customization of the look of different applications or
environments:
  - Allow user to specify initial activity in configs/application.ini
    rather than always ask user to type in an initial activity.
  - Allow for different initial activities for different environments.
  - Allow for variations in title that show environment.
  - Allow for variations in icon (favicon).
  - Update Smart & Ramp menus to either remove Home menu (e.g.,
    smart.demo) or to make Home the same as the initial activity,
    removing the equivalent menu item.

Update settings and menus:
  - Move all testing table settings and activity lists to a new tests
    directory.
  - Add a new menu item to Smart menus for Core Tables category.
  - Remove Last Updated fields from Add and Edit table settings,
    since a) they should be set automatically, not manually by users,
    and b) CURRENT_TIMESTAMP default is not recognized by the date
    validation as a valid date, so must be removed or replaced (if
    the field is visible) before the entry can be added or updated.
  - Update sample.ini file (current substitute for user documentation
    about table settings) to reflect recommendation that dates with
    a default of CURRENT_TIMESTAMP not be visible on Add/Edit table
    settings.
  - Update Add table setting for ModuleOfferings to just specify
    term, code, number, and section -- then user has to use Edit to
    edit everything else (this allows system to initialize various
    fields with default values from other tables).
Rename database creation files to reflect their status as templates
Add role field to users table; add users table to basic Ramp configuration.
Capitalize Ramp directory name in sample vhosts file.
Fix menu for Smart Development/Test envionment to not have Home/Smart duplication
Add Support for Authentication and Authorization

Add support for authentication through a users table in the database
(`ramp_auth_users`), which has username, password, role (see next
paragraph), and, for logging and communication purposes, first name,
last name, and email address.  [NOTE: This commit does not include
support for changing passwords (neither users changing their own
passwords, nor administrators changing users' passwords).  That should be
the focus of a future commit.  For now, the administrator would have to
do it through the database directly.]

Add support authorization through roles, resources, and access control
list rules.  Roles (and the role inheritance hierarchy) are defined in
the `configs/application.ini` configuration file, as are some resources
(see below).  Users are associated with roles in the `ramp_auth_users`
database table.  Access control list rules, which are role/resource
associations, are defined in a separate database table, `ramp_auth_auths`.

Resources are associated with specific actions in controllers.  There
are several types of resources:
  - Resources related to the Index, Authorization, and Error controllers
    are defined in the `library/Ramp/Acl.php` file (hard-coded).
  - Activity list resources are the directories in which activity list
    specification files reside (`activity::index::directory-name`).
    These can be defined in the `application.ini` configuration file or
    just appear in access control rules in the `ramp_auth_auths` table.
  - Table resources are the names of individual database tables.  The
    tables do not need to be explicitly as resources, they just appear
    in access control rules in the `ramp_auth_auths` table.

Also:
  - Move definition of ANY_VAL back to model because controller should
    depend on model (not the other way around)
Merge branch 'authorization'

Conflicts:
	application/settings/smartDevMenu.ini
Split applicationTemplate.ini into Different Templates for Ramp and Smart
Split applicationTemplate.ini into Different Templates for Ramp and Smart
Make minor changes to create a better Smart demo.

Clean up Smart/index.act and demo.act files (and variations like
smartDemoIndex.act) to make them clearer for demos and production.

Change several table settings to make search the initial action rather
than displayAll (search will be more appropriate as the tables get
bigger, although displayAll was convenient for quicker testing).

Modify TableController's add action so that it does a search after an
add rather than a record view, since there now might be multiple records
matching the provided record identifying information.

Fix bug -- ModuleEnrollment search did not work on Instructor preferred
first name (needed alias).

Fix bug -- Modify Acl.php so that when a resource is requested that does
not exist, Smart reports that the user is not authorized to access that
resource rather than that the resource does not exist.  ("Not
authorized" is a better end-user message, although "resource does not
exist" is an informative message for a developer or DBA.)
Use Textarea rather than Text fields for TEXT and BLOB types
Customize Smart tables for Njala Univ.; add prototype Reporting feature.

Start the clarification and separation of RAMP vs Smart through
settings files and installation instructions.

Reporting:  Add ability to customize the formatting of reports.

Add 'Report' as new Access Control resource type.

Installation instructions:
    - Update installation instructions and database initialization
      scripts to set up authorization resources and access control
      lists (rules).
    - Move and update scripts for creating a sample Smart database
      (schema and data) from the tests folder to the installation
      folder.  Create a second instance for developing a database
      customized for Njala University.

Create a different version of the auth_users file for use with Smart applications in which all Smart users are themselves represented in the Smart Person table.