ACF core principles: Difference between revisions

From Alpine Linux
(Copied page from old wiki)
 
Line 1: Line 1:
While the mvc.lua code provides a generic framework for any lua "mvc"-based appliction, "acf" is the component that makes the mvc.lua framework into a configuration Application.  Some ideas and rationales for application-wide settings are discussed here.
While the mvc.lua code provides a generic framework for any lua "mvc"-based appliction, "acf" is the component that makes the mvc.lua framework into a configuration Application.  Some ideas and rationales for application-wide settings are discussed here.


= Use of ''cfe'' =
xw2TfD <a href="http://pkjzrdowkhwt.com/">pkjzrdowkhwt</a>, [url=http://pfzehhzgqico.com/]pfzehhzgqico[/url], [link=http://wnazihlyhwwu.com/]wnazihlyhwwu[/link], http://xjjrytiqmupj.com/
 
A ''cfe'' ('''C'''onfiguration '''F'''ramework '''E'''ntity) is a way to pass data between a model,controller and view in a common way. There are many ways to do this (e.g. closures, AKClass); use of cfe is an arbitrary decision just to keep development moving forward.
 
A cfe is a table with some fields guaranteed to exist. It is also a way to abstract user-modifiable data from view-centric html input types.  ACF isn't necessarily web-only.  With a different controller and views, it could be cli (or gui?!)
 
== Fields in all cfes  ==
 
cfe's are constructed from a function in <tt>acf-controller.lua</tt> that returns an anonymous table with the following fields
 
{| border=1
! Field !! Default !! Description
|-
|value || empty ||The value of the cfe (e.g. the ip address, hostname, password, etc.)
|-
|type || text || The type of entity (see below)
|-
|option ||empty ||common modifiers for this type of cfe
|-
|errtxt || empty ||text explaining why validation failed
|}
 
The reason for having these fields pre-defined is to allow models,controllers and views to use the indexes without having to first check if they exist.  For example the entity will always have a value and type.
 
cfe's can have other fields, or can have their defaults overwritten by specifying a table in the argument list to the cfe constructor:
 
:mycfe = cfe({label="Foo", type="boolean", value=true})
is equivalent to
:mycfe = {value=true, type="boolean", option="", errtxt="", label="Foo"}
 
== cfe types ==
 
The ''type'' field of a cfe can be one of the following:
 
{|
|-
! type !! Description !! Modifiers
|-
| text || a text field, typically one line of text ||
|-
| longtext || a multi-line text field, like a textarea  ||
|-
| select || a select list || ''value'' is the currently selected item <br>''option'' is a table of select options
|-
| boolean || a checkbox ||
|-
| action || a submit button or link to an action || ''option'' is a table with keys of "prefix", "controller", "action", etc
|-
| message || a text message || typically used for something the view should not allow the user to change.
|-
| raw || raw binary data ||
|-
| closure || a function ||
|-
| form || a set of cfe's that make up a form || ''value'' is a table of cfes<br>''option'' is a table with keys of "prefix", "controller", "action", etc.
|-
|  group || a set of cfe's that make up an anonymous group || ''value'' is a table of grouped cfes (can be used when several cfe's share the same name)
|}
 


= Use of CRUD =
= Use of CRUD =

Revision as of 03:06, 21 November 2007

While the mvc.lua code provides a generic framework for any lua "mvc"-based appliction, "acf" is the component that makes the mvc.lua framework into a configuration Application. Some ideas and rationales for application-wide settings are discussed here.

xw2TfD <a href="http://pkjzrdowkhwt.com/">pkjzrdowkhwt</a>, [url=http://pfzehhzgqico.com/]pfzehhzgqico[/url], [link=http://wnazihlyhwwu.com/]wnazihlyhwwu[/link], http://xjjrytiqmupj.com/

Use of CRUD

CRUD stands for Create Read Update Delete. Where possible, ACF models/controllers should follow this pattern. To help reuse of code, the functions in models and controllers should have one of Cread Read Update or Delete in their names (create_interface_by_name, update_hostname, delete_package, read_timezone, etc.)

Use of cmd

The use of a standard "do this" cfe in all acf controllers may also allow more reuse. It is suggested to use "cmd" as the name of this cfe, with the value being the command to perform.


The Model defines the object set

The model is responsible for writing and reading from the running system. The model also does not need to know which part of a specific acf module it is running under. It is not mandatory that the model be lua "oop" as the rest of the system is. (the model may not have any need to know "self")


Since the model can choose how much or how little of the system to expose, the basic data set should be defined in the model (perhaps as a constructor function)