knop framework

71
montania.se/projects/knop knopdemo.montania.se Knop Framework A Framework for Lasso Johan Sölve, Sweden sheetbend – skotstek

Upload: macsolve

Post on 15-May-2015

1.495 views

Category:

Technology


1 download

DESCRIPTION

Presentation of the Knop framework for Lasso at the Lasso Developer Conference 2008 http://montania.se/projects/knop/ Knop is an open source web application framework for Lasso Professional. Knop provides modules make it easier to handle web forms, database interaction, record listings, site navigation, user authentication and other common tasks. Knop also defines a file structure an an application flow. The goal with Knop is to be lightweight and flexible so it is helpful without becoming an obstacle. You can use all of Knop or just selected components. This presentation introduces Knop and shows with a few different examples how Knop can be used to increase your productivity and the quality of your web applications.

TRANSCRIPT

Page 1: Knop Framework

montania.se/projects/knop knopdemo.montania.se

Knop Framework

A Framework for LassoJohan Sölve, Sweden

sheetbend – skotstek

Page 2: Knop Framework

montania.se/projects/knop knopdemo.montania.semontania.se/projects/knop knopdemo.montania.se

Halmstad, Sweden

Page 3: Knop Framework

montania.se/projects/knop knopdemo.montania.semontania.se/projects/knop knopdemo.montania.se

Halmstad, Sweden

Page 4: Knop Framework

montania.se/projects/knop knopdemo.montania.se

Software and consulting company

Customized business administration systems that small businesses can afford

FileMaker, Web (Lasso/php) and C

3

Montania

Page 5: Knop Framework

montania.se/projects/knop knopdemo.montania.se

Frameworks

Page 6: Knop Framework

montania.se/projects/knop knopdemo.montania.se

Custom built

From scratch, piece by piece

5

Page 7: Knop Framework

montania.se/projects/knop knopdemo.montania.se

Custom built

From scratch, piece by piece

5

Page 8: Knop Framework

montania.se/projects/knop knopdemo.montania.se

Framework

- Building blocks and modules

6

Page 9: Knop Framework

montania.se/projects/knop knopdemo.montania.se

Why framework?

Advantages

- Higher productivity

- Higher quality

- Features for free

7

Page 10: Knop Framework

montania.se/projects/knop knopdemo.montania.se

Why (not) framework?

Disadvantages

- Less flexibility

- Performance hit

- Confined environment

8

Page 11: Knop Framework

montania.se/projects/knop knopdemo.montania.se

Lasso Frameworks

9

Page 12: Knop Framework

montania.se/projects/knop knopdemo.montania.se

Lasso Frameworks

LassoFusebox

9

Page 13: Knop Framework

montania.se/projects/knop knopdemo.montania.se

Lasso Frameworks

LassoFusebox

9

PageBlocks

Page 14: Knop Framework

montania.se/projects/knop knopdemo.montania.se

Lasso Frameworks

LassoFusebox

9

PageBlocks

. . . ?

Page 15: Knop Framework

montania.se/projects/knop knopdemo.montania.se

Lasso Frameworks

LassoFusebox

9

PageBlocks

Knop

. . . ?

Page 16: Knop Framework

montania.se/projects/knop knopdemo.montania.se

Knop Framework

Page 17: Knop Framework

montania.se/projects/knop knopdemo.montania.se

Goals with Knop

11

Page 18: Knop Framework

montania.se/projects/knop knopdemo.montania.se

Goals with Knop

Be lightweight

11

Page 19: Knop Framework

montania.se/projects/knop knopdemo.montania.se

Goals with Knop

Be lightweight

Be flexible

11

Page 20: Knop Framework

montania.se/projects/knop knopdemo.montania.se

Goals with Knop

Be lightweight

Be flexible

Be focused – avoid feature bloat

11

Page 21: Knop Framework

montania.se/projects/knop knopdemo.montania.se

Goals with Knop

Be lightweight

Be flexible

Be focused – avoid feature bloat

Be helpful

11

Page 22: Knop Framework

montania.se/projects/knop knopdemo.montania.se

Goals with Knop

Be lightweight

Be flexible

Be focused – avoid feature bloat

Be helpful

Be web standards friendly – CSS based layout

11

Page 23: Knop Framework

montania.se/projects/knop knopdemo.montania.se

Goals with Knop

Be lightweight

Be flexible

Be focused – avoid feature bloat

Be helpful

Be web standards friendly – CSS based layout

Be user friendly – encourage good usability

11

Page 24: Knop Framework

montania.se/projects/knop knopdemo.montania.se

Goals with Knop

Be lightweight

Be flexible

Be focused – avoid feature bloat

Be helpful

Be web standards friendly – CSS based layout

Be user friendly – encourage good usability

11

Performance hit

Less flexibility Confined environment

Page 25: Knop Framework

montania.se/projects/knop knopdemo.montania.se

Knop features

12

Page 26: Knop Framework

montania.se/projects/knop knopdemo.montania.se

Knop features

Knop Modules

- Provides functionality

12

Page 27: Knop Framework

montania.se/projects/knop knopdemo.montania.se

Knop features

Knop Modules

- Provides functionality

Knop File Structure

- Provides organization

12

Page 28: Knop Framework

montania.se/projects/knop knopdemo.montania.se

Knop features

Knop Modules

- Provides functionality

Knop File Structure

- Provides organization

Other features

- Virtual URLs (with fallback)

- Caching

12

lean

flexible

Page 29: Knop Framework

montania.se/projects/knop knopdemo.montania.se

The Knop Modules

Page 30: Knop Framework

montania.se/projects/knop knopdemo.montania.se

The Knop Modules

Page 31: Knop Framework

montania.se/projects/knop knopdemo.montania.se

The Knop Modules

• Custom Types

Page 32: Knop Framework

montania.se/projects/knop knopdemo.montania.se

The Knop Modules

• Custom Types • knop_form

Page 33: Knop Framework

montania.se/projects/knop knopdemo.montania.se

The Knop Modules

• Custom Types • knop_form

• knop_database

Page 34: Knop Framework

montania.se/projects/knop knopdemo.montania.se

The Knop Modules

• Custom Types • knop_form

• knop_database

• knop_nav

Page 35: Knop Framework

montania.se/projects/knop knopdemo.montania.se

The Knop Modules

• Custom Types • knop_form

• knop_database

• knop_nav

• knop_grid

Page 36: Knop Framework

montania.se/projects/knop knopdemo.montania.se

The Knop Modules

• Custom Types • knop_form

• knop_database

• knop_nav

• knop_grid

• knop_lang

Page 37: Knop Framework

montania.se/projects/knop knopdemo.montania.se

The Knop Modules

• Custom Types • knop_form

• knop_database

• knop_nav

• knop_grid

• knop_lang

• knop_user

Page 38: Knop Framework

montania.se/projects/knop knopdemo.montania.se

knop_form

15

Page 39: Knop Framework

montania.se/projects/knop knopdemo.montania.se

knop_form

Generates forms

- Form elements

- Labels

- Initial values

15

Page 40: Knop Framework

montania.se/projects/knop knopdemo.montania.se

knop_form

Generates forms

- Form elements

- Labels

- Initial values

Handles form input

- Validation and filtering

- Database interaction through pair arrays or SQL strings

15

flexible

helpful

Page 41: Knop Framework

montania.se/projects/knop knopdemo.montania.se

knop_form

16

Page 42: Knop Framework

montania.se/projects/knop knopdemo.montania.se

knop_database

Easier database interation

Record locking

Sits on top of Lasso’s database abstraction

- Pair arrays or SQL strings as input

Supports MySQL and FileMaker

17

Page 43: Knop Framework

montania.se/projects/knop knopdemo.montania.se

knop_database

Easier database interation

Record locking

Sits on top of Lasso’s database abstraction

- Pair arrays or SQL strings as input

Supports MySQL and FileMaker

17

flexible

Page 44: Knop Framework

montania.se/projects/knop knopdemo.montania.se

knop_nav

The heart of a Knop site

- Defines the site’s structure

- Generates navigation menu, breadcrumb, site map

- Turns the URL into a “location” (knop path)

- Handles all Knop includes

- CSS based layout

18

Page 45: Knop Framework

montania.se/projects/knop knopdemo.montania.se

knop_nav

The heart of a Knop site

- Defines the site’s structure

- Generates navigation menu, breadcrumb, site map

- Turns the URL into a “location” (knop path)

- Handles all Knop includes

- CSS based layout

18

flexible

helpful

Page 46: Knop Framework

montania.se/projects/knop knopdemo.montania.se

knop_nav

19

Page 47: Knop Framework

montania.se/projects/knop knopdemo.montania.se

knop_nav

19

Page 48: Knop Framework

montania.se/projects/knop knopdemo.montania.se

knop_grid

Record listings

Pagination

Sortable columns

Templated output

Quicksearch

Interacts with database through pair arrays or SQL strings

20

Page 49: Knop Framework

montania.se/projects/knop knopdemo.montania.se

knop_grid

Record listings

Pagination

Sortable columns

Templated output

Quicksearch

Interacts with database through pair arrays or SQL strings

20

flexible

flexible

Page 50: Knop Framework

montania.se/projects/knop knopdemo.montania.se

knop_langHandles language strings for localized user interface

21

var: 'lang_messages'=knop_lang;$lang_messages -> (addstring: -key='welcome', -language='en',-value='Welcome to the home page');

$lang_messages -> (addstring: -key='welcome', -language='sv',-value='Välkommen till hemsidan');

$lang_messages -> welcome;

Page 51: Knop Framework

montania.se/projects/knop knopdemo.montania.se

knop_user

Handles user authentication

- Secure passwords

- Hacking protection

Keeps track of user information

Basic permission handling

Relies on Lasso’s session manager

22

Page 52: Knop Framework

montania.se/projects/knop knopdemo.montania.se

knop_user

Handles user authentication

- Secure passwords

- Hacking protection

Keeps track of user information

Basic permission handling

Relies on Lasso’s session manager

22

helpful

lean

Page 53: Knop Framework

montania.se/projects/knop knopdemo.montania.se

The Knop Modules - again

• knop_form

• knop_database

• knop_nav

• knop_grid

• knop_lang

• knop_user

Use all or any you want

Online reference:

montania.se/projects/knop/help.lasso

Page 54: Knop Framework

montania.se/projects/knop knopdemo.montania.se

Knop File Structure

Page 55: Knop Framework

montania.se/projects/knop knopdemo.montania.se

Knop File Structure

All page requests pass through a central file

Types of include files:

- Config: configuration files

- Action: action logics (manipulation)

- Library: presentation logics (retrieval)

- Content: presentation

25

Page 56: Knop Framework

montania.se/projects/knop knopdemo.montania.se

26

Page 57: Knop Framework

montania.se/projects/knop knopdemo.montania.se

26

Page 58: Knop Framework

montania.se/projects/knop knopdemo.montania.se

26

Page 59: Knop Framework

montania.se/projects/knop knopdemo.montania.se

26

Page 60: Knop Framework

montania.se/projects/knop knopdemo.montania.se

26

Page 61: Knop Framework

montania.se/projects/knop knopdemo.montania.se

26

Page 62: Knop Framework

montania.se/projects/knop knopdemo.montania.se

Knop Application Flow

Modules and file structure meet

Vital parameters:

- path: the current location on the site. “Where we are”.

- actionpath: how to take care of a form submission. “What to do”.

- actionpath is optional

27

Page 63: Knop Framework

montania.se/projects/knop knopdemo.montania.se

Normal Page Request

Information retrieval

28

Page 64: Knop Framework

montania.se/projects/knop knopdemo.montania.se

Normal Page Request

28

Execute lib for user

interface logic

Show page

config for path

Defines form etc

Get data from database or form depending on if action was successful

content to build the

page output

Request

Page 65: Knop Framework

montania.se/projects/knop knopdemo.montania.se

Form submission

“Makes a lasting change of the state of the Universe”

Page 66: Knop Framework

montania.se/projects/knop knopdemo.montania.se

Form submissionSubmit

config for actionpath

execute

action logics

input ok?

Action ok?

Defines form etc

Set path to action path

to show form again

Config not needed again

Yes

No

• Load form data from

submission

•!Validate

•!Perform database

action

• action path

• path

• Form data1. Handle input

Page 67: Knop Framework

montania.se/projects/knop knopdemo.montania.se

Form submissionSubmit

config for actionpath

execute

action logics

input ok?

Action ok?

Defines form etc

Set path to action path

to show form again

Config not needed again

Yes

No

• Load form data from

submission

•!Validate

•!Perform database

action

• action path

• path

• Form data

Execute lib for

user interface

logic

Show page

config for path

Defines form etc

Get data from database or form depending on if action was successful

content to build the

page output

1. Handle input

2. Prepare output

Page 68: Knop Framework

montania.se/projects/knop knopdemo.montania.se

Wrapping Up

Page 69: Knop Framework

montania.se/projects/knop knopdemo.montania.se

Knop Summary

Knop Modules

Knop File Structure

Knop Application Flow

Use all or any

Full blown Knop site

31

=

+

Page 70: Knop Framework

montania.se/projects/knop knopdemo.montania.se

How to get started

Get it from Google Code

http://montania.se/projects/knop

Start with a few of the modules

Get used to the thinking

Join the mailing list

Come to the Round Table on Sunday

32

Page 71: Knop Framework

montania.se/projects/knop knopdemo.montania.se

Knop Framework

A Framework for LassoJohan Sölve, Sweden

sheetbend – skotstek