NAME
DBIx::Web - Active Web Database Layer
SYNOPSIS
use DBIx::Web;
my $w =DBIx::Web->new(
-serial=>2
,-debug=>2
,-index=>1
,-path=>'path to file store'
,-url=>'base URL of file store'
,-urf=>'filesystem URL to file store'
);
$w->set(-table=>{
...... see examples ......
,$w->tvmVersions()
,$w->tvmHistory()
});
$w->set(-form=>{
...... see examples ......
,'default'=>{-subst=>'default form or table name'}
});
$w->cgiRun();
DESCRIPTION
This is a database layer for Perl scripts, implementing triggers, record versioning, access control at the record level, file attachments to records, materialised views. There is a web user interface also.
Based on DBI and DB_File data engines. Based on CGI for user interface.
Currently implemented and tested on Win32 Apache and IIS (considering w32IISdpsn
warnings).
CGI::Bus, the previous project, was: focused on CGI user interface to database tables, not database metaphor; too complex in record version control programming; too complex and surplus in architecture and setup.
WODA has a very interesting database metaphor, but not many features.
CONCEPTS
- RELATIONAL DATABASES
-
Have several disadvantages:
- Record Level Access Control
-
Many of relational databases have not explicit record level access control. It may be implemented via views and triggers, within another application code. Fields for readers and authors names are useful, further needs dependences between records.
- Temporal Data Model
-
Many of relational databases have not temporal data model. It may be implemented via triggers and views, within another application code, but see R3 data model architecture...
But it may be useful recognize, who, when, what record edited. Further needs date-times of actuality of record.
- Polymorph records
-
Can I query and view data not from concrete tables but from database? It may be implemented via materialized views metaphor, using triggers. Further needs uniform record identifiers, to point to any record from any record, or URL. Full-text queries are also useful.
- Storage Size
-
Record types are implemented via database tables. Some tables due to generalization may grow. Very big tables may be difficult in repair or maintenance.
- File Attachments
-
May be implemented via BLOBs. But how to attach several files to any record?
- GROUPWARE DATABASES
-
Alike Lotus Domino, have several additional disadvantages:
- Bad Development Capabilities
-
There are no triggers, transactions, joins...
- WEB DATABASES
-
Have several disadvantages:
- Triggers Implementation
-
All application codes are concentrated at the server. Why programmer needs to use different programming languages to implement triggers and stored procedures in the database and another procedures in the web server? Why user interface hooks may not be considered as a kind of triggers?
Should be interesting a separate 'triggers server'? Or this may be considered as a kind of application servers?
- Database Engines
-
Why sole engine should be core? There may be many data sources and several engines.
- WEB COLLABORATIVE TOOLS
-
Alike Wiki, have several disadvantages:
Forms, views and queries may be added without metaphor changes, but implementation changes may be great. And what about file attachments?
- THIS DATABASE
-
The goal may to be conceptually better then Lotus Notes or to look alike some Wiki, but with remaining ability to implement any relational database and any data source interface.
Any case, this database has several disadvantages too:
- Effectiveness
-
Triggers level implementation is not very efficient.
One of the problems is repeating cursor loops in
recUpd
(one for '0R' trigger and one insidedbiUpd
) andrecDel
(for '0R' trigger anddbiDel
orrecUpd
). The last loop is always effectively implemented inside DBI SQL databases, but for DB_Files it should be implemented implicitly insidedbiUpd
ordbiDel
. To implement '1R' triggers insiderecUpd
orrecDel
, and also for effectiveness of DB_Files,dbiUpd
anddbiDel
should not be oriented to the groups of rows, or there should be a fast additional single row oriented interface. AlsorecDel
should use a fast single row oriented interface ofrecUpd
. So, there should be two interfaces torecUpd
,dbiUpd
anddbiDel
for effectiveness. But this is difficult in develop and test. - Restricted Database API
-
Database API implements restricted choice of SQL capabilities. SQL is comprehensive, but alien to any host language. It is too difficult to translate host programming to SQL, SQL to triggers implementation, triggers implementation to SQL towards database.
- Restricted Database Implementations
-
It is too difficult for embedded
Database Engines
to support transactions and many SQL features. It is very difficult to implement transactions covering file attachments.It is very difficult to implement real full-text search and full-text indexing both for database records and file attachments. Existed external indexing machine should understand data records and access rights. Embedded indexing machine should understand formats of files attached. Database may have it's own full-text implementation also.
- Another
-
See version info. See marked with '!!!' comments in the source code.
CLASSIFICATION
- Slots and Methods
-
Slots
are available viaset
call or $self->{-name} syntax. Seeinitialize
source for preferred to be defined innew
call slots. Table and Form description (-table
,-form
) slots, special data fields, and another keywords are denoted specially. The first value listed is the default.Methods
are used via $object->call() syntax.Slot names begin with '-' sign.
- Creation and Setup
-
new
,initialize
,class
,set
;-env
;start
,end
,-end0
,-endh
,-end1
;setup
,-setup
;-cgibus
- Error Processing
-
-die
,-warn
,-debug
;die
,warn
- Locale
-
-locale
,-lang
,-charset
,-lng
;lng
,lnghash
- Misc Data methods
-
max
,min
,dwnext
,orarg
,grep1
;strpad
,strquot
;strdata
,strdatah
,datastr
;dsdClone
,dsdMk
,dsdParse
;strtime
,timestr
,timeadd
;cptran
;dbiLikesc
,dbiQuote
;ishtml
,htmlEscape
,htmlUnescape
,urlEscape
,urlUnescape
,urlCat
,htlsTag
;xmlEscape
,xmlAttrEscape
,xmlTagEscape
,xmlUnescape
,xmlsTag
; - File Store
-
-path
,-url
,-urf
,-fswtr
,-fsrdr
;pthForm
;pthMk
,pthGlob
,pthGlobn
,pthRm
,pthCln
,pthCp
- Persistent Variables
-
-var
,-serial
;varFile
,varLoad
,varLock
,varStore
- Logging
-
-log
,-logm
;logOpen
,logLock
,logRec
- SubObjects
-
-dbi
,-dbiarg
,-dbiph
,-dbiACLike
;-cgi
;-output
;-smtp
,-smtphost
,-smtpdomain
;dbi
,cgi
,smtp
;hfNew
,dbmNew
,dbmTable
,ccbNew
;osCmd
;output
,outhtm
,outhtml
,outxml
;smtpSend
- User Identification
-
-user
,-unames
,-ugroups
;-AuthUserFile
,-AuthGroupFile
;-userln
,-usernt
;-udflt
,-unflt
,-ugflt
,-ugadd
;user
,userln
,unames
,ugroups
,ugnames
,udisp
,uglist
;ugrexp
,ugmember
,uguest
,uadmrdr
,uadmwtr
,uadmin
;w32IISdpsn
,w32adhi
,w32agf
- Database Options
-
-serial
,-autocommit
,-limit
,-affect
,-affected
,-fetched
,-limited
,-host
,-recInsID
,-idsplit
- Database Description
-
-title
,-table
and-form
(Table/Form Description
);-mdlTable
,-mdeTable
;Triggers
- Table/Form Description
- Table Description
- Form Description
-
-table
slot contains database tables descriptions.-form
slot containsUser Interface
forms descriptions. Some slots (like-field
,-wkey
,Triggers
,User Interface
) are common to-table
and-form
. '-qXXX' and-limit
slots are sufficient to describe queries or views or lists of records. Some slots may appear at database level also.-table
,-form
;-lbl
,-cmt
,-expr
;-field
(Field Description
);-key
,-keycmp
,-wkey
,-urm
,-null
;-ixcnd
,-ixrec
;-optrec
;-dbd
;Triggers
;User Interface
(-cgcXXX
;-subst
,-recXXX
;-query
,-frmLso
,-frmLsc
;-qfilter
,-qhref
,-qhrcol
,-qfetch
,-limit
;-cgvXXX
) - Field Description
-
-field
Table/Form Description
slot contains array ref of field descriptions (hash refs) and formatting strings.-fld
,-expr
,-lbl
,-cmt
;-flg
,-null
,-chk
,-edit
;-colspan
,-hide
,-hidel
;-lblhtml
,-lblhtbr
,-fhclass
,-fhstyle
,-fhprop
;-inp
,-inphtml
,-fdstyle
,-fdclass
,-fdprop
;-ddlb
,-ddlbmult
,-ddlbtgt
,-ddlbloop
,-ddlbmsab
;-form
;-lsthtml
,-lhclass
,-lhstyle
,-lhprop
,-ldclass
,-ldstyle
,-ldprop
- Record level Access Control
-
-rac
,-dbiACLike
;-racAdmRdr
,-racAdmWtr
,-racReader
,-racWriter
;-racActor
,-racPrincipal
,racUser
;-editable
- Record level Version Control
-
-rvcInsBy
,-rvcInsWhen
,-rvcUpdBy
,-rvcUpdWhen
,-rvcActPtr
,-rvcChgState
,-rvcCkoState
,-rvcDelState
.See also
ttoRVC
- Record File Attachments
-
-rfa
,-rfdName
;-file
,-fupd
;rfdPath
,rfdEdmd
,rfdGlobn
,rfdRm
;rfaUpload
,rfaRm
See also
tfdRFD
- Materialised Views
-
-index
,-ixcnd
,-ixrec
;recIndex
,recReindex
See also
ttoRVC
,tvmVersions
,tvmHistory
- Record ID References
-
-ridRef
See also
tvmReferences
,tfvReferences
- Triggers
-
-end0
,-endh
,-end1
;Triggers Interface
;-recTrim0A
;-recForm0A
,-recForm0C
,-recForm0R
,-recForm1C
,-recForm1A
;-recEdt0A
,-recEdt0R
,-recChg0R
,-recEdt1A
;-recNew0C
,-recNew0R
,-recNew1C
;-recIns0C
,-recIns0R
,-recInsID
,-recIns1R
,-recIns1C
;-recUpd0C
,-recUpd0R
,-recUpd1C
;-recDel0C
,-recDel0R
,-recDel1C
;-recIndex0R
;-recSel0C
;-recRead0C
,-recRead1C
- Database Operation
-
start
,end
;recCommit
,recRollback
;recNew
,recForm
,recIns
,recUpd
,recDel
;recSel
,recList
,recRead
,recQBF
;recLast
;recFields
,recValues
,recData
,recKey
,recWKey
.See also
Database Engines
. - Data Record Special fields
-
Record's hash ref returned from
Database Operation
calls contains data fields and values. But some fields are specially computed to describe record:-new
,-file
,-fupd
,-editable
- User Interface
-
Start review with
cgiRun
.Table/Form Description
;-pcmd
,-pdta
,-pout
;-form
;-cgcXXX
;-subst
,-recXXX
(-recNew
,-recForm
,-recIns
,-recUpd
,-recDel
,-recRead
,-recList
,...);-recX#A
(-recTrim0A
,-recEdt0A
,-recEdt0R
,-recEdt1A
);-httpheader
,-htmlstart
;-logo
,-icons
,-menuchs
,-menuchs1
,-frmLso
,-frmLsc
;-login
;-cgvXXX
;cgiRun
,cgiParse
,cgiQuery
;urlAuth
,urlOpt
;psParse
,psEval
;htmlStart
,htmlEnd
,htmlHidden
,htmlMenu
,cgiForm
(and alsohtmlField
,cgiDDLB
,tfvVersions
,tfdRFD
,tfvReferences
),cgiList
,cgiFooter
.See also
Perl Script Pages
,Templates
. - UI Substitutions
-
cgiRun
(-cgcXXX
,-subst
,-recXXX
,-cgvXXX
);cgiForm
(-field
,-query
-data
,-table
-field
);cgiList
(-query
-data
-display
,-field
,-table
-field
)See also
User Interface
. - Templates
-
-tn
,tn
;ttoRVC
;ttsAll
,tfsAll
;tvmVersions
,tfvVersions
;tvmReferences
,tfvReferences
;tvmHistory
;tfdRFD
;tfoShow
,tfoHide
;tvdIndex
,tvdFTQuery
SLOTS
- Slots
-
See
Slots and Methods
- -affect
-
=> not exists || 1
(
Database Options
) Number of rows to be affected by DML 'recUpd' or 'recDel' operation. Distinguish from-limit
. - -affected
-
(
Database Options
) Number of rows really affected by DML 'recIns', 'recUpd', 'recDel' operation. See also-affect
- -AuthUserFile
-
=> not exists || file path
(
User Identification
) Apache Users file, to be used inuglist
method, optional See alsow32agf
. - -AuthGroupFile
-
=> not exists || file path
(
User Identification
) Apache Groups file, to be used inugroups
anduglist
methods, optional. See alsow32agf
. - -autocommit
-
=> 1 || false
(
Database Options
) Autocommit database mode - -c
-
=> {}
Internal cache for computed values
- -cgcXXX
-
=> not exists || sub{}($self, 'name', {metadata}, $s->{-pcmd}, $s->{-pdta}) || 'filename.psp' || 'perl filename'
- -cgcURL
-
=> URL to redirect to
(
Table/Form Description
-User Interface
) RedirectscgiRun
to execute full external implementation of request or screen alikerecNew
,recForm
,recIns
,recUpd
,recDel
,recRead
,recList
. SeePerl Script Pages
for '*.psp' files description. See-recXXX
,-subst
,-table
for redirections of request to another form or table. See-cgvXXX
for external implementation of presentation only. - -cgi
-
=> not exists || CGI object
(
SubObjects
) CGI object, if used, created and available viacgi
call - -cgibus
-
=> not exists || CGI::Bus::tm file attachments path
(
Creation and Setup
) Switch to CGI::Bus::tm example applications behaviour, may be useful about redesign and migration. - -cgvXXX
-
=> not exists || sub{}($self, 'name', {metadata}, $s->{-pcmd}, $s->{-pdta}) || 'filename.psp' || 'perl filename'
(
Table/Form Description
-User Interface
) RedirectscgiRun
to execute presentation external implementation of request or screen alikerecNew
,recForm
,recIns
,recUpd
,recDel
,recRead
,recList
. SeePerl Script Pages
for '*.psp' files description. See-recXXX
for redirections of request to another form or table. See-cgcXXX
for full external implementation. - -charset
-
=> locale specific || '1252' || 'sharset code' || not exists
(
Locale
) Application's charset, see also-locale
- -chk
-
=> not exists || sub{$_, $@}(self, )
(
User Interface
-Field Description
) Field value check. Performed after-recTrim0A
and-null
conversion precedingrecIns
orrecUpd
operation. $_ represents field value, may be read and assigned; $@ intended for constraint violation message. - -cmt
- -cmt_LL
-
=> not exists || comment text || sub{}(self,...) -> comment text
(
Table Description
,Form Description
,Field Description
) Text of object description to display to users, default (international) or user language specific. See also-lbl
- -colspan
-
=> not exists || colspan html td element attribute
(
Field Description
) Number of form layout columns to be occupied by field. See also-colwidth
- -colwidth
-
=> not exists || width html td element attribute
(
Field Description
) Width of form layout column to be occupied by field. See also-colspan
- -debug
-
=> 0 || 1
(
Error Processing
) Debug mode switch, debug features level - -dbd
-
=> not exists || 'dbi' || 'dbm' || ...
(
Table Description
,Database Description
) Database engine used for table or as default for database. See alsoDatabase Engines
. - -dbi
-
=> not exists || DBI object
(
SubObjects
) DBI object, if used, created and available viadbi
call, using-dbiarg
to create - -dbiACLike
-
=> not exists || '' || rlike regexp ~* similar regexp_like like eq|=; lc; filter|sub
(
SubObjects
,Record level Access Control
) DBI LIKE operation options for access control fields comparation. There may be MySQL 'rlike' or 'regexp' operator, PostgreSQL '~*' operator, Oracle 'regexp_like' function name, SQL'99 'similar to' operator, widely known but problematical 'like' and '=' operators. Additional 'lc' or 'lower' word involves lowercase conversion. Additional 'filter' or 'sub' word involves-filter
ing to ensure 'like' case. Default operation depends on database driver name. - -dbiarg
-
=> not exists || 'arguments' || [arguments]
(
SubObjects
) DBI connection arguments string or array, used indbi
call - -dbiph
-
=> not exists || boolean
(
SubObjects
) Placeholders ('?') usage switch for arguments of DBI commands. Default behaviour is embedding values quoted as hinted via-flg
or analysed. - -ddlb
-
=> not exists || form name || sub{}(self, {field}) -> ddlb || [value,...[value=>labels],...] || {value=>label,..., value=>[labels],...} || cursor
(
Field Description
) Drop-down list box with editable input and produced on button press selection list. See also-ddlbmult
,-ddlbtgt
- -ddlbloop
-
=> not exists || boolean
(
Field Description
) Hint to reopen list box after input value chosen from it, may be used for hierarchical selection lists. See-ddlb
. - -ddlbmsab
-
=> not exists || boolean
(
Field Description
) Hint to use Microsoft Address Book instead of-ddlb
if possible. See-ddlb
. - -ddlbmult
-
=> not exists || boolean
(
Field Description
) Drop down list box allowing multi value selection. Reserved. See-ddlb
. - -ddlbtgt
-
=> not exists || field name || [field name,.. ? '<+field name',.. ? [field name => label, ? multi],..]
(
Field Description
) Drop down list box targets. '+' marks multivalue fields. 'multi' mark considered as boolean digit or values delimiter. Single field name will be represented with submit button, array will be represented with javascript buttons; default is current field. See-ddlb
. - -die
-
=> \&croak, see source code
(
Error Processing
) Failure sub{}: die / croak / confess; using &{$s->{-die} }('error') inside.set
(-die=>'core'||'perl'||'Module name') call sets also-warn
. - -edit
-
=> not exists || sub{}({self},{field},edit,query,value) || boolean
(
Field Description
) Editable field condition. Otherways field will be readonly. - -editable
-
=> not exists || boolean
(
Data Record Special fields
,Record level Access Control
) Editable record sign. Stamped byDatabase Operation
calls. Useful forUser Interface
level. - -end0
-
=> not exists || sub{}($self)
- -endh
-
=> {} || {name=>sub{}($self)}
- -end1
-
=> not exists || sub{}($self)
(
Creation and Setup
,Triggers
)end
operation triggers.-end0
- before cleanup.-endh
- delayed commands, cleaned after execution.-end1
- after cleanup. - -env
-
=> not exists || {env var=>value,...}
(
Creation and Setup
) Assignment or deletion of environment variables withinset
. - -expr
-
=> not exists || database name or formula
(
Table/Form Description
,Field Description
) Table or Field name as used inside SQL database engine, or SQL expression. Table name for application is explained as-table
key. Field name for application is explained as-fld
. - -fdclass
-
(
Field Description
) Form data ('td') HTML tag class - string or sub{$_}($self, command, record) - -fdstyle
-
(
Field Description
) Form data ('td') HTML tag style - string or sub{$_}($self, command, record) - -fdprop
-
(
Field Description
) Form data ('td') HTML tag additional properties - -fetched
-
(
Database Options
) Number of rows retrieved from the database query result set. May be-limited
by-limit
. Distinguish from-affected
- -fhclass
-
(
Field Description
) Form label ('th') HTML tag class - string or sub{$_}($self, command, record) - -fhstyle
-
(
Field Description
) Form label ('th') HTML tag style - string or sub{$_}($self, command, record) - -fhprop
-
(
Field Description
) Form label ('th') HTML tag additional properties - -field
-
=> [{field},..., ''||"\n"||"\t"||"\f"||'</table>'||'text'||sub{},..., {field}] => {name => {attributes}} # deprecated
(
Table/Form Description
-Field Description
) Array ref contains field descriptions as a hash refs. Text or result of sub{} evaluation will be outputted. Another type entries are tabular form layout hints: '' continues labels and fields in the current row, "\n" continues on next row(s), "\t" skips cell(s), "\f" finishes tabular layout, '</table>' finishes tabular layout and labels of the fields. See also-colspan
and-lblhtbr
. - -file
-
=> not exists || record file attachments subdirectory
(
Data Record Special fields
,Record File Attachments
) Sign and place of files attached to the record. Stamped byDatabase Operation
calls. UserfdPath
to obtain absolute location. - -fld
-
=> field name
(
Field Description
) Field name as used by application. Database field name or expression may be explained by-expr
. - -flg
-
=> not exists || 'ahkweumqln"'
(
Field Description
) Flags of the field:'a'll operation below, except 'h'yperlink, 'k'ey, 'w'key, quoting; default
'h'yperlink hint
'k'ey - primary key,
-key
preffered'w'here key - optimistic locking key,
-wkey
preffered'e'ditable,
-edit
preffered, see also-hide
'u'pdateable, may be inserted or saved into database
'm'andatory value
'q'uery form, may be used to form query condition
'l'istable, may be used in lists of records
'n'umeric quoting
'"' string quoting
- -form
-
=> not exists || {form name => {form description} } => not exists || form name to display records || true
(
Form Description
,User Interface
) User Interface forms descriptions.(
Field Description
,User Interface
) Form to display records by field value. - -frmLsc
-
=> not exists || [{-val=>option, ? -lbl=>title , ? -cmd=> {'cgiList' options} || sub{}(self, name, {metadata}, {query}, option)} || [option, ? title, ? {'cgiList' options} || sub{}],...]
(
Table/Form Description
-User Interface
)cgiQuery
/cgiList
display options alike column sets (-data
,-display
), sorting and grouping orders (-order
,-group
). - -frmLso
- -frmLsoAdd
-
=> not exists || boolean || [{-val=>option, ? -lbl=>title , ? -cmd=> {'-pcmd' options} || sub{}(self, name, {metadata}, {query}, option)} || [option, ? title, ? {'-pcmd' options} || sub{}],...] || sub{}(self, name, meta, command, option) -> [list]
- -frmLso0A
-
=> not exists || sub{}(self, name, meta, {'-pcmd' options}, option)
- -frmLso0C
-
=> not exists || sub{}(self, name, meta, command, option)
- -frmLso1C
-
=> not exists || sub{}(self, name, meta, command, option, comment) -> html
- -frmLso2C
-
=> not exists || sub{}(self, name, meta, command, option) -> html
(
Table/Form Description
-User Interface
)htmlMenu
form query options, default provided bycgiQuery
as-urole
recSel
clause.-frmLso0A
trigger may be used to change-pcmd
emulating user defined query parameters.-frmLso0C
trigger may be used to modify immediatecgiSel
arguments.-frmLso1C
and-frmLso2C
triggers may be used to modifyhtmlMenu
comment andcgiList
first column header.urlOpt
method may be useful. - -fsrdr
-
=> not exists || [users names]
(
File Store
) File Store Readers - users names - -fswtr
-
=> not exists || [users names]
(
File Store
) File Store Writers - users names - -ftext
-
=> not exists || [field names]
(
Table/Form Description
) Fields for full-text search. Default is all fields of record. - -fupd
-
=> not exists || record file attachments updatable sign
(
Data Record Special fields
,Record File Attachments
) Record file attachments updatable sign. Stamped byDatabase Operation
calls along with-file
. - -hide
-
=> not exists || sub{$_}({self},{field},edit,query,value) || boolean
(
Field Description
) Hide field condition. - -hidel
-
=> not exists || sub{$_}({self},{field},edit,query,value) || boolean
(
Field Description
) Hide field condition with left shift of following layout. - -host
-
=> see source code
(
Database Options
) Host name to use in record unique IDs generated, see also-recInsID
- -htmlstart
-
=> not exists || {}
(
User Interface
) CGI::start_html call parameters hash ref - -httpheader
-
=> not exists || {}
(
User Interface
) CGI::header call parameters hash ref - -icons
-
=> '/icons'
(
User Interface
) URL to Apache default icons - -idsplit
-
=> true || false || sub{}($self, {command}, key value)
(
Database Options
) Split complex record ID to table name and row ID, if record ID is so complex. Used withinrmlIdSplit
. - -index
-
=> not exists || boolean
(
Materialised Views
-Table Description
orDatabase Description
) Materialized views support switch, see-ixcnd
,-ixrec
- -inp
-
=> not exists || {L<CGI|CGI> widget parameters} || sub{}(C<htmlField> args) -> html
(
Field Description
) Widget description, mostly in terms of CGI module. Widget type selection rules and additional meanings are specified below. See also-ddlb
,-ddlbtgt
for editable list boxes. See also-inphtml
,-lbl
,-lblhtml
.not exists # text field
-htmlopt=> boolean # html may be, determined via
ishtml
-hrefs => boolean # hyperlinks, including 'urlh://' for host relative, 'urlr://' for script relative, 'urlf://' for record file attachments directory relative URLs
-cols => number # text area
-rows => number # text area
-arows => min # text area of variable height
-asize => min # text field of variable length
-labels => sub{}(self) ||{value=>label,...} # list box, optional if '-values', see
-ddlb
instead-labels_LL... # ... user language specific
-values => sub{}(self) ||[value,...] # list box, optional if '-labels'
-loop => boolean or -ddlbloop => boolean #
recForm
on list box choice change-rfd => boolean # record file attachments widget
otherwise # text field
- -inphtml
-
=> not exists || html text || sub{$_}({self},{field},edit,query,value) -> html
(
Field Description
) HTML presentation of field entry, use it together with-inp
. Sub{} will be evaluated to produce HTML string. '$_' in HTML will be replaced with-inp
. See also-lblhtml
- -ixcnd
-
=> not exists || boolean || sub{}(self, {command}, {record}) -> boolean
(
Table/Form Description
) Index table (Materialised Views
) indication. Scalar 'true' value is used for indexes should be updated from-recIndex0R
indexing trigger. Sub{} used as condition for inclusion of particular record from particular table into index.-ixrec
used to obtain values for inclusion/exclusion - -ixrec
-
=> not exists || sub{}(self, {command}, {record}, '+'||'-') -> {record}||[{record},...]
(
Table/Form Description
) Index table (Materialised Views
) records former. May directly create ('+') or delete ('-') index records, or return values of records to be included or excluded. See also-ixcnd
- -key
-
=> [field name,...]
(
Table Description
) Key fields names of the table. - -keycmp
-
=> not exists || sub{}(self, [key a], [key b])
(
Table Description
) Key compare dbm sub{}. Generally not used. See 'compare' parameter of DB_File. - -lang
-
=> locale specific || 'en' || 'language abbreviation' || not exists
(
Locale
) Application's language, see also-locale
- -lbl
- -lbl_LL
-
=> not exists || label text || sub{}(self) -> label text
(
Table Description
,Form Description
,Field Description
) Label or external name of the object to be displayed to user, default (international) or user language specific. See also-cmt
,-lblhtml
,-inp
,-inphtml
- -lblhtbr
-
=> not exists || "\f" || '</table>' || true
(
Field Description
) Finish of form tabular layout between field label and value. See-field
for values possible. - -lblhtml
-
=> not exists || html text || sub{$_}({self},{field},edit,query,value) -> html
(
Field Description
) HTML presentation of field label, use it together with-lbl
. Sub{} will be evaluated to produce HTML string. '$_' in HTML will be replaced with-lbl
. - -ldclass
-
(
Field Description
) List data ('<td>') HTML tag class - string or sub{$_}($self, cursor) - -ldstyle
-
(
Field Description
) List data ('<td>') HTML tag style - string or sub{$_}($self, cursor) - -ldprop
-
(
Field Description
) List data ('<td>') HTML tag additional properties - -lhclass
-
(
Field Description
) List heading ('<th>') HTML tag class - -lhstyle
-
(
Field Description
) List heading ('<th>') HTML tag style - -lhprop
-
(
Field Description
) List heading ('<th>') HTML tag additional properties - -limit
-
=> not exists (default 512 used) || number
(
Database Options
,Table/Form Description
) Limit of rows to be retrieved from the database query result set. Distinguish from-affect
. See also-fetched
,-limited
. - -limited
-
(
Database Options
) Number of rows limited by-limit
during retrieve of query result set. Equals to-fetched
if set. Distinguish from-affected
- -lng
-
=> '' || not exists || 'language'
(
Locale
) User's language, about CGI::http('Accept_language'), see also-locale
- -locale
-
=> POSIX::setlocale(&POSIX::LC_CTYPE())
(
Locale
) Application's locale,set
(-locale=>...) call changes also-charset
,-lang
,-lng
. - -log
-
=> 1 || undef || DBIx::Web::FileHandle object
(
Logging
) Log file switch / handle, opened withlogOpen
- -logm
-
=> 100
(
Logging
) Log strings list max size to be displayed - -login
-
=> '/cgi-bin/ntlm/'
(
User Identification
) Login URL part, where web server authentication is estimated. - -logo
-
=> not exists || HTML
(
User Interface
) Logotype to display in the button bar - -lsthtml
-
=> not exists || sub{$_}($self, cursor, [record]) -> HTML # local $_ =value
(
Field Description
) Conversion of field value to HTML in the list of records viacgiList
. Value may be found in local $_. - -mdeTable
-
=> not exists || sub{}($self, table name) -> C<-table> changed
(
Database Description
) Table factory, called if datafile description is not found within-table
. May add datafile metadata to-table
and create datafile if needed. See also-mdlTable
. - -mdlTable
-
=> not exists || sub{}($self) -> table list
(
Database Description
) List of datafiles within database. Some datafiles may not be described initially within-table
, but may be listed using-mdlTable
forrecReindex
. See also-mdeTable
. -
=> not exists || [[form name => form label],...]
(
User Interface
) User Interface forms list. Default will be generated from-form
or-table
. - -new
-
=> not exists || boolean
(
Data Record Special fields
) New record sign, stamped inrecNew
, considered inrecForm
. - -null
-
=> null value
(
User Interface
-Field Description
,Form Description
,Table Description
)Field value to be converted to undef.
- -optrec
-
=> not exists || boolean
(
Table Description
)Optional records switch. To allow
recRead
orrecUpd
records not really present in the database.-optrec
may be used asrecUpd
keyword also. - -output
-
=> not exists || sub{}($self, arguments to be printed out)
(
SubObjects
) Output sub{} to be used instead of 'print' byoutput
calls - -path
-
=> "$ENV{DOCUMENT_ROOT}/dbix-web" (see source code for more details)
(
File Store
) Path to File Store. Subdirectories inside File Store (seepthForm
): 'var' - variables file 'var.pl' (seevarLoad
,varStore
), 'uagroup' and 'ualist' files ($^O eq 'MSWin32',w32agf
); 'log' - log files (seelogRec
); 'tmp' - temporary files; 'dbm' - DB_File data files; 'rfa' - attached to records files. See also-url
,-urf
. - -pdta
-
=> not exists || {}
(
User Interface
) User data input parsed, local inside seecgiRun
, parsed bycgiParse
- -pcmd
-
=> not exists || {}
(
User Interface
) User command input / output, local insidecgiRun
, parsed bycgiParse
- -pout
-
=> not exists || {}
(
User Interface
) User data output, local insidecgiRun
, filled bycgiRun
orcgiAction
- -qfetch
-
=> not exists || sub{}(self, cursor, [borders]) -> success
(
Table/Form Description
-User Interface
) Sub{} to fetch and display next data row bycgiList
. Default is formed using-qfilter
,-qhref
,-qhrcol
,-limit
- -qfilter
-
=> not exists || sub{}(self, 'form name', {metadata}, {command}, {record}) -> success
(
Table/Form Description
-User Interface
) Sub{} to filter to user data records bycgiList
. Record may be changed during filtering. - -qhrcol
-
=> not exists || 0...
(
Table/Form Description
-User Interface
) Last column number to display-qhref
hyperlink incgiList
. Default is 0 - the first column. - -qhref
-
=> not exists || {hyperlink spec} || sub{}(self, {record})
(
Table/Form Description
-User Interface
) Specification of hyperlinks (URLs) to be displayed in each data row listed to user bycgiList
. Keywords are: '-cmd' => not exists || 'command' || sub{}(self, {record}) - command to be specified in the URL, default isrecRead
; '-key' => not exists || ['field name',..., ['field name'=>number],...] || sub{}(self, {record}) --key
specification of record to be opened, default is obtained from table/form description; '-urm' =>-urm
specification, alike '-key' above; '-form' => not exists || 'form name' || sub{}(self, {record}) - constant name of the form to be opened via URL, default is current table/form name; '-formfld' => not exists || 'field name' - field name to store form name to open via URL. - -query
-
=> not exists || {'recSel' and 'cgiQuery' arguments}
(
Table/Form Description
-User Interface
) Default specification of data records to be retrieved bycgiQuery
/recSel
and listed for user bycgiList
. Additional torecSel
clauses or options may be used:-data
and-display
arrays of field names or-field
- forcgiQuery
andcgiList
instead of-field
-flg
values from-table
or-form
.-frmLso
value, array or sub - incgiQuery
as default-frmLso
selection(s) before-query
->{-urole
}.-qkey
and-qwhere
values or subs - asrecQBF
defaults, because all-query
clauses may be overwritten viarecQBF
except-key
and-where
catenations.Consider also separate from
-query
Table/Form Description
slots-qhref
,-qhrcol
,-qfetch
,-qfilter
forcgiList
specification;-frmLso
and-frmLsc
forcgiQuery
specifications. - -rac
-
=> 1 || boolean
(
Database Description
) Record level Access Control switch - -racAdmRdr
-
=> 'Administrators,root'
(
Database Description
) Users, can read any record. Format of this value is alike containing list of user names string field. See alsouadmrdr
,-racAdmWtr
. - -racAdmWtr
-
=> 'Administrators,root'
(
Database Description
) Users, can edit any record. Format of this value is alike containing list of user names string field. See alsouadmwtr
,-racAdmRdr
. - -racActor
-
=> not exists || ['field name',...]
(
Database Description
,Table/Form Description
-Record level Access Control
,Templates
) Field(s) to store names of user(s) to be considered as actors of record. Used for-urole
clause ofrecSel
. Default is about-rvcUpdBy
. - -racPrincipal
-
=> not exists || ['field name',...]
(
Database Description
,Table/Form Description
-Record level Access Control
,Templates
) Field(s) to store names of user(s) to be considered as principals of record. Used for-urole
clause ofrecSel
. Default is about-rvcInsBy
. - -racReader
-
=> not exists || [field names]
(
Database Description
,Table Description
) Readers of record - fieldnames with usernames. - -racUser
-
=> not exists || ['field name',...]
(
Database Description
,Table/Form Description
-Record level Access Control
,Templates
) Field(s) to store names of user(s) to be considered as users of record. Used for-urole
clause ofrecSel
. Default is about-racPrincipal
. - -racWriter
-
=> not exists || [field names]
(
Database Description
,Table Description
) Writers of record - fieldnames with usernames. - -rfa
-
=> 1 || boolean
(
Database Description
,Table/Form Description
) Record File Attachments switch - -rfdName
-
=> not exists || sub{}($self, key field name => field value,...)
(in database or table descriptions) Formula to convert record's key into directory name. Default behaviour exists, see
rfdName
source code - -ridRef
-
=> not exists || [field name,...]
(
Database Description
,Table/Form Description
-Record ID References
) Fields may contain references to another records. Scalar reference may be in form 'record id' or 'table//id'. Embedded into text references are considered as '_key=table//id' or '_key=id%3Dtable//id' URL parts. See alsotvmReferences
,tfvReferences
. - -recChg0R
-
=> not exists || sub{}($self, {command}, new {field => value}, ? prev {field => value})
(
Database Description
,Table Description
,Form Description
; all executed) Record changing trigger before each row. Executed inrecIns
andrecUpd
before-recIns0R
and-recUpd0R
. May be used to provide absolutely computed values when record storing. See also-recEdt0R
. - -recDel
-
=> not exists || 'form name' || sub{}($self, 'name', {metadata}, $s->{-pcmd}, $s->{-pdta}) -> $s->{-pout}
(
Table/Form Description
-User Interface
)recDel
operation UI implementation - -recDel0C
- -recDel1C
-
=> not exists || sub{}($self, {command}, ?)
- -recDel0R
-
=> not exists || sub{}($self, {command}, ?, prev {field => value})
(
Database Description
,Table Description
,Form Description
; all executed)recDel
triggers before command ('0C'), before each row ('0R'), after command ('1C'). When record versioning, update triggers will be executed too, within. - -recEdt0A
- -recEdt1A
-
=> not exists || sub{}($self, {UI command}, data {field => value})
(
User Interface
:Database Description
,Table Description
,Form Description
- all executed)Record editing triggers before ('0A') and after ('1A') record data actions. Called by
User Interface
.-recEdt0A
called after-recTrim0A
,recNew
,recRead
(in edit mode), and before any ofrecForm
,recIns
,recUpd
,recDel
.-recEdt1A
called afterrecIns
,recUpd
.May be used to provide interactively computed values. See also
-recChg0R
;-recForm0A
,-recForm0C
,-recForm1C
,-recForm1A
. - -recEdt0R
-
=> not exists || sub{}($self, {command}, new {field => value}, ? prev {field => value})
(
Database Description
,Table Description
,Form Description
; all executed) Record editing trigger before each row. Executed after-recForm0R
and before-recChg0R
. May be used to translate values or provide absolutely computed values during record editing or storing. See also-recChg0R
. - -recForm
-
=> not exists || 'form name' || sub{}($self, 'name', {metadata}, $s->{-pcmd}, $s->{-pdta}) -> $s->{-pout}
(
Table/Form Description
-User Interface
)recForm
operation UI implementation. Used also forrecNew
,recRead
,recDel
,recQBF
operation. See also-subst
substitution for all operations and-recXXX
for particular substitutions. - -recForm0A
-
=> not exists || sub{}($self, {UI command}, source {field => value})
- -recForm1A
-
=> not exists || sub{}($self, {UI command}, result {field => value})
(
User Interface
:Database Description
,Table Description
,Form Description
- all executed)Record display triggers starting ('0A') or ending ('1A') any record edit or display action, except
recDel
ending andrecQBF
. Called byUser Interface
,-recForm0A
after-recTrim0A
but before-recChg0A
,-recForm1A
after-recChg1A
.May be used to provide computed for display values. See also
-recChg0A
,-recChg0R
,-recChg1A
;-recForm0C
,-recForm0R
,-recForm1C
. - -recForm0C
-
=> not exists || sub{}($self, {command}, source {field => value})
- -recForm0R
-
=> not exists || sub{}($self, {command}, new {field => value}, database {field => value})
- -recForm1C
-
=> not exists || sub{}($self, {command}, result {field => value})
(
Database Description
,Table Description
,Form Description
; all executed)recForm
triggers before command ('0C'), row ('0R'), after command ('1C').-recForm0C
is executed starting any record data manipulation, before-recNew0C
,-recIns0C
,-recUpd0C
,-recDel0C
,-recRead0C
.-recForm0R
is executed when database record read, before-recEdt0R
,-recChg0R
,-recRead0R
,-recForm0C
.-recForm1C
is executed ending any single-record data operation alikerecNew
,recForm
,recIns
,recUpd
,recRead
; may be used to provide values for display only fields. - -recIndex0R
-
=> not exists || sub{}($self, {command}, new {field => value}, old {field => value})
(
Table Description
, in table description only) Indexing trigger, may be used instead of-ixcnd
and-ixrec
. New values hash will be undefined inrecDel
. Old values hash will be undefined inrecIns
. - -recIns
-
=> not exists || 'form name' || sub{}($self, 'name', {metadata}, $s->{-pcmd}, $s->{-pdta}) -> $s->{-pout}
(
Table/Form Description
-User Interface
)recIns
operation UI implementation - -recIns0C
- -recIns0R
-
=> not exists || sub{}($self, {command}, source {field => value})
- -recIns1R
- -recIns1C
-
=> not exists || sub{}($self, {command}, result {field => value})
(
Database Description
,Table Description
,Form Description
; all executed)recIns
triggers before command ('0C'), before row ('0R'), after row ('1R'), after command ('1C'). See also-recInsID
. - -recInsID
-
=> not exists || sub{}($self, {command}, data {field => value})
(
Database Description
,Table Description
; nearest executed)recIns
row ID generation trigger. Default operation exists inDatabase Description
.-recInsID
is executed after-recIns0R
. - -recList
-
=> not exists || 'form name' || sub{}($self, 'name', {metadata}, $s->{-pcmd}, $s->{-pdta}) -> $s->{-pout}
(
Table/Form Description
-User Interface
)recList
operation UI implementation - -recNew
-
=> not exists || 'form name' || sub{}($self, 'name', {metadata}, $s->{-pcmd}, $s->{-pdta}) -> $s->{-pout}
(
Table/Form Description
-User Interface
)recNew
operation UI implementation - -recNew0C
-
=> not exists || sub{}($self, {command}, source {field => value}, sample {field => value})
- -recNew0R
-
=> not exists || sub{}($self, {command}, source {field => value})
- -recNew1C
-
=> not exists || sub{}($self, {command}, new {field => value})
(
Database Description
,Table Description
,Form Description
; all executed)recNew
triggers before ('0') and after command ('1C'). If key value available, a sample record will be fetched and provided to-recNew0C
trigger to add some field values from sample record. - -recQBF
-
=> not exists || 'form name' || sub{}($self, 'name', {metadata}, $s->{-pcmd}, $s->{-pdta}) -> $s->{-pout}
(
Table/Form Description
-User Interface
)recQBF
operation UI implementation used incgiRun
. See also-subst
substitution for all operations and-recXXX
for particular substitutions. - -recQBFl
-
=> not exists || table or form name
(
Table/Form Description
-User Interface
) Substitutes another object name to processrecList
request fromrecQBF
screen incgiRun
. Distinguish from-recList
. See also-recXXX
,recForm
,-subst
substitutions. - -recRead
-
=> not exists || 'form name' || sub{}($self, 'name', {metadata}, $s->{-pcmd}, $s->{-pdta}) -> $s->{-pout} || {'recRead' args}
(
Table/Form Description
-User Interface
)recRead
operation UI implementation. Distinguish hash ref form, will be executed incgiRun
after any single-recordUser Interface
operation, from-recForm1C
trigger insideDatabase Operation
. - -recRead0C
-
=> not exists || sub{}($self, {command}, ?)
- -recRead0R
- -recRead1R
- -recRead1C
-
=> not exists || sub{}($self, {command}, data {field => value})
(
Database Description
,Table Description
,Form Description
; all executed)recRead
triggers before ('0') and after ('1') command. - -recSel0C
-
=> not exists || sub{}($self, {command})
(
Database Description
,Table Description
,Form Description
; all executed)recSel
before command trigger. - -recTrim0A
-
=> not exists || sub{}($self, {command}, data {field => value})
(
User Interface
:Database Description
,Table Description
,Form Description
- all executed)The first trigger executed before ('0A') record data action by
User Interface
to trim starting and ending spaces from field values before-recChg0A
. - -recUpd
-
=> not exists || 'form name' || sub{}($self, 'name', {metadata}, $s->{-pcmd}, $s->{-pdta}) -> $s->{-pout}
(
Table/Form Description
-User Interface
)recUpd
operation UI implementation - -recUpd0C
-
=> not exists || sub{}($self, {command}, source {field => value})
- -recUpd0R
-
=> not exists || sub{}($self, {command}, new {field => value}, prev {field => value})
- -recUpd1C
-
=> not exists || sub{}($self, {command}, result {field => value})
(
Database Description
,Table Description
,Form Description
; all executed)recUpd
triggers before command ('0C'), before each row ('0R'), after command ('1C'). - -recXXX
-
=> not exists || 'form name' || sub{}($self, 'name', {metadata}, $s->{-pcmd}, $s->{-pdta}) -> $s->{-pout} || {'recXXX' args}
(
Table/Form Description
-User Interface
)-recNew
,-recForm
,-recIns
,-recUpd
,-recDel
,-recRead
,-recList
,-recQBF
,-recQBFl
operation UI implementation. See also-subst
substitution for all operations and-recForm
for several. - -rvcActPtr
-
=> not exists || 'field name'
(
Database Description
,Table/Form Description
-Record level Version Control
) Field to store ID of the actual version of this record. If this field is empty, the record is the last version, actual. If this field is not empty, the record is an old version or is checked-out. - -rvcCkoState
-
=> not exists || [field name => state]
(
Database Description
,Table/Form Description
-Record level Version Control
) Check-out state of record: Field name and state value. If record is check out, old version will not be created at record update. And file attachments may be edited. Check-out record may be checked-in-rvcActPtr
record. Distinguish from-rvcChgState
, which could not be checked-in. - -rvcDelState
-
=> not exists || [field name => state]
(
Database Description
,Table/Form Description
-Record level Version Control
) Deleted state of record: Field name and state value. - -rvcChgState
-
=> not exists || [field name => state,...]
(
Database Description
,Table/Form Description
-Record level Version Control
) Field name to store record's state and list of the change state values. When record is in change state, old version will not be created at record update. And file attachments may be edited. Distinguish from-rvcCkoState
, which may be checked-in. - -rvcInsBy
-
=> not exists || 'field name'
(
Database Description
,Table/Form Description
-Record level Version Control
) Field to store name of user record inserted. - -rvcInsWhen
-
=> not exists || 'field name'
(
Database Description
,Table/Form Description
-Record level Version Control
) Field for time record inserted when - -rvcUpdBy
-
=> not exists || 'field name'
(
Database Description
,Table/Form Description
-Record level Version Control
) Field to store name of user record updated. - -rvcUpdWhen
-
=> not exists || 'field name'
(
Database Description
,Table/Form Description
-Record level Version Control
) Field for time record updated when - -serial
-
=> 1 || 0 || 2 || 3
(
Database Options
) Serialisation level of database operation: 0 - none, 1 - updates, 2 - reads and updates, 3 - everything (exclusive). - -setup
-
=> not exists || boolean
(
Creation and Setup
) Allows automaticsetup
whenmain::DATA
last modify time latervarStore
d - -smtp
-
=> SMTP object, on demand
- -smtphost
-
=> SMTP server name or address
- -smtpdomain
-
=> default mail domain name
(
SubObjects
) SMTP mailing parameters forsmtp
andsmtpSend
.-smtphost
required, otherwisesmtpSend
ignored. - -subst
-
=> not exists || table or form name
(
Table/Form Description
-User Interface
) Substitutes another object name to process request incgiRun
. See also-recXXX
and-recForm
substitutions for particular operations. - -table
-
=> {table name=>{table description}} => form's basic table name
(
Database Description
) Data records files (database tables) descriptions.(
Table/Form Description
) Name of the basic table of the form. - -title
-
=> ''
(
Database Description
) Application's title - -tn
-
=> {template naming set}
(
Templates
) Template or default naming set, also available viatn
. This is an only place for hard coded default special names. See source code for default naming. - -udflt
-
=> not exists || sub{}()
(
User Identification
) User domains filter sub{} to be evaluated against each domain name in $_. Considered inw32agf
. See also-unflt
,-ugflt
. - -ugadd
-
=> not exists || [group names] || {group name => alias,...} || sub{$_}() -> ...
(
User Identification
) Additional user groups names. Research sub{} will be evaluated against user groups names in $_. Considered inugroups
anduglist
default code. - -ugflt
-
=> not exists || sub{$_}()
(
User Identification
) User groups filter sub{} to be evaluated against each group name in $_. Considered inugroups
anduglist
default code. See also-unflt
. - -ugroups
-
=> not exists || sub{} || [group names]
(
User Identification
) User groups sub{} or [] value. Seeugroups
. - -unames
-
=> not exists || sub{} || [user name variants]
(
User Identification
) User name variants sub{} or [] value. Seeunames
. - -unflt
-
=> not exists || sub{$_}()
(
User Identification
) User names filter sub{} to be evaluated against each name in $_. Considered inuglist
default code. See also-ugflt
. - -urf
-
=> "file://{-path}/dbix-web"
(
File Store
) Filesystem URL to File Store, see also-path
,-url
- -url
-
=> '/dbix-web'
(
File Store
) URL to File Store, see also-path
,-urf
- -urm
-
=> [field name,...]
(
Table Description
) Table's fields to be used for "unread mark" part of URLs produced byUser Interface
cgiList
;-wkey
used if not defined. - -user
-
=> sub{$ENV{REMOTE_USER}||$ENV{USERNAME}||$GUEST}
(
User Identification
) User name sub{} or value - -userln
-
=> true || false
(
User Identification
) Short local usernames switch - -usernt
-
=> false || true
(
User Identification
) Windows NT style usernames ('domain\\username') switch - -var
-
=> not exists || {variable name => variable value}
(
Persistent Variables
) Variables hash ref, handled viavarLoad
andvarStore
calls. - -w32IISdpsn
-
=> 1 | 2, not exists | 0
User Identification
. Deimpersonation place for Microsoft IIS authenticated user session, usingw32IISdpsn
.0 - never 1 - when required, i.e. for file store operation 2 - always and early
- -warn
-
=> \&carp, see source code
(
Error Processing
) Warning sub{}: warn / carp / cluck; using &{$s->{-warn}}('warning') inside. See also-die
- -wkey
-
=> not exists || [field name,...]
(
Table/Form Description
) Table's fields used for optimistic record locking during edit operation (User Interface
recUpd
orrecDel
).-key
used if not defined.
METHODS
- Methods
-
See
Slots and Methods
- ccbNew (condition string) -> new condition code block object
-
SubObjects
. Creates and returns new condition code block object (DBIx::Web::ccbHandle
). - cgi () -> CGI object
-
SubObjects
. Returns CGI object, creates it if not exists in-cgi
. - cgiDDLB ({
-field
metadata}) -
User Interface
. Performs drop-down list box viaoutput
. Uses-ddlb
,-ddlbtgt
,-ddlbmult
. Used bycgiForm
. -
User Interface
. OutputscgiRun
screen footer with operation and debug messages viaoutput
. Uses-fetched
,-limited
,-affected
,-logm
,-debug
. - cgiForm (table / form name, {table / form metadata}, ? {command}||
-pcmd
, ? {data}||-pout
) -
User Interface
. Outputs record's form viaoutput
, used bycgiRun
for record and QBF operations (see-recXXX
). SeeTable/Form Description
for form specifications and-field
for formatting considerations. SeehtmlField
for independent widgets. UsetfdRFD
or-inp
for file attachments. UsecgiList
and-field
for embedded views. - cgiList (?'-!h', table / form name, {table / form metadata}, ? {command} ||
-pcmd
, ? cursor ||{query} ||[data rows] ||sub{fetch row} ||-query
, ? [row and column delimiters] || '<select...' || row delimiter || [default table]) -
User Interface
. Lists data rows viaoutput
, used bycgiRun
forcgiQuery
results. '!h' option turns off table header. SeeTable/Form Description
,-query
,recSel
for query and list specifications, additional query/list clauses are-field
to use instead of-data
, and-display
to use instead of-flg
values of-field
. - cgiParse ()
-
User Interface
. Parses CGI input parameters: command, parameters, keywords into-pcmd
; data into-pdta
. Used internally bycgiRun
. - cgiQuery (table / form name, {table / form metadata}, ? {command}||
-pcmd
) -> cursor -
User Interface
. Forms and starts query usingrecSel
. Returns cursor. Used bycgiRun
, withcgiList
follows. SeeTable/Form Description
,-query
,cgiList
andrecSel
for query and list specifications. - cgiRun () -> success
-
User Interface
. CGI server response implementation. Sets error handlers. Starts and ends session withstart
andend
. Accepts and parses input parameters withcgiParse
into-pcmd
and-pdta
. Logins if needed (cgi redirection to-login
). Determines required action, form and table using-cgcXXX
,-subst
,-recXXX
,-table
. If external implementation found, invokes it and returns. Invokes action required (stores result in-pout
):Database Operation
orcgiQuery
or embedded implementation. Reassigns-form
if found inside-pout
. Determines external presentation implementation via-cgvXXX
and invokes it. Or outputs http and html headers (htmlStart
), hidden fields (htmlHidden
), menu bar (htmlMenu
), record's form (cgiForm
) or list of records (cgiList
), screen footer (cgiFooter
), form and html footers.Also implements '-reindex' (run
recReindex
(1)) and '-setup' (runsetup
) service command line options, see alsoCommand Line
. - class () -> class name
-
Creation and Setup
. Returns class name of the object. - cptran (fromCP, toCP, string) -> translated string
-
Misc Data methods
. Translates strings between cyrillic codepages. - datastr (stringified data structure) -> data structure
-
Misc Data methods
. Restores data structure from stringified format ofstrdata
result. - dbi () -> DBI connection object
-
SubObjects
. Returns DBI connection object, creates it if not exists using-dbiarg
and-autocommit
- dbiLikesc (text) -> escaped
-
Misc Data methods
. Escapes value to use within SQL LIKE '' ESCAPE '\'. - dbiQuote (text) -> escaped
-
Misc Data methods
. Quotes value to use within SQL statements. - dbmNew (file name) -> new isam data file object
- dbmNew (-option=>value,...) -> new isam data file object
-
SubObjects
. Creates and returns new isam data file object (DBIx::Web::dbmHandle
). - dbmTable (table name) -> new isam datafile object
-
SubObjects
. Returns isam data file object with table name given, creates and opens it if needed usingdbmNew
(-name=>pthForm
('dbm', table name)). - die (message string) -> failure exception
-
Error Processing
. Raises failure exception like CORE::die or croak. Executes &{$_[0]->{-die}}(@_[1..$#_]). See also-die
,-warn
,warn
- dsdClone (data structure) -> copy of data structure
-
Misc Data methods
. Copies data structure recursively. - dsdMk (data structure) -> stringified data structure
-
Misc Data methods
. Stringifies any data structure with Data::Dumper UsedsdParse
to restore data structure from stringified form. Alikestrdata
. - dsdParse (stringified data structure) -> data structure
-
Misc Data methods
. Restores data structure from stringified format ofdsdMk
result. Uses Data::Dumper. Alikedatastr
. - dwnext (string, ? min length) -> next alphanumeric string value
-
Misc Data methods
. Returns the next value of ([0-9]|[a-z]) string left padded to min length. For record IDs generation. - end () -> self object
-
Creation and Setup
. Ends (commits) and cleans operation session or transactionstart
ed. - grep1 (list) -> first non-empty value
- grep1 (sub{}(), list) -> first non-empty result
-
Misc Data methods
. Returns the first non-empty value or true evaluation result. Alike grep, but differs. - hfNew () -> new file handle object
- hfNew (?mode, file name) -> new file handle object
-
SubObjects
. Creates and returns new file handle object (DBIx::Web::FileHandle
). File will be opened if file name given. - htlsTag (name, attribute=>value,..., ''=>[content]) -> list
- htlsTag (name, attribute=>value,..., '0') -> <name atrr="val"...>
- htlsTag (name, attribute=>value,...) -> <name atrr="val"... />
- htlsTag ({-tag=>name, attribute=>value,...})
- htlsTag ([[name,...],...{-tag=>name,...}],...)
- htlsTag (..., "\n")
-
Misc Data methods
. Converts parameters given to the list to print HTML tag with 'name', 'attributes' and optional 'content' tags inside. Leading '-' signs in attribute names are ignored. Values are escaped. Newlines string may be the last parameter to format output. The list structure will not be documented. See alsoxmlsTag
,outhtm
- htmlEnd () -> http and html final string
-
User Interface
. Generates http and html final string tooutput
bycgiRun
- htmlEscape (strings) -> escaped
- htmlUnescape (string) -> unecaped
-
Misc Data methods
. Escapes and unescapes to and from HTML text. See alsourlEscape
. - htmlField (name, title, {
-inp
metadata}, value) -> html field string -
User Interface
. Generates HTML field, used bycgiForm
. Empty name means readonly. See-inp
for metadata. -
User Interface
. Generates hidden fields HTML tooutput
bycgiRun
Uses-pcmd
. -
User Interface
. Generates menu bar HTML tooutput
bycgiRun
Uses-pcmd
,-pdta
,-pout
. - htmlStart () -> http and html headers string
-
User Interface
. Generates http and html headers using-httpheader
,-htmlstart
, start_multipart_form tooutput
bycgiRun
- initialize (-option=>value,...) -> initiated as DBIx::Web object
-
Creation and Setup
. Initiates new DBIx::Web object. Used internally, bynew
(). Seeinitialize
andset
sources for defaults. - ishtml (string) -> alike HTML?
-
Misc Data methods
. Looks string given like HTML code? - lng (index, 'string', ?additional values) -> user language specific string
- lnghash () -> {user language translation hash}
- lnghash (index, ['string',...]) -> {'string'=>'user language translation',...}
-
Locale
. Returns user language specific variant of string given, short (index=0) or long (index=1). See language translations in '$LNG' hash ref in the source code.Locale
. Returns user language specific variant of string given, short (index=0) or long (index=1). See language translations in '$LNG' hash ref in the source code. - logOpen () ->
-log
-
Logging
. Opens Log file. This doesstart
call. - logLock (lock level) -> success
-
Logging
. Locks Log file. This is not needed. - logRec (data list) -> success
-
Logging
. Add record to Log file. - max (number, number) -> maximum
-
Misc Data methods
. Maximum of two numbers given. - min (number, number) -> minimum
-
Misc Data methods
. Minimum of two numbers given. - new ('class', -option=>value,...) -> new DBIx::Web object
-
Creation and Setup
. Creates new DBIx::Web object. Callsinitialize
(-option=>value,...). - orarg (-X, argument,...) -> first succeeded argument
- orarg (sub{}(), argument,...) -> first succeeded argument
-
Misc Data methods
. The value of the first succeeded argument. Alikegrep1
, but differs. - osCmd (?opt, command, arguments) -> success
-
SubObjects
. Invokes operating system command given. Options: '-i'gnore return code, '-h'ide output. - output (strings list) -> success
- outhtm (HTML tag data structure) -> success
- outhtml (HTML tag data structure) -> success
- outxml (XML tag data structure) -> success
-
SubObjects
. Outputs data given via-output
sub{} call or print.htlsTag
orxmlsTag
called to stringify tag data structure. - psEval (? '-e', filename, ? base URL)
-
User Interface
. Evaluates perl script file usingpsParse
. 'e'mbeddable option prevents output of HTTP and HTML headers. Relative filename will be based on '-path
/psp/' with-url
as default base URL. SeePerl Script Pages
. - psParse (? '-e', perl script source string, ? base URL) -> perl source string
-
User Interface
. Converts HTML with embedded perl into perl source withoutput
calls. 'e'mbeddable html option prevents generation output of html headers. Perl code markers are: '<% perl formula %>', '<script> perl script </script>', '<script language=PerlScript|Perl runat=Server>'. '@_' considered to contain application object, options, filename, base URL, additional args. SeePerl Script Pages
. - pthCln (path) -> success
-
File Store
. Removes path if empty. Recourses bottom-up. Empty path may contain '.htaccess' files. - pthCp (source, target) -> success
-
File Store
. Copies source path to target using operating system copy command viaosCmd
. Options: '-d'irectory target hint, '-f'ile target hint, '-r'ecurse subdirectories, '-i'gnore errors. - pthGlob (path mask) -> entries paths list
-
File Store
. Lists directory's contents by mask. Full path names will be returned - pthGlobn (path mask) -> entries names list
-
File Store
. Lists directory's contents by mask. Relative names will be returned - pthForm (type, name,...) -> filesystem path string
-
File Store
. Forms filesystem path for 'tmp'||'log'||'var'||'dbm'||'rfa' type. Creates type directory if needed. - pthMk (path) -> success
-
File Store
. Creates directory if needed. Returns 1 if directory exists, 2 if directory was created. - pthRm (?opt, path) -> success
-
File Store
. Removes path if needed. Options: '-r'ecurse subdirectories, '-i'gnore errors. - recCommit () -> self
-
Database Operation
. Commits changes to database. Called fromend
. See alsorecRollback
- recData ({-keyword ||fieldname => value,...}) -> {fieldname=>value,...}
-
Database Operation
. Obtains data field names and values from record manipulation hash ref. See alsorecFields
,recValues
,recKey
- recDel (? -table => name, ? -form => name, ? -key => {original
recKey
}, ? -where => 'condition') -> successful {command} -
Database Operation
. Deletes record(s) into database, under '-key' or '-where' conditions. Returns command hash ref or the result ofrecUpd
. WhenRecord level Version Control
, operation will be passed torecUpd
, butrecDel
triggers (-recForm0C
,-recDel0C
,-recDel0R
,-recDel1C
) will be executed anyway. - recFields ({-keyword ||fieldname => value,...}) -> field names
-
Database Operation
. Lists field names from record manipulation hash ref. See alsorecValues
- recForm (? -table => name, ? -form => name, ? (-data => {fieldname => value,..}) || (fieldname => value,..), ? -key => {original
recKey
}) -> formed {field => value,...} -
Database Operation
. Recalculates record, new or existing in database. Original field values obtained viarecRead
(-table=>name, -key=>{originalrecKey
}) and added to new data given if not exists;-recForm0C
,-recForm0R
,-recForm1C
triggers executed. - recIndex (index table name, key {field=>value}, ? data {field=>value})
-
Materialised Views
. Update index entry with key given. Index entry will be deleted if undefined reference to hash of data values. Useful for-recIndex0R
trigger. - recIns (? -table => name, ? -form => name, ? (-data => {fieldname => value,..}) || (fieldname => value,..), ? -key => {prototype
recKey
}) -> successfully inserted {field => value,...} - recIns (...? -from =>
recSel
cursor) -> successful {data} -
Database Operation
. Inserts record(s) into database. Returns record successfully inserted or data hash ref. Given field values are used to initiate new record's hash ref;-recForm0C
and-recIns0C
triggers are executed;-rvcInsBy
-rvcUpdBy
,-rvcInsWhen
,-rvcUpdWhen
fields are filled. Data to be inserted may be given from prototype record viarecRead
(-table=>name, -key=>{originalrecKey
}), orrecSel
cursor. After all given values applied,-recForm0R
,-recEdt0R
, <-recChg0R>,-recIns0R
,-recInsID
triggers executed and record is inserted into database. At last, <-recIns1R> and-recForm1C
triggers are executed.See also
recNew
andrecForm
, but they are not required to prepare data to be inserted. - recKey (table name, {fieldname => value,...}) -> {keyfield => value,...}
-
Database Operation
. Obtains Key fields names and values from record's data hash ref using-key
. See alsorecData
,recWKey
- recLast (table name||command, data {field=>value,...}, lookup [field name,...],... target [field name,...] || sub{}(self, data) || undef) -> record {field=>value,...}
-
Database Operation
. Reads newest record from database according to field names described and record data given. Attempts including lookup arguments from last. Supplies target with values fetched, returns record fetched. Useful for fetching default field values. May be not implemented for non-sqlDatabase Engines
. - recList () ->
recSel
(@_) -
Database Operation
. Lists records from database. Passes all work torecSel
now, may be redesigned. - recNew (? -table => name, ? -form => name, ? (-data => {fieldname => value,..}) || (fieldname => value,..), ? -key => {prototype
recKey
}) -> successfully new {field => value,...} -
Database Operation
. Creates a new data record to be inserted into database. Given field values are used to initiate new record's hash ref;-recForm0C
and-recNew0C
triggers are executed;-rvcInsBy
-rvcUpdBy
,-rvcInsWhen
,-rvcUpdWhen
fields are filled. Prototype's field values may be obtained viarecRead
(-table=>name, -key=>{prototyperecKey
}), but are not used instead of-recNew0R
.-recForm0R
,-recEdt0R
,-recNew1C
,-recForm1C
triggers are executed at last. The following calls may berecForm
andrecIns
. - recQBF
-
Database Operation
-User Interface
. This is not method, onlyUser Interface
query condition command and screen behaviour, implemented withincgiRun
andcgiForm
- recRead (? -table => 'table name', ? -form => name ? -key => {field name=>value,...}, ? -where => 'condition', ? -optrec => false || true, ? -version => false || true ) -> successfully read {fieldname => value,...}
-
Database Operation
. Reads single record from database usingrecSel
, returns this record as a hash ref (with-file
,-editable
slots if applicable). Executes-recForm0C
,-recRead0C
,-recForm0R
,-recRead1C
,-recForm1C
triggers. - recReindex (clear?, ?index names) -> success
-
Materialised Views
. Reindexes database. List of selected indexes to rebuild may be provided. Indexes will be truncated before reindexing if 'clear'. - recRollback () -> self
-
Database Operation
. Rollbacks changes to database. Should be called from $SIG{__DIE__}, seeset
source for example. See alsorecCommit
. -
Database Operation
. Retrieves records from database. Cursor's slot-rec
with hash ref {field alias || name => value,...} is bound as field variables. Cursor's slot-rfr
contains array ref with references to values in-rec
in order of-data
list. At leastfetch
,fetchrow_arrayref
,fetchrow_hashref
,finish
,close
methods are supported by cursor. See also-recSel0C
,recList
,recRead
. - recUpd (? -table => name, ? -form => name, ? (-data => {fieldname => value,..}) || (fieldname => value,..), ? -key => {original
recKey
}, ? -where => 'condition', ? -optrec => false ||true) -> successfully updated {field => value,...} -
Database Operation
. Updates record(s) into database, under '-key' or '-where' conditions. With '-optrec', record will be inserted if not present. Returns record updated if one only, or data hash ref if zero or more then one record updated. See also-recForm0C
,-recUpd0C
,-recForm0R
,-recChg0R
,-recUpd0R
,-recUpd1C
,-recForm1C
triggers. - recValues ({-keyword ||fieldname => value,...}) -> field values
-
Database Operation
. Lists field values from record manipulation hash ref in corresponding torecFields
order - recWKey (table name, {fieldname => value,...}) -> {keyfield => value,...}
-
Database Operation
. AlikerecKey
, but using-wkey
and providing optimistic locking. - rfaRm ({rec data} ||(table name, {rec data}), attachment name || [list of attachments names])
-
Record File Attachments
. Removes file attachments listed (alikerfdGlobn
output). Record should be-editable
with-file
, which areData Record Special fields
provided byDatabase Operation
. - rfaUpload ({rec data} ||(table name, {rec data}), CGI filefield)
-
Record File Attachments
. Adds record's file attachment from CGI::upload. Record should be-editable
with-file
, which areData Record Special fields
provided byDatabase Operation
. - rfdEdmd (table name ||{command}, {rec data}) -> attachments edit allowed?
-
Record File Attachments
. Record's state (-rvcChgState
) permits editing of file attachments - rfdGlobn ({rec data} ||(table name, {rec data}), ?subdirectory,...) -> list of file attachments
-
Record File Attachments
. Returns list of record's file attachments names, relative torfdPath
. - rfdPath (-path ||-url ||-urf => ({rec data} ||(table name, {rec data})), ?subdirectory,...) -> path to file attachments
-
Record File Attachments
. Returns path to record's file attachments. This may be absolute filesystem path (-path), URL (-url), or filesystem URL (-urf).Database Operation
provides-file
, one ofData Record Special fields
, if file attachments present. - rfdRm ({rec data} ||(table name, {rec data})) -> path removed
-
Record File Attachments
. Removes record's file attachments directory and cleans the path bottom-up. Record should be-editable
with-file
, which areData Record Special fields
provided byDatabase Operation
. - set () -> (slot names of the object)
- set (-option) -> value of the option given
- set (-option=>value,...) -> self object
-
Creation and Setup
. Retrieves and sets values of theSLOTS
. $s->{-option} direct access may be used also, butset
smartly processes some options. - setup ()
-
Creation and Setup
. Reads and executes setup script frommain::DATA
file handle. See examples source for details. - smtp () -> SMTP connection object
- smtp (undef) -> close SMTP connection
-
SubObjects
. Returns Net::SMTP object, creates it if not exists in-smtp
. Uses-smtphost
. - smtpSend (-option => value,...) -> sent
-
SubObjects
. Sends SMTP mail message usingsmtp
connection and-smtpdomain
default mail domain name.-sender => mail name, default is '-from' or current user.
-from => alike '-sender', but used also to form message, default is '-sender' or current user.
-recipient => mail names string or array ref, default is '-to'.
-to => alike '-recipient', but used also to form message, optional.
-subject => subject of message, optional, may be obtained via '-pout' and '-pcmd'.
-data => message body, optional, may be obtained via '-pout'/'-pcmd', '-html' or '-text'.
-pout => data of record to be formed to '-data' using '-pcmd' and
cgiForm
.-pcmd => command options for '-pout' forming. I.e., within trigger, $_[0]->smtpSend(-to=>$_[2]->{mailto}, -pcmd=>$_[1], -pout=>$_[2])
-html => message body option.
-text => message body option.
- start (-option=>value,...) -> self object
-
Creation and Setup
. Starts operation session or transaction. Cleans previous session or transaction state. Usesset
to assign options.end
ends (commits) and cleans session or transactionstart
ed. - strdata (data structure) -> stringified
-
Misc Data methods
. Stringifies any data structure. Specialstrdatah
form is for optimization needs. Usedatastr
to restore data structure from string. - strdatah (key=>value,...) -> stringified hash
-
Misc Data methods
. Stringifies hash, seestrdata
also. - strpad (string, ?pad char, ?min length) -> left padded string
-
Misc Data methods
. Default pad char is '0', default min length is $NLEN, string will not be trimmed. - strquot (value) -> quoted and escaped
-
Misc Data methods
. Escapes and quotes value given if needed. - strtime (?mask, time ||localtime ||gmtime) -> stringified
-
Misc Data methods
. Stringifies time value by mask. Default mask is 'yyyy-mm-dd hh:mm:ss' (ISO). POSIX::strftime uses different mask agreement. See alsotimestr
. - timeadd (seconds, add seconds, ?minutes, ?hours, ?days, ?months, ?years) -> seconds incremented
-
Misc Data methods
.Add values given to time given. Calculation via POSIX::mktime.
- timestr (?mask, stringified time) -> seconds
-
Misc Data methods
. Converts stringified withstrtime
time string to seconds form with POSIX::mktime - tfdRFD (-option=>value,...) -> {record file directory field template}
-
User Interface
. Template Field Description for Record File Directory field. May be used as-field
description forRecord File Attachments
. See source code. -
Templates
. Template Field Condition for-hide
/-hidel
details absent, to be used withtfoShow
. See source code. -
Templates
. Template Field Button for '-lblhtml' to Show all details absent. See source code. See alsotfoHide
- tfsAll () -> (all generally used fields templates)
-
Templates
. Template Fields Set for All generally used fields, may be added to the end of-field
form layout. See source code. - tfvReferences (?[fields definitions] ||undef, -option=>value,...) -> sub{records references embedded view template}
-
Templates
. Template for Field with embedded View of References to records; embedded 'references' view default definition. See source code. See alsotvmReferences
- tfvVersions (?[fields definitions] ||undef, -option=>value,...) -> sub{records versions embedded view template}
-
Templates
. Template for Field with embedded View of Versions of records; embedded 'versions' view default definition. See source code. See alsotvmVersions
- tn () -> {template naming set}
- tn (metaname) -> default name
-
Templates
. Template or default naming (-tn
) interface. - ttoRVC (-option=>value,...) -> (record version control table template options)
-
Templates
. Template Table Options (slots and values) for Record Version Control. See source code. - ttsAll () -> (all generally used materialized views templates)
-
Default Data Definitions
. Template Tables Set of All generally used materialized views, may be added to the end of-table
list. See source code. - tvdFTQuery (-option=>value,...) -> (full-text search page view template)
-
Templates
. Template View Definition for Full-Text Query page. See inplementation for limitations and details. - tvdIndex (-option=>value,...) -> (Index page view template)
-
Templates
. Template View Definition for Index page, 'index' view default definition, enumerating all-menuchs
entries. - tvmHistory (?[fields definitions] ||undef, -option=>value,...) -> (database history materialized view template)
-
Templates
. Template for Materialized View of database History (or news); 'history' materialized view default definition. See source code. - tvmReferences (?[fields definitions] ||undef, -option=>value,...) -> (records references materialized view template)
-
Templates
. Template for Materialized View of References to records, 'references' materialized view default definition. See source code. - tvmVersions (?[fields definitions] ||undef, -option=>value,...) -> (records versions materialized view template)
-
Templates
. Template for Materialized View of Versions of records, 'versions' materialized view default definition. See source code. - uadmin () ->
uadmwtr
-
User Identification
. Alias ofuadmwtr
- uadmrdr () -> can current user read almost all records?
-
User Identification
. Returns true if current user is a member of-racAdmRdr
, justugmember
(-racAdmRdr
). - uadmwtr () -> can current user edit any record?
-
User Identification
. Returns true if current user is a member of-racAdmWtr
, justugmember
(-racAdmWtr
). - udisp (username) -> display name
-
User Identification
. Returns display name for user or group name given. Returns name given if cannot translate. - uglist (? '-ug<>', ? filter username || groupname || sub{}(self,name), ? container [] || {}) -> [user and group names]
-
User Identification
. Returns user ('-u') and group ('-g') names using filter given in array ([]) or hash ({}) ref; '<>' option forces comment notation for hash ref. Default is both ('-ug') in array ref ([]). Uses-AuthUserFile
and-AuthGroupFile
, orw32agf
. - ugmember (group name strings or array refs) -> is current user a member?
-
User Identification
. Returns true if current user is a member of one of the groups given. Argument may be a group name, a string with the list of group names, a reference to array of variants above. - ugnames (?user) -> [user and group names]
-
User Identification
. Returns reference to array with names of given or current user (unames
) and groups given or current user belongs to (ugroups
). - ugrexp () -> sub{}('user,user,...') matching
ugnames
-
User Identification
. Returns sub{} to match string with user names list againstugnames
- ugroups (?user) -> [user group names]
-
User Identification
. Returns reference to array with names of groups given or current user belongs to. Uses-ugroups
sub{} or value. Default is using-AuthGroupFile
orw32agf
generated files. - uguest () -> is current user a guest?
-
User Identification
. Returns true if current user is not logged in. - unames () -> [current user name variants]
-
User Identification
. Returns reference to array with variants of current user name. Uses-unames
sub{} or value. Default is [user
] withuserln
and 'domain\\user' form added if applicable and not met. - urlAuth () -> login URL
-
User Interface
. URL to self script authenticated. - urlCat (url, name=>value,...) -> escaped URL
- urlEscape (strings) -> escaped
- urlUnescape (string) -> unecaped
-
Misc Data methods
. Escapes and unescapes to and from URL format. See alsohtmlEscape
. - urlOpt (option => value,...) -> invokation URL
-
User Interface
. Self URL using-pcmd
values with options given added / replaced. - user () -> current user name
-
User Identification
. Returns name of the current user. Uses-user
sub{} or value. Translates 'domain\\user' form to 'user@domain'. - userln () -> current user local name
-
User Identification
. Returns local name of the current user, oruser
. User name domain component (after '@') is discarded if it equals to host name domain component (Windows or DNS). - varFile () -> variables store filename
-
Persistent Variables
. Returns file name to store values of variables. - varLoad (?lock) -> self object
-
Persistent Variables
. Loads variables into-var
. Default lock level is LOCK_SH. File will be locked untilend
call. - varLock (?lock) -> success
-
Persistent Variables
. Locks variables file. Default is LOCK_EX. File will be locked untilend
call. - varStore () -> self
-
Persistent Variables
. Stores-var
into variables file. LOCK_EX is used. File will be locked untilend
call. - w32adhi () -> Active Directory Host Info object
-
User Identification
. Returns 'ADSystemInfo' OLE object. - w32agf () -> success
-
User Identification
. Creates or periodically updates user group files using Microsoft Windows system catalogue.pthForm
('var','ualist') file is foruglist
.pthForm
('var','uagroup') file may be used as Apache's 'AuthGroupFile'.Using
w32agf
(),-AuthGroupFile
and-AuthUserFile
should not be set. This slots should be set only to externally controlled files. I.e. to files produced via "$0 -call w32agf 0 q"Command Line
. - w32IISdpsn () -> success
-
User Identification
. Deimpersonation of authenticated user session on Microsoft IIS. See-w32IISdpsn
. See source for details and warnings. - warn (message string) -> warning raise
-
Error Processing
. Raises warning like CORE::warn or carp. Executes &{$_[0]->{-warn}}(@_[1..$#_]). See also-die
,-warn
,die
. - xmlEscape (strings) -> escaped
- xmlAttrEscape (strings) -> escaped as
xmlEscape
- xmlTagEscape (strings) -> escaped
- xmlUnescape (string) -> unecaped
-
Misc Data methods
. Escapes and unescapes to and from XML text. See alsohtmlEscape
. - xmlsTag (name, attribute=>value,..., ''=>[content]) -> list
- xmlsTag (name, attribute=>value,..., '0') -> <name atrr="val"...>
- xmlsTag (name, attribute=>value,...) -> <name atrr="val"... />
- xmlsTag ({-tag=>name, attribute=>value,...})
- xmlsTag ([[name,...],...{-tag=>name,...}],...)
- xmlsTag (..., "\n")
-
Misc Data methods
. Converts parameters given to the list to print XML tag with 'name', 'attributes' and optional 'content' tags inside. Leading '-' signs in attribute names are ignored. Values are escaped. Newlines string may be the last parameter to format output. The list structure will not be documented. See alsohtlsTag
,outxml
Database Engines
- Database Engines
-
Logical database functionality is implemented in
recXXX
methods. Corresponding 'Physical' database interfaces are implemented indbiXXX
methods. See source for details. - DBI engine
-
-dbd
eq 'dbi'. See DBI,-dbi
,-dbiarg
,dbi
. - DB_File engine
-
-dbd
eq 'dbm'. See DB_File,dbmTable
. - XML record files engine
-
-dbd
eq 'xmr'. May be in future? - Inbox items engine
-
May be in future?
Triggers Interface
- Triggers Interface
-
Triggers may be defined (in execution order) at database level, table level, form level. Common trigger sub{} arguments are
($self, {command}, {new field => value}, {prev field => value})
Previous values are available only in 'by-row' triggers for existed records. Special additional command attributes may be:
-cmd => command or method name,
-cmdf => form metadata,
-cmdt => table metadata;
and from
User Interface
:-form => form name,
-ui => user interactive sign (
-pcmd
,-pdta
,-pout
may be looked),-edit => editing sign.
Perl Script Pages
- Perl Script Pages
-
This is HTML (may be XML?) files with embedded Perl code. This may be CGI scripts with HTML following '__END__'. There is simplest and shortest implementation.
psParse
method translates perl script string into perl source; '@_' will contain application object, options, filename, base URL, additional args.psEval
method executes perl script file by parsing, compiling into sub{}, evaluating.
Command Line
- Command Line
-
CGI scripts may provide service operations on database from shell command line, i.e.
web.cgi -call method arguments web.cgi -reindex web.cgi -setup
Several command line options mentioned are implemented within
cgiRun
method, another options may be implemented within script itself.
VERSION
2006-04-03 - Development Version 0.61
2006-03-10-22
Changed recNew
: filling from sample moved to -recNew0C
back, other triggers ordered usually: -recForm0R
, -recEdt0R
, -recNew0R
.
New -recEdt0R
, renamed -recChg0A
and recChg1A
-> -recEdt0A
and -recEdt1A
Triggers
.
New -ddlbloop
Field Description
.
New -ddlbmsab
Field Description
.
New -lblhtbr
Field Description
.
New smtpSend
method.
Extended -ldclass
, -ldstyle
, -fhclass
, -fhstyle
, -fdclass
, -fdstyle
- may be sub{$_} for conditional formatting.
2006-02-17 - Development Version 0.60
2006-02-14
Redesign of -recForm0C
triggers position, now always called first in command. New -recForm0R
triggers added. -recIns0C
and -recRead0C
triggers repositioned just after -recForm0C
. Triggers Interface
extended.
2006-02-11
Redesign of triggers interface: all command triggers except -recNew0C
use only one data parameter; all row triggers, except -recIns0R
and -recIns1R
, uses new values and previous values.
2006-01-20
recUpd
/dbiUpd
improved updating each row after each '0R' trigger call. Record indexing improved too.
New -chk
Field Description
; extended -flg
with 'm'andatory field values.
New -recChg0R
, -recForm1A
, -recForm0A
Triggers
.
New -w32IISdpsn
slot with late 'RevertToSelf' capability. Moved -fswtr
default from new
to use cases. New -call
Command Line
service operation.
2005-12-26
New -ugadd
slot.
2005-11-25 - Development Version 0.59
2005-06-19 - Development Version 0.58
It seems, it works again...
Respecifications about -query
.
Localization and sample translation development (-lbl_LL
, -cmt_LL
, -labels_LL
).
New -frmLsc
, Developed -frmLso
.
Development of dbiSel
, cgiForm
, lng
.
2005-05-29 - Development Version 0.57
It seems, it works again...
New -racUser
.
Renamed -frmOpt
to -frmLso
.
Changed uglist
- filter argument added to get users of group or groups of user.
New -userln
, -usernt
.
New recLast
.
Removed -recRead0R
, -recRead1R
.
Renamed -recForm1R
-> -recForm0C
, -recNew0R
-> -recNew0C
.
New -recTrim0A
, -recChg0A
, -recChg1A
.
Examples settings extended and documented.
New -dbiACLike
slot to switch ACL 'RLIKE' dialects of MySQL, PosgreSQL, SQL99...
2005-04-11 - Development Version 0.56
It seems, it works...
Fields hyperlinking development, display of windows users names implemented, new uadmwtr
, lng
improvement, new -frmLso
, new -qwhere
, htmlRFD
correction via new -fupd
, datastr
/strdata
correction.
2005-03-15 - Development Version 0.55
Under construction yet...
SQL subsystem seems working.
-rvcFinState
redesigned to -rvcChgState
.
-flg
field quoting hints added.
-fhclass
, -fhstyle
, -fhprop
, -fdclass
, -fdstyle
, -fdprop
, -lhclass
, -lhstyle
, -lhprop
, -ldclass
, -ldstyle
, -ldprop
new field descriptions.
-dbiph
, -keyqn
new options/slots.
-cgibus
new slot, Starting 'webus.cgi' remake of CGI::Bus example, Attempting SQL subsystem.
Some improvements in behaviour.
ugroups
(?user) variant in addition to ugnames
(?user) '<?XML' tag 'encoding' attribute corrected. HTML style usage corrected.
2004-10-25 - Development Version 0.54
Doubts found reviewed since 2004-06-26
position. This should not be used yet...
2004-10-13
New -urm
feature.
2004-10-09
'Default Data Definitions' methods redesigned to Tempates
. Templates specifications and examples changed.
2004-09-21
-unflt
and -ugflt
slots added to filter user and group names.
2004-09-14
-end0
, -end1
, -endh
triggers created, -endh
used by w32agf
. w32agf
rewritten with ugroups
and uglist
using Windows ADSI, Win32API::Net excluded at all.
Win32::OLE->Option("Warn"=>0) used anywere.
cgiAction
: Edit mode switched off when record save.
-racAdmWtr
can read only permitted records, but update all can read. -racAdmRdr
slot added.
2004-08-28
w32adhi
created.
w32domain
corrected.
2004-06-26 - Development Version 0.53
XML presentation. Menu listboxes behaviour improved. 'dbmSeek' string condition parser improved. 'DHTML Editing Component' used. Temporary files dir environment variables usage reviewed. Default query conditions display. Some another reviews and corrections. This should not be used yet...
2004-06-13 - Development Version 0.52
tvdFTQuery
created. Log more readable. Some corrections. This should not be used yet...
2004-06-06 - Development Version 0.51
CSS support. tvdIndex
created. Some error corrections. This should not be used yet...
2004-05-16 - Publication of Version 0.50
This should not be used yet, only looked at, may not work at all.
- ToDo
-
See beginning of source code
2004-03-16 - Paused
http://makarov.arkhangelsk.ru/index-anton.htm
2004-01-29 - Preview Release
This should not be used yet, only looked at, may not work at all.
2004-01-26 - Size Analysis
The biggest are User Interface
(43.7 Kb), Database Options
(39.5 Kb), tools (30 Kb, Misc Data methods
and SubObjects
). Details, in kilobytes:
Creation and Setup
12
Misc Data methods
9.6
SubObjects
3 + 20.7 of internal objects
File Store
5.6
Persistent Variables
1
Logging
1.2
User Identification
10.4
Database Options
39.5
User Interface
43.7
Templates
3.4
2003-09-16 - 2004-01-25 - Initial Implementation and Documentation.
- ToDo
-
- see Web.pm
LICENSE
This is free software; you can use redistribute it and/or modify it under the same terms as Perl itself.
Without specially written agreement prohibited using completely, partially or in ideas for impairing nature, wood and timber, mining, cosmic industries in Archangel region; Russian kgbists, bureaucracy and vertical functionary structures.
AUTHOR
Andrew V Makarow <makarow at mail.com>, thanks to Anton Uemlyanin
4 POD Errors
The following errors were encountered while parsing the POD:
- Around line 3496:
You forgot a '=back' before '=head2'
- Around line 3719:
'=item' outside of any '=over'
- Around line 3724:
You forgot a '=back' before '=head2'
- Around line 3765:
'=item' outside of any '=over'