Fork 4 Developers

62
Fork CMS Developers!

description

Over de code, structuur en API's van Fork CMS. Vooral gericht naar developers.

Transcript of Fork 4 Developers

Page 1: Fork 4 Developers

Fork CMSDevelopers!

Page 2: Fork 4 Developers

hashtag: #forkmeetupwifi: VergaderNet, wachtwoord:

ventilatie

Page 3: Fork 4 Developers

I’m Dieter @dieterve

Page 4: Fork 4 Developers

This is Davy @bauffman

Page 5: Fork 4 Developers

In depth

Page 6: Fork 4 Developers

‣ Applications‣ Backend‣ Frontend‣ API‣ Modules

Content

Page 7: Fork 4 Developers

‣ Applications‣ Backend‣ Frontend‣ API‣ Modules

Content

Page 8: Fork 4 Developers

‣ Applications‣ Backend‣ Frontend‣ API‣ Modules

Content

Page 9: Fork 4 Developers

‣ Applications‣ Backend‣ Frontend‣ API‣ Modules

Content

Page 10: Fork 4 Developers

‣ Applications‣ Backend‣ Frontend‣ API‣ Modules

Content

Page 11: Fork 4 Developers

applications - backend - frontend - api - modules

Frontend Backend API

Library

Page 12: Fork 4 Developers

‣ 1 for each purpose‣ Clean separation between apps‣ Possible overlap (causing overhead)

Applications

applications - backend - frontend - api - modules

Page 13: Fork 4 Developers

‣ Core‣ Modules (some required)‣ Based on MVC‣ Limited template logic

Structure

applications - backend - frontend - api - modules

Page 14: Fork 4 Developers

‣ Routing‣ Templates‣ Authentication‣ Forms‣ ...

Core

applications - backend - frontend - api - modules

Page 15: Fork 4 Developers

Modules

applications - backend - frontend - api - modules

actionsajaxcronjobs (backend only)engineinstaller (backend only)jslayout

templateswidgets

widgets

Page 16: Fork 4 Developers

‣ Global configuration‣ External classes‣ Google analytics‣ Facebook‣ Akismet

‣ Spoon Library

Library

applications - backend - frontend - api - modules

Page 17: Fork 4 Developers

‣ PHP5 library‣ Basic components‣ UTF-8 support‣ Unit tested‣ Open source (github)

Spoon Library

applications - backend - frontend - api - modules

Page 18: Fork 4 Developers

‣ SPOON_DEBUG true / false‣ Exceptions‣ PHP errors / warnings / ...

Error handling

applications - backend - frontend - api - modules

Page 19: Fork 4 Developers

applications - backend - frontend - api - modules

Page 20: Fork 4 Developers

‣ Content management‣ Authentication‣ Only logged in users

‣ Module driven‣ Semi clean url’s (GET)

Backend

applications - backend - frontend - api - modules

Page 21: Fork 4 Developers

‣ Router‣ Loads module based on URL‣ http://<site>/private/en/module/

controller?param=value‣ Authentication‣ Action level

Core

applications - backend - frontend - api - modules

Page 22: Fork 4 Developers

‣ Basic layout‣ Datagrids‣ Forms‣ Tabs‣ Filters

Core

applications - backend - frontend - api - modules

Page 23: Fork 4 Developers

applications - backend - frontend - api - modules

Page 24: Fork 4 Developers

applications - backend - frontend - api - modules

Page 25: Fork 4 Developers

‣ Base for actions‣ Less monkey jobs‣ Success/error reporting‣ Autoloading js/css‣ Choosing template‣ ...

Base classes

applications - backend - frontend - api - modules

Page 26: Fork 4 Developers

Reporting

applications - backend - frontend - api - modules

Page 27: Fork 4 Developers

‣ <module>.js‣ <action>.js‣ <action>.css

Autoloading JS / CSS

applications - backend - frontend - api - modules

Page 28: Fork 4 Developers

‣ index / add / edit‣ BackendBaseActionAdd‣ create and display form

‣ BackendBaseActionIndex‣ create and display datagrid

‣ All you have to do is add data

Specific base classes

applications - backend - frontend - api - modules

Page 29: Fork 4 Developers

‣ Per module (by installer)‣ Flexible‣ Not limited to module context‣ settings

Backend navigation

applications - backend - frontend - api - modules

Page 30: Fork 4 Developers

‣ BackendAnalyticsContent‣ BackendAnalyticsModel‣ BackendAnalyticsHelper

Autoloader

applications - backend - frontend - api - modules

Page 31: Fork 4 Developers

Directory structure

applications - backend - frontend - api - modules

actionsajaxcronjobsengineinstallerjslayout

templateswidgets

widgets

Page 32: Fork 4 Developers

‣ Controller‣ Interface for the user‣ Index / add / edit / delete / ...‣ Extends from base class(es)‣ Navigation links to action

Action

applications - backend - frontend - api - modules

Page 33: Fork 4 Developers

‣ View‣ Action template‣ <action>.tpl‣ SpoonTemplate syntax

Layout / template

applications - backend - frontend - api - modules

Page 34: Fork 4 Developers

‣ Model‣ Class with static methods‣ Handles database interaction

‣ Helper‣ Can be anything

Engine

applications - backend - frontend - api - modules

Page 35: Fork 4 Developers

‣ Controller‣ Own base class‣ Authentication‣ Json output

Ajax

applications - backend - frontend - api - modules

Page 36: Fork 4 Developers

‣ Controller‣ Own base class‣ No authentication‣ Collisions‣ Command line or HTTP

Cronjob

applications - backend - frontend - api - modules

Page 37: Fork 4 Developers

‣ Set rights‣ Set navigation structure‣ Set extra’s (create pages, ...)‣ install.sql‣ locale.xml

Installer

applications - backend - frontend - api - modules

Page 38: Fork 4 Developers

‣ The website‣ Visitors‣ Guests‣ Registered visitors

‣ Page driven (http://<site>/page)

Frontend

applications - backend - frontend - api - modules

Page 39: Fork 4 Developers

‣ 2 types of controllers‣ Action: 1 per page (route dependant)‣ Widget: * per page

‣ Defined in pages module‣ All about pages

Frontend

applications - backend - frontend - api - modules

Page 40: Fork 4 Developers

‣ 1 page = 1 template‣ 1 template = * blocks‣ Block‣ Action‣ Widget

Pages

applications - backend - frontend - api - modules

Page 41: Fork 4 Developers

Blocks in de template...

1

2

3

4 5

6

7

Page 42: Fork 4 Developers
Page 43: Fork 4 Developers

applications - backend - frontend - api - modules

Pages

Page 44: Fork 4 Developers

‣ Routing‣ action to execute‣ widget(s) to execute‣ based on the current page

Core

applications - backend - frontend - api - modules

Page 45: Fork 4 Developers

‣ SPOON_DEBUG = false‣ minified.css‣ Custom js / css = auto

Minify

applications - backend - frontend - api - modules

Page 46: Fork 4 Developers

‣ XML‣ JSON‣ Authentication possible‣ /api/1.0/?

method=<module>.<function>&param=value..

API

applications - backend - frontend - api - modules

Page 47: Fork 4 Developers

‣ BackendBlogAPI‣ Public functions‣ Parameter validation

API

applications - backend - frontend - api - modules

Page 48: Fork 4 Developers

‣ Index pool‣ Fields defined per module‣ Callback per module

Search

applications - backend - frontend - api - modules

Page 49: Fork 4 Developers

Add to index

applications - backend - frontend - api - modules

Page 50: Fork 4 Developers

Callback

applications - backend - frontend - api - modules

Page 51: Fork 4 Developers

‣ Create textbox

‣ Save after validation

Tags

applications - backend - frontend - api - modules

Page 52: Fork 4 Developers

Tags

applications - backend - frontend - api - modules

Page 53: Fork 4 Developers

Tags

applications - backend - frontend - api - modules

Page 54: Fork 4 Developers

‣ Again 1 pool‣ SEO‣ Almost every module needs it

Meta

applications - backend - frontend - api - modules

Page 55: Fork 4 Developers

applications - backend - frontend - api - modules

Page 56: Fork 4 Developers

applications - backend - frontend - api - modules

Page 57: Fork 4 Developers

‣ Create formMeta

applications - backend - frontend - api - modules

‣ Validate

‣ Save

Page 58: Fork 4 Developers

‣ Multi language‣ Maintainable by backend user‣ Split between applications

Locale

applications - backend - frontend - api - modules

Page 59: Fork 4 Developers

‣ Split between modules‣ Fallback to core

Locale - backend

applications - backend - frontend - api - modules

Page 60: Fork 4 Developers

‣ 1 pool

Locale - frontend

applications - backend - frontend - api - modules

Page 61: Fork 4 Developers

Questions?