ConcourseConnect

Open Source Initiative (OSI) PostgreSQL Java

Customization & Integration

While the User Documentation points out several ways in which ConcourseConnect can be configured and tailored for a specific site, the task of enabling features beyond what is delivered with the product will require a developer to modify configuration files and possibly write additional code. Sometimes the feature might already exist and just needs to be configured, other times a new module needs to be written and deployed.

For any new installation, the following topics need to be taken into account. The Developer Guide explores many of these topics in more technical depth.

The Levels of Customization

levels-of-customization.png

Level 1: Branding - standard page layouts, choice of tabs, custom logo, custom content, standard theme

Level 2: Custom Style - custom theme

Level 3: Custom Layout - custom page layouts, custom tabs

Level 4: Custom Functionality - custom portlets

Level 5: Integration - mobile, cloud services, management console, CRM

Configure the Site's Categories

Categories are the main headings displayed across the site (Groups, People, etc.). They serve as the main organizing feature for users. Default categories are pre-loaded and vary depending on the type of solution deployed (Community Site, Intranet, Directory, etc).

When top-level categories are added or renamed, the application configuration must be updated to support the category's behavior. The configuration file dashboards_en_US.xml defines the layout and behavior for each category. Once the behavior of the top-level categories is redefined, it may be necessary to make database changes to support existing listings that have already been assigned to a category, for example, a category might be defined as private, but the existing data is already public so the DBA must update the \ table.

Modify the Portal Layout and Portlet Configuration

The configuration file dashboards_en_US.xml additionally defines the layout and content for all of the top-level category pages. Portlets can be added, moved, deleted, and re-configured. Developers can freely update this file and if the application is running in DEBUG mode, the changes are reflected immediately; otherwise the file is cached for performance reasons and the changes are not reflected immediately.

Design a Theme

ConcourseConnect uses a set of JSP templates and CSS stylesheets, together known as a "theme," to alter the look and feel of the site. The look can be modified externally from the application by installing just a CSS theme or color scheme into the /themes folder. Color schemes are typically modifications of a theme that provide an alternative color for the theme. More complex themes require code changes and include a JSP layout file.

To install the theme, copy the theme into the /themes folder then access the "Customize this site" page in the admin module. The currently installed themes will be displayed and after choosing a theme, the color schemes for that theme are displayed. A theme must have at least one (1) color scheme.

Modify the Email Templates

There are many actions that trigger email, including users signing up or forgetting a password. The trend is for the email templates to be kept in a separate emails folder, however not all areas of the application have the email externalized. Any email template located in the /WEB-INF/email folder can be modified and stored in the fileLibrary/1/email folder. Other email templates are stored in the workflow file and have yet to be further externalized.

Build a Custom Workflow

The embedded multi-threaded workflow engine allows for all object INSERTs, UPDATEs, DELETEs, and some SELECTs to have additional background processing. The workflow engine reads workflow.xml files located in the /WEB-INF/workflow folder. The general format of the file includes object hook definitions and business process logic. The business process logic uses Java or BeanShell script components that inspect, modify or react to the objects in the workflow process. For example, a newly inserted Business can trigger an email or a more sophisticated process might send and receive data from a 3rd party application to geocode listing data.

Build a Plugin

Portlets are a great way to extend ConcourseConnect's functionality - they can be as simple as a widget that augments an existing listing or module, or as complex as an entire stand alone application. Portlets can be added to any of the top-level tabs, the search results page, listings, and almost any page since the application is built on a JSR-168 portal specification. Portlets also leverage page-specific data as input.

The best way to get started with portlets is to read Building your first portlet.

Build a Module

There are two major types of modules:

  1. Modules that belong to Listings
  2. Modules that belong to the Application

Listings are the key data element in ConcourseConnect. When a listing is created, for example a Business or a Project, the underlying application preferences determine which modules are enabled and what the module is called. Modules that belong to a listing always use the underlying listing object as the primary key.

Application modules exist across all functionality in the application and unlike listing modules, they can optionally use a listing object as part of the operation. For example, search is a global module but it can also be used for searching within a specific listing. When search is invoked from the listing's page, the listing id is used for filtering the results.

Since application modules are integrated tightly with the application, there isn't one specific example to follow. In a nutshell, modules need application hooks and factories, caching, and persistence functionality. Read through Understanding the application framework for advice on maintaining application modules.

Access the Services API

ConcourseConnect includes a lightweight API that is accessed using HTTP and sending and receiving XML. Nearly every data element in ConcourseConnect can be accessed by the API, regardless of the programming language. Developers can also add and register custom services for specific and optimized purposes, such as integrating with other applications. The ConcourseConnect Java Tools provide a minimal .jar that can be integrated with an existing Java application to speed up API development. The tools are licensed using the flexible LGPL license.

To learn more about the Services API, read Using the API in the Developer Guide.

3rd-Party Integration Resources

Android Apps
https://play.google.com/apps/publish

Apple iOS Apps, Push Notifications
http://developer.apple.com

Authorize.Net Credit Card Payment Processing
http://developer.authorize.net

Chargify Subscription and Recurring Billing Integration
https://www.chargify.com

ETouches Event Integration
https://www.etouches.com

Facebook Login for web and mobile
http://developers.facebook.com

Google Analytics
https://analytics.google.com

Google DoubleClick for Publishers
https://www.google.com/dfp

Google Maps, Geo Services, Android, Messaging
https://console.developers.google.com/project

Here Maps and Geo Services
http://developer.here.com

OpenDataSoft
https://www.opendatasoft.com

Twitter Integration
https://dev.twitter.com

Ustream Integration
http://developers.ustream.tv

YouTube Integration
https://developers.google.com/youtube/

Sign in to add your comment.