Programming for joomla - extensions development

847
-1

Published on

Emir Sakić
Joomla!Day BiH 2013.
Sarajevo - 3. maj 2013.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
847
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Naslovna
  • O meni
  • Joomla dodaci su softverski paketi koji proširuju Joomla instalaciju na neki način.
  • OOP vs proceduralprogrammingSpomeni JS, XML, AJAX, CSS, Bootstrap, Mootools, jQuery, less
  • IDEs: Zend Studio, EclipseXdebug i DBGp plugin zaNotepad++
  • Način programiranja koji koristi objekte – strukture sastavljene od polja podataka i metoda i njihovih interakcija.Tehnike: proširivanje i nasljeđivanje, obavijanje (encapsulation)Suprotno proceduralnom programiranju
  • Model–View–Controller (MVC) je naziv koji se često koristi u softverskom inženjeringu. Namjenjen je izoliranju programske logike (business logic) od ulaza (input) i prezentacijskog djela, omogućava nezavisan razvoj, testiranje i održavanje određene aplikacije.
  • Hello World komponenta
  • - Ne raditi DB pozive niti ispisivati bilo šta.Controller sadrži najmanje koda u usporedbi sa modelom i view-om.Prima parametreiz URL querystringa.
  • Ovdje treba da bude sva programska logika Kontroliše pristup bazi podataka
  • - View sadržiprikaznu logiku. On odlučuje šta treba ili ne treba biti prikazano.
  • - Viewjoš uvijek ne sadrži HTML code. Pa gdje je HTML code generisan?Layout file daje konačni html layout za code Spomeni template layout overrides
  • KorisneAPI funkcijeunutarJoomlekoje bi trebalikoristiti.
  • Omogućava pristup globalnim objektima Neke objekte bolje kreirati pomoću JFactory, Joomla može cache-irati te objekte
  • JRequestdoprinosi sigurnosti aplikacije jer filtrira varijable iz zahtjeva, SQL injectiongetWord : [A-Z|a-z]getCmd: [A-Za-z0-9.-_]getFloati getIntosiguravaju da dobijetekorektan tip promjenjive
  • Za rukovanje fajlovima/mapamauJoomli, izbjegavatiphp funkcije Zašto? Joomlaima FTP layer koji rukuje operacijama nad datotekamapreko ftp poziva
  • Programming for joomla - extensions development

    1. 1. Joomla programiranjerazvoj dodatakaEmir Sakić
    2. 2. dipl. ing. elektrotehnikesuosnivač Joomla projektadirektor Sakic.Net d.o.o.Emir Sakić
    3. 3. Joomla 2005: osnivačka konferencija
    4. 4. Joomla dodaci (Extensions)• Komponente (Components)• Moduli (Modules)• Plugini (Plugins)• Predlošci (Templates)• Jezici (Languages)
    5. 5. Joomla struktura
    6. 6. Instalacija Joomla dodataka
    7. 7. Pojmovi• PHP 5 (Hypertext Preprocessor)• mySQL (database)• OOP (Object-oriented programming)• MVC (Model-View-Controller)• Joomla Platform (Framework)
    8. 8. Alati• Text editor (npr. Notepad++) ili IDE• LAMP / WAMP (npr. XAMPP)• Xdebug & DBGp plugin za Notepad++• FTP klijent (npr. FileZilla)• phpMyAdmin• Firebug dodatak za Firefox
    9. 9. OOP
    10. 10. MVC• Model – upravlja podacima i logikom• Ovdje idu svi pozivi ka bazi podataka• View – prezentuje modelirane podatke• Bez programske logike• Controller – kontroliše aplikacioni slijed• Interpretira korisnički zahtjev• Pokreće odgovarajući model• Prosljeđuje model prema view
    11. 11. Struktura datoteka• ./components/com_helloworld/• models/• helloworld.php• views/• helloworld/• tmpl/• default.php• view.html.php• controller.php• helloworld.php
    12. 12. Ulazna tačka: helloworld.phpindex.php?option=com_helloworld• Minimalni kôd: pokreće controller
    13. 13. Controller• Procesira korisnički zahtjev• NE RADITI• Pozive bazi podataka• Echo bilo šta• Prosljeđuje izvršenje view-u
    14. 14. Model• Sadrži programsku logiku• Pristupa bazi podataka
    15. 15. View• Prikazuje rezultat• Preuzima podatke od modela
    16. 16. Layout• Layout file radi konačni HTML ispisdefault.php nogreeting.phppravilno nepravilno
    17. 17. Pakovanje• com_helloworld.zip• admin/• controllers/• models/• views/• sql/• …• site/• models/• views/• ...• helloworld.xml
    18. 18. Manifest: helloworld.xml
    19. 19. Modules & Plugins• mod_..., plg_...• Ide u modules/, plugins/• Jednostavnija struktura• Manifest razlika: type, client, group• Mogu se pakovati sa komponentama
    20. 20. Joomla API: api.joomla.org• MVC – JController, JModel , JView• JFactory – pristup globalnim objektima• JText• višejezička podrška• JText::_() i JText::sprintf()• JRequest – čita korisnički zahtjev• JUser – Korisnički objekt• JForm – Kreiranje obrazaca iz XML-a
    21. 21. JFactory• ::getApplication()• ::getDBO()• ::getConfig()• ::getUser()• ::getDocument()• ::getLanguage()• ::getURI()
    22. 22. JRequest (now JInput)• ::getVar()• ::getWord()• ::getCmd()• ::getString()• ::getBool()• ::getFloat()• ::getInt()
    23. 23. Rukovanje datotekama• Ne koristiti fopen, fread, fwrite …• Koristiti Joomla funkcije• JFolder• JFile• JPath
    24. 24. Greške• Warnings• Errors (Exceptions since 3.0)if($db->getErrorNum()){JError::raiseError( 500, $db->stderr() );}if(uslov_nije_ispunjen()){JError::raiseError( 500, Sistemska greška );}$app = JFactory::getApplication();$app->enqueueMessage( Medvjed ulazi u vodu..., warning );
    25. 25. Prikaz greške
    26. 26. • http://thecancerus.com/debugging-php-using-xdebug-and-notepad-part-i/ (Xdebug & DBGp plugin)• http://docs.joomla.org/Setting_up_your_workstation_for_extension_development (Eclipse)• http://docs.joomla.org/Developing_a_Model-View-Controller_Component/2.5• http://developer.joomla.org (Start point)• http://docs.joomla.org/Developers (Tutorials)• http://api.joomla.org (Platform API)Pitanja?

    ×