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
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:
- Modules that belong to Listings
- 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.