DBIx::Web - Active Web Database Layer |
DBIx::Web - Active Web Database Layer
=head1 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();
=head1 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.
WIKIs are good in hypertext metaphor and records versioning, but may be without database records metaphor, file attachments, access control at the record level.
=head1 CONCEPTS
=item 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.
=item 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.
=item 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.
=item File Attachments
May be implemented via BLOBs. But how to attach several files to any record?
=item GROUPWARE DATABASES
Alike Lotus Domino, have several additional disadvantages:
=item WEB DATABASES
Have several disadvantages:
Should be interesting a separate 'triggers server'? Or this may be considered as a kind of application servers?
=item Database Engines
Why sole engine should be core? Another data engines or sources may be interesting.
=item WEB COLLABORATIVE TOOLS
Alike Wikis, may include record level access control, file attachments, forms, views and queries, may progress towards database metaphor. But transition from from initial hypertext metaphor to database may require a great effort in implementation.
=item 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:
One of the problems is repeating cursor loops in
recUpd
(one for '0R' trigger and one inside dbiUpd
)
and recDel
(for '0R' trigger and dbiDel
or recUpd
).
The last loop is always effectively implemented inside DBI SQL databases,
but for DB_Files it should be implemented implicitly inside
dbiUpd
or dbiDel
.
To implement efficacious '1R' triggers inside recUpd
or recDel
,
and also for effectiveness of DB_Files,
dbiUpd
and dbiDel
should not be oriented to the groups of rows,
or there should be a fast additional single row oriented interface.
Also recDel
should use a fast single row oriented interface of recUpd
.
So, there should be two interfaces to recUpd
, dbiUpd
and dbiDel
for effectiveness.
But this is difficult in develop and test.
=item 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.
=item 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.
=item Another
See version info. See marked with '!!!' or '???' comments in the source code.
=back
=head1 CLASSIFICATION
Slots
are available via set
call or $self->{-name} syntax.
See initialize
source for preferred to be defined in new
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.
=item Creation and Setup
new
, initialize
, class
, set
;
-env
;
start
, end
, -end0
, -endh
, -end1
;
setup
, -setup
;
-cgibus
-die
, -warn
, -debug
;
=item Locale
-locale
, -lang
, -charset
, -lng
;
=item Misc Data methods
max
, min
, dwnext
, orarg
, grep1
, shiftkeys
, splicekeys
;
strpad
, strquot
; strdata
, strdatah
, datastr
;
dsdClone
, dsdMk
, dsdQuot
, dsdParse
;
strtime
, timestr
, timeadd
;
cptran
;
dbiLikesc
, dbiQuote
;
ishtml
, htmlEscape
, htmlUnescape
, urlEscape
, urlUnescape
, urlCat
, urlCmd
, htlsTag
;
xmlEscape
, xmlAttrEscape
, xmlTagEscape
, xmlUnescape
, xmlsTag
;
=item File Store
-path
, -url
, -urf
, -fswtr
, -fsrdr
;
pthForm
;
pthMk
, pthGlob
, pthGlobn
, pthRm
, pthCln
, pthCp
=item Persistent Variables
-var
, -serial
;
varFile
, varLoad
, varLock
, varStore
=item Logging
-log
, -logm
;
logOpen
, logLock
, logRec
=item SubObjects
-dbi
, -dbiarg
, -dbiph
, -dbiACLike
; -cgi
; -output
;
-smtp
, -smtphost
, -smtpdomain
;
dbi
, cgi
, smtp
;
hfNew
, dbmNew
, dbmTable
, ccbNew
;
osCmd
;
output
, outhtm
, outhtml
, outxml
;
smtpSend
=item User Identification
-user
, -unames
, -ugroups
;
-AuthUserFile
, -AuthGroupFile
, -ldap
, -w32ldap
;
-userln
, -usernt
, -udisp
;
-udflt
, -unflt
, -ugflt
, -ugflt1
, -ugadd
;
user
, userln
, unames
, ugroups
, ugnames
, udisp
. udispq
, uglist
, ldapLst
;
ugrexp
, ugmember
, uguest
, uadmrdr
, uadmwtr
, uadmin
;
ugfile
;
w32IISdpsn
, w32adhi
, w32user
, w32umail
;
=item Database Options
-serial
, -autocommit
,
-limit
, -affect
, -affected
, -fetched
, -limited
,
-host
, -recInsID
, -idsplit
, -wikn
=item Database Description
-title
, -help
, -table
and -form
(Table/Form Description
);
-mdlTable
, -mdeTable
;
Triggers
=item Table/Form Description
-table
slot contains database tables descriptions.
-form
slot contains User 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.
C<-table>, C<-form>; C<-lbl>, C<-cmt>, C<-help>, C<-hide>, C<-expr>; C<-field> (C<Field Description>); C<-key>, C<-keycmp>, C<-wkey>, C<-wikn>, C<-urm>, C<-null>; C<-ixcnd>, C<-ixrec>; C<-optrec>; C<-dbd>, C<-dbiACLike>; C<Triggers>; C<User Interface> (C<-cgiRun0A>, C<-cgcXXX>; C<-subst>, C<-recXXX>; C<-query>, C<-frmLso>, C<-frmLsc>; C<-qfilter>, C<-qhref>, C<-qhrcol>, C<-qfetch>, C<-limit>; C<-cgvXXX>)
=item Field Description
-field
Table/Form Description
slot contains reference to array of
field descriptions.
Ordinary field description is a hash ref with a keys listed below.
Also may be used when display single record form sub{}s and layout markup strings.
-fld
, -expr
, -lbl
, -cmt
, -help
;
-flg
, -null
, -chk
, -edit
;
-colspan
, -hide
, -hidel
;
-lblhtml
, -lblhtbr
, -fhclass
, -fhstyle
, -fhprop
;
-inp
, -inphtml
, -fdstyle
, -fdclass
, -fdprop
;
-ddlb
, -ddlbmult
, -ddlbtgt
, -ddlbloop
, -ddlbmsab
;
-form
;
-fnhref
, -fnhtml
, -fvhref
;
-lsthtml
, -lhclass
, -lhstyle
, -lhprop
, -ldclass
, -ldstyle
, -ldprop
=item Record level Access Control
-rac
, -dbiACLike
;
-racAdmRdr
, -racAdmWtr
, -racReader
, -racWriter
;
-racActor
, -racManager
, -racPrincipal
, -racUser
;
-editable
;
-recFlim0R
, recActor
, recActLim
=item Record level Version Control
-rvcInsBy
, -rvcInsWhen
, -rvcUpdBy
, -rvcUpdWhen
,
-rvcActPtr
, -rvcVerWhen
, -rvcChgState
, -rvcCkoState
, -rvcDelState
.
See also ttoRVC
=item Record File Attachments
-rfa
, -rfdName
;
-file
, -fupd
;
rfdPath
, rfdEdmd
, rfdGlobn
, rfdRm
;
rfaUpload
, rfaRm
See also tfdRFD
-index
, -ixcnd
, -ixrec
;
recIndex
, recReindex
See also ttoRVC
, tvmVersions
, tvmHistory
-ridRef
See also tvmReferences
, tfvReferences
-end0
, -endh
, -end1
;
-cgiRun0A
;
-recTrim0A
;
-recForm0A
, -recForm0C
, -recForm0R
, -recFlim0R
, -recForm1C
, -recForm1A
;
-recEdt0A
, -recEdt0R
, -recChg0R
, -recChg0W
, -recEdt1A
;
-recNew0C
, -recNew0R
, -recNew1C
;
-recIns0C
, -recIns0R
, -recInsID
, -recIns1R
, -recIns1C
;
-recUpd0C
, -recUpd0R
, -recUpd1C
;
-recDel0C
, -recDel0R
, -recDel1C
;
-recIndex0R
;
-recSel0C
;
-recRead0C
, -recRead1C
=item Database Operation
recNew
, recForm
, recIns
, recUpd
, recDel
;
recSel
, recList
, recUnion
, recRead
, recQBF
;
recUtr
, recLast
;
recFields
, recValues
, recData
, recKey
, recWKey
See also Database Engines
.
=item 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
=item User Interface
Start review with cgiRun
.
Table/Form Description
;
-pcmd
, -pdta
, -pout
;
-form
;
-cgiRun0A
,
-cgcXXX
;
-subst
,
-recXXX
(-recNew
, -recForm
, -recIns
, -recUpd
, -recDel
, -recRead
, -recList
,...);
-recX#A
(-recTrim0A
, -recEdt0A
, -recEdt0R
, -recEdt1A
);
-httpheader
, -htmlstart
;
-banner
, -logo
, -search
, -login
, -icons
; -menuchs
, -menuchs1
, -frmLso
, -frmLsc
;
-cgvXXX
;
cgiRun
, cgiParse
, cgiQuery
(and cgiQueryFv
, cgiSel
);
urlAuth
, urlOpt
, htmlMQH
;
psParse
, psEval
;
htmlStart
, htmlEnd
, htmlHidden
, htmlMenu
,
cgiForm
(and also htmlField
and cgiDDLB
, htmlFVUT
and htmlFVUH
, tfvVersions
, tfdRFD
, tfvReferences
),
cgiList
(and cgiLst
),
cgiHelp
,
cgiFooter
.
See also Perl Script Pages
, Templates
.
=item UI Substitutions
cgiForm
(-field
, -query
-data
, -table
-field
);
cgiList
(-query
-data
-display
, -field
, -table
-field
)
See also User Interface
.
=item Templates
-tn
, tn
;
ttoRVC
;
ttsAll
, tfsAll
;
tvmVersions
, tfvVersions
;
tvmReferences
, tfvReferences
;
tvmHistory
;
tfdRFD
;
tfoShow
, tfoHide
;
tvdIndex
, tvdFTQuery
=head1 SLOTS
Slots and Methods
=item -affect
=> not exists || 1
(Database Options
)
Number of rows to be affected by DML 'recUpd' or 'recDel' operation.
Distinguish from -limit
.
=item -affected
(Database Options
)
Number of rows really affected by DML 'recIns', 'recUpd', 'recDel' operation.
See also -affect
=item -AuthUserFile
=> not exists || file path
(User Identification
)
Apache Users file, to be used in uglist
method, optional
See also ugfile
.
=item -AuthGroupFile
=> not exists || file path
(User Identification
)
Apache Groups file, to be used in ugroups
and uglist
methods, optional.
See also ugfile
.
=item -autocommit
=> 1 || false
(Database Options
)
Autocommit database mode
=item -banner
=> not exists || HTML || sub{}(self) -> HTML
(User Interface
)
Banner to display at the top.
See also -logo
=item -c
=> {}
Internal cache for computed values
=item -cgcXXX
=> not exists || sub{}($self, 'name', {metadata}, $s->{-pcmd}, $s->{-pdta}) || 'filename.psp' || 'perl filename'
=> URL to redirect to
(Table/Form Description
- User Interface
)
Redirects cgiRun
to execute full external implementation of request or screen alike
recNew
, recForm
, recIns
, recUpd
, recDel
, recRead
, recList
.
See Perl 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.
=item -cgi
=> not exists || CGI object
(SubObjects
)
CGI object, if used, created and available via cgi
call
=item -cgibus
=> not exists || sub{}($self) || CGI::Bus::tm file attachments path
(Creation and Setup
)
Switch to CGI::Bus::tm example applications behaviour,
may be useful about redesign and migration.
=item -cgiRun0A
=> not exists || sub{}($self, {command})
(User Interface
: Database Description
, Table Description
, Form Description
- all executed)
The first trigger executed before ('0A')
any User Interface
action as soon as possible by cgiRun
.
Recommended only for modification of user interface specifications.
=item -cgvXXX
=> not exists || sub{}($self, 'name', {metadata}, $s->{-pcmd}, $s->{-pdta}) || 'filename.psp' || 'perl filename'
(Table/Form Description
- User Interface
)
Redirects cgiRun
to execute presentation external implementation of request or screen alike
recNew
, recForm
, recIns
, recUpd
, recDel
, recRead
, recList
.
See Perl Script Pages
for '*.psp' files description.
See -recXXX
for redirections of request to another form or table.
See -cgcXXX
for full external implementation.
=item -charset
=> locale specific || '1252' || 'sharset code' || not exists
(Locale
)
Application's charset, see also -locale
=> not exists || sub{$_, $@}(self, )
(User Interface
- Field Description
)
Field value check.
Performed after -recTrim0A
and -null
conversion
preceding recIns
or recUpd
operation.
$_ represents field value, may be read and assigned;
$@ intended for constraint violation message.
=> 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
=item -colspan
=> not exists || colspan html td element attribute
(Field Description
)
Number of form layout columns to be occupied by field.
See also -colwidth
=item -colwidth
=> not exists || width html td element attribute
(Field Description
)
Width of form layout column to be occupied by field.
See also -colspan
=item -debug
=> 0 || 1
(Error Processing
)
Debug mode switch, debug features level
=item -dbd
=> not exists || 'dbi' || 'dbm' || ...
(Table Description
, Database Description
)
Database engine used for table or as default for database.
See also Database Engines
.
=item -dbi
=> not exists || DBI object
(SubObjects
)
DBI object, if used, created and available via dbi
call, using -dbiarg
to create
=item -dbiACLike
=> not exists || '' || rlike regexp ~* similar regexp_like like eq|=; lc; filter|sub
(SubObjects
, Table Description
, 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.
=item -dbiarg
=> not exists || 'arguments' || [arguments]
(SubObjects
)
DBI connection arguments string or array, used in dbi
call.
Started with 'DBI:Proxy:hostname=127.0.0.1...' connection string
starts DBI::ProxyServer process if not found connecting,
i.e. 'dbi:Proxy:hostname=127.0.0.1;port=3334;proxy_no_finish=1;dsn=DBI:mysql:...'.
See also -dbistart
.
=item -dbiexpl
=> not exists || boolean
(SubObjects
)
DBI explain switch, default is On, may be used along with -debug
, for speed.
=item -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.
=> not exists || 'start comands' || ['start command',...] || sub{}(self)
(SubObjects
)
DBI connection startup to be executed by dbi
when connecting.
=> not exists || form name || sub{$_}($self,{field},'eqp' mode,{record}) -> 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.
cgiQuery
or cgiQueryFv
calls may be used inside sub{} providing cursor.
See also -ddlbmult
, -ddlbtgt
=item -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
.
=item -ddlbmsab
=> not exists || boolean
(Field Description
)
Hint to use Microsoft Address Book instead of -ddlb
if possible.
See -ddlb
.
=> not exists || boolean
(Field Description
)
Drop down list box allowing multi value selection.
Reserved.
See -ddlb
.
=item -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
.
=item -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
.
=item -edit
=> not exists || sub{}($self,{field},'eqp' mode,value) || boolean
(Field Description
)
Editable field condition. Otherways field will be readonly.
=item -editable
=> not exists || boolean
(Data Record Special fields
, Record level Access Control
)
Editable record sign.
Stamped by Database Operation
calls.
Useful for User Interface
level.
=item -end0
=> not exists || sub{}($self)
=> {} || {name=>sub{}($self)}
=> not exists || sub{}($self)
(Creation and Setup
, Triggers
)
end
operation triggers.
-end0
- before cleanup.
-endh
- delayed commands, cleaned after execution.
-end1
- after cleanup.
=item -env
=> not exists || {env var=>value,...}
(Creation and Setup
)
Assignment or deletion of environment variables within set
.
=item -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
.
=item -fdclass
=> not exists || string || sub{$_}($self,{field},'eqp' mode,{record}) -> string
(Field Description
)
Form data ('td') HTML tag class(es)
=item -fdstyle
=> not exists || string || sub{$_}($self,{field},'eqp' mode,{record}) -> string
(Field Description
)
Form data ('td') HTML tag style
=item -fdprop
=> not exists || HTML tag properties string
(Field Description
)
Form data ('td') HTML tag additional properties
=item -fetched
(Database Options
)
Number of rows retrieved from the database query result set.
May be -limited
by -limit
.
Distinguish from -affected
=item -fhclass
=> not exists || string || sub{$_}($self,{field},'eqp' mode,{record}) -> string
(Field Description
)
Form label ('th') HTML tag class(es)
=item -fhstyle
=> not exists || string || sub{$_}($self,{field},'eqp' mode,{record}) -> string
(Field Description
)
Form label ('th') HTML tag style
=item -fhprop
=> not exists || HTML tag properties string
(Field Description
)
Form label ('th') HTML tag additional properties
=item -field
=> [{field},..., ''||"\n"||"\t"||"\f"||'</table>'||'text'||sub{},..., {field}]
=> {name => {attributes}} # deprecated
(Table/Form Description
- Field Description
)
Reference to array of field descriptions.
Ordinary field description is a hash ref, see Field Description
.
When display a single record form also may be used
layout markup strings,
text strings,
sub{}routines.
Text or result of sub{} evaluation will be outputted.
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
.
=item -file
=> not exists || record file attachments subdirectory
(Data Record Special fields
, Record File Attachments
)
Sign and place of files attached to the record.
Stamped by Database Operation
calls.
Use rfdPath
to obtain absolute location.
=item -fld
=> field name
(Field Description
)
Field name as used by application.
Database field name or expression may be explained by -expr
.
=item -flg
=> not exists || 'ahkweumqln"'
(Field Description
)
Flags of the field:
'a'll operation below, except 'h'yperlink, 'k'ey, 'w'key, quoting, excluding; default
'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
'h'yperlink hint
'q'uery form, may be used to form query condition
'l'istable, may be used in lists of records
'f'etchable alongside 'l'istables together with 'akwq'
'n'umeric quoting
'9' numeric quoting
'``' string quoting
'-' exclude implicit flags
=item -fnhref
=> not exists || sub{$_}($self,{field},'eqp' mode,{record}) -> URL
=> not exists || sub{$_}($self,{field},'eqp' mode,{record}) -> HTML
(Field Description
)
Form footnote URL or HTML to append to display of field.
=> not exists || {form name => {form description} }
=> not exists || form name to display records || [?form, ?command, ?key field] || sub{$_}() -> url string || ['urlCmd' args] || false
(Form Description
, User Interface
)
User Interface forms descriptions.
(Field Description
, User Interface
)
Form to display records by field value.
=item -frmLsc
=> not exists || [ {-val => fieldname} || {-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
).
=item -frmLso
=> 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]
=> not exists || sub{}(self, name, meta, {'-pcmd' options}, option)
=> not exists || sub{}(self, name, meta, command, option)
=> not exists || sub{}(self, name, meta, command, menu comment) -> html
=> not exists || sub{}(self, name, meta, command) -> html
(Table/Form Description
- User Interface
)
htmlMenu
form query options, default provided by cgiQuery
as -urole
recSel
clause.
-frmLso0A
trigger will be called for each -frmLso
value and
may be used to change -pcmd
emulating user defined query parameters.
-frmLso0C
trigger may be used to modify immediate arguments of Ñ<cgiQuery> issue.
-frmLso1C
and -frmLso2C
triggers may be used to modify
htmlMenu
comment and cgiList
first column header.
urlOpt
and htmlMQH
methods may be useful.
=item -fsrdr
=> not exists || [users names]
(File Store
)
File Store Readers - users names
=item -fswtr
=> not exists || [users names]
(File Store
)
File Store Writers - users names
=item -ftext
=> not exists || [field names]
(Table/Form Description
)
Fields for full-text search.
Default is all fields of record.
=item -fupd
=> not exists || record file attachments updatable sign
(Data Record Special fields
, Record File Attachments
)
Record file attachments updatable sign.
Stamped by Database Operation
calls along with -file
.
=item -fvhref
=> not exists || false || sub{$_}($self,{field},'eqp' mode,{record}) -> URL
(Field Description
)
Form value URL to underline display of field.
=item -help
=> not exists || help text || help html || sub{}(self) -> text || html
(Database Description
, Table/Form Description
, Field Description
)
Help text for cgiHelp
.
=item -hide
=> not exists || sub{$_}($self,{field},'eqp' mode,{record}) || boolean
(Field Description
)
Hide field condition.
(Table/Form Description
)
Hidden form sign.
=> not exists || sub{$_}($self,{field},'eqp' mode,{record}) || boolean
(Field Description
)
Hide field condition with left shift of following layout.
=item -host
=> see source code
(Database Options
)
Host name to use in record unique IDs generated, see also -recInsID
=item -htmlstart
=> not exists || {}
(User Interface
)
CGI::start_html call parameters hash ref
=item -httpheader
=> not exists || {}
(User Interface
)
CGI::header call parameters hash ref
=item -icons
=> '/icons'
(User Interface
)
URL to Apache default icons
=item -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 within rmlIdSplit
.
=item -index
=> not exists || boolean
(Materialised Views
- Table Description
or Database Description
)
Materialized views support switch, see -ixcnd
, -ixrec
=item -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 highlight, including special protocol values:
# 'urlh://' - host relative, # 'urlr://' - script relative, # 'urlf://' - record file attachments directory, # 'key://' - reference to record: id or table//id, # 'wikn://' - reference to record: wiki name (see '-wikn') # And bracket notations: # [[xxx://...]], [[xxx://...][label]], [[xxx://...|label]]
-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 or -ddlbloop => boolean ||sub{}(self) # call recForm
after list box choice change
-rfd => boolean # record file attachments widget
otherwise # text field
=item -inphtml
=> not exists || html text || sub{$_}($self,{field},'eqp' mode,{record}) -> 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
=item -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
=item -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
=item -key
=> [field name,...]
(Table Description
)
Key fields names of the table.
=item -keycmp
=> not exists || sub{}(self, [key a], [key b])
(Table Description
)
Key compare dbm sub{}.
Generally not used.
See 'compare' parameter of DB_File.
=item -lang
=> locale specific || 'en' || 'language abbreviation' || not exists
(Locale
)
Application's language, see also -locale
=item -lbl
=> 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
=> not exists || "\f" || '</table>' || true
(Field Description
)
Finish of form tabular layout between field label and value.
See -field
for values possible.
=> not exists || html text || sub{$_}($self,{field},'eqp' mode,{record}) -> 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
.
=> not exists | boolean | server name | [connect args] | {connect args}
=> not exists | server name | [connect args] | {connect args}
=> not exists | bind arg | [bind args] | {bind args}
=> not exists | {search args and default filter} # i.e. {filter=>'(textEncodedORaddress=c=com;a=mail;p=barr;)'}
=> not exists | users filter # i.e. '(objectClass=organizationalPerson)'
=> not exists | groups filter # i.e. '(objectClass=groupOfNames)'
=>['uid','cn'] # [system name attribute => display name attribute]
(User Identification
)
ugfile
('ugf_ldap') switch and settings.
Settings may be used also for ldapLst
.
=> not exists || string || sub{$_}($self,, ?hyperlink, cursor, [record]) -> string
(Field Description
)
List data ('<td>') HTML tag class(es)
=item -ldstyle
=> not exists || string || sub{$_}($self,, ?hyperlink, cursor, [record]) -> string
(Field Description
)
List data ('<td>') HTML tag style
=item -ldprop
=> not exists || HTML tag properties string
(Field Description
)
List data ('<td>') HTML tag additional properties
=item -lhclass
=> not exists || string
(Field Description
)
List heading ('<th>') HTML tag class
=item -lhstyle
=> not exists || string
(Field Description
)
List heading ('<th>') HTML tag style
=item -lhprop
=> not exists || HTML tag properties string
(Field Description
)
List heading ('<th>') HTML tag additional properties
=item -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 -limlb
, -fetched
, -limited
.
=item -limlb
=> not exists (default -limit or greater then 512) || number
(Database Options
, Table/Form Description
)
Great limit of rows to be retrieved from the database query result set to listboxes.
Database Options
)
Number of rows limited by -limit
during retrieve of query result set.
Equals to -fetched
if set.
Distinguish from -affected
=item -lng
=> '' || not exists || 'language'
(Locale
)
User's language, about CGI::http('Accept_language'), see also -locale
=item -locale
=> POSIX::setlocale(&POSIX::LC_CTYPE())
(Locale
)
Application's locale, set
(-locale=>...) call changes also
-charset
, -lang
, -lng
.
=item -log
=> 1 || undef || DBIx::Web::FileHandle object
(Logging
)
Log file switch / handle, opened with logOpen
=item -logm
=> 100
(Logging
)
Log strings list max size to be displayed
=item -login
=> '/cgi-bin/ntlm/'
(User Identification
)
Login URL part, where web server authentication of users is estimated.
Web server virtual directory with user authentication required.
Authentication may be required for one virtual directory and may be unnecessary for another.
=item -logo
=> not exists || HTML
(User Interface
)
Logotype to display in the button bar.
See also -banner
.
=item -lsthtml
=> not exists || sub{$_}($self,, ?hyperlink, cursor, [record]) -> HTML string
(Field Description
)
Conversion of field value to HTML in the list of records via cgiList
.
Value may be found in local $_.
=item -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
.
=item -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
for recReindex
.
See also -mdeTable
.
=item -menuchs
=> not exists || [[form name => form label] || {-val => form name, -lbl => form label} || form name,...]
(User Interface
)
User Interface forms list.
Default will be generated from -form
and -table
.
One of special postfixes below may be supplied to form name in -menuchs
,
while -menuchs1
is expected for '+' only:
none - recList
view
'+' - recNew
form
'&' - recForm
action immediate
'.' - recForm
action dialog
'^' - recForm
page pointer
=item -new
=> not exists || boolean
(Data Record Special fields
)
New record sign, stamped in recNew
, considered in recForm
.
=item -null
=> null value
(User Interface
- Field Description
, Form Description
, Table Description
)
Field value to be converted to undef.
=item -optrec
=> not exists || boolean
Optional records switch.
To allow recRead
or recUpd
records not really present in the database.
-optrec
may be used as recUpd
keyword also.
=item -output
=> not exists || sub{}($self, arguments to be printed out)
(SubObjects
)
Output sub{} to be used instead of 'print' by output
calls
=item -path
=> "$ENV{DOCUMENT_ROOT}/dbix-web" (see source code for more details) || "{-DocumentRoot|-ServerRoot}/dbix-web"
(File Store
)
Path to File Store.
Subdirectories inside File Store (see pthForm
):
'var' - variables file 'var.pl' (see varLoad
, varStore
), 'uagroup' and 'ualist' files (ugfile
);
'log' - log files (see logRec
);
'tmp' - temporary files;
'dbm' - DB_File data files;
'rfa' - attached to records files.
See also -url
, -urf
.
=item -pdta
=> not exists || {}
(User Interface
)
User data input parsed, local inside see cgiRun
, parsed by cgiParse
=item -pcmd
=> not exists || {}
(User Interface
)
User command input / output, local inside cgiRun
, parsed by cgiParse
=item -pout
=> not exists || {}
(User Interface
)
User data output, local inside cgiRun
, filled by cgiRun
or cgiAction
=item -qfetch
=> not exists || sub{}(self, cursor, [borders]) -> success
(Table/Form Description
- User Interface
)
Sub{} to fetch and display next data row by cgiList
.
Default is formed using -qfilter
, -qhref
, -qhrcol
, -limit
=item -qfilter
=> not exists || sub{}(self, 'form name', {metadata}, {command}, {record}) -> success
(Table/Form Description
- User Interface
)
Sub{} to filter to user data records by cgiList
.
Record may be changed during filtering.
=item -qhrcol
=> not exists || 0...
(Table/Form Description
- User Interface
)
Last column number to display -qhref
hyperlink in cgiList
.
Default is 0 - the first column.
=item -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
by cgiList
.
Keywords are:
'-cmd' => not exists || 'command' || sub{}(self, {record}) - command to be specified in the URL, default is recRead
;
'-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.
=item -query
=> not exists || {'recSel' and 'cgiQuery' arguments}
(Table/Form Description
- User Interface
)
Default specification of data records to be retrieved by cgiQuery
/recSel
and listed for user by cgiList
.
Additional to recSel
clauses or options may be used:
-data
and -display
arrays of field names or -field
- for cgiQuery
and cgiList
instead of -field
-flg
values from -table
or -form
.
-datainc
array of field names
- to be included to -data
and useful with implicit -data
.
-frmLso
value, array or sub
- in cgiQuery
as default -frmLso
selection(s)
before -query
->{-urole
}.
-qkey
and -qwhere
values or subs
- as recQBF
defaults,
because all -query
clauses may be overwritten via recQBF
except -key
and -where
catenations.
Note -frmLso
, -qkey
, -qwhere
considered as a
default conditions will not be used when
some of -qkey
, -qwhere
, -qurole
specified in -pcmd
request.
Consider also separate from -query
Table/Form Description
slots -qhref
, -qhrcol
, -qfetch
, -qfilter
for cgiList
specification;
-frmLso
and -frmLsc
for cgiQuery
specifications.
=> 1 || boolean
(Database Description
)
Record level Access Control switch
=item -racAdmRdr
=> 'Administrators,root'
(Database Description
)
Users, can read any record.
Format of this value is alike containing list of user names string field.
See also uadmrdr
, -racAdmWtr
.
=item -racAdmWtr
=> 'Administrators,root'
(Database Description
)
Users, can edit any record.
Format of this value is alike containing list of user names string field.
See also uadmwtr
, -racAdmRdr
.
=item -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 of recSel
.
Default is about -rvcUpdBy
.
=item -racManager
=> not exists || ['field name',...]
(Database Description
, Table/Form Description
- Record level Access Control
)
Field(s)
to store names of user(s)
to be considered as a managers of record.
Used for -urole
clause of recSel
.
Default is about -rvcInsBy
.
=item -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 of recSel
.
Default is about -rvcInsBy
.
=item -racReader
=> not exists || [field names]
(Database Description
, Table Description
)
Readers of record - fieldnames with usernames.
=item -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 of recSel
.
Default is about -racPrincipal
.
=item -racWriter
=> not exists || [field names]
(Database Description
, Table Description
)
Writers of record - fieldnames with usernames.
=item -rfa
=> 1 || boolean
(Database Description
, Table/Form Description
)
Record File Attachments switch
=item -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
=item -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 also tvmReferences
, tfvReferences
.
=> 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 in recIns
and recUpd
before -recIns0R
and -recUpd0R
.
May be used to provide absolutely computed values when record storing.
See also -recChg0W
, -recEdt0R
.
=> 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 written.
Executed immediatelly before writing record to database,
in recIns
and recUpd
, after -recChg0R
, -recIns0R
, -recUpd0R
, -recInsID
.
May be used when key generated for new record needded, i.e. for smtpSend
.
See also -recChg0R
, -recEdt0R
.
=> not exists || 'form name' || sub{}($self, 'name', {metadata}, $s->{-pcmd}, $s->{-pdta}) -> $s->{-pout}
(Table/Form Description
- User Interface
)
recDel
operation UI implementation
=item -recDel0C
=> not exists || sub{}($self, {command})
=> not exists || sub{}($self, {command}, undef, 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.
=> 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 of
recForm
, recIns
, recUpd
, recDel
.
May be used to provide interactively computed values.
See also -recChg0R
; -recForm0A
, -recForm0C
, -recForm1C
, -recForm1A
.
=> 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
/-recFlim0R
and before -recChg0R
.
May be used to translate values or provide absolutely computed values
during record editing or storing.
See also -recChg0R
.
=item -recFlim0R
=> not exists || sub{}($self, {command}, new {field => value}, database {field => value})
(Database Description
, Table Description
, Form Description
; all executed)
recForm
limiting trigger before row ('0R').
-recFlim0R
is executed when database record read and may be modified,
after -recForm0R
,
before -recEdt0R
, -recChg0R
, -recRead0R
, -recForm0C
.
recActor
, ugmember
, recActLim
may be used to
specify/restrict fields editable and values available for current user.
=item -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 for recNew
, recRead
, recDel
, recQBF
operation.
See also -subst
substitution for all operations and
-recXXX
for particular substitutions.
=> not exists || sub{}($self, {UI command}, source {field => value})
=> 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 and recQBF
.
Called by User Interface
,
-recForm0A
after -recTrim0A
but before -recEdt0A
,
-recForm1A
after -recEdt1A
.
May be used to provide computed for display values.
See also -recEdt0A
, -recChg0R
, -recEdt1A
;
-recForm0C
, -recForm0R
, -recFlim0R
, -recForm1C
.
=> not exists || sub{}($self, {command}, source {field => value})
=> not exists || sub{}($self, {command}, new {field => value}, database {field => value})
=> 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 -recFlim0R
, -recEdt0R
, -recChg0R
, -recRead0R
, -recForm0C
.
-recForm1C
is executed ending any single-record data operation
alike recNew
, recForm
, recIns
, recUpd
, recRead
;
may be used to provide values for display only fields.
=> 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 in recDel
.
Old values hash will be undefined in recIns
.
=item -recIns
=> not exists || 'form name' || sub{}($self, 'name', {metadata}, $s->{-pcmd}, $s->{-pdta}) -> $s->{-pout}
(Table/Form Description
- User Interface
)
recIns
operation UI implementation
=item -recIns0C
=> not exists || sub{}($self, {command}, source {field => value})
=> 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
.
=item -recInsID
=> not exists || sub{}($self, {command}, data {field => value})
(Database Description
, Table Description
; nearest executed)
recIns
row ID generation trigger.
Default operation exists in Database Description
.
-recInsID
is executed after -recIns0R
.
=item -recList
=> not exists || 'form name' || sub{}($self, 'name', {metadata}, $s->{-pcmd}, $s->{-pdta}) -> $s->{-pout}
(Table/Form Description
- User Interface
)
recList
operation UI implementation
=item -recNew
=> not exists || 'form name' || sub{}($self, 'name', {metadata}, $s->{-pcmd}, $s->{-pdta}) -> $s->{-pout}
(Table/Form Description
- User Interface
)
recNew
operation UI implementation
=> not exists || sub{}($self, {command}, source {field => value}, sample {field => value})
=> not exists || sub{}($self, {command}, source {field => value})
=> 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.
=> not exists || 'form name' || sub{}($self, 'name', {metadata}, $s->{-pcmd}, $s->{-pdta}) -> $s->{-pout}
(Table/Form Description
- User Interface
)
recQBF
operation UI implementation used in cgiRun
.
See also -subst
substitution for all operations and
-recXXX
for particular substitutions.
=item -recQBFl
=> not exists || table or form name
(Table/Form Description
- User Interface
)
Substitutes another object name to process recList
request from
recQBF
screen in cgiRun
.
Distinguish from -recList
.
See also -recXXX
, recForm
, -subst
substitutions.
=item -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 in cgiRun
after any single-record User Interface
operation,
from -recForm1C
trigger inside Database Operation
.
=item -recRead0C
=> not exists || sub{}($self, {command}, ?)
=> not exists || sub{}($self, {command}, data {field => value})
(Database Description
, Table Description
, Form Description
; all executed)
recRead
triggers before ('0') and after ('1') command.
=item -recSel0C
=> not exists || sub{}($self, {command})
(Database Description
, Table Description
, Form Description
; all executed)
recSel
before command trigger.
=item -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 -recEdt0A
.
=item -recUpd
=> not exists || 'form name' || sub{}($self, 'name', {metadata}, $s->{-pcmd}, $s->{-pdta}) -> $s->{-pout}
(Table/Form Description
- User Interface
)
recUpd
operation UI implementation
=> not exists || sub{}($self, {command}, source {field => value})
=> not exists || sub{}($self, {command}, new {field => value}, prev {field => value})
=> 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').
=> 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.
=> 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.
=item -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.
=item -rvcDelState
=> not exists || [field name => state]
(Database Description
, Table/Form Description
- Record level Version Control
)
Deleted state of record: Field name and state value.
=item -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.
=item -rvcInsBy
=> not exists || 'field name'
(Database Description
, Table/Form Description
- Record level Version Control
)
Field to store name of user record inserted.
=item -rvcInsWhen
=> not exists || 'field name'
(Database Description
, Table/Form Description
- Record level Version Control
)
Field for time record inserted when
=item -rvcUpdBy
=> not exists || 'field name'
(Database Description
, Table/Form Description
- Record level Version Control
)
Field to store name of user record updated.
=item -rvcUpdWhen
=> not exists || 'field name'
(Database Description
, Table/Form Description
- Record level Version Control
)
Field for time record updated when
=item -rvcVerWhen
=> not exists || 'field name'
(Database Description
, Table/Form Description
- Record level Version Control
)
Field for time version record written when.
To keep the end of actuality period of version record started with -rvcUpdWhen
.
recUpd
fills this field with -rvcUpdWhen
of actual record when recording its old version.
=item -search
=> not exists || URL || sub{}(self) -> (URL || empty)
(User Interface
)
URL may be opened in the '_search' frame of the browser
when -search
button pressed or -search
web request parameter specified.
I.e. sub{$_[0]->urlCmd('',-form=>'navigator.psp',-cmd=>'frmCall')}.
A frameset with 'LEFT' and 'RIGHT' frames will be used if URL =~/\b_frame=RIGHT\b/.
See also -logo
.
=item -serial
=> 1 || 0 || 2 || 3
(Database Options
)
Serialisation level of database operation within start
/end
:
0 - none,
1 - shared,
2 - shared read and exclusive update operation,
3 - exclusive (full serialisation).
=item -setup
=> not exists || boolean
(Creation and Setup
)
Allows automatic setup
when main::DATA
last modify time later varStore
d
=item -smtp
=> SMTP object, on demand
=> SMTP server name or address
=> default mail domain name
(SubObjects
)
SMTP mailing parameters for smtp
and smtpSend
.
-smtphost
required, otherwise smtpSend
ignored.
=item -subst
=> not exists || table or form name
(Table/Form Description
- User Interface
)
Substitutes another object name to process request in cgiRun
.
See also -recXXX
and -recForm
substitutions for particular operations.
=item -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.
=item -title
=> ''
(Database Description
)
Application's title
=item -tn => {template naming set}
(Templates
)
Template or default naming set, also available via tn
.
This is an only place for hard coded default special names.
See source code for default naming.
=item -udflt
=> not exists || sub{$_}()
(User Identification
)
User domains filter sub{} to be evaluated against each domain name in $_.
Considered in ugfile
.
See also -unflt
, -ugflt
.
=item -udisp
=> not exists || '+' || 'gc' || sub{}(self) -> {system => display name} || sub{self, user} -> display name
(User Identification
)
udisp
operation mode or implementation.
To extend ('+') udisp
to use 'c'omments as display names for 'g'roups.
=item -ugadd
=> not exists || [group names] || {group name => alias,...} || sub{$_}($self) -> ...
(User Identification
)
Additional user groups names.
Research sub{} will be evaluated against user groups names in $_.
Considered in ugroups
and uglist
default code.
=> not exists || sub{$_}($self) -> boolean
(User Identification
)
User groups filter sub{} to be evaluated against each group name in $_.
Considered in ugroups
and uglist
default code.
See also -ugflt1
, -unflt
.
=item -ugflt1
=> not exists || sub{$_}($self, $_ = name, short name, [groups list])
(User Identification
)
User groups filter sub{} to be evaluated against list of groups for name in $_.
Considered in ugroups
default code.
See also -ugflt
, -unflt
.
=item -ugroups
=> not exists || sub{}(ugroups args) || [group names]
(User Identification
)
User groups sub{} or [] value.
See ugroups
.
=item -unames
=> not exists || sub{} || [user name variants]
(User Identification
)
User name variants sub{} or [] value.
See unames
.
=item -unflt
=> not exists || sub{$_}($self)
(User Identification
)
User names filter sub{} to be evaluated against each name in $_.
Considered in uglist
default code.
See also -ugflt
.
=item -urf
=> "file://{-path}/dbix-web" || sub{}($self) || '-path'
(File Store
)
Filesystem URL to File Store, see also -path
, -url
=item -url
=> '/dbix-web'
(File Store
)
URL to File Store, see also -path
, -urf
=item -urm
=> [field name,...]
(Table Description
)
Table's fields to be used for ``unread mark'' part of URLs
produced by User Interface
cgiList
;
-wkey
used if not defined.
=item -user
=> sub{$ENV{REMOTE_USER}||$ENV{USERNAME}||$GUEST}
(User Identification
)
User name sub{} or value
=item -userln
=> true || false
(User Identification
)
Short local usernames switch
=item -usernt
=> not exists || false || true
(User Identification
)
Windows NT style usernames ('domain\\username') switch
=item -var
=> not exists || {variable name => variable value}
(Persistent Variables
)
Variables hash ref, handled via varLoad
and varStore
calls.
=> 1 | 2, not exists | 0
User Identification
.
Deimpersonation place for Microsoft IIS authenticated user session,
using w32IISdpsn
.
0 - never 1 - when required, i.e. for file store operation 2 - always and early
=> not exists | [['', LDAP path], ['NETBIOS domain' => LDAP path],...]
(User Identification
)
ugfile
('ugf_w32ldap') switch and search scopes.
Empty NETBIOS domain name represents domain computer belongs to.
LDAP path is a string for 'LDAP://' Windows ADSI provider,
i.e. 'cn=myUser,dc=myComapany,dc=com'.
=item -warn
=> \&carp, see source code
(Error Processing
)
Warning sub{}: warn / carp / cluck; using &{$s->{-warn}}('warning') inside.
See also -die
Database Options
=> ['name', 'subject'] || [field names] || field name || false
=> not exists || field name || false
Fields one of may be used to search for record by its wiki name.
Default candidates are defined at database level.
Table may be excluded from search using false value.
See also -opt
for '-hrefs' and 'wikn://'.
=item -wkey
=> not exists || [field name,...]
(Table/Form Description
)
Table's fields used for optimistic record
locking during edit operation (User Interface
recUpd
or recDel
).
-key
used if not defined.
=item Methods
=item ccbNew (condition string) -> new condition code block object
SubObjects
. Creates and returns new condition code block object
(DBIx::Web::ccbHandle
).
=item cgi () -> L<CGI|CGI> object
SubObjects
. Returns CGI object, creates it if not exists in -cgi
.
=item cgiDDLB ({C<-field> metadata})
User Interface
.
Performs drop-down list box via output
.
Uses -ddlb
, -ddlbtgt
, -ddlbmult
.
Used by cgiForm
.
=item cgiFooter ()
User Interface
.
Outputs cgiRun
screen footer with operation and debug messages via output
.
Uses -fetched
, -limited
, -affected
, -logm
, -debug
.
=item cgiForm (table / form name, {table / form metadata}, ? {command}||C<-pcmd>, ? {data}||C<-pout>)
User Interface
.
Outputs record's form via output
, used by cgiRun
for record and QBF operations (see -recXXX
).
See Table/Form Description
for form specifications and -field
for formatting considerations.
See htmlField
for independent widgets.
Use tfdRFD
or -inp
for file attachments.
Use cgiList
and -field
for embedded views.
-pcmd
, ? {data}||-pout
)User Interface
.
Outputs help form for screen current via output
, used by cgiRun
for Help function.
Uses -help
, Database Description
, Table/Form Description
, Field Description
.
-pcmd
, ? cursor ||{query} ||[data rows] ||sub{fetch row} ||-query
, ? [row and column delimiters] || '<select...' || row delimiter || [default table])User Interface
.
Lists data rows via output
, used by cgiRun
for cgiQuery
results.
'!h' option turns off table header.
See Table/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
.
User Interface
.
Simplified cgiQuery
/cgiLst
combination,
may be called within Field Description
sub{}
to embed list of records inside cgiForm
.
User Interface
.
Parses CGI input parameters:
command, parameters, keywords into -pcmd
;
data into -pdta
.
Used internally by cgiRun
.
=item cgiQuery (table / form name, {table / form metadata}, ? {command}||C<-pcmd>) -> cursor
User Interface
.
Forms and starts query using recSel
. Returns cursor.
Used by cgiRun
, with cgiList
follows.
See Table/Form Description
, -query
, cgiList
and recSel
for query and list specifications.
See also cgiQueryFv
and cgiSel
.
=item cgiQueryFv (table name || {command} ||false, field ||[field list], ?{command}) -> cursor
User Interface
.
Forms and starts query of field values.
Alike cgiQuery
, but dynamically forms metadata needed.
May be useful for -ddlb
sub{}s to avoid superfluous forms.
User Interface
.
CGI server response implementation.
Sets error handlers.
Starts and ends session with start
and end
.
Accepts and parses input parameters with cgiParse
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
or cgiQuery
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' (run setup
)
service command line options, see also Command Line
.
=item cgiSel ({name => value,...} || name => value,...) -> -> cursor
User Interface
.
Alike recSel
, but using User Interface
specifications
to produce cursor for cgiList
.
Alike cgiQuery
, but without user dependent parameters and options.
Creation and Setup
.
Returns class name of the object.
=item cptran (fromCP, toCP, string) -> translated string
Misc Data methods
.
Translates strings between cyrillic codepages.
=item datastr (stringified data structure) -> data structure
Misc Data methods
.
Restores data structure from stringified format of strdata
result.
=item dbi () -> L<DBI|DBI> connection object
SubObjects
. Returns DBI connection object,
creates it if not exists using -dbiarg
and -autocommit
=item dbiLikesc (text) -> escaped
Misc Data methods
.
Escapes value to use within SQL LIKE '' ESCAPE '\'.
=item dbiQuote (text) -> escaped
Misc Data methods
.
Quotes value to use within SQL statements.
=item dbmNew (file name) -> new isam data file object
SubObjects
. Creates and returns new isam data file object
(DBIx::Web::dbmHandle
).
=item dbmTable (table name) -> new isam datafile object
SubObjects
. Returns isam data file object with table name given,
creates and opens it if needed using
dbmNew
(-name=>pthForm
('dbm', table name)).
=item die (message string) -> failure exception
Error Processing
.
Raises failure exception like CORE::die or croak.
Executes &{$_[0]->{-die}}(@_[1..$#_]).
See also -die
, -warn
, warn
=item dsdClone (data structure) -> copy of data structure
Misc Data methods
.
Copies data structure recursively.
=item dsdMk (data structure) -> stringified data structure
Misc Data methods
.
Stringifies any data structure with Data::Dumper
Use dsdParse
to restore data structure from stringified form.
Alike strdata
.
=item dsdParse (stringified data structure) -> data structure
Misc Data methods
.
Restores data structure from stringified format of dsdMk
result.
Uses Data::Dumper.
Alike datastr
.
=item dsdQuot (?hash pairs delimiter, data structure) -> stringified data structure
Misc Data methods
.
Prettily stringifies a data structure, more prettily then dsdMk
.
dsdParse
may be used to achieve data structure.
See also strdata
and strquot
.
=item 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.
=item end () -> self object
Creation and Setup
.
Ends (commits) and cleans operation session or transaction start
ed.
=item grep1 (list) -> first non-empty value
Misc Data methods
.
Returns the first non-empty value or true evaluation result.
Alike grep, but differs.
=item hfNew () -> new file handle object
SubObjects
. Creates and returns new file handle object
(DBIx::Web::FileHandle
).
File will be opened if file name given.
=item htlsTag (name, attribute=>value,..., ''=>[content]) -> list
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 also xmlsTag
, outhtm
=item htmlEnd () -> http and html final string
User Interface
.
Generates http and html final string
to output
by cgiRun
=item htmlEscape (strings) -> escaped
Misc Data methods
.
Escapes and unescapes to and from HTML text.
See also urlEscape
.
=item htmlField (name, title, {C<-inp> metadata}, value) -> html field string
User Interface
.
Generates HTML field, used by cgiForm
.
Empty name means readonly.
See -inp
for metadata.
=item htmlFVUH (table name, {record data}, html to translate) -> html
User Interface
.
Converts HTML value to HTML translating URLs alike htmlField
.
See -inp
for special URL protocol values.
=item htmlFVUT (table name, {record data}, text to translate) -> html
User Interface
.
Converts text value to HTML with URLs highlighted alike htmlField
.
See -inp
for special URL protocol values.
User Interface
.
Generates hidden fields HTML to output
by cgiRun
Uses -pcmd
.
=item htmlMenu () -> screen menu bar html string
User Interface
.
Generates menu bar HTML to output
by cgiRun
Uses -pcmd
, -pdta
, -pout
.
=item htmlMQH (-option=>value,...) -> menu query hyperlink html
User Interface
.
Generates menu bar styled hyperlink HTML with query options.
May be used within -frmLso1C
.
Display value may be defined using -label option for text or
immediate -html option.
Hyperlink will be highlited if current query matches options defined.
The last matched call may be inspected in $s->{-pcmd
}->{-htmlMQH}.
HTML hyperlink options: -title, -style, -class, -target.
Query options: -qwhere, -qkey, -qurole, -quname, -qorder, -qkeyord.
Value of -qwhere
may be eclosed in '[[ ]]' or '/* */' brackets distinguishing from another condition.
Query exclusion options: -xpar => 0 - excluding none | 1 - excluding some | 2 - excluding all (default) | -option name | [-option names]; -xkey => -qkey key | [-qkey keys].
=item htmlStart () -> http and html headers string
User Interface
.
Generates http and html headers using -httpheader
, -htmlstart
, start_multipart_form
to output
by cgiRun
=item initialize (-option=>value,...) -> initiated as DBIx::Web object
Creation and Setup
.
Initiates new DBIx::Web object. Used internally, by new
().
See initialize
and set
sources for defaults.
=item ishtml (string) -> alike HTML?
Misc Data methods
.
Looks string given like HTML code?
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 -ldapsrv
, -ldapbind
, -ldapsearch
,....
May be used alike uglist
, but directly with LDAP server.
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.
C<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.
=item logOpen () -> C<-log>
Logging
.
Opens Log file. This does start
call.
=item logLock (lock level) -> success
Logging
.
Locks Log file. This is not needed.
=item logRec (data list) -> success
Logging
.
Add record to Log file.
=item max (number, number) -> maximum
Misc Data methods
.
Maximum of two numbers given.
=item min (number, number) -> minimum
Misc Data methods
.
Minimum of two numbers given.
=item new ('class', -option=>value,...) -> new DBIx::Web object
Creation and Setup
.
Creates new DBIx::Web object. Calls initialize
(-option=>value,...).
=item orarg (L<-X|perlfunc>, argument,...) -> first succeeded argument
Misc Data methods
.
The value of the first succeeded argument.
Alike grep1
, but differs.
=item osCmd (?opt, command, arguments) -> success
SubObjects
. Invokes operating system command given.
Options:
'-i'gnore return code,
'-h'ide output.
=item output (strings list) -> success
SubObjects
. Outputs data given via -output
sub{} call or
print.
htlsTag
or xmlsTag
called to stringify tag data structure.
=item psEval (? '-e', filename, ? base URL)
User Interface
.
Evaluates perl script file using psParse
.
'e'mbeddable option prevents output of HTTP and HTML headers.
Relative filename will be based on '-path
/psp/' with
-url
as default base URL.
See Perl Script Pages
.
=item psParse (? '-e', perl script source string, ? base URL) -> perl source string
User Interface
.
Converts HTML with embedded perl into perl source with output
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.
See Perl Script Pages
.
=item pthCln (path) -> success
File Store
.
Removes path if empty.
Recourses bottom-up.
Empty path may contain '.htaccess' files.
=item pthCp (source, target) -> success
File Store
.
Copies source path to target using operating system copy command via osCmd
.
Options:
'-d'irectory target hint,
'-f'ile target hint,
'-r'ecurse subdirectories,
'-i'gnore errors.
=item pthGlob (path mask) -> entries paths list
File Store
.
Lists directory's contents by mask. Full path names will be returned
=item pthGlobn (path mask) -> entries names list
File Store
.
Lists directory's contents by mask. Relative names will be returned
=item pthForm (type, name,...) -> filesystem path string
File Store
.
Forms filesystem path for 'tmp'||'log'||'var'||'dbm'||'rfa' type.
Creates type directory if needed.
=item pthMk (path) -> success
File Store
.
Creates directory if needed.
Returns 1 if directory exists, 2 if directory was created.
=item pthRm (?opt, path) -> success
File Store
.
Removes path if needed.
Options:
'-r'ecurse subdirectories,
'-i'gnore errors.
Database Operation
.
Determines if current user corresponds to one of the roles listed for record given.
Checks or computes -editable
special field if '0' role listed.
May be used for conditions in -recFlim0R
, i.e.
$_[3] && recActor
(@_[1..3],...) && recActLim
(@_[1..3],...)
Database Operation
.
Restricts access of user current to record current in -recFlim0R
.
'-recRead
' option may be used to prevent modification of the record by some of -racAdmWtr
conditionally by ugmember
.
[list] option defines values acceptable for field(s).
'v' option makes fields listed not editable by user, values of the fields may be read-only or computed in subsequent triggers.
'v!' option makes fields except listed not editable.
Operation may be '-recDel
'.
Database Operation
.
Commits changes to database. Called from end
.
See also recRollback
=item recData ({-keyword ||fieldname => value,...}) -> {fieldname=>value,...}
Database Operation
.
Obtains data field names and values from record manipulation hash ref.
See also recFields
, recValues
, recKey
=item recDel (? -table => name , ? -form => name , ? -key => {original C<recKey>} , ? -where => 'condition' ) -> successful {command}
Database Operation
.
Deletes record(s)
into database, under '-key' or '-where' conditions.
Returns command hash ref or the result of recUpd
.
When Record level Version Control
, operation will be passed to recUpd
,
but recDel
triggers (-recForm0C
, -recDel0C
, -recForm0R
, -recFlim0R
, -recDel0R
, -recDel1C
)
will be executed anyway.
Database Operation
.
Lists field names from record manipulation hash ref.
See also recValues
=item recForm (? -table => name , ? -form => name , ? (-data => {fieldname => value,..}) || (fieldname => value,..) , ? -key => {original C<recKey>} ) -> formed {field => value,...}
Database Operation
.
Recalculates record, new or existing in database.
Original field values obtained via recRead
(-table=>name, -key=>{original recKey
})
and added to new data given if not exists;
-recForm0C
, -recForm0R
, -recFlim0R
, -recForm1C
triggers executed.
=item 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.
=item recIns (? -table => name , ? -form => name , ? (-data => {fieldname => value,..}) || (fieldname => value,..) , ? -key => {prototype C<recKey>} ) -> successfully inserted {field => value,...}
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 via recRead
(-table=>name, -key=>{original recKey
}),
or recSel
cursor.
After all given values applied,
-recForm0R
, -recFlim0R
, -recEdt0R
, <-recChg0R>, -recIns0R
, -recInsID
, -recChg0W
triggers executed and record is inserted into database.
At last, <-recIns1R> and -recForm1C
triggers are executed.
See also recNew
and recForm
, but they are not required to prepare data to be inserted.
=item recKey (table name, {fieldname => value,...}) -> {keyfield => value,...}
Database Operation
.
Obtains Key fields names and values from record's data hash ref using -key
.
See also recData
, recWKey
=item recLast (table name ||{command} ||false , 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 within triggers.
May be not implemented for non-sql Database Engines
.
Command options used are
-table => table name,
-version => switch including versions of records,
-excl => switch excluding record given.
=item recList () -> C<recSel>(@_)
Database Operation
.
Lists records from database.
Passes all work to recSel
now, may be redesigned.
=item recNew (? -table => name , ? -form => name , ? (-data => {fieldname => value,..}) || (fieldname => value,..) , ? -key => {prototype key} || prototype key , ? -proto => {prototype field => value,...} ) -> 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
from '-proto' or via recRead
(-table=>name, -key=>{prototype key}),
but are not used instead of -recNew0R
.
-recForm0R
, -recFlim0R
, -recEdt0R
, -recNew1C
, -recForm1C
triggers are executed at last.
The following calls may be recForm
and recIns
.
=item recQBF
Database Operation
- User Interface
.
This is not method, only User Interface
query condition
command and screen behaviour,
implemented within cgiRun
and cgiForm
=item recRead (? -table => 'table name', ? -form => name ? -key => {field name=>value,...}, ? -where => 'condition', ? -optrec => false || true, ? -test => false || true, ? -version => false || true ) -> successfully read {fieldname => value,...}
Database Operation
.
Reads single record from database using recSel
,
returns this record as a hash ref (with -file
, -editable
slots if applicable).
Executes -recForm0C
, -recRead0C
, -recForm0R
, -recFlim0R
, -recRead1C
, -recForm1C
triggers.
=item 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'.
=item recRollback () -> self
Database Operation
.
Rollbacks changes to database. Should be called from $SIG{__DIE__},
see set
source for example.
See also recCommit
.
=item recSel ( -table => 'FROM clause' || [table name, [table, alias], [table, alias, join],...], ? -join[01] => 'left or right addition to FROM clause' ? -data => [field, [field => alias], {-fld => alias, -expr => formula,..},...], ? -key => {field name => value,...}, ? -where => 'WHERE clause' || ['WHERE clause',...], ? -urole => 'author'||'authors'||'actors'||'principals'||'user'||'users', ? -uname => 'role username' ? -ftext => 'full-text search string', ? -version => false ||true, ? -group => 'GROUP BY clause' || ['GROUP BY clause'...] ? -order => string || [field, [field => order],...], ? -keyord => -(a|f|d|b)(all|eq|ge|gt|le|lt), ? -filter=> sub{}(cursor, undef, {field=>value,...}) ) -> cursor
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 least fetch
, fetchrow_arrayref
, fetchrow_hashref
, finish
, close
methods are supported by cursor.
See also -recSel0C
, recList
, recRead
.
Database Operation
.
UNION operation at cursor level, may be used within -ddlb
, etc.
Source cursors may be produced via recSel
, cgiQuery
, cgiQueryFv
, etc.
Options available are:
-all => false (default) || true - not unique records -asc => true (default) || false - descending order -lc => true (default) || false - case insensitive ordering compare -rl => false (default) || true - right to left fields compare -rec => {...} - last fetched values -rfr => [...] - last fetched values NAME => [...] - column names, default from first cursor listed
Database Operation
.
Translates values in actial records. Alike recUpd
, but without any triggers.
To use within triggers.
Command options used are
-table => table name,
-version => switch including versions of records,
-excl => switch excluding record given.
=item recUpd (? -table => name , ? -form => name , ? (-data => {fieldname => value,..}) || (fieldname => value,..) , ? -key => {original C<recKey>} , ? -where => 'condition' , ? -optrec => false || true , ? -sel => true || false ) -> 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
, -recFlim0R
,
-recChg0R
, -recUpd0R
, -recChg0W
, -recUpd1C
, -recForm1C
triggers.
=item recValues ({-keyword ||fieldname => value,...}) -> field values
Database Operation
.
Lists field values from record manipulation hash ref in corresponding to
recFields
order
=item recWKey (table name, {fieldname => value,...}) -> {keyfield => value,...}
Database Operation
.
Alike recKey
, but using -wkey
and providing optimistic locking.
=item rfaRm ({rec data} ||(table name, {rec data}), attachment name || [list of attachments names])
Record File Attachments
.
Removes file attachments listed (alike rfdGlobn
output).
Record should be -editable
with -file
, which are Data Record Special fields
provided by Database Operation
.
=item rfaUpload ({rec data} ||(table name, {rec data}), L<CGI|CGI> filefield)
Record File Attachments
.
Adds record's file attachment from CGI::upload.
Record should be -editable
with -file
, which are Data Record Special fields
provided by Database Operation
.
=item rfdEdmd (table name ||{command}, {rec data}) -> attachments edit allowed?
Record File Attachments
.
Record's state (-rvcChgState
) permits editing of file attachments
=item rfdGlobn ({rec data} ||(table name, {rec data}), ?subdirectory,...) -> list of file attachments
Record File Attachments
.
Returns list of record's file attachments names, relative to rfdPath
.
=item 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 of Data Record Special fields
,
if file attachments present.
=item 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 are Data Record Special fields
provided by Database Operation
.
=item set () -> (slot names of the object)
Creation and Setup
.
Retrieves and sets values of the SLOTS
.
$s->{-option} direct access may be used also,
but set
smartly processes some options.
=item setup ()
Creation and Setup
.
Reads and executes setup script from main::DATA
file handle.
See examples source for details.
Misc Data methods
.
Matching keys removes first 'key=>value' pairs from array and returns them.
SubObjects
.
Returns Net::SMTP object, creates it if not exists in -smtp
.
Uses -smtphost
.
SubObjects
.
Sends SMTP mail message using smtp
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.
=item splicekeys ([key=>value,..., value,...], condition sub{}(self, $_==key) | regexp string) -> (key=>value,...)
Misc Data methods
.
Matching keys removes any 'key=>value' pairs from array and returns them.
Creation and Setup
.
Starts operation session or transaction.
Cleans previous session or transaction state.
Uses set
to assign options.
end
ends (commits) and cleans session or transaction start
ed.
=item strdata (data structure) -> stringified
Misc Data methods
.
Stringifies any data structure.
Special strdatah
form is for optimization needs.
Use datastr
to restore data structure from string.
=item strdatah (key=>value,...) -> stringified hash
Misc Data methods
.
Stringifies hash, see strdata
also.
=item strDiff (-opt, string1, string2) -> stringified diff
Misc Data methods
.
Stringified difference of strings given.
Uses Algorithm::Diff::sdiff(arg1, arg2).
Options:
'h'tml conversion if ishtml
;
'w'ords, 'r'ows, 's'entences input break;
'b'rief, 'p'lain output.
=item strHTML (html) -> pure text
Misc Data methods
.
Stringifies HTML to pure text.
Misc Data methods
.
Default pad char is '0', default min length is $NLEN, string will not be trimmed.
=item strquot (value) -> quoted and escaped
Misc Data methods
.
Escapes and quotes value given if needed.
=item strtime (?mask, L<time|perlfunc> ||L<localtime|perlfunc> ||L<gmtime|perlfunc>) -> 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 also timestr
.
=item timeadd (seconds, add years, ?months, ?days, ?hours, ?minutes, ?seconds) -> seconds incremented
Misc Data methods
.
Add values given to time given. Calculation via POSIX::mktime.
=item timestr (?mask, stringified time) -> seconds
Misc Data methods
.
Converts stringified with strtime
time string to seconds form
with POSIX::mktime
=item tfdRFD (-option=>value,...) -> {record file directory field template}
User Interface
.
Template Field Description for Record File Directory field.
May be used as -field
description for Record File Attachments
.
See source code.
=item tfoHide (?'button name') -> sub{C<-hide> definition}
Templates
.
Template Field Condition for -hide
/-hidel
details absent,
to be used with tfoShow
.
See source code.
=item tfoShow (?'button name', ?[detail fields], ?'html pattern') -> sub{C<-lblhtml> show detail definition}
Templates
.
Template Field Button for '-lblhtml' to Show all details absent.
See source code.
See also tfoHide
=item 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.
=item tfvReferences (?[fields definitions add] ||undef, ? -option=>value | sub{}(self, table, ...), ...) -> 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 also tvmReferences
=item tfvVersions (?[fields definitions add] ||undef, ? -option=>value | sub{}(self, table, ...), ...) -> 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 also tvmVersions
=item tn () -> {template naming set}
Templates
.
Template or default naming (-tn
) interface.
=item ttoRVC (-option=>value,...) -> (record version control table template options)
Templates
.
Template Table Options (slots and values) for Record Version Control.
See source code.
=item 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.
=item tvdFTQuery (-option=>value,...) -> (full-text search page view template)
Templates
.
Template View Definition for Full-Text Query page.
See inplementation for limitations and details.
=item tvdIndex (-option=>value,...) -> (Index page view template)
Templates
.
Template View Definition for Index page,
'index' view default definition,
enumerating all -menuchs
entries.
=item tvmHistory (?[fields definitions add] ||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.
=item tvmReferences (?[fields definitions add] ||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.
=item tvmVersions (?[fields definitions add] ||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.
=item uadmin () -> C<uadmwtr>
User Identification
.
Alias of uadmwtr
=item uadmrdr () -> can current user read almost all records?
User Identification
.
Returns true if current user is a member of -racAdmRdr
,
just ugmember
(-racAdmRdr
).
=item uadmwtr () -> can current user edit any record?
User Identification
.
Returns true if current user is a member of -racAdmWtr
,
just ugmember
(-racAdmWtr
).
=item udisp (username) -> display name
User Identification
.
Returns display name for user or group name given.
Returns name given if cannot translate.
udispq
is intended as a quick version to be used for cgiList
.
See -udisp
to extend default behaviour.
User Identification
.
Creates or periodically updates user group files using
subroutine specified: 'ugf_ldap' (-ldap
, Net::LDAP),
'ugf_w32' ($^O eq 'MSWin32', Win32::OLE->GetObject('WinNT://...')),
'ugf_w32ldap' (-w32ldap
, Win32::OLE->GetObject('LDAP://...')).
Called internally with rational refresh interval, may be called from Command Line
.
pthForm
('var','ualist') file is for uglist
.
pthForm
('var','uagroup') file may be used as Apache's 'AuthGroupFile'.
See source code for specifications.
Using ugfile
(), -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 ugfile ugf_w32 0 q'' Command Line
.
User Identification
.
Returns user ('-u') and group ('-g') names
using filter given
in array ([]) or hash ({}) ref;
'<>' option forces comment notation for hash ref
'd' is used for udisp
,
'c' forms group comments to display names.
Default is both ('-ug') in array ref ([]).
Uses -AuthUserFile
and -AuthGroupFile
, or ugfile
.
Considers -userln
and -usernt
.
See also ldapLst
.
=item 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.
=item 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
).
=item ugrexp () -> sub{}('user,user,...') matching C<ugnames>
User Identification
.
Returns sub{} to match string with user names list against ugnames
=item 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
or ugfile
generated files.
=item uguest () -> is current user a guest?
User Identification
.
Returns true if current user is not logged in.
=item 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
] with userln
and 'domain\\user' form added if applicable and not met.
=item urlAuth () -> login URL
User Interface
.
URL to self script authenticated.
=item urlCat (url, name=>value,...) -> escaped URL
Misc Data methods
.
Escapes and unescapes to and from URL format.
urlCat
only escapes and catenates arguments,
whereas urlCmd
replaces leading '-' with '_' in names and stringfies data structures with strdata
.
See also htmlEscape
.
=item urlOpt (option => value,...) -> invokation URL
User Interface
.
Self URL using -pcmd
values with options given added / replaced.
=item user () -> current user name
User Identification
.
Returns name of the current user.
Uses -user
sub{} or value.
Considers -userln
and -usernt
.
=item userln () -> current user local name
User Identification
.
Returns local name of the current user, or user
.
User name domain component (after '@') is discarded
if it equals to host name domain component (Windows or DNS).
=item varFile () -> variables store filename
Persistent Variables
.
Returns file name to store values of variables.
=item varLoad (?lock) -> self object
Persistent Variables
.
Loads variables into -var
.
Default lock level is LOCK_SH.
File will be locked until end
call.
=item varLock (?lock) -> success
Persistent Variables
.
Locks variables file.
Default is LOCK_EX.
File will be locked until end
call.
=item varStore () -> self
Persistent Variables
.
Stores -var
into variables file.
LOCK_EX is used.
File will be locked until end
call.
=item w32adhi () -> Active Directory Host Info object
User Identification
.
Returns 'ADSystemInfo' OLE object.
User Identification
.
Deimpersonation of authenticated user session on Microsoft IIS.
See -w32IISdpsn
.
See source for details and warnings.
=item w32user (name) -> Win32 AD user Win32::OLE object
User Identification
.
Returns Win32::OLE AD object for user name given.
=item w32umail (name(s) string) -> email(s)
User Identification
.
Returns string of e-mail addresses for string of user names given.
See source code for limitations and details.
=item warn (message string) -> warning raise
Error Processing
.
Raises warning like CORE::warn or carp.
Executes &{$_[0]->{-warn}}(@_[1..$#_]).
See also -die
, -warn
, die
.
=item xmlEscape (strings) -> escaped
xmlEscape
Misc Data methods
.
Escapes and unescapes to and from XML text.
See also htmlEscape
.
=item xmlsTag (name, attribute=>value,..., ''=>[content]) -> list
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 also htlsTag
, outxml
=back
recXXX
methods.
Corresponding 'Physical' database interfaces are implemented in dbiXXX
methods.
See source for details.
-dbd
eq 'dbi'.
See DBI, -dbi
, -dbiarg
, dbi
.
=item DB_File engine
-dbd
eq 'dbm'.
See DB_File, dbmTable
.
=item XML record files engine
-dbd
eq 'xmr'.
May be in future?
=item Inbox items engine
May be in future?
=back
($self, {command}, {new field => value}, {prev field => value})
Values for 'by-command' triggers are given from arguments of command.
Values for 'by-row' triggers are corresponded to a whole record.
Previous values are available only in 'by-row' triggers only for existed records.
Previous values are not available in recNew
and recIns
.
New valies are not available in recDel
.
So, new or previous values may be not available is -recForm0R
, -recFlim0R
, -recEdt0R
, -recChg0R
, -recChg0W
.
Special additional parameters of command may be:
-cmd => command or method name,
-table => table name,
-form => form name or immediate .psp file name,
-cmdf => form metadata,
-cmdt => table metadata,
and see also below User Interface Command Parameters
:
=back
=head1 User Interface Command Parameters
User Interface
introduces additions to special parameters of -pcmd
mentioned in Triggers Interface
.
Also, some of parameters may be used within URLs replacing leading '-' with '_'.
-ui => user interactive sign (-pcmd
, -pdta
, -pout
may be looked),
-cmg => enclosing (global) command name,
-login => perform login,
-edit => editing sign,
-print => printable presentation,
-mail => e-mailing presentation,
-hist => historical changes presentation,
-xml => XML presentation,
-style => stylesheet to use,
-frame => target frame to use ('set' special value produces 'TOP'/'BOTTOM' frameset),
-search => open search browser pane with URL given or -search
,
-htmlMQH=> htmlMQH
call matched
=back
=head1 Perl Script Pages
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.
cgiRun
method can frmCall
.psp file described in -form
with -cgcCall
, -cgvCall
or immediate file inside the directory of the $0.
=back
=head1 Command Line
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.
=back
=head1 VERSION
New -search
.
Perl Script Pages
may be also called directly by {-cmd=>frmCall, -form=>'filename.psp'},
without -cgcXXX
/-cgcURL
/-cgvXXX
registration.
Improved htmlMenu
, cgiParse
, cgiQuery
, cgiHelp
.
Corrected row-level access control filtering (dbiACLike
, dbmSeek
).
Corrected behaviour of exeptions.
CMDB and Service Desk example corrections and improvements.
Misc corrections and improvements in cgiRun
, cgiSel
, uglist
, htmlMenu
, htmlML
.
New -dbistart
.
Extended -help
using HTML and improved cgiHelp
.
CMDB example improvements.
Corrections for PerlEx: C<-serial>=>0, error handling.
Data quoting correction.
CMDB example corrections.
New -dbiexpl
.
=head2 2007-11-07 - Development Version 0.71
CMDB example - changed record status flow.
Improvements/corrections for PerlEx.
Error processing improvements.
logRec
() corrected.
Query length limit increased.
htmlMQH
()/cgiSel
() conditions catenation added
using -qwhere
with '[[]]/**/' syntax for htmlMQH
.
And some minor corrections
=head2 2007-08-23
New -banner
.
Corrected osCmd
behaviour for 'xcopy' command under PerlEx.
=head2 2007-06-29 - Development Version 0.69
=head2 2007-06-26
Considered Active Perl/PerlIS 5.8 with CGI 3.20:
'use CGI qw(-no_xhtml -newstyle_urls -nph)';
'$CGI::Q =$s->{-cgi
}';
new url
method fixing CGI::url.
Corrected -serial
operation.
Optimised w32umail
.
Corrected ugfile
.
=head2 2007-06-03 - Development Version 0.68
=head2 2007-04-20-05-22
Changed htmlField
for -hist
.
Corrected cgiRun
for -cgcCall
.
Changed htmlMenu
form choise list behaviour.
-menuchs
item may be form/table name.
Corrected htmlHidden
, htmlMenu
, psEval
.
New -ugflt1
.
Corrected cgiForm
, cgiList
, htmlRFD
.
-ddlbloop
/-loop
value may be sub{}.
Corrected timestr
and timeadd
considering DST.
CMDB example development.
=head2 2007-04-12
Corrected recForm
setting -editable
.
Corrected recUtr
.
Corrected recIns
, and recUpd
using
-recForm0R
, -recFlim0R
, -recRead0R
, -recRead1R
, -recRead1C
when single record read to be returned.
New -racManager
.
Corrected smtpSend
using pure addresses for 'to' and 'mail'.
=head2 2007-04-06
New udispq
.
New -recFlim0R
, recActor
, recActLim
.
Adapted or changed -recForm0R
, -recDel0R
(Triggers Interface
),
recRead
, recNew
, recForm
, recIns
,
cgiForm
, ugmember
.
New cgiHelp
and -help
.
=head2 2007-03-09 - Development Version 0.67
Changed recQBF
, new -qjoin
/-join2
to use joins with query conditions.
Fixed cgiList
XML.
Fixed xmlEscape
, xmlTagEscape
.
Changed -cgibus
calculation to support key:// and wikn:// hyperlinks.
Restyled HTML for scaling. New 'Body' and 'Input' HTML classes. Changed class definitions.
Changed HTML table current row indication using 'tr.onclick'.
Improved frameset behaviour.
Extended tfvVersions
and tfvReferences
using shiftkeys
to add some options inside cgiList
args.
New shiftkeys
, splicekeys
, htmlFVUT
, htmlFVUH
.
=head2 2007-01-07 - 09
Added bracket notation for hyperlinks highlight for -inp
/'-hrefs'.
New 'key://' special URL protocol for -inp
/'-hrefs'.
Record changes display corrected in
file attachments arrangement using -rvcUpdWhen
and 'mtime'.
=head2 2006-12-24
New -wikn
option and new 'wikn://' special URL protocol for -inp
/'-hrefs'.
Improvements in file attachments field; added icons for files.
Improvements in special URLs (-inp
/'-hrefs') translation and display.
Improvements in '<html ... lang>'.
=head2 2006-11-16 - 12-14
New -rvcVerWhen
, conditionally for ttoRVC
compatibility.
Some corrections of JavaScript for Mozilla/Firefox.
Added record changes display, using Algorithm::Diff, but with wrong processing of file attachments.
New strDiff
, strHTML
.
Extended -dbiarg
with 'DBI:Proxy:hostname=127.0.0.1...' case.
New -recChg0W
.
Improved frameset behaviour.
=head2 2006-09-30 - 2006-11-03
Taking ownership of Record File Attachments
on Windows along with 'cacls'.
Changed -usernt
values, new 'not exists' default works in ugroups
without any filtering of '\\' or '@' name forms.
Another values are to reduce database query conditions.
New ugfile
with 'ugf_...' subroutines, removed w32agf
,
changed format of user/group cache files.
Some corrections of JavaScript for Mozilla/Firefox.
New frameset behaviour for user interface using '_frame=Name' and '_frame=set' URL paramters.
Some internal corrections and improvements.
Development of cgi-bus remake seems to be done.
=head2 2006-09-08
New C<-proto> parameter for C<recNew>. Changed C<htmlMenu> to create a new record using hyperlink and minimum inheritance from record current.
New -datainc
parameter for -query
.
Extended SQL generated with default field aliaces and table qualifiers.
dbiSel
changed and corrected.
New 'f' and '-' values for -flg
attribute of -field
.
Reviewed usage of -flg
.
New dsdQuot
.
Changed cgiQuery
,dbiSel
,htmlMenu
,cgiForm
to nest -qkey
hashes within arrays recursivelly:
-qkey=>{name=>value,... name=>[OR value,...{name=>AND value,...}]}
Fixed ugnames
(name) using ``local -userln
=undef''
Changed -frmLso1C
specification from sub{}(self, name, meta, command, option, comment),
corrected -frmLso2C
specifications from sub{}(self, name, meta, command, option).
New htmlMQH
.
Arranged cgiQuery
, cgiForm
, htmlHidden
, htmlMenu
handling
-qkey
, -qwhere
, -urole
as defaults for user defined query arguments,
considering also -uname
, -frmLso
, -frmLsc
.
Changed cgiQuery
- improved inheritance from table -query
parameters.
New recUnion
.
Fixed tfvReferences
: -flg
=>'l' not needed when -query
->{-data
/-display
}.
Changed -ldclass
, -ldstyle
, -lsthtml
specs from sub{$_}($self,cursor,[record]).
Changed -fdclass
, -fdstyle
, -fhclass
, -fhstyle
specs from sub{$_}($self,{command},{record}).
Changed -ddlb
spec from sub{$_}($self, {field}).
New -fnhtml
, -fnhref
, -fvhref
.
Changed cgiQuery
query defaults usage:
-query
{-frmLso
, -qwhere
, -qkey
} will not be used
if -pcmd
{-qwhere
, -qkey
, -qurole
} specified.
New -cgiRun0A
.
New -udisp
.
Added -dbiACLike
to Table Description
.
New -limlb
.
Fixed -ldprop
to work without -ldstyle
.
Added -frmLsc
default -cmd
behaviour, required now -val
only.
New w32umail
.
=head2 2006-05-04-17
New cgiQueryFv
.
New recUtr
.
Changed -lsthtml
- called always within field border tags.
Extended -form
field description with sub{} and array ref values.
Improved -hidel
behaviour.
=head2 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.
=head2 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.
=head2 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.
=head2 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.
New -ugadd
slot.
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
.
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...
=head2 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.
=head2 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.
=head2 2004-10-25 - Development Version 0.54
Doubts found reviewed since 2004-06-26
position.
This should not be used yet...
=head2 2004-10-13
New -urm
feature.
=head2 2004-10-09
'Default Data Definitions' methods redesigned to Tempates
.
Templates specifications and examples changed.
=head2 2004-09-21
-unflt
and -ugflt
slots added to filter user and group names.
=head2 2004-09-14
-end0
, -end1
, -endh
triggers created, -endh
used by ugfile
.
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.
=head2 2004-08-28
w32adhi
created.
w32domain
corrected.
=head2 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...
=head2 2004-06-13 - Development Version 0.52
tvdFTQuery
created.
Log more readable.
Some corrections.
This should not be used yet...
=head2 2004-06-06 - Development Version 0.51
CSS support.
tvdIndex
created.
Some error corrections.
This should not be used yet...
=head2 2004-05-16 - Publication of Version 0.50
This should not be used yet, only looked at, may not work at all.
=head2 2004-03-16 - Paused
This should not be used yet, only looked at, may not work at all.
=head2 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
- see Web.pm
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 to use completely, partially or in ideas for impairing nature industries in Archangel region (wood and timber, geological and mining, space and war); Russian procrastination structures and kgbists.
A help in the revival of Pomor'e will be good: http://www.pomor-rus.org
=head1 AUTHOR
Andrew V Makarow <makarow at mail.com>, thanks to Anton Uemlyanin
DBIx::Web - Active Web Database Layer |