A starting point for creating a SugarCRM add-on. Grab it and use it for your own add-ons. This is a Sugar 7 first implementation that also works with Sugar 6.
- Install Wizard
- License Key Protection
- Scheduler Job Installation
- Default Configurations
- Admin Menu
- License Placeholder
There are more commented out capabilities to help jump start your implementation in both manifest.php and /scripts/post_install.php. Examples include conditional install based on environment version, adding fields to the UI in both Sugar 6 and 7, creating default reports, and creating non-standard (non-bean) tables. You can also do user-based licensing to allow for only certain users to use your add-on.
Want something else added? Either do a pull request or make a request.
If you just want to see how it works just install it by using the Module Loader. To try out the License Key validation just use this key: 46025036c925475ef44398de9204482d
There are a number of resources that you will want to keep on hand when creating your add-on. Here are a few of them. (Please add more as you find them)
- Sugar Developer Guide
- Sugar Developer Blog
- Migrating Code from Sugar 6.x to 7
- Dev Tips on SugarOutfitters
- Angel Magaña's SugarCRM Blog
- Urdhva Tech Blog
- Shane Dowling's SugarCRM Blog
- SugarCRM v7 learning resources
- Creating an Installable Package for a Logic Hook
- Creating a Layout and View for a Module
- Creating a Custom Button
- Creating a Custom Intelligence Pane
- Adding a Global Menu Item
- Passing Data to Views
- Extending a View
- Filter records based on parent module's dropdown field
- Disable duplicate check on fields in Sugarcrm
- How to add Subpanel top button
- Directly Calling an Action
- Adding an action to the listview
- Global Action Menus and Drawers
- Dynamic Record View
- Add Field in Subpanel via Manifest
(Thanks Francesca for organizing much of this list!)
- Sugar 7 API Wrapper
- Video - Sugar 7 Dev
- Video - Unminified Sources, APIs, and Plugins
- Video - Dashlets, Cache, JavaScript
If you aren't familiar with Backbone.js or Handlebars you'll want to get your head wrapped around that as well: