knop framework
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
montania.se/projects/knop knopdemo.montania.se
Knop Framework
A Framework for LassoJohan Sölve, Sweden
sheetbend – skotstek
montania.se/projects/knop knopdemo.montania.semontania.se/projects/knop knopdemo.montania.se
Halmstad, Sweden
montania.se/projects/knop knopdemo.montania.semontania.se/projects/knop knopdemo.montania.se
Halmstad, Sweden
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
montania.se/projects/knop knopdemo.montania.se
Frameworks
montania.se/projects/knop knopdemo.montania.se
Custom built
From scratch, piece by piece
5
montania.se/projects/knop knopdemo.montania.se
Custom built
From scratch, piece by piece
5
montania.se/projects/knop knopdemo.montania.se
Framework
- Building blocks and modules
6
montania.se/projects/knop knopdemo.montania.se
Why framework?
Advantages
- Higher productivity
- Higher quality
- Features for free
7
montania.se/projects/knop knopdemo.montania.se
Why (not) framework?
Disadvantages
- Less flexibility
- Performance hit
- Confined environment
8
montania.se/projects/knop knopdemo.montania.se
Lasso Frameworks
9
montania.se/projects/knop knopdemo.montania.se
Lasso Frameworks
LassoFusebox
9
montania.se/projects/knop knopdemo.montania.se
Lasso Frameworks
LassoFusebox
9
PageBlocks
montania.se/projects/knop knopdemo.montania.se
Lasso Frameworks
LassoFusebox
9
PageBlocks
. . . ?
montania.se/projects/knop knopdemo.montania.se
Lasso Frameworks
LassoFusebox
9
PageBlocks
Knop
. . . ?
montania.se/projects/knop knopdemo.montania.se
Knop Framework
montania.se/projects/knop knopdemo.montania.se
Goals with Knop
11
montania.se/projects/knop knopdemo.montania.se
Goals with Knop
Be lightweight
11
montania.se/projects/knop knopdemo.montania.se
Goals with Knop
Be lightweight
Be flexible
11
montania.se/projects/knop knopdemo.montania.se
Goals with Knop
Be lightweight
Be flexible
Be focused – avoid feature bloat
11
montania.se/projects/knop knopdemo.montania.se
Goals with Knop
Be lightweight
Be flexible
Be focused – avoid feature bloat
Be helpful
11
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
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
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
montania.se/projects/knop knopdemo.montania.se
Knop features
12
montania.se/projects/knop knopdemo.montania.se
Knop features
Knop Modules
- Provides functionality
12
montania.se/projects/knop knopdemo.montania.se
Knop features
Knop Modules
- Provides functionality
Knop File Structure
- Provides organization
12
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
montania.se/projects/knop knopdemo.montania.se
The Knop Modules
montania.se/projects/knop knopdemo.montania.se
The Knop Modules
montania.se/projects/knop knopdemo.montania.se
The Knop Modules
• Custom Types
montania.se/projects/knop knopdemo.montania.se
The Knop Modules
• Custom Types • knop_form
montania.se/projects/knop knopdemo.montania.se
The Knop Modules
• Custom Types • knop_form
• knop_database
montania.se/projects/knop knopdemo.montania.se
The Knop Modules
• Custom Types • knop_form
• knop_database
• knop_nav
montania.se/projects/knop knopdemo.montania.se
The Knop Modules
• Custom Types • knop_form
• knop_database
• knop_nav
• knop_grid
montania.se/projects/knop knopdemo.montania.se
The Knop Modules
• Custom Types • knop_form
• knop_database
• knop_nav
• knop_grid
• knop_lang
montania.se/projects/knop knopdemo.montania.se
The Knop Modules
• Custom Types • knop_form
• knop_database
• knop_nav
• knop_grid
• knop_lang
• knop_user
montania.se/projects/knop knopdemo.montania.se
knop_form
15
montania.se/projects/knop knopdemo.montania.se
knop_form
Generates forms
- Form elements
- Labels
- Initial values
15
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
montania.se/projects/knop knopdemo.montania.se
knop_form
16
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
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
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
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
montania.se/projects/knop knopdemo.montania.se
knop_nav
19
montania.se/projects/knop knopdemo.montania.se
knop_nav
19
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
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
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;
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
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
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
montania.se/projects/knop knopdemo.montania.se
Knop File Structure
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
montania.se/projects/knop knopdemo.montania.se
26
montania.se/projects/knop knopdemo.montania.se
26
montania.se/projects/knop knopdemo.montania.se
26
montania.se/projects/knop knopdemo.montania.se
26
montania.se/projects/knop knopdemo.montania.se
26
montania.se/projects/knop knopdemo.montania.se
26
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
montania.se/projects/knop knopdemo.montania.se
Normal Page Request
Information retrieval
28
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
montania.se/projects/knop knopdemo.montania.se
Form submission
“Makes a lasting change of the state of the Universe”
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
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
montania.se/projects/knop knopdemo.montania.se
Wrapping Up
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
=
+
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
montania.se/projects/knop knopdemo.montania.se
Knop Framework
A Framework for LassoJohan Sölve, Sweden
sheetbend – skotstek