Best Practices for Elgg Plugin Developers' Cash Costello #ECSF

Embed Size (px)

Citation preview

  • 1. Best Practices for Elgg PluginDevelopers Cash CostelloElggCamp San Francisco

2. Best Practices for Elgg PluginDevelopers Cash CostelloElggCamp San Francisco 3. About MeElgg core developerAuthor of Elgg Social Networking 1.8Employed by Johns Hopkins University Applied Physics Laboratory (JHU/APL)R&D in machine learningDriving force behind JHU/APLs collaborative platform built on Elgg 4. 1. Namespace your functions, classes, actions,views, CSS, JavaScript 5. 2. Make dependencies between plugins explicit Plugin manifest, function_exists(), elgg_is_active_plugin() 6. 3. Create a site customization plugin as a catch allfor small modifications Maintain a readme with list of customizations! 7. 4. Keep your plugins start.php trimelgg_register_library(), elgg_load_library(), class with staticmethods 8. 5. Use inheritance with Elggs data modelRemember to unregister your class when your plugin is disabled using the deactivate.php script with update_subtype() 9. 6. Document what metadata is used with your entities@property in documentation of class or use getter/setter methods 10. 7. Avoid using many metadata key-value pairs with elgg_get_entities*() 11. 8. Use Elggs functions and classes when interacting with the data model 12. 9. Be aware that setting metadata on an entityclears Elggs database cache 13. 10. Use relationships to connect entitiesNot metadata! 14. 11. Do not create large views 15. 12. Create views that correspond to visual elementsAlso look for common elements that can be reused 16. 13. Use the core views and CSS classes whenever possible 17. 14. Learn the principles behind Elggs new HTML/ CSSExample: CSS selectors should not cross element boundaries 18. 15. Test with non-admin user and while logged out