SlideShare a Scribd company logo
1 of 18
Best Practices for Elgg Plugin
        Developers

             Cash Costello
        ElggCamp San Francisco
Best Practices for Elgg Plugin
        Developers

             Cash Costello
        ElggCamp San Francisco
About Me
Elgg core developer
Author of Elgg Social Networking 1.8
Employed by Johns Hopkins University Applied
 Physics Laboratory (JHU/APL)
R&D in machine learning
Driving force behind JHU/APL's collaborative
 platform built on Elgg
1. Namespace your functions, classes, actions,
          views, CSS, JavaScript
2. Make dependencies between plugins explicit


 Plugin manifest, function_exists(), elgg_is_active_plugin()
3. Create a site customization plugin as a catch all
              for small modifications

   Maintain a readme with list of customizations!
4. Keep your plugin's start.php trim


elgg_register_library(), elgg_load_library(), class with static
  methods
5. Use inheritance with Elgg's data model


Remember to unregister your class when your plugin is disabled
 using the deactivate.php script with update_subtype()
6. Document what metadata is used with your
                 entities

@property in documentation of class or use getter/setter methods
7. Avoid using many metadata key-value pairs
           with elgg_get_entities*()
8. Use Elgg's functions and classes when
     interacting with the data model
9. Be aware that setting metadata on an entity
        clears Elgg's database cache
10. Use relationships to connect entities


Not metadata!
11. Do not create large views
12. Create views that correspond to visual
                 elements

Also look for common elements that can be reused
13. Use the core views and CSS classes
           whenever possible
14. Learn the principles behind Elgg's new HTML/
                       CSS

  Example: CSS selectors should not cross element boundaries
15. Test with non-admin user and while logged
                     out

More Related Content

What's hot

Dicoding Developer Coaching #37: Android | Kesalahan yang Sering Terjadi pada...
Dicoding Developer Coaching #37: Android | Kesalahan yang Sering Terjadi pada...Dicoding Developer Coaching #37: Android | Kesalahan yang Sering Terjadi pada...
Dicoding Developer Coaching #37: Android | Kesalahan yang Sering Terjadi pada...DicodingEvent
 
jQuery basics
jQuery basicsjQuery basics
jQuery basicsKamal S
 
Benefits of the CodeIgniter Framework
Benefits of the CodeIgniter FrameworkBenefits of the CodeIgniter Framework
Benefits of the CodeIgniter FrameworkToby Beresford
 
Templates, partials and layouts
Templates, partials and layoutsTemplates, partials and layouts
Templates, partials and layoutsKadiv Vech
 
AngularJS: Overview & Key Features
AngularJS: Overview & Key FeaturesAngularJS: Overview & Key Features
AngularJS: Overview & Key FeaturesMohamad Al Asmar
 
Automated Testing Of EPiServer CMS Sites
Automated Testing Of EPiServer CMS SitesAutomated Testing Of EPiServer CMS Sites
Automated Testing Of EPiServer CMS Sitesjoelabrahamsson
 
ASP.net MVC CodeCamp Presentation
ASP.net MVC CodeCamp PresentationASP.net MVC CodeCamp Presentation
ASP.net MVC CodeCamp Presentationbuildmaster
 
Pluggable patterns
Pluggable patternsPluggable patterns
Pluggable patternsCorey Oordt
 
AngularJS - What is it & Why is it awesome ? (with demos)
AngularJS - What is it & Why is it awesome ? (with demos)AngularJS - What is it & Why is it awesome ? (with demos)
AngularJS - What is it & Why is it awesome ? (with demos)Gary Arora
 
Intro to html5 Boilerplate
Intro to html5 BoilerplateIntro to html5 Boilerplate
Intro to html5 BoilerplateMichael Enslow
 
More object oriented development with Page Type Builder
More object oriented development with Page Type BuilderMore object oriented development with Page Type Builder
More object oriented development with Page Type Builderjoelabrahamsson
 

What's hot (20)

Django
DjangoDjango
Django
 
Introduction To CodeIgniter
Introduction To CodeIgniterIntroduction To CodeIgniter
Introduction To CodeIgniter
 
CodeIgniter 101 Tutorial
CodeIgniter 101 TutorialCodeIgniter 101 Tutorial
CodeIgniter 101 Tutorial
 
Dicoding Developer Coaching #37: Android | Kesalahan yang Sering Terjadi pada...
Dicoding Developer Coaching #37: Android | Kesalahan yang Sering Terjadi pada...Dicoding Developer Coaching #37: Android | Kesalahan yang Sering Terjadi pada...
Dicoding Developer Coaching #37: Android | Kesalahan yang Sering Terjadi pada...
 
jQuery basics
jQuery basicsjQuery basics
jQuery basics
 
Benefits of the CodeIgniter Framework
Benefits of the CodeIgniter FrameworkBenefits of the CodeIgniter Framework
Benefits of the CodeIgniter Framework
 
Getting started with angular js
Getting started with angular jsGetting started with angular js
Getting started with angular js
 
Templates, partials and layouts
Templates, partials and layoutsTemplates, partials and layouts
Templates, partials and layouts
 
BDD, Behat & Drupal
BDD, Behat & DrupalBDD, Behat & Drupal
BDD, Behat & Drupal
 
AngularJS: Overview & Key Features
AngularJS: Overview & Key FeaturesAngularJS: Overview & Key Features
AngularJS: Overview & Key Features
 
5 angularjs features
5 angularjs features5 angularjs features
5 angularjs features
 
Fame
FameFame
Fame
 
Automated Testing Of EPiServer CMS Sites
Automated Testing Of EPiServer CMS SitesAutomated Testing Of EPiServer CMS Sites
Automated Testing Of EPiServer CMS Sites
 
ASP.net MVC CodeCamp Presentation
ASP.net MVC CodeCamp PresentationASP.net MVC CodeCamp Presentation
ASP.net MVC CodeCamp Presentation
 
EPiServer Deployment Tips & Tricks
EPiServer Deployment Tips & TricksEPiServer Deployment Tips & Tricks
EPiServer Deployment Tips & Tricks
 
ASP .net MVC
ASP .net MVCASP .net MVC
ASP .net MVC
 
Pluggable patterns
Pluggable patternsPluggable patterns
Pluggable patterns
 
AngularJS - What is it & Why is it awesome ? (with demos)
AngularJS - What is it & Why is it awesome ? (with demos)AngularJS - What is it & Why is it awesome ? (with demos)
AngularJS - What is it & Why is it awesome ? (with demos)
 
Intro to html5 Boilerplate
Intro to html5 BoilerplateIntro to html5 Boilerplate
Intro to html5 Boilerplate
 
More object oriented development with Page Type Builder
More object oriented development with Page Type BuilderMore object oriented development with Page Type Builder
More object oriented development with Page Type Builder
 

Similar to 'Best Practices for Elgg Plugin Developers' Cash Costello #ECSF

Jquery Plugin
Jquery PluginJquery Plugin
Jquery PluginRavi Mone
 
Jump start to OOP, OOAD, and Design Pattern
Jump start to OOP, OOAD, and Design PatternJump start to OOP, OOAD, and Design Pattern
Jump start to OOP, OOAD, and Design PatternNishith Shukla
 
Jump Start To Ooad And Design Patterns
Jump Start To Ooad And Design PatternsJump Start To Ooad And Design Patterns
Jump Start To Ooad And Design PatternsLalit Kale
 
02 servlet-basics
02 servlet-basics02 servlet-basics
02 servlet-basicssnopteck
 
Web Component Development Using Servlet & JSP Technologies (EE6) - Chapter 6...
 Web Component Development Using Servlet & JSP Technologies (EE6) - Chapter 6... Web Component Development Using Servlet & JSP Technologies (EE6) - Chapter 6...
Web Component Development Using Servlet & JSP Technologies (EE6) - Chapter 6...WebStackAcademy
 
Modular programming Using Object in Scala
Modular programming Using Object in ScalaModular programming Using Object in Scala
Modular programming Using Object in ScalaKnoldus Inc.
 
Chapter1pp
Chapter1ppChapter1pp
Chapter1ppJ. C.
 
Patterns (contd)Software Development ProcessDesign patte.docx
Patterns (contd)Software Development ProcessDesign patte.docxPatterns (contd)Software Development ProcessDesign patte.docx
Patterns (contd)Software Development ProcessDesign patte.docxdanhaley45372
 
React Best Practices All Developers Should Follow in 2024.pdf
React Best Practices All Developers Should Follow in 2024.pdfReact Best Practices All Developers Should Follow in 2024.pdf
React Best Practices All Developers Should Follow in 2024.pdfBOSC Tech Labs
 
ElggCamp Santiago> For Developers!
ElggCamp Santiago> For Developers!ElggCamp Santiago> For Developers!
ElggCamp Santiago> For Developers!Condiminds
 
Ajax Tags Advanced
Ajax Tags AdvancedAjax Tags Advanced
Ajax Tags AdvancedAkramWaseem
 
Deepak khetawat sling_models_sightly_jsp
Deepak khetawat sling_models_sightly_jspDeepak khetawat sling_models_sightly_jsp
Deepak khetawat sling_models_sightly_jspDEEPAK KHETAWAT
 
Eclipse 40 and Eclipse e4
Eclipse 40 and Eclipse e4 Eclipse 40 and Eclipse e4
Eclipse 40 and Eclipse e4 Lars Vogel
 
Object-Oriented Programming in Java.pdf
Object-Oriented Programming in Java.pdfObject-Oriented Programming in Java.pdf
Object-Oriented Programming in Java.pdfBharath Choudhary
 
When Sightly Meets Slice by Tomasz Niedźwiedź
When Sightly Meets Slice by Tomasz NiedźwiedźWhen Sightly Meets Slice by Tomasz Niedźwiedź
When Sightly Meets Slice by Tomasz NiedźwiedźAEM HUB
 

Similar to 'Best Practices for Elgg Plugin Developers' Cash Costello #ECSF (20)

Jquery Plugin
Jquery PluginJquery Plugin
Jquery Plugin
 
Jump start to OOP, OOAD, and Design Pattern
Jump start to OOP, OOAD, and Design PatternJump start to OOP, OOAD, and Design Pattern
Jump start to OOP, OOAD, and Design Pattern
 
Jump Start To Ooad And Design Patterns
Jump Start To Ooad And Design PatternsJump Start To Ooad And Design Patterns
Jump Start To Ooad And Design Patterns
 
02 servlet-basics
02 servlet-basics02 servlet-basics
02 servlet-basics
 
Aem best practices
Aem best practicesAem best practices
Aem best practices
 
Mini-Training: Javascript Patterns
Mini-Training: Javascript PatternsMini-Training: Javascript Patterns
Mini-Training: Javascript Patterns
 
Web Component Development Using Servlet & JSP Technologies (EE6) - Chapter 6...
 Web Component Development Using Servlet & JSP Technologies (EE6) - Chapter 6... Web Component Development Using Servlet & JSP Technologies (EE6) - Chapter 6...
Web Component Development Using Servlet & JSP Technologies (EE6) - Chapter 6...
 
What is new in elgg 1.8?
What is new in elgg 1.8?What is new in elgg 1.8?
What is new in elgg 1.8?
 
Modular programming Using Object in Scala
Modular programming Using Object in ScalaModular programming Using Object in Scala
Modular programming Using Object in Scala
 
Chapter1pp
Chapter1ppChapter1pp
Chapter1pp
 
Notepad tutorial
Notepad tutorialNotepad tutorial
Notepad tutorial
 
Patterns (contd)Software Development ProcessDesign patte.docx
Patterns (contd)Software Development ProcessDesign patte.docxPatterns (contd)Software Development ProcessDesign patte.docx
Patterns (contd)Software Development ProcessDesign patte.docx
 
React Best Practices All Developers Should Follow in 2024.pdf
React Best Practices All Developers Should Follow in 2024.pdfReact Best Practices All Developers Should Follow in 2024.pdf
React Best Practices All Developers Should Follow in 2024.pdf
 
ElggCamp Santiago> For Developers!
ElggCamp Santiago> For Developers!ElggCamp Santiago> For Developers!
ElggCamp Santiago> For Developers!
 
Ajax Tags Advanced
Ajax Tags AdvancedAjax Tags Advanced
Ajax Tags Advanced
 
Deepak khetawat sling_models_sightly_jsp
Deepak khetawat sling_models_sightly_jspDeepak khetawat sling_models_sightly_jsp
Deepak khetawat sling_models_sightly_jsp
 
Eclipse 40 and Eclipse e4
Eclipse 40 and Eclipse e4 Eclipse 40 and Eclipse e4
Eclipse 40 and Eclipse e4
 
Java 9 Features
Java 9 FeaturesJava 9 Features
Java 9 Features
 
Object-Oriented Programming in Java.pdf
Object-Oriented Programming in Java.pdfObject-Oriented Programming in Java.pdf
Object-Oriented Programming in Java.pdf
 
When Sightly Meets Slice by Tomasz Niedźwiedź
When Sightly Meets Slice by Tomasz NiedźwiedźWhen Sightly Meets Slice by Tomasz Niedźwiedź
When Sightly Meets Slice by Tomasz Niedźwiedź
 

More from Condiminds

'Not a developer? not a problem!' Brett Profitt #ECSF
'Not a developer? not a problem!' Brett Profitt #ECSF'Not a developer? not a problem!' Brett Profitt #ECSF
'Not a developer? not a problem!' Brett Profitt #ECSFCondiminds
 
'State of Elgg' Brett Profitt #ECSF
'State of Elgg' Brett Profitt #ECSF'State of Elgg' Brett Profitt #ECSF
'State of Elgg' Brett Profitt #ECSFCondiminds
 
'ElggCampSF Intro' Brett Profitt #ECSF
'ElggCampSF Intro' Brett Profitt #ECSF'ElggCampSF Intro' Brett Profitt #ECSF
'ElggCampSF Intro' Brett Profitt #ECSFCondiminds
 
'Finding Baby Bear's Bed: a tale of two spaces' Jon Dron #ECSF
'Finding Baby Bear's Bed: a tale of two spaces' Jon Dron #ECSF'Finding Baby Bear's Bed: a tale of two spaces' Jon Dron #ECSF
'Finding Baby Bear's Bed: a tale of two spaces' Jon Dron #ECSFCondiminds
 
'Elgg email integration' Mike Jett #ECSF
'Elgg email integration' Mike Jett #ECSF'Elgg email integration' Mike Jett #ECSF
'Elgg email integration' Mike Jett #ECSFCondiminds
 
'Elgg in Education: Stanford University' David Adams #ECSF
'Elgg in Education: Stanford University' David Adams #ECSF'Elgg in Education: Stanford University' David Adams #ECSF
'Elgg in Education: Stanford University' David Adams #ECSFCondiminds
 
Introducción a las Metodologías Ágiles
Introducción a las Metodologías ÁgilesIntroducción a las Metodologías Ágiles
Introducción a las Metodologías ÁgilesCondiminds
 
Querés hacer tu Caralibro? | Emilio Gonzalez | Condiminds
Querés hacer tu Caralibro? | Emilio Gonzalez | Condiminds Querés hacer tu Caralibro? | Emilio Gonzalez | Condiminds
Querés hacer tu Caralibro? | Emilio Gonzalez | Condiminds Condiminds
 
10 Tips para una Red de Nicho | Condiminds
10 Tips para una Red de Nicho | Condiminds10 Tips para una Red de Nicho | Condiminds
10 Tips para una Red de Nicho | CondimindsCondiminds
 
Bienvenida ElggCampBA 2010
Bienvenida ElggCampBA 2010Bienvenida ElggCampBA 2010
Bienvenida ElggCampBA 2010Condiminds
 
Social Enterprise Guru Device
Social Enterprise Guru DeviceSocial Enterprise Guru Device
Social Enterprise Guru DeviceCondiminds
 
Desarrollo de Redes Sociales para Social Enterprise, Powered by Elgg
Desarrollo de Redes Sociales para Social Enterprise, Powered by ElggDesarrollo de Redes Sociales para Social Enterprise, Powered by Elgg
Desarrollo de Redes Sociales para Social Enterprise, Powered by ElggCondiminds
 
Elgg para Mkt online en el #barcampba
Elgg para Mkt online en el #barcampbaElgg para Mkt online en el #barcampba
Elgg para Mkt online en el #barcampbaCondiminds
 
Elgg Camp Buenos Aires - English
Elgg Camp Buenos Aires - EnglishElgg Camp Buenos Aires - English
Elgg Camp Buenos Aires - EnglishCondiminds
 
Elgg Camp Buenos Aires - Español
Elgg Camp Buenos Aires - EspañolElgg Camp Buenos Aires - Español
Elgg Camp Buenos Aires - EspañolCondiminds
 

More from Condiminds (15)

'Not a developer? not a problem!' Brett Profitt #ECSF
'Not a developer? not a problem!' Brett Profitt #ECSF'Not a developer? not a problem!' Brett Profitt #ECSF
'Not a developer? not a problem!' Brett Profitt #ECSF
 
'State of Elgg' Brett Profitt #ECSF
'State of Elgg' Brett Profitt #ECSF'State of Elgg' Brett Profitt #ECSF
'State of Elgg' Brett Profitt #ECSF
 
'ElggCampSF Intro' Brett Profitt #ECSF
'ElggCampSF Intro' Brett Profitt #ECSF'ElggCampSF Intro' Brett Profitt #ECSF
'ElggCampSF Intro' Brett Profitt #ECSF
 
'Finding Baby Bear's Bed: a tale of two spaces' Jon Dron #ECSF
'Finding Baby Bear's Bed: a tale of two spaces' Jon Dron #ECSF'Finding Baby Bear's Bed: a tale of two spaces' Jon Dron #ECSF
'Finding Baby Bear's Bed: a tale of two spaces' Jon Dron #ECSF
 
'Elgg email integration' Mike Jett #ECSF
'Elgg email integration' Mike Jett #ECSF'Elgg email integration' Mike Jett #ECSF
'Elgg email integration' Mike Jett #ECSF
 
'Elgg in Education: Stanford University' David Adams #ECSF
'Elgg in Education: Stanford University' David Adams #ECSF'Elgg in Education: Stanford University' David Adams #ECSF
'Elgg in Education: Stanford University' David Adams #ECSF
 
Introducción a las Metodologías Ágiles
Introducción a las Metodologías ÁgilesIntroducción a las Metodologías Ágiles
Introducción a las Metodologías Ágiles
 
Querés hacer tu Caralibro? | Emilio Gonzalez | Condiminds
Querés hacer tu Caralibro? | Emilio Gonzalez | Condiminds Querés hacer tu Caralibro? | Emilio Gonzalez | Condiminds
Querés hacer tu Caralibro? | Emilio Gonzalez | Condiminds
 
10 Tips para una Red de Nicho | Condiminds
10 Tips para una Red de Nicho | Condiminds10 Tips para una Red de Nicho | Condiminds
10 Tips para una Red de Nicho | Condiminds
 
Bienvenida ElggCampBA 2010
Bienvenida ElggCampBA 2010Bienvenida ElggCampBA 2010
Bienvenida ElggCampBA 2010
 
Social Enterprise Guru Device
Social Enterprise Guru DeviceSocial Enterprise Guru Device
Social Enterprise Guru Device
 
Desarrollo de Redes Sociales para Social Enterprise, Powered by Elgg
Desarrollo de Redes Sociales para Social Enterprise, Powered by ElggDesarrollo de Redes Sociales para Social Enterprise, Powered by Elgg
Desarrollo de Redes Sociales para Social Enterprise, Powered by Elgg
 
Elgg para Mkt online en el #barcampba
Elgg para Mkt online en el #barcampbaElgg para Mkt online en el #barcampba
Elgg para Mkt online en el #barcampba
 
Elgg Camp Buenos Aires - English
Elgg Camp Buenos Aires - EnglishElgg Camp Buenos Aires - English
Elgg Camp Buenos Aires - English
 
Elgg Camp Buenos Aires - Español
Elgg Camp Buenos Aires - EspañolElgg Camp Buenos Aires - Español
Elgg Camp Buenos Aires - Español
 

Recently uploaded

BASLIQ CURRENT LOOKBOOK LOOKBOOK(1) (1).pdf
BASLIQ CURRENT LOOKBOOK  LOOKBOOK(1) (1).pdfBASLIQ CURRENT LOOKBOOK  LOOKBOOK(1) (1).pdf
BASLIQ CURRENT LOOKBOOK LOOKBOOK(1) (1).pdfSoniaTolstoy
 
Separation of Lanthanides/ Lanthanides and Actinides
Separation of Lanthanides/ Lanthanides and ActinidesSeparation of Lanthanides/ Lanthanides and Actinides
Separation of Lanthanides/ Lanthanides and ActinidesFatimaKhan178732
 
Measures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and ModeMeasures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and ModeThiyagu K
 
Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)eniolaolutunde
 
Accessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impactAccessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impactdawncurless
 
Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104misteraugie
 
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...Marc Dusseiller Dusjagr
 
Activity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfActivity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfciinovamais
 
The Most Excellent Way | 1 Corinthians 13
The Most Excellent Way | 1 Corinthians 13The Most Excellent Way | 1 Corinthians 13
The Most Excellent Way | 1 Corinthians 13Steve Thomason
 
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxSOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxiammrhaywood
 
Z Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot GraphZ Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot GraphThiyagu K
 
Contemporary philippine arts from the regions_PPT_Module_12 [Autosaved] (1).pptx
Contemporary philippine arts from the regions_PPT_Module_12 [Autosaved] (1).pptxContemporary philippine arts from the regions_PPT_Module_12 [Autosaved] (1).pptx
Contemporary philippine arts from the regions_PPT_Module_12 [Autosaved] (1).pptxRoyAbrique
 
Q4-W6-Restating Informational Text Grade 3
Q4-W6-Restating Informational Text Grade 3Q4-W6-Restating Informational Text Grade 3
Q4-W6-Restating Informational Text Grade 3JemimahLaneBuaron
 
Grant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingGrant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingTechSoup
 
Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991
Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991
Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991RKavithamani
 
1029 - Danh muc Sach Giao Khoa 10 . pdf
1029 -  Danh muc Sach Giao Khoa 10 . pdf1029 -  Danh muc Sach Giao Khoa 10 . pdf
1029 - Danh muc Sach Giao Khoa 10 . pdfQucHHunhnh
 
Beyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global ImpactBeyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global ImpactPECB
 
1029-Danh muc Sach Giao Khoa khoi 6.pdf
1029-Danh muc Sach Giao Khoa khoi  6.pdf1029-Danh muc Sach Giao Khoa khoi  6.pdf
1029-Danh muc Sach Giao Khoa khoi 6.pdfQucHHunhnh
 

Recently uploaded (20)

BASLIQ CURRENT LOOKBOOK LOOKBOOK(1) (1).pdf
BASLIQ CURRENT LOOKBOOK  LOOKBOOK(1) (1).pdfBASLIQ CURRENT LOOKBOOK  LOOKBOOK(1) (1).pdf
BASLIQ CURRENT LOOKBOOK LOOKBOOK(1) (1).pdf
 
Separation of Lanthanides/ Lanthanides and Actinides
Separation of Lanthanides/ Lanthanides and ActinidesSeparation of Lanthanides/ Lanthanides and Actinides
Separation of Lanthanides/ Lanthanides and Actinides
 
Measures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and ModeMeasures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and Mode
 
Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)
 
Accessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impactAccessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impact
 
Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104
 
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
 
Activity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfActivity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdf
 
The Most Excellent Way | 1 Corinthians 13
The Most Excellent Way | 1 Corinthians 13The Most Excellent Way | 1 Corinthians 13
The Most Excellent Way | 1 Corinthians 13
 
Staff of Color (SOC) Retention Efforts DDSD
Staff of Color (SOC) Retention Efforts DDSDStaff of Color (SOC) Retention Efforts DDSD
Staff of Color (SOC) Retention Efforts DDSD
 
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxSOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
 
Z Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot GraphZ Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot Graph
 
Contemporary philippine arts from the regions_PPT_Module_12 [Autosaved] (1).pptx
Contemporary philippine arts from the regions_PPT_Module_12 [Autosaved] (1).pptxContemporary philippine arts from the regions_PPT_Module_12 [Autosaved] (1).pptx
Contemporary philippine arts from the regions_PPT_Module_12 [Autosaved] (1).pptx
 
Código Creativo y Arte de Software | Unidad 1
Código Creativo y Arte de Software | Unidad 1Código Creativo y Arte de Software | Unidad 1
Código Creativo y Arte de Software | Unidad 1
 
Q4-W6-Restating Informational Text Grade 3
Q4-W6-Restating Informational Text Grade 3Q4-W6-Restating Informational Text Grade 3
Q4-W6-Restating Informational Text Grade 3
 
Grant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingGrant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy Consulting
 
Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991
Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991
Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991
 
1029 - Danh muc Sach Giao Khoa 10 . pdf
1029 -  Danh muc Sach Giao Khoa 10 . pdf1029 -  Danh muc Sach Giao Khoa 10 . pdf
1029 - Danh muc Sach Giao Khoa 10 . pdf
 
Beyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global ImpactBeyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global Impact
 
1029-Danh muc Sach Giao Khoa khoi 6.pdf
1029-Danh muc Sach Giao Khoa khoi  6.pdf1029-Danh muc Sach Giao Khoa khoi  6.pdf
1029-Danh muc Sach Giao Khoa khoi 6.pdf
 

'Best Practices for Elgg Plugin Developers' Cash Costello #ECSF

  • 1. Best Practices for Elgg Plugin Developers Cash Costello ElggCamp San Francisco
  • 2. Best Practices for Elgg Plugin Developers Cash Costello ElggCamp San Francisco
  • 3. About Me Elgg core developer Author of Elgg Social Networking 1.8 Employed by Johns Hopkins University Applied Physics Laboratory (JHU/APL) R&D in machine learning Driving force behind JHU/APL's 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 all for small modifications Maintain a readme with list of customizations!
  • 7. 4. Keep your plugin's start.php trim elgg_register_library(), elgg_load_library(), class with static methods
  • 8. 5. Use inheritance with Elgg's data model Remember 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 Elgg's functions and classes when interacting with the data model
  • 12. 9. Be aware that setting metadata on an entity clears Elgg's database cache
  • 13. 10. Use relationships to connect entities Not metadata!
  • 14. 11. Do not create large views
  • 15. 12. Create views that correspond to visual elements Also 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 Elgg's new HTML/ CSS Example: CSS selectors should not cross element boundaries
  • 18. 15. Test with non-admin user and while logged out