|
CGI::Bus - Web and DBI Application object |
CGI::Bus - Web and DBI Application object
use CGI::Bus; $s =CGI::Bus->new(); $s->print->htpfstart; # start http, page, form
$s->cgi->... # -> CGI object $s->dbi->... # -> DBI object $s->tmsql->... # -> SQL database interface object ........ $s->print->htpfend # end form and page
A web database with record versioning, access control at the record level, and file attachments was needed for me, see examples and CGI::Bus::tmsql... Modular structure and some codes implemented due to infrastructural needs.
This module is to provide based on CGI module core application object
to load, contain and manage any other used by application objects,
methods and data.
Several slots and methods may be useful predefined and added also.
Several automatic subobject classes may be useful provided.
Perhaps, this looks something like Jellybean or PAS,
but is not so complex or so right.
Currently implemented and tested on Win32 Apache and IIS.
CGI::Bus::Base is base class for automatic subobjects.
CGI::Bus::file is a file object encapsulating IO::File object.
CGI::Bus::fut is a file and directory utils library.
CGI::Bus::psp is a very simple and little HTML/Perl script processor, like something as Apache::ASP, HTML::Embperl, HTML::HTPL, HTML::Mason.
CGI::Bus::smtp is a simple SMTP sender, based on Net::SMTP.
CGI::Bus::tm is a database Transaction page Manager to view and edit data, the base and simplest case of CGI::Bus::tmsql below.
CGI::Bus::tmsql is an SQL database user interface
to view and edit data,
page transaction manager,
another than DBIx::HTMLView, eXtropia or MOT.
CGI::Bus::uauth is default or base user authentication class,
provides user, ugroups, uglist methods.
It translates web server authentication and uses platform specific methods.
CGI::Bus::udata is a user data store.
CGI::Bus::upws is a user personal work space.
CGI::Bus::wg is a collection of HTML widgets.
See AUTOLOAD, reset, print, CGI::Bus::Base
new, set, -import, -reimport
AUTOLOAD, launch, -classes, -cache, $CGI::Bus::SELF,
reset, -reset, -endh, DESTROY,
-debug, microtest
cgi, -cgi, fcgicount, request, dbi, -dbi, oscmd
die, warn, problem, -problem,
pushmsg, pushlog, -pushlog
lngname, -lngname, lngload, lng
qpath, -qpath, qurl, -qurl,
spath, -spath, surl, -surl,
bpath, -bpath, burl, -burl,
dpath, -dpath,
tpath, -tpath,
ppath, -ppath, purl, -purl,
fpath, -fpath, furf, -furf, furl, -furl,
hpath, -hpath, hurf, -hurf, hurl, -hurl,
urfcnd, -urfcnd,
-iurl
strtime, timestr, timeadd,
cptran, ishtml,
dumpout, dumpin,
orarg
httpheader, -httpheader,
htmlstart, -htmlstart,
htpgstart, -htpnstart, -htpgstart, -htpfstart, -htpgtop,
htpgend, -htpgbot,
htpfstart, htpfend,
htmlescape, urlescape, dbquote, dblikesc,
htmlddlb, htmltextarea, htmltextfield, htmlfsdir
qparam, param, qparamh, qrun
userauth, userauthopt, -login,
user, useron,
-user, -usercnv, -unmsadd, usercn, usersn, unames,
uguest, uadmin, -uadmins,
usdomain, -usdomain, userver, -userver,
ugroups, -ugroups, -ugrpcnv, -ugrpadd, ugnames,
uglist, -uglist, -udflt, -unflt, -ugflt,
unamesun
Are available via set
and several explicitly refered here methods.
CGI::Bus object.
local $SELF is set within some methods for use by external objects or
methods.
See also evalsub
bpath, burl.
See also Locations.
initialize
-import, -reimport, -reset.
tpath.
Cached and used by dpath.
See also Locations.
reset, cleaned after execution.
fcgicount.
fcgicount.
ppath, fpath, purl.
Cached and used by fpath, furf, furl
See also Locations.
ppath, hpath, purl.
Cached and used by hpath, hurf, hurl
See also Locations.
htmlstart
htmlstart
in CGI::Bus::tmsql and etc,
see also -htpgstart, -htpnstart
htpgend
htmlstart
in CGI::Bus::tmsql and etc,
see also -htpfstart, -htpnstart
htpgstart
htmlstart
in CGI::Bus::upws,
see also -htpgstart, -htpfstart
httpheader
-import => {'use...'=>{-method=>call,...},...}
-import => {'use...'=>[method,...],...}
-import => {-key=>class}
Add Classes or Methods and Packages. This slot does not exists,
it is used only as set parameter to fill other slots or -classes slot.
lngname
userauth and CGI::Bus::uauth.
If login URL ends with '/' sign, it is treated as
authenticated location, current script name will be appended.
surl.
Cached and used by ppath, purl.
See also Locations.
qpath, qurl.
See also Locations.
-reimport => {-key=>class,...}
-reimport => [-key,...]
-reimport => -key
Add Classes or slots to reset when reusing application object.
This slot does not exists,
it is used only as set parameter to fill -reset or -classes slots.
See also -import, -reset, new.
-reset => {-slot => 1,...}
slots to destroy when reusing application object.
See also -import, -reimport, new.
spath, surl.
See also Locations.
tpath.
See also Locations.
uadmin
-unflt, -ugflt.
ugroups and uglist default code.
See also -unflt.
uglist method evaluates this sub or uses it's own code.
ugroups method evaluates this sub or uses it's own code.
ugroups.
Example:
$g->set(-ugrpadd=>sub{['Everyone','Guests']})
ugroups, uglist.
Example:
$g->set(-ugrpcnv=>sub{$_[0]->usersn})
uglist default code.
See also -ugflt.
unames.
Example:
$g->set(-unmsadd=>sub{$_[0]->usercn})
urfcnd
usdomain method evaluates this sub or returns
value from CGI::Bus::uauth.
See also -userver, userver
user method evaluates this sub or returns user name got from web server.
userver method evaluates this sub or returns
value from CGI::Bus::uauth.
See also -usdomain, usdomain
userauth evaluates this sub or calls CGI::Bus::uauth->'auth'
if there is no current user.
Authentication options will be passed to CGI::Bus::uauth->'auth'.
user.
Example:
$g->set(-usercnv=>sub{lc($_[0]->usercn)});
userauth().
0 - never
1 - when required, i.e. for file store operation
2 - always and early
set(-import),
CGI module method,
automatic CGI::Bus subobject.
Sets new object slot 'CGI::Bus' to application object.
See also Creation and Setup, Internals
-bpath with given subpath added.
See also Locations.
-burl with given subpath and parameters added.
See also Locations.
CGI objectCGI predefined object stored in -cgi
DBI objectDBI objectDBI object stored in -dbi
htmlescape, urlescape, dbquote.
htmlescape, urlescape, dblikesc.
reset for almost all application object.
See also Creation and Setup, Internals
Error and Message processing, CGI::Carp
-dpath with given subpath added.
See also Locations.
-fcgicount, -fcgimax.
May be used in constructs like:
while ($s =CGI::Bus::fcgicount($s,-fcgimax=>...)) {};
while (1) {$s =CGI::Bus::new($s,-fcgimax=>...); ...; last until $s->fcgicount};
-fpath, -furf, -furl
with given subpath added.
Default is ppath, fpath, purl.
See also Locations.
-hpath, -hurf, -hurl
with given subpath added.
Default is ppath, hpath, purl.
See also Locations.
CGI::escapeHTML call.
See also urlescape, dbquote, dblikesc.
htmlescape, but with
text area formatting improved with ' ' signs and '<code>' tags as needed;
'<br />' and '<a href=' tags;
URLs;
relative URLs marked with 'host://' and 'url://' protocols.
CGI::start_html(?parameters) call.
Default parameters are given from -htmlstart slot.
CGI::textarea call, but with additional attributes:
-arows=>min autosizes widget to it's content.
-hrefs=>1 searches HTML hyperlinks in content and displays them.
Implemented in CGI::Bus::wg.
CGI::textfield call, but with additional attributes:
-asize=>min autosizes widget to it's content.
Implemented in CGI::Bus::wg.
htpgend.
htmlstart, -htpfstart.
-htpgbot and
CGI->end_html call.
httpheader, htmlstart,
-htpgstart, -htpgtop
CGI::header(?parameters).
Default parameters are given from -httpheader slot.
CGI::Bus object.
Uses AUTOLOAD like principles, but does not attaches
object created to CGI::Bus object.
Creation and Setup, Internals
orarg('-d','c:/home','c:/users') returns first
existed directory.
pushmsg if 'h'ide option is not set.
Non zero return code will produce die if 'i'gnore option is not set.
The last argument may be sub{} to print to STDIN of the command.
param callparam call, optimising AUTOLOADing.
See also qparam
-ppath with given subpath added.
See also Locations.
AUTOLOAD, cgi
-problem.
See also Error and Message processing
-purl with given subpath and parameters added.
See also Locations.
-pushlog file
CGI::param call extended
-qpath with given subpath added.
See also Locations.
CGI::param('_run') ||CGI::param('') ||CGI::param('run')
-qurl with given subpath and parameters added.
See also Locations.
cgi or Apache->request.
Creation and Setup, Internals
Creation and Setup
-spath with given subpath added.
See also Locations.
strftime format.
Default mask is 'yyyy-mm-dd hh:mm:ss'.
Default time is localtime(time).
-purl with given subpath and parameters added.
See also Locations.
time number of seconds.
See strtime for mask constructions and default mask.
-tpath with given subpath added.
See also Locations.
-uadmins) or
an administrator of user or group given
(checked against CGI::Bus::udata)?
What names are managed by current user?
-uglist
unames and ugroups
-ugroups.
user, usercn, lowercase of this names.
See also ugnames.
-urfcnd.
CGI::escape call.
See also htmlescape, dbquote, dblikesc.
user result as a part.
See also -usdomain, CGI::Bus::uauth.
-user.
-login script back redirecting;
by application, using -login screen back redirecting;
by web server, redirecting to -login directory.
First two methods uses signature cookies.
Last method on Microsoft IIS requests 'RevertToSelf' deimpersonation
using Win32::API and requires low process insulation.
See also -userauth, -w32IISdpsn, CGI::Bus::uauth.
userauth.
user value before -usercnv
usdomain value removed if present.
-userver, CGI::Bus::uauth.
Error and Message processing, CGI::Carp
Version 0.62, improvement release.
New CGI::Bus::tm -banner.
Corrected 'xcopy' command call under PerlEx.
Version 0.61, improvement release.
Corrections for Active Perl/PerlIS 5.8 and CGI 3.20:
'use CGI qw(-nph -no_xhtml)'; '$CGI::Q =$s->{-cgi}';
new url fixing CGI::url.
Fixed for newer CGI peculiarities: 'use CGI qw(-no_xhtml)', CGI->br, print->br.
Fixed CGI::Bus::tmsql::fsacl considering 'cacls' for invalid user names.
Changed htmlddlb, the first parameter, input widget, became positional, but may be empty.
Changed htmlddlb, leading ``\tmsab\t'' hints to try Microsoft Address Book before if possible.
New -w32IISdpsn slot.
New -ugrpadd slot.
Version 0.60, improvement release.
New dbquote and dblikesc methods.
Improved styles/classes in CGI::Bus and CGI::Bus::tm.
CGI::Bus::tmsql QBF expressions extended with 'rlike', 'regexp', 'similar to' operators.
CGI::Bus supplied with default -style for -htmlstart;
CGI::Bus::upws screens corrected using style names.
CGI::Bus::tm, CGI::Bus::tmsql, CGI::Bus::upws, CGI::Bus::wg: 'font size=-1' replaced with 'style=``font-size: smaller;''', class names somewere added to improve CSS behaviour.
Version 0.59, improvement release.
tpath usage replaced with dpath
in CGI::Bus::udata and CGI::Bus::upws;
-tpath is not used directly inside CGI::Bus now,
but only as -dpath default value
and for CGI $TempFile::TMPDIRECTORY.
Some corrections in CGI::Bus::wg 'ddlb' and CGI::Bus::tm behaviours.
CGI::Bus::wg 'ddlb' and CGI::Bus::tmsql 'htmlddlb' changed - optional 'field' parameter added.
CGI::Bus::wg changed - 'ddlb' gives default value from the first field, 'ddlb' double clicking invokes the first field filling.
ugroups extended with new 'user name' parameter.
Additional CGI::Bus::tm '-opflg' options. New CGI::Bus::tm 'cmdfe' method. New CGI::Bus::tmsql '-rowsel1a', '-rowsel2a', '-rowsel3a' slots. HTML style names changed, style usage extended in CGI::Bus::tm, CGI::Bus::tmsql, CGI::Bus::upws.
New CGI::Bus::tmsql 'f'etch flag in '-flg' for 'cmdlst'.
CGI::Bus::tm changed implementing experimental '_tsw_LSO' interface for options embedded into views.
CGI::Bus::uauth fixed to return ['guest'] instead of empty list from 'ugroups'.
CGI::Bus::lngbase strings corrected.
CGI::Bus::tmsql 'cmdlst' changed to bind database columns to hash ref available from '-rowlst' and '-clst'.
CGI::Bus::tm 'evaluate' changed to execute some CGI::Bus::upws '_run' commands as full-text 'SEARCH' or user 'SETUP'.
CGI::Bus::tm 'qlst' changed to determine default view via '_' sign not only at the end of the view name, but at the end of the view label too.
New CGI::Bus::tmsql -listurm slots
locale used for sorting in some places.
Version 0.58, improvement release.
-udflt slot added.
'<>' uglist option added.
-unflt and -ugflt slots added.
Win32::OLE->Option(``Warn''=>0) used anywere (in CGI::Bus::wg, CGI::Bus::upws, CGI::Bus::uauth).
-endh slote developed for CGI::Bus::uauth ADSI data buffering.
CGI::Bus::uauth evoluted to buffer ADSI data inside dpath
for faster access and Apache usage.
CGI::Bus::tmsql - -swrite does not grant read right,
-sread should be used instead.
Changes in 'acltest' (-swrite excluded for '-lst','-sel')
and 'fsacl' (filesystem - excluded when read, '.htaccess' - excluded).
CGI::Bus::uauth
- migration to base on Windows ADSI,
other Windows intarfaces (and 'findgrp.exe') used at last,
-adsi slot ignored.
-debug levels shifted,
new level '1' produces debug output with ``display: none'' style,
operation rezult should be clicked to access.
This is useful to view SQL.
CGI::Bus::tm - record ID added to some command button URLs if available.
CGI::Bus::tm - some record view/edit form corrections.
CGI::Bus::tm
- -pxqc fields commented out as unused in transaction sequences.
CGI::Bus::tmsql - switch to view mode after insert/update/delete when versioning.
CGI::Bus::tmsql and CGI::Bus::tm - '-cmdCCC' view description slots implemented.
CGI::Bus::smtp
- addrtr method added.
'DHTML Edit Control for IE5' replaced with 'MSHTML Edit Control for IE5.5' in CGI::Bus::wg.
CGI::Bus::tm and CGI::Bus::tmsql little corrections.
unames code rewritten,
lowercases removed (-usercnv may be used),
-unmsadd slot added.
'DHTML Edit Control for IE5' experimentally used in CGI::Bus::wg.
Version 0.57, improvement release.
HTML classes added to support CSS.
Inline HTML styles changed to be compatible with Mozilla.
'Back' button behaviour changed - 'window.history.back()' follows 'window.history.go(-x)', this is useful for opened in new windows links.
Perl warnings will be shown at the bottom of the screen in debug modes.
CGI::Bus::uauth changed:
Microsoft IIS deimpersination code added
using 'RevertToSelf' via Win32::API.
Tried when finished with '/' sign -login URL.
See cource code comments.
CGI::Bus::wg changed: added user interface to close opened file attachments on Windows server.
Version 0.56 released
CGI::Bus::tm changed: 'htmlbar' button set behaviour.
CGI::Bus::tmsql changed: new '-listrnm' view description slot used in 'cmdlst' alike common '-listrnm' slot
CGI::Bus::tmsql fixed: Excluded 'order by', 'group by', 'limit' clauses from gant (timeline) chart minimum and maximum margins SQL 'select' command to escape fields to be defined in 'select' list.
'gwo' application example changed: added 'List Obj Hier' view and 'subject_q' virtual field.
CGI::Bus::tmsql new '-wherepar' view description slot
CGI::Bus::tm cmdfrm fixed:
'l'ist, 's'elect, '``'quoted only fields (-flg =~/^['''ls]*$/)
are not considered in form layout now
CGI::Bus, CGI::Bus::wg, CGI::Bus::tmsql changed: special URL protocol 'url://' added, translated as relative to script URL. Special URL protocols new aliaces: host:// or urlh://, url:// or urlr://, fsurl:// or urlf://
Version 0.55 released
htmlescapetext() method introduced, 'gwo' and 'notes' examples changed.
CGI::Bus::tm 'cmdfrm' text area formatting improved with ' ' signs and '<code>' tags as needed.
CGI::Bus::tmsql 'acltest' - fixed record read delegation via '-readsub': it processes further only array refs from 'acl' now, false values will be ignored in loop, true - returned. 'gwo' and 'notes' examples changed.
microtest, microenv increased using getlogin() or Win32::LoginName().
CGI::Bus, CGI::Bus::upws::search changed: '_*(login|auth|a|ntlm|search|guest)' special IIS subURLs introduced:
/cgi-bin/cgi-bus - may be common unimpersonated URL under IUSR_xxx user, and moreover
/cgi-bin/login/cgi-bus - common impersonated virtual URL of /cgi-bin/cgi-bus,
/cgi-bin/search/cgi-bus - common guest access unimpersonated virtual URL of /cgi-bin/cgi-bus under IUSR_xxx_1 user
userauthopt changed:
avoiding '_*(login|auth|a|ntlm|search|guest)' IIS impersonated script subURL
with authentication or redirection as needed.
CGI::Bus::psp modified: [filename, base] filename syntax may now be used to generate '<base href...>' tag
CGI::Bus::tmsql modified: new '-htaccess' subslot of '-acd'
CGI::Bus::tm fixed:
cmdfrm lost line breacks when displaying text areas with embedded URLs
CGI::Bus::wg changed: 'fsdir' displays now filesystem URLs only in edit mode. Files URLs supplied with '_blank' option.
CGI::Bus::tmsql changed: new 'thead' and 'tbody' HTML tags in cmdlst.
gwo.cgi changed: 'otime' field SQL formula changed from '..., gwo.utime)' to '..., COALESCE(gwo.etime, gwo.utime)'.
gwo.cgi new: 'All News', 'Our News', 'Pers News' views.
CGI::Bus::wg changed:
textarea: special URL protocols may be used and translated in the text:
'host://' -> '/'.
CGI::Bus::tmsql changed:
-inp Field Description: 'htmltextarea' URLs display behaviour
is extended with special URL protocol 'fsurl://' to be translated
to fsurl value.
CGI::Bus::upws new:
-search, -searchms slots.
Problem: Microsoft Index Server calls should be impersonalisated
to obtain rightly ACL checked results.
Version 0.54 released
CGI::Bus::psp changed:
parse omits text given before m/<(!DOCTYPE|html|head)/i,
so mixed CGI/HTML page files may be parsed.
Synopsis changed to reflect this feature.
CGI::Bus::tm new:
-logo slot
CGI::Bus::tm changed:
htmlbar and cmdhlp behaviour for '<' -opflg.
CGI::Bus::upws changed:
scrleft discards duplicate rows to display.
'label|URL|_target|URL' syntax added to deal with a complex pages.
Logotype (-logo) enclosed within URL filling the current browser window
with scrleft.
CGI::Bus::upws new:
'USITES' CGI param for scrusites identifier or number
- to use multiple sets of users home pages, empty parameter
means default page set
CGI::Bus::tmsql changed:
cmdlst - fixed parsing of query condition parameters with
leading '<>=' operators
acltest - field may contain several user names delimited with commas with
spaces allowed. Regular expression is used instead of 'eq' comparison.
aclsel - sub{}, m/^\$_(regexp|rlike)$/i, m/.*\$_.*/
special parameters introduced
for the field name followed
- gwo.cgi - fields 'subject_v' and 'alist_v' used in all views, perconal views filters changed - uauth.pm - 'ugroups' on Win32 returns global group names prefixed with domain name for users from foreign domains. '-ugrpcnv' should be commented out. 'gwo.cgi' and 'notes.cgi' default group detection condition changed - gwo.cgi - fields 'subject_v', 'plist_v', 'alist_v' added to use in views, timeline view changed using this fields - timeline view supplied with predefined date margin columns from '-gant1' and '-gant2', so 'gwo.cgi' changed
- IE6 with IIS problem detected - on 'post' requests browser brings IIS to authentication/impersonalisation of the script to be not impersonalisated, but placed in the same directory as requiring web server authentication 'uauth.cgi' - tm.pm, tmsql.pm: '-refresh' view and common slots - tm.pm, tmsql.pm: '-htmlts', '-htmlte', '-width' common slots; '-width' field slot - cache-control http header mentioned in 'config.pl' - form tag generation with '-acceptcharset' attribute given from '-httpheader' - notes.cgi - 'mailto' field added - install-db.pl script to install or upgrade applications database - tmsql.pm: '-width' view attribute - tmsql.pm: 'explain select...' 'pushmsg' when listing data
- tmsql.pm: '-htmlts', '-htmlte', '-gant1', '-gant2', '-htmlg1' view slots. - tmsql.pm: '-rowsav1' and '-rowsav2' events.
- gwo.cgi - timeline chart view using '-gant1' and '-gant2'
view slots.
- gwo.cgi - mailsend code improved using '-rowsav1' event.
- uauth.pm - filtered rows with space chars only 'findgrp.exe'
may return.
- tm.pm - textarea fields displays linebreaks when viewed
- tm.pm - 'Select' command turns to view mode from edit mode,
'Edit' command removed from edit mode;
'!s'elect command button '-opflg' flag
- Bus.pm - '-debug=>3' recurse loop corrected
- tmsql.pm - MySQL 'LIMIT rows' clause generation - uauth.pm - attempting to use a Windows2000 ADSI, see issues in the source code - uauth.pm, wg.pm - case insensitive sorting - notes.cgi - update for indexes - gwo.cgi - update for indexes, may be not useful - Bus.pm -debug slot levels - Bus.pm -iurl slot added - upws.pm - using icons based on -iurl slot value - all printed HTML tags and attributes are lowercase as from CGI module - tm.pm - image toolbar using -iurl slot, uncomment at the beginning of the source to disable
Implemented and Documented.
- -dpath, -ppath, -purl default values review - username SSL value review - naming review - review & test & debug
Andrew V Makarow <makarow at mail.com>
|
CGI::Bus - Web and DBI Application object |