SlideShare una empresa de Scribd logo
1 de 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

Más contenido relacionado

La actualidad más candente

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
 

La actualidad más candente (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 a '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 a '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ź
 

Más de 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
 

Más de 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
 

Último

INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptxINTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptxHumphrey A Beña
 
ACC 2024 Chronicles. Cardiology. Exam.pdf
ACC 2024 Chronicles. Cardiology. Exam.pdfACC 2024 Chronicles. Cardiology. Exam.pdf
ACC 2024 Chronicles. Cardiology. Exam.pdfSpandanaRallapalli
 
Incoming and Outgoing Shipments in 3 STEPS Using Odoo 17
Incoming and Outgoing Shipments in 3 STEPS Using Odoo 17Incoming and Outgoing Shipments in 3 STEPS Using Odoo 17
Incoming and Outgoing Shipments in 3 STEPS Using Odoo 17Celine George
 
Q4 English4 Week3 PPT Melcnmg-based.pptx
Q4 English4 Week3 PPT Melcnmg-based.pptxQ4 English4 Week3 PPT Melcnmg-based.pptx
Q4 English4 Week3 PPT Melcnmg-based.pptxnelietumpap1
 
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptxECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptxiammrhaywood
 
Choosing the Right CBSE School A Comprehensive Guide for Parents
Choosing the Right CBSE School A Comprehensive Guide for ParentsChoosing the Right CBSE School A Comprehensive Guide for Parents
Choosing the Right CBSE School A Comprehensive Guide for Parentsnavabharathschool99
 
Grade 9 Q4-MELC1-Active and Passive Voice.pptx
Grade 9 Q4-MELC1-Active and Passive Voice.pptxGrade 9 Q4-MELC1-Active and Passive Voice.pptx
Grade 9 Q4-MELC1-Active and Passive Voice.pptxChelloAnnAsuncion2
 
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...JhezDiaz1
 
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdf
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdfInclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdf
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdfTechSoup
 
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPTECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPTiammrhaywood
 
Field Attribute Index Feature in Odoo 17
Field Attribute Index Feature in Odoo 17Field Attribute Index Feature in Odoo 17
Field Attribute Index Feature in Odoo 17Celine George
 
Influencing policy (training slides from Fast Track Impact)
Influencing policy (training slides from Fast Track Impact)Influencing policy (training slides from Fast Track Impact)
Influencing policy (training slides from Fast Track Impact)Mark Reed
 
Full Stack Web Development Course for Beginners
Full Stack Web Development Course  for BeginnersFull Stack Web Development Course  for Beginners
Full Stack Web Development Course for BeginnersSabitha Banu
 
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTS
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTSGRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTS
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTSJoshuaGantuangco2
 
Gas measurement O2,Co2,& ph) 04/2024.pptx
Gas measurement O2,Co2,& ph) 04/2024.pptxGas measurement O2,Co2,& ph) 04/2024.pptx
Gas measurement O2,Co2,& ph) 04/2024.pptxDr.Ibrahim Hassaan
 

Último (20)

INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptxINTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
 
ACC 2024 Chronicles. Cardiology. Exam.pdf
ACC 2024 Chronicles. Cardiology. Exam.pdfACC 2024 Chronicles. Cardiology. Exam.pdf
ACC 2024 Chronicles. Cardiology. Exam.pdf
 
OS-operating systems- ch04 (Threads) ...
OS-operating systems- ch04 (Threads) ...OS-operating systems- ch04 (Threads) ...
OS-operating systems- ch04 (Threads) ...
 
Incoming and Outgoing Shipments in 3 STEPS Using Odoo 17
Incoming and Outgoing Shipments in 3 STEPS Using Odoo 17Incoming and Outgoing Shipments in 3 STEPS Using Odoo 17
Incoming and Outgoing Shipments in 3 STEPS Using Odoo 17
 
Q4 English4 Week3 PPT Melcnmg-based.pptx
Q4 English4 Week3 PPT Melcnmg-based.pptxQ4 English4 Week3 PPT Melcnmg-based.pptx
Q4 English4 Week3 PPT Melcnmg-based.pptx
 
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptxECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
 
Choosing the Right CBSE School A Comprehensive Guide for Parents
Choosing the Right CBSE School A Comprehensive Guide for ParentsChoosing the Right CBSE School A Comprehensive Guide for Parents
Choosing the Right CBSE School A Comprehensive Guide for Parents
 
FINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptx
FINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptxFINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptx
FINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptx
 
Grade 9 Q4-MELC1-Active and Passive Voice.pptx
Grade 9 Q4-MELC1-Active and Passive Voice.pptxGrade 9 Q4-MELC1-Active and Passive Voice.pptx
Grade 9 Q4-MELC1-Active and Passive Voice.pptx
 
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
 
Raw materials used in Herbal Cosmetics.pptx
Raw materials used in Herbal Cosmetics.pptxRaw materials used in Herbal Cosmetics.pptx
Raw materials used in Herbal Cosmetics.pptx
 
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
 
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdf
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdfInclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdf
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdf
 
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPTECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
 
Field Attribute Index Feature in Odoo 17
Field Attribute Index Feature in Odoo 17Field Attribute Index Feature in Odoo 17
Field Attribute Index Feature in Odoo 17
 
LEFT_ON_C'N_ PRELIMS_EL_DORADO_2024.pptx
LEFT_ON_C'N_ PRELIMS_EL_DORADO_2024.pptxLEFT_ON_C'N_ PRELIMS_EL_DORADO_2024.pptx
LEFT_ON_C'N_ PRELIMS_EL_DORADO_2024.pptx
 
Influencing policy (training slides from Fast Track Impact)
Influencing policy (training slides from Fast Track Impact)Influencing policy (training slides from Fast Track Impact)
Influencing policy (training slides from Fast Track Impact)
 
Full Stack Web Development Course for Beginners
Full Stack Web Development Course  for BeginnersFull Stack Web Development Course  for Beginners
Full Stack Web Development Course for Beginners
 
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTS
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTSGRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTS
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTS
 
Gas measurement O2,Co2,& ph) 04/2024.pptx
Gas measurement O2,Co2,& ph) 04/2024.pptxGas measurement O2,Co2,& ph) 04/2024.pptx
Gas measurement O2,Co2,& ph) 04/2024.pptx
 

'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