caveman2-widgets
Weblocks like widgets for caveman2.
CAVEMAN2-WIDGETS.UTIL
-
Variable
*APPLICATION-ROOT*
(asdf/system:system-source-directory :caveman2-widgets)
-
Variable
*STATIC-DIRECTORY*
(merge-pathnames #p"static/" caveman2-widgets.util:*application-root*)
-
Variable
*JS-DIRECTORY*
(merge-pathnames #p"js/" caveman2-widgets.util:*static-directory*)
-
Variable
*CSS-DIRECTORY*
(merge-pathnames #p"css/" caveman2-widgets.util:*static-directory*)
-
Variable
*AUTOMATICALLY-SET-LANGUAGES*
t
-
Variable
*LANGUAGE-KEY-IN-SESSION*
:accept-language
-
Variable
+TRANSLATE+
#'(lambda (caveman2-widgets.util::text &key caveman2-widgets.util::plural-p caveman2-widgets.util::genitive-form-p caveman2-widgets.util::items-count caveman2-widgets.util::accusative-form-p caveman2-widgets.util::language &allow-other-keys) caveman2-widgets.util::text)
This should be a function which should translate a given text. You can modify it to your needs. By default this function does nothing. @param plural-p @param genitive-form-p @param items-count @param accusative-form-p @param language -
Function
GET-TRIMMED-CLASS-NAME
(obj &key (get-all nil))@param obj The object of which the name is required @param get-all-self If non-nil returns the entire hierarchy. -
Function
CLEAN-LIST-OF-BROKEN-LINKS
(some-list) -
Function
GET-VALUE-FOR-CONS-LIST
(some-list key) -
Function
DEFROUTE-STATIC
(uri-path path app content-type) -
Generic-Function
APPEND-ITEM
(this item) -
Method
APPEND-ITEM
((this t) (item t)) -
Generic-Function
DELETE-ITEM
(this item) -
Method
DELETE-ITEM
((this t) (item t)) -
Generic-Function
FIND-ITEM
(this to-find) -
Method
FIND-ITEM
((this t) (item t)) -
Function
HAS-TRAILING-SLASH
(str) -
Function
STRING-CASE-INSENSITIVE=
(str1 str2) -
Generic-Function
(setf JAVASCRIPT-AVAILABLE)
(value session) -
Method
(setf JAVASCRIPT-AVAILABLE)
(value (session hash-table)) -
Generic-Function
JAVASCRIPT-AVAILABLE
(session) -
Method
JAVASCRIPT-AVAILABLE
((session hash-table)) -
Function
CHECK-AND-SET-LANGUAGE
(request session) -
Generic-Function
ACCEPTED-LANGUAGES
(session) -
Method
ACCEPTED-LANGUAGES
((session hash-table)) -
Generic-Function
(setf ACCEPTED-LANGUAGES)
(value session) -
Method
(setf ACCEPTED-LANGUAGES)
(value (session hash-table)) -
Method
APPEND-ITEM
((this <widget-holder>) (item <widget>)) -
Method
DELETE-ITEM
((this <widget-holder>) (item <widget>)) -
Method
FIND-ITEM
((this <widget-holder>) (to-find string)) -
Method
APPEND-ITEM
((this <dirty-widget-holder>) (item <widget>)) -
Method
DELETE-ITEM
((this <dirty-widget-holder>) (item <widget>)) -
Method
APPEND-ITEM
((this <select-field>) (item <option-field>)) -
Method
APPEND-ITEM
((this <radio-field>) (item string)) -
Method
APPEND-ITEM
((this <form-widget>) (item <form-field>)) -
Method
APPEND-ITEM
((this <composite-widget>) (item <widget>)) -
Method
APPEND-ITEM
((this <table-widget>) (item cons))@param item Must not have more than two values. The first value is the keyword which should be displayed when a <TABLE-ITEM> object is accessed. The second value is the header text for the column. -
Method
APPEND-ITEM
((this <header-widget>) (item <js-file>)) -
Method
APPEND-ITEM
((this <header-widget>) (item <css-file>)) -
Method
APPEND-ITEM
((this <header-widget>) (item string))The given item will be added to the <head> tag as given. -
Method
FIND-ITEM
((this <navigation-widget>) (item string))@param item The URI path as string. -
Method
APPEND-ITEM
((this <navigation-widget>) (item list))@param item This should be a list which should looke like that: (list "pagetitle" "uri-path" <widget-for-pagetitle>).
CAVEMAN2-WIDGETS.WIDGET
-
Variable
*PROTECTION-CIRCLES-SESSION-KEY*
:protection-circles
-
Variable
*REST-PATH*
"rest"
-
Variable
*JAVASCRIPT-CHECKER-PATH*
"javascript-checker"
-
Variable
*WEB*
nil
An <app>-instance -
Variable
*JAVASCRIPT-PATH*
"/widgets/js"
An absolute path where caveman2-widgets' JavaScript files can be accessed. -
Variable
*CSS-PATH*
"/widgets/css"
An absolute route where caveman2-widgets' CSS files can be accessed. -
Variable
*WIDGETS-JS-FILENAME*
"widgets.js"
The filename of the JavaScript file which manages all standard widget functionality. -
Variable
*WIDGETS-CSS-FILENAME*
"widgets.css"
The filename of the CSS file which manages all standard widget styles. -
Class
<WIDGET>
-
ID
Reader:ID
-
SCOPE
Reader:WIDGET-SCOPE
-
PROTECTED
Reader:PROTECTED
- This is a list of protection circles. If NIL (or an empty list) the widget is not procted. If non-nil it should be a list of keywords. That list indicates which keywords (or authorized circles) the requester has in his session. Use PROTECT-WIDGET to use this slot.
-
-
Generic-Function
PROTECT-WIDGET
(widget for)@return The WIDGET object. -
Method
PROTECT-WIDGET
((widget <widget>) (for list))@param for A list of keywords -
Method
PROTECT-WIDGET
((widget <widget>) (for symbol))@param for A keyword -
Function
AUTHORIZED
(widget &optional (session *session*)) -
Function
ADD-AUTHORIZATION
(circle &optional (session *session*)) -
Function
REMOVE-AUTHORIZATION
(circle &optional (session *session*)) -
Generic-Function
RENDER-WIDGET-HEADER
(this) -
Generic-Function
RENDER-WIDGET-BODY
(this) -
Generic-Function
RENDER-WIDGET
(this)@return Returns the HTML representation of the widget as string. It is intended to use this within a simple HTML transfer or embedded in another page. -
Method
RENDER-WIDGET
((this <widget>)) -
Generic-Function
RENDER-WIDGET-REST
(this method args)@return Returns the HTML representation of the widget as string. To generate a method for a specific HTTP method you can do the following: (defmethod render-widget-rest ((this <widget>) (method (eql :get)) (args t)) "HTML output for the REST when GET.") -
Method
RENDER-WIDGET-REST
((this <widget>) method args) -
Method
RENDER-WIDGET-REST
((this <widget>) method args) -
Macro
MAKE-WIDGET
(scope class &rest obj-args)@param obj-args The parameter which are passed to the constructor for the new widget. -
Function
SET-WIDGET-FOR-SESSION
(session-tag widget &optional (session *session*) &key (force nil))Saves a widget in the session variable. This should be considered ONLY for session scoped widgets. Only adds WIDGET if there is no widget at SESSION-TAG already. @param force If non-nil overwrites the already stored value. @return The current value in the SESSION at position SESSION-TAG. -
Function
GET-WIDGET-FOR-SESSION
(session-tag &optional (session *session*))Gets a previously saved widget from the session variable (e.g. to render it). -
Function
REMOVE-WIDGET-FOR-SESSION
(session-tag &optional (session *session*))Removes a saved widget from the session variable. -
Function
MARK-DIRTY
(widget &optional (session *session*))Marks a widget that it should be rendered ASAP. -
Variable
*DIRTY-OBJECTS-URI-PATH*
"/widgets/dirty"
-
Function
INIT-MARK-DIRTY
(web &optional (uri-path *dirty-objects-uri-path*)) -
Method
RENDER-WIDGET
((this <button-widget>)) -
Method
RENDER-WIDGET
((this <link-widget>)) -
Method
RENDER-WIDGET
((this <form-field>)) -
Method
RENDER-WIDGET
((this <form-field>)) -
Method
RENDER-WIDGET
((this <input-field>)) -
Method
RENDER-WIDGET
((this <option-field>)) -
Method
RENDER-WIDGET
((this <select-field>)) -
Method
RENDER-WIDGET
((this <radio-field>)) -
Method
RENDER-WIDGET
((this <form-widget>)) -
Method
RENDER-WIDGET
((this <string-widget>)) -
Method
RENDER-WIDGET
((this <composite-widget>)) -
Method
RENDER-WIDGET
((this <hcomposite-widget>)) -
Method
RENDER-WIDGET
((this <function-widget>)) -
Method
RENDER-WIDGET-HEADER
((this <table-widget>)) -
Method
RENDER-WIDGET-BODY
((this <table-widget>)) -
Method
RENDER-WIDGET
((this <table-widget>)) -
Method
RENDER-WIDGET
((this <table-widget>)) -
Method
RENDER-WIDGET
((this <viewgrid-widget>)) -
Method
RENDER-WIDGET
((this <border-widget>)) -
Method
RENDER-WIDGET
((this <login-widget>)) -
Method
RENDER-WIDGET
((this <js-file>)) -
Method
RENDER-WIDGET
((this <css-file>)) -
Method
RENDER-WIDGET
((this <header-widget>)) -
Method
RENDER-WIDGET
((this <html-document-widget>)) -
Method
RENDER-WIDGET
((this <menu-navigation-widget>)) -
Method
RENDER-WIDGET
((this <blank-navigation-widget>))
Also exports
CAVEMAN2-WIDGETS.UTIL:FIND-ITEM
CAVEMAN2-WIDGETS.CALLBACK-WIDGET
-
Function
GET-FROM-CALLBACK-ARGS
(key args)@param key A string which might be in the args @param args The value passed by a <CALLBACK-WIDGET> in its callback function. -
Class
<CALLBACK-WIDGET>
(<WIDGET>
)-
LABEL
Reader:LABEL
-
CALLBACK
Reader:CALLBACK
-
URI-PATH
Reader:URI-PATH
- This slot should give the exact path to access this widget.
-
HTTP-METHOD
Reader:HTTP-METHOD
- This slot should be one of the HTTP methods as keyword (e.g. :post or :get
-
CLASSES
Accessor:CLASSES
-
-
Variable
*BUTTON-CALL-PATH*
"buttons"
-
Class
<BUTTON-WIDGET>
(<CALLBACK-WIDGET>
)The callback function will be called when the user presses the button.No slots. -
Variable
*LINK-CALL-PATH*
"links"
-
Class
<LINK-WIDGET>
(<CALLBACK-WIDGET>
)The callback function will be called when the user clickes the link. The function must return a string. The returned string should be an URL to which the server should redirect.-
TARGET-FOREIGN-P
- When the given link redirects absolute (like http://...).
-
-
Class
<FORM-FIELD>
-
NAME
Reader:NAME
-
LABEL
Accessor:LABEL
- The label which will be placed before the <input> tag.
-
SUPPLIED
Accessor:SUPPLIED
- A highly frequented slot. It tells if the form field was filled by the client.
-
REQUIRED
Accessor:REQUIRED
-
CHECK-FUNCTION
Accessor:CHECK-FUNCTION
- Checks the user input for flaws. Takes one argument - the string passed by the user. Should return non-nil if everything is correct.
-
ERROR-HAPPENED
Accessor:ERROR-HAPPENED
- A highly frequented slot. Non-nil indicates that an error occurred.
-
ERROR-MESSAGE
Accessor:ERROR-MESSAGE
- The error message that will be displayed if ERROR-HAPPENED is non-nil. The error message will be translated before rendered.
-
-
Class
<INPUT-FIELD>
(<FORM-FIELD>
)-
INPUT-TYPE
Reader:INPUT-TYPE
-
VALUE
Reader:VALUE
-
-
Class
<OPTION-FIELD>
-
VALUE
Reader:VALUE
-
DISPLAY-VALUE
Reader:DISPLAY-VALUE
- If NIL then the displayed value will equal the used value.
-
-
Class
<SELECT-FIELD>
(<FORM-FIELD>
)-
OPTIONS
Accessor:OPTIONS
-
MULTIPLE
Accessor:MULTIPLE
- Non-nil allows multiple choices.
-
-
Class
<RADIO-FIELD>
(<FORM-FIELD>
)-
OPTIONS
Accessor:OPTIONS
-
CHECKED-OPTION
Accessor:CHECKED-OPTION
- The option which is checked. Must be a number. Start with 0.
-
-
Class
<FORM-WIDGET>
(<BUTTON-WIDGET>
)-
INPUT-FIELDS
Reader:INPUT-FIELDS
- A list of <FORM-FIELD> objects.
-
CAVEMAN2-WIDGETS.DEFAULT-WIDGETS
-
Class
<STRING-WIDGET>
(<WIDGET>
)-
TEXT
Accessor:TEXT
-
-
Class
<COMPOSITE-WIDGET>
(<WIDGET>
)-
WIDGETS
Accessor:WIDGETS
-
-
Class
<HCOMPOSITE-WIDGET>
(<COMPOSITE-WIDGET>
)This is a Horizontal composite widget. Therefore it is essentially the same as the <COMPOSITE-WIDGET> with the difference that is displays its widgets horizontally.No slots. -
Class
<FUNCTION-WIDGET>
(<WIDGET>
)Uses a fucntion for rendering. The given function should return a string which will then be rendered.-
FN
Accessor:FN
-
-
Class
<TABLE-ITEM>
This class is used to display items in a widget. It essentially is only relevant for the GET-AS-LIST method which is used by the <TABLE-WIDGET>.No slots. -
Generic-Function
GET-AS-LIST
(this)This generic method should return the entire object as cons-list. If you want to hide certain slots, just keep them out of the list! -
Method
GET-AS-LIST
((this <table-item>)) -
Class
<TABLE-WIDGET>
(<COMPOSITE-WIDGET>
)-
PRODUCER
Reader:PRODUCER
- A function which supplies the table with <TABLE-ITEM> objects. It is possible to use a heterogenous list of <TABLE-ITEM> objects but it is strongly advised to watch out by doing so (accessing not available slots might cause an error!). The producer should be able to deliver a specific amount of items too (AMOUNT = m, ALREADY = n, LENGTH-P = nil => gets items from (m) to (m + n)). To know how many items are avaible please supply the key LENGTH-P which returns a number when non-nil. Consider the following lambda as producer: (lambda (&key amount (already 0) (length-p nil)) (list (make-instance '<table-item>)))
-
COLUM-DESCRIPTIONS
Reader:COLUMN-DESCRIPTIONS
- This is a list of cons which where the cons is one column. The first value of the cons is the keyword to display. The second value of the cons is the table header for that column. For the header (second value) you can use HTML code! Example: (list (list :firstcolumn "First column"))
-
-
Class
<VIEWGRID-ITEM>
No slots. -
Generic-Function
RENDER-AS
(this view) -
Method
RENDER-AS
((this <viewgrid-item>) (view (eql :full))) -
Method
RENDER-AS
((this <viewgrid-item>) (view (eql :short))) -
Method
RENDER-AS
((this <viewgrid-item>) (view (eql :oneline))) -
Class
<VIEWGRID-WIDGET>
(<WIDGET>
)-
PRODUCER
Reader:PRODUCER
- A function which supplies the table with <VIEWGRID-ITEM> objects. It is possible to use a heterogenous list of <VIEWGRID-ITEM> objects. The producer should be able to deliver a specific amount of items too (FROM = m, TO = n, LENGTH-P = nil => gets items from (m) to (m + n); FROM = m, TO = NIL, LENGTH-P = nil => gets items from (m) to LENGTH). To know how many items are avaible please supply the key LENGTH-P which returns a number when non-nil. Consider the following lambda as producer: (lambda (&key (from 0) (to nil) (length-p nil)) (list (make-instance '<table-item>)))
-
VIEW
Accessor:VIEW
- The value of this slot is passed to the RENDER-AS method. Therefore you can use an arbitary value but you have to provide an according method for that value!
-
ON-VIEW
Accessor:ON-VIEW
- Must either be NIL or a function which takes one argument. The passed argument is the item in the viewgrid which is viewed. If the value is NIL the client can't view a specific item.
-
ON-VIEW-LABEL
Accessor:ON-VIEW-LABEL
- The text which should be displayed on the button for the ON-VIEW callback.
-
MAX-ITEMS-TO-DISPLAY
Accessor:MAX-ITEMS-TO-DISPLAY
- Non-nil value must be a number which describes how many items will be displayed on each viewgrid page.
-
DISPLAY-SELECTOR
Accessor:DISPLAY-SELECTOR
- A page selector are the page numbers which the user can click to access the page. If NIL don't display a page selector. The non-nil value has to be the URI path in which the viewgrid is used. E.g. display-selector = "view" if the viewgrid is accessed on the page /view.
-
CURRENT-FROM
-
SELECTOR
-
PREV-BUTTON
-
NEXT-BUTTON
-
-
Class
<BORDER-WIDGET>
(<WIDGET>
)-
NORTH
Accessor:NORTH
-
EAST
Accessor:EAST
-
SOUTH
Accessor:SOUTH
-
WEST
Accessor:WEST
-
CENTER
Accessor:CENTER
-
CAVEMAN2-WIDGETS.LOGIN
-
Variable
*LOGIN-AUTHENTICATION-KEYWORD*
:login
This variable holds the keyword which is used within the session to indicated that a session holder is logged in (or not). -
Generic-Function
LOGGED-IN
(session) -
Method
LOGGED-IN
((session hash-table)) -
Generic-Function
(setf LOGGED-IN)
(value session) -
Method
(setf LOGGED-IN)
(value (session hash-table)) -
Class
<LOGIN-WIDGET>
(<COMPOSITE-WIDGET>
)-
LOGIN-AUTHENTICATOR
Reader:LOGIN-AUTHENTICATOR
- Must be a function that takes two parameters. The first is the username and the second is the password.
-
SIGNOUT-HOOK
Accessor:SIGNOUT-HOOK
- A functions which will be called after signing out.
-
LOGIN-FAILED
Accessor:LOGIN-FAILED
- For internal use only. This slot is used to indicate that the login procedure did not work.
-
LOGIN-FORM
Reader:LOGIN-FORM
-
LOGOUT-BUTTON
Reader:LOGOUT-BUTTON
-
CAVEMAN2-WIDGETS.DOCUMENT
-
Variable
*JQUERY-CDN-LINK*
"https://code.jquery.com/jquery-2.2.2.min.js"
The URL to access jQuery. -
Class
<JS-FILE>
(<FILE>
)No slots. -
Class
<CSS-FILE>
(<FILE>
)No slots. -
Class
<HEADER-WIDGET>
-
CSS-FILES
Reader:CSS-FILES
-
JS-FILES
Reader:JS-FILES
-
TITLE
Accessor:TITLE
-
ICON-PATH
Accessor:ICON-PATH
- The path to a specific image to use as icon for page.
-
CHARSET
Accessor:CHARSET
-
OTHER-HEADER-CONTENT
Reader:OTHER-HEADER-CONTENT
- A list of strings that will be directly put in the header tag.
-
-
Class
<HTML-DOCUMENT-WIDGET>
The body-widget will be wrapped in a div with the id "body" automatically. Rendering this widget automatically sets the language!-
HEADER
Accessor:HEADER
-
BODY
Accessor:BODY
-
BOTTOM
Accessor:BOTTOM
-
-
Macro
WITH-HTML-DOCUMENT
((document-symbol header &key (doc-kind '<html-document-widget>)) &rest body)@param document-symbol The symbol name to access the document. @param doc-kind The class which is used as HTML document. @param header A <HEADER-WIDGET> for this document.
CAVEMAN2-WIDGETS.NAVIGATION
-
Variable
*PORT*
nil
-
Generic-Function
(setf CURRENT-PAGE)
(value this) -
Method
(setf CURRENT-PAGE)
(value (this <navigation-widget>))@param value Must be an uri path string -
Class
<MENU-NAVIGATION-WIDGET>
(<NAVIGATION-WIDGET>
)No slots. -
Class
<BLANK-NAVIGATION-WIDGET>
(<NAVIGATION-WIDGET>
)No slots. -
Macro
DEFNAV
(base-path (header-widget pages &key (kind ''<menu-navigation-widget>) (bottom-widget nil) (session-key :nav-widget)))@param base-path The path for the navigation. Should have a starting "/". @param header-widget A <HEADER-WIDGET> for the navigation and it's children. @param pages A list of lists.
CAVEMAN2-WIDGETS
-
Variable
*INIT-WIDGETS-HOOKS*
'nil
This variable holds a list of functions which will be called when INIT-WIDGETS is evaluated. You add any function you like but the main idea was to add functions from caveman2-widgets based libraries/applications that need those variables at compile time. -
Function
INIT-WIDGETS
(webapp &key (port 8080) (translation-function +translate+) (javascript-path *javascript-path*) (css-path *css-path*) (rest-path *rest-path*) (button-call-path *button-call-path*) (link-call-path *link-call-path*) (dirty-objects-uri-path *dirty-objects-uri-path*) (login-authentication-keyword *login-authentication-keyword*) (automatically-set-languages *automatically-set-languages*))
Also exports
CAVEMAN2-WIDGETS.NAVIGATION:WITH-NAVIGATION-WIDGET
CAVEMAN2-WIDGETS.WIDGET:<WIDGET>
CAVEMAN2-WIDGETS.WIDGET:ID
CAVEMAN2-WIDGETS.CALLBACK-WIDGET:VALUE
CAVEMAN2-WIDGETS.CALLBACK-WIDGET:OPTIONS
CAVEMAN2-WIDGETS.UTIL:DEFROUTE-STATIC
CAVEMAN2-WIDGETS.CALLBACK-WIDGET:CHECKED-OPTION
CAVEMAN2-WIDGETS.DOCUMENT:<CSS-FILE>
CAVEMAN2-WIDGETS.WIDGET:MAKE-WIDGET
CAVEMAN2-WIDGETS.DEFAULT-WIDGETS:<HCOMPOSITE-WIDGET>
CAVEMAN2-WIDGETS.WIDGET:PROTECTED
CAVEMAN2-WIDGETS.WIDGET:SET-WIDGET-FOR-SESSION
CAVEMAN2-WIDGETS.CALLBACK-WIDGET:URI-PATH
CAVEMAN2-WIDGETS.DEFAULT-WIDGETS:<BORDER-WIDGET>
CAVEMAN2-WIDGETS.DOCUMENT:WITH-HTML-DOCUMENT
CAVEMAN2-WIDGETS.CALLBACK-WIDGET:<CALLBACK-WIDGET>
CAVEMAN2-WIDGETS.CALLBACK-WIDGET:INPUT-TYPE
CAVEMAN2-WIDGETS.DEFAULT-WIDGETS:<STRING-WIDGET>
CAVEMAN2-WIDGETS.CALLBACK-WIDGET:<RADIO-FIELD>
CAVEMAN2-WIDGETS.CALLBACK-WIDGET:INPUT-FIELDS
CAVEMAN2-WIDGETS.CALLBACK-WIDGET:*LINK-CALL-PATH*
CAVEMAN2-WIDGETS.CALLBACK-WIDGET:<FORM-FIELD>
CAVEMAN2-WIDGETS.CALLBACK-WIDGET:REQUIRED
CAVEMAN2-WIDGETS.CALLBACK-WIDGET:<FORM-WIDGET>
CAVEMAN2-WIDGETS.NAVIGATION:BASE-PATH
CAVEMAN2-WIDGETS.DEFAULT-WIDGETS:RENDER-AS
CAVEMAN2-WIDGETS.CALLBACK-WIDGET:<BUTTON-WIDGET>
CAVEMAN2-WIDGETS.DEFAULT-WIDGETS:WEST
CAVEMAN2-WIDGETS.DEFAULT-WIDGETS:GET-AS-LIST
CAVEMAN2-WIDGETS.NAVIGATION:CURRENT-PAGE
CAVEMAN2-WIDGETS.DOCUMENT:CHARSET
CAVEMAN2-WIDGETS.DEFAULT-WIDGETS:<TABLE-ITEM>
CAVEMAN2-WIDGETS.LOGIN:<LOGIN-WIDGET>
CAVEMAN2-WIDGETS.LOGIN:LOGIN-FORM
CAVEMAN2-WIDGETS.WIDGET:REMOVE-WIDGET-FOR-SESSION
CAVEMAN2-WIDGETS.CALLBACK-WIDGET:<INPUT-FIELD>
CAVEMAN2-WIDGETS.UTIL:APPEND-ITEM
CAVEMAN2-WIDGETS.DOCUMENT:ICON-PATH
CAVEMAN2-WIDGETS.WIDGET:*PROTECTION-CIRCLES-SESSION-KEY*
CAVEMAN2-WIDGETS.DOCUMENT:<HTML-DOCUMENT-WIDGET>
CAVEMAN2-WIDGETS.UTIL:ACCEPTED-LANGUAGES
CAVEMAN2-WIDGETS.CALLBACK-WIDGET:<LINK-WIDGET>
CAVEMAN2-WIDGETS.DEFAULT-WIDGETS:ON-VIEW
CAVEMAN2-WIDGETS.DEFAULT-WIDGETS:MAX-ITEMS-TO-DISPLAY
CAVEMAN2-WIDGETS.CALLBACK-WIDGET:CALLBACK
CAVEMAN2-WIDGETS.DOCUMENT:<HEADER-WIDGET>
CAVEMAN2-WIDGETS.NAVIGATION:<MENU-NAVIGATION-WIDGET>
CAVEMAN2-WIDGETS.NAVIGATION:<BLANK-NAVIGATION-WIDGET>
CAVEMAN2-WIDGETS.UTIL:DELETE-ITEM
CAVEMAN2-WIDGETS.DEFAULT-WIDGETS:<TABLE-WIDGET>
CAVEMAN2-WIDGETS.LOGIN:LOGGED-IN
CAVEMAN2-WIDGETS.LOGIN:LOGOUT-BUTTON
CAVEMAN2-WIDGETS.DEFAULT-WIDGETS:SOUTH
CAVEMAN2-WIDGETS.NAVIGATION:SESSION-TAG
CAVEMAN2-WIDGETS.CALLBACK-WIDGET:DISPLAY-TYPE
CAVEMAN2-WIDGETS.DOCUMENT:OTHER-HEADER-CONTENT
CAVEMAN2-WIDGETS.DEFAULT-WIDGETS:NORTH
CAVEMAN2-WIDGETS.CALLBACK-WIDGET:LABEL
CAVEMAN2-WIDGETS.WIDGET:AUTHORIZED
CAVEMAN2-WIDGETS.DOCUMENT:BODY
CAVEMAN2-WIDGETS.DEFAULT-WIDGETS:WIDGETS
CAVEMAN2-WIDGETS.UTIL:CHECK-AND-SET-LANGUAGE
CAVEMAN2-WIDGETS.CALLBACK-WIDGET:<SELECT-FIELD>
CAVEMAN2-WIDGETS.DEFAULT-WIDGETS:PROGRESSIVE-P
CAVEMAN2-WIDGETS.DOCUMENT:*JQUERY-CDN-LINK*
CAVEMAN2-WIDGETS.NAVIGATION:DEFNAV
CAVEMAN2-WIDGETS.WIDGET:PROTECT-WIDGET
CAVEMAN2-WIDGETS.UTIL:*LANGUAGE-KEY-IN-SESSION*
CAVEMAN2-WIDGETS.WIDGET:RENDER-WIDGET-REST
CAVEMAN2-WIDGETS.DOCUMENT:TITLE
CAVEMAN2-WIDGETS.DOCUMENT:BOTTOM
CAVEMAN2-WIDGETS.DEFAULT-WIDGETS:DEFAULT-PROGRESSIVE-LOAD-VALUE
CAVEMAN2-WIDGETS.CALLBACK-WIDGET:CLASSES
CAVEMAN2-WIDGETS.WIDGET:GET-WIDGET-FOR-SESSION
CAVEMAN2-WIDGETS.CALLBACK-WIDGET:ERROR-MESSAGE
CAVEMAN2-WIDGETS.DEFAULT-WIDGETS:TEXT
CAVEMAN2-WIDGETS.DEFAULT-WIDGETS:<COMPOSITE-WIDGET>
CAVEMAN2-WIDGETS.DOCUMENT:<JS-FILE>
CAVEMAN2-WIDGETS.UTIL:FIND-ITEM
CAVEMAN2-WIDGETS.WIDGET:WIDGET-SCOPE
CAVEMAN2-WIDGETS.NAVIGATION:COMPOSITE
CAVEMAN2-WIDGETS.DOCUMENT:<BODY-WIDGET>
CAVEMAN2-WIDGETS.WIDGET:RENDER-WIDGET
CAVEMAN2-WIDGETS.DEFAULT-WIDGETS:<FUNCTION-WIDGET>
CAVEMAN2-WIDGETS.CALLBACK-WIDGET:ERROR-HAPPENED
CAVEMAN2-WIDGETS.CALLBACK-WIDGET:CHECK-FUNCTION
CAVEMAN2-WIDGETS.CALLBACK-WIDGET:*BUTTON-CALL-PATH*
CAVEMAN2-WIDGETS.WIDGET:MARK-DIRTY
CAVEMAN2-WIDGETS.DEFAULT-WIDGETS:FN
CAVEMAN2-WIDGETS.LOGIN:LOGIN-AUTHENTICATOR
CAVEMAN2-WIDGETS.CALLBACK-WIDGET:NAME
CAVEMAN2-WIDGETS.DEFAULT-WIDGETS:<VIEWGRID-ITEM>
CAVEMAN2-WIDGETS.DEFAULT-WIDGETS:COLUMN-DESCRIPTIONS
CAVEMAN2-WIDGETS.DOCUMENT:HEADER
CAVEMAN2-WIDGETS.CALLBACK-WIDGET:GET-FROM-CALLBACK-ARGS
CAVEMAN2-WIDGETS.UTIL:JAVASCRIPT-AVAILABLE
CAVEMAN2-WIDGETS.DEFAULT-WIDGETS:VIEW
CAVEMAN2-WIDGETS.DEFAULT-WIDGETS:ON-VIEW-LABEL
CAVEMAN2-WIDGETS.DEFAULT-WIDGETS:<VIEWGRID-WIDGET>
CAVEMAN2-WIDGETS.DEFAULT-WIDGETS:EAST
CAVEMAN2-WIDGETS.CALLBACK-WIDGET:MULTIPLE
CAVEMAN2-WIDGETS.CALLBACK-WIDGET:SUPPLIED
CAVEMAN2-WIDGETS.CALLBACK-WIDGET:<OPTION-FIELD>
CAVEMAN2-WIDGETS.LOGIN:SIGNOUT-HOOK