Common Lisp Package: WEBLOCKS

Weblocks is a Common Lisp framework that eases the pain of web application development. It achieves its goals by standardizing on various libraries, providing flexible and extensible generic views, and exposing a unique widget-based approach to maintaining UI state.

README:

FUNCTION

Public

ADD-GET-PARAM-TO-URL (URL NAME VALUE)

Based on Edi's code in URL-REWRITE but uses & instead of & which is more appropriate for our uses.

ADOPT-WIDGET (PARENT WIDGET)

Like (setf (widget-parent WIDGET) PARENT), but signal an error when WIDGET already has a parent (even if it's PARENT).

AJAX-REQUEST-P

Detects if the current request was initiated via AJAX by looking for 'X-Requested-With' http header. This function expects to be called in a dynamic hunchentoot environment.

ALIST->PLIST (ALIST)

Converts an alist to plist.

ANONYMOUS-USER-COUNT

Returns the number of anonymous users on the server.

ANSWER (CONTINUATION &OPTIONAL RESULT)

Returns control to location saved in CONTINUATION, which may be a callee widget or the continuation object explicitly. Continuation is called with RESULT (defaulting to NIL). If the widget doesn't have a continuation, recursively tries its parents.

APPEND-CUSTOM-FIELDS (CUSTOM-FIELDS ARGS)

Appends 'custom-fields' to the end of custom fields that are already defined in 'args'.

ARTICLIZE (WORD)

Prepends a word with a proper indefinite article. Returns 'an apple' for 'apple' and 'a table' for 'table'.

ASDF-SYSTEM-DIRECTORY (ASDF-SYSTEM-NAME)

Computes the directory in which the .asdf file for a given ASDF system resides.

ATTRIBUTIZE-PRESENTATION (PRESENTATION)

Attributizes presentation name.

AUTHENTICATED-SERVER-USERS

Returns authentication information found in each session on the server. Sessions without authentication information are ignored.

AUTHENTICATEDP

Returns nil if the current user is not authenticated. If the user is authenticated, authentication information stored in the session is returned.

BEGIN-COLLAPSIBLE-SECTION (TITLE)

Begin a section that is expandable/collapsible via clicks on its heading.

BEGIN-SECTION (TITLE &KEY (CONTAINER-CLASS ) (CONTAINER-ID (GEN-ID)) (HEADING T) HEADING-ONCLICK HEADING-CLASS)

Begin a section (a DIV container) on the client. The section is preceded by a heading 3 unless HEADING is NIL.

BUILD-DEPENDENCIES (DEP-LIST &OPTIONAL (APP (CURRENT-WEBAPP)))

Utility function: convert a list of either dependency objects or an alist of dependencies into a list of dependency objects. Used mostly when statically specyfing application dependencies, where alists are more convenient.

CALL/CC (CC)

Implements delimited continuations.

CLASS-VISIBLE-SLOTS (CLS &KEY READABLEP WRITABLEP)

Converts 'cls' to class object if it is a name, and calls 'class-visible-slots-impl'.

COMPUTE-PUBLIC-FILES-PATH (ASDF-SYSTEM-NAME &OPTIONAL (SUFFIX pub))

Computes the directory of public files. The function uses the following protocol: it finds the canonical path of the '.asd' file of the system specified by 'asdf-system-name', and goes into 'pub'.

COMPUTE-WEBAPP-PUBLIC-FILES-URI-PREFIX-UTIL (&OPTIONAL (APP (CURRENT-WEBAPP)))

A wrapper around 'compute-webapp-public-files-uri-prefix' that handles current app.

CONSONANTP (CHAR)

Checks if a character is a consonant.

COPY-TRANSFORMATION-CONTEXT (CTX)

Copies transformation context. This is used for cases when the context has to be 'frozen' in time and used at a later transformation stage.

COPY-WIDGET-TREE (ROOT)

Copy the widget tree at ROOT including all widgets below. Slots will be copied shallowly except for CHILDREN.

COUNT-VIEW-FIELDS (VIEW &REST GOVF-ARGS)

Counts the number of fields in a given view.

CPSTRANSFORMER (NAME)

Returns a CPS transformer named by a given NAME.

CURRENT-WEBAPP

Returns the currently invoked instance of a web application.

DATAEDIT-DELETE-ITEM (WIDGET ITEM-ID)

Should be called by dataedit widgets to delete a single item. Deletes the item, and if 'dataedit-cascade-delete-mixins-p' is set to true, deletes mixin objects. obj - the dataedit object. item-id - the integer id of the object to be deleted.

DATASEQ-CLEAR-SELECTION (OBJ)

Clears selected items.

DATASEQ-DATA (OBJ)

Returns the items in the sequence. If 'dataseq-on-query' is a function designator, calls the function designated by 'dataseq-on-query'. Otherwise, uses persistent store API.

DATASEQ-DATA-COUNT (OBJ)

Returns the number of items in the sequence.

DATASEQ-FIELD-SORTABLE-P (OBJ FIELD)

Determines if a field is sortable.

DATASEQ-ITEM-SELECTED-P (OBJ ITEM-ID)

Checks if an item in the dataseq is marked as selected.

DATASEQ-PERSISTENT-QUERY-FUNCTION (ON-QUERY-LIST)

Returns a function suitable for slot `on-query' on `dataseq' that will call the persistent store API with the given on-query-list.

DATASEQ-SELECT-ITEM (OBJ ITEM-ID)

Marks an item in the dataseq as selected.

DATASEQ-SELECTION-EMPTY-P (SELECTION-OR-DATASEQ)

Returns true if no items are selected, nil otherwise. 'selection-or-dataseq' should either be a dataseq widget or its selection slot (both are accepted for convinience).

DATASEQ-SORT-DIRECTION (OBJ)

The current sort direction in a given dataseq.

DATASEQ-SORT-PATH (OBJ)

The current sort path in a given dataseq.

DATASEQ-SORT-SLOT (OBJ)

The current sort slot in a given dataseq.

DATASEQ-UPDATE-SORT-COLUMN (OBJ)

This function is called to ensure that a dataseq is sorted on sortable column (if one is available). If the dataseq is not sorted, this function finds the first sortable column and sorts the dataseq on that column.

DELETE-WEBAPP-SESSION-VALUE (KEY &OPTIONAL (SESSION *SESSION*) (WEBAPP (CURRENT-WEBAPP)))

Clear the session value for the currently running webapp. KEY is compared using EQUAL.

DISABLE-GLOBAL-DEBUGGING

A manual method for resetting global debugging state

DROP-LAST (LIST)

Returns a copy of the list without the last element.

ENABLE-GLOBAL-DEBUGGING

Setup hooks for session maintenance and showing backtraces

END-SECTION

End a client section.

ENTITY-CLASS-NAME (ENTITY-TYPE SUFFIX)

A helper function that generates a class name from an entity name and a suffix.

EVAL-DYNAMIC-HOOKS (VAR)

A helper function that makes it easier to write dynamic hooks. (defun my-hook (hooks) (with-my-context () (eval-dynamic-hooks hooks)))

EXPR->CPS (EXPR K-EXPR ENV)

Transforms expression to CPS style.

EXPR-SEQUENCE->CPS (EXPR-LIST K-EXPR ENV)

Converts a list of expressions to be evaluated in order to CPS style.

FIELD-INFO-FIELD (INSTANCE)

@arg[extid]{A @class{extid}} @return[sytemid]{puri:uri or nil} Returns the System ID part of this External ID.

FIELD-INFO-OBJECT (INSTANCE)

@arg[extid]{A @class{extid}} @return[sytemid]{puri:uri or nil} Returns the System ID part of this External ID.

FIND-FIELD-INFO (NAME VIEW OBJ &REST GOVF-ARGS)

Finds a field-info object by name and returns it.

FIND-SLOT-DSD (CLASS SLOT-NAME)

Returns a direct-slot-definition object of a slot with 'slot-name' in 'class'.

FIND-SLOT-ESD (CLASS SLOT-NAME)

Returns an effective-slot-definition object of a slot with 'slot-name' in 'class'.

FIND-VIEW (VIEW &OPTIONAL (SIGNAL-ERROR-P T))

Finds a view. If 'view' is a symbol, looks up the appropriate view object. If 'view' is a view object, simply returns it. Otherwise, signals an error. If 'view' is a list, finds a scaffold class by calling 'scaffold-class-name' and builds an appropriate scaffold view by calling 'generate-scaffold-view' with the scaffold class name and the second argument.

FLASH-MESSAGE (FLASH MSG)

Add a 'msg' to a list of messages to show on this request in the 'flash' object.

FORM-FIELD-INTERMEDIATE-VALUE (FIELD INTERMEDIATE-VALUES)

Returns an intermediate value for 'slot-name' from 'intermediate-values'. The second value is true if the field was present in intermediate-values, nil otherwise.

FUNCTION-DESIGNATOR-P (OBJ)

Returns true if the object is a function designator.

FUNCTION-OR-ACTION->ACTION (FUNCTION-OR-ACTION)

Accepts a function or an existing action. If the value is a function, calls 'make-action' and returns its result. Otherwise, checks if the action already exists. If it does, returns the value. If it does not, signals an error.

GEN-ID (&OPTIONAL (PREFIX dom))

Generates an ID unique accross the session. The generated ID can be used to create IDs for html elements, widgets, etc.

GET-FIELD-INFO-SORT-PATH (FIELD-INFO)

Given a field info, returns a sort path that can be passed to backend stores. The return value may be a symbol or a list of multiple symbols.

GET-OBJECT-VIEW-FIELDS (OBJ VIEW-DESIGNATOR &REST ARGS &KEY INCLUDE-INVISIBLE-P (EXPAND-MIXINS T) CUSTOM-FIELDS &ALLOW-OTHER-KEYS)

Returns a list of 'field-info' structures. If 'include-invisible-p' is set to true, fields declared as invisible will be returned as well. If 'expand-mixins' is set to true (default), mixin fields will be expanded into inline fields, and will not be present in the results. If 'custom-fields' is not null, it is expected to be a list with each element being either a custom field, or a cons cells. If an element is a custom field, the field is returned at the end of other fields. If an element is a cons cell, CAR is expected to be a positive integer, and CDR is expected to be a custom-field. In this case the custom-field is inserted before the element with the index in the CAR of the cons cell. Each custom field can be either a field-info structure or a view-field. Field-info structures are inserted as is, and view-fields are wrapped in field-info structures with common-sense defaults.

GET-WEBAPP (NAME &OPTIONAL (ERROR-P T))

Get a running web application

HASH-KEYS (HASHTABLE)

Returns all keys in the hashtable.

HASH-PASSWORD (PASSWORD)

Returns a one way hash of a plain-text password.

HIGHLIGHT-REGEX-MATCHES (ITEM HIGHLIGHT &OPTIONAL PRESENTATION)

This function highlights regex matches in text by wrapping them in HTML 'string' tag. The complexity arises from the need to escape HTML to prevent XSS attacks. If we simply wrap all matches in 'strong' tags and then escape the result, we'll escape our 'strong' tags which isn't the desired outcome.

HUMANIZE-SORT-DIRECTION (DIR)

Converts a sort direction to a human readable name.

IN-SESSION (&OPTIONAL SID)

Enter a session context. If SID is supplied the session with this id will be selected. Otherwise the first session (likely the one started most recently) will be selected

IN-WEBAPP (&OPTIONAL NAME)

Set the current webapp to NAME, or the last webapp registered if NAME is not supplied. Returns the selected webapp. Convenience function for the REPL.

INIT-NAVIGATION (OBJ &REST ARGS)

A helper function to create a navigation widget. The elements of ARGS are either lists of the form (NAME WIDGET [URI-TOKEN]) or flat pairs of atoms, in which case the first atom will be the name and the second atom the widget. The two forms of elements may be mixed, but an atom must always be followed by another atom. MAKE-WIDGET is applied to the widget argument so you can use strings and function designators as widgets in this context.

INITIAL-REQUEST-P

Returns true if the request is the first request for the session.

INSERT-AFTER (NEWELT LIST INDEX)

Destructively inserts 'newelt' into 'list' after 'index'.

INSPECT-TYPESPEC (TYPESPEC)

Converts 'typespec' into a representation suitable for further inspection. Returns two values. The first one is a symbol that can be specialized on via eql specializer, and the second one is a list of arguments to the typespec. Ex: (inspect-typespec '(integer 1 5)) => integer => (1 5) This function also implements certain useful logic. For example: (inspect-typespec '(or null (integer 1 5))) => integer => (1 5)

INTERSPERSE (LIST DELIMETER &KEY (LAST DELIMETER))

Intersperses a list with a delimeter. If 'last' is specified, it will be used for the last delimeter, instead of 'delimeter'. (intersperse '(1 2 3 4 5) 0) => (1 0 2 0 3 0 4 0 5)

LIST-STARTS-WITH (LIST ELEMENTS &KEY (TEST 'EQ))

Determines if a list starts with the given elements.

LOG-FORM (ACTION &KEY ID CLASS)

Wrapper around log-ui-action for forms.

LOG-UI-ACTION (TYPE NAME ACTION &KEY ID CLASS)

If called during an active unit test, logs the UI action to the test's temporary database so that it can be queried during the unit test's verification process. If no active unit test is present, does nothing.

LOGOUT

Removes any authentication information from the session.

MAKE-ACTION (ACTION-FN &OPTIONAL (ACTION-CODE (GENERATE-ACTION-CODE)))

Coverts a function into an action that can be rendered into HTML. A unique, hard to guess string is generated for the function, and a function is added to the session hashtable under this string. The string is then returned. When later requests come in, 'get-request-action' machinery determines if the action string that came with the request is stored in the hashtable, and if so, invokes the stored function. 'action-fn' - A function that will be called if the user initiates appropriate control (link, form, etc.) GET and POST parameters will be passed to this function as keyword arguments by the framework. 'action-code' - The code to use for an action (if not specified make-action generates a unique value for each action). Note, if you don't provide a hard to guess code ('generate-action-code' is used by default), the user will be vulnerable to an attack where a malicious attacker can attempt to guess a dangerour action id and send the user a link to it. Only use guessable action codes for GET actions.

MAKE-ACTION-URL (ACTION-CODE &OPTIONAL (INCLUDE-QUESTION-MARK-P T))

Accepts action code and returns a URL that can be used to render the action. Used, among others, by 'render-link'. Ex: (make-action-url "test-action") => "?action=test-action"

MAKE-CLASS (SLOTS &OPTIONAL (CLASS-NAME (GENSYM)))

Makes an anonymous class with a number of slots. 'slots' - a list of symbols to be used as slot names.

MAKE-ISEARCH-REGEX (SEARCH)

Create a regular expression from the user's input that tries to be faithful to Emacs' isearch.

MAKE-LAZY-NAVIGATION (NAME &REST ARGS)

Convenience function to create a lazy navigation.

MAKE-LOCAL-DEPENDENCY (TYPE FILE-NAME &KEY DO-NOT-PROBE MEDIA (WEBAPP (CURRENT-WEBAPP)) (IMPORT-P NIL))

Make a local (e.g. residing on the same web server) dependency of type :stylesheet or :script. Unless :do-not-probe is set, checks if file-name exists in the server's public files directory, and if it does, returns a dependency object.

MAKE-NAVIGATION (NAME &REST ARGS)

Instantiates the default navigation widget via 'make-instance' and forwards it along with 'args' to 'init-navigation'. The navigation widgets bears the title NAME.

MAKE-QUICKFORM (VIEW &KEY ON-SUCCESS ON-CANCEL SATISFIES DATA (ANSWERP T) (CLASS 'QUICKFORM) (DATA-CLASS-NAME (GENSYM)) CLASS-STORE)

Returns an instance of a dataform widget configured to quickly and easily present forms. The advantage of using 'make-quickform' over simply calling 'render-view' is that the widget produced by 'make-quickform' validates the form and deserializes it into an object. 'view' - a form view to be rendered. 'on-success' - an optional function of two arguments (widget itself and deserialized object), called when the form has successfully been validated. 'on-cancel' - an optional function of one argument (widget), called when user cancels out of the form. 'satisfies' - an optional function called with two arguments (widget and data object) after the fields have been successfully parsed into the object. It is expected to return true if the object is valid, or nil as the first value and an association list of fields and error messages as the second value. 'data' - an optional data object to be used. If the data object isn't provided, it will be generated from the view automatically. 'answerp' - if set to true (default), the widget automatically calls answer on itself on success or cancellation. If on-success is present, answers with its return value. Otherwise, returns the data object. 'class' - a class of the quickform widget. By default uses 'quickform'. 'data-class-name' - if 'data' isn't provided, the name of the class to be generated from the view.

MAKE-SIMPLEFORM (VIEW &REST ARGS)

Create a simple form. Example: (defview password-reminder-view (:type form :persistp nil) (username :requiredp t)) (defun make-password-reminder () (make-simpleform 'password-reminder-view :submit-label "Request password" :satisfies (lambda (widget data) (if (find-user (slot-value data 'username)) t (values nil `((username . "User not found."))))) :on-success (lambda (widget) (let ((user (find-user (slot-value (dataform-data widget) 'username)))) (mail (email user) "Your password" (format nil "Your password is ~S" (password user))))) :success-widget "Your password has been sent to your email address."))

MAKE-SLOT-WRITER (SLOT-NAME SLOT-READER)

Returns a function that accepts a value and object and stores the value transformed by 'slot-reader' in the object's 'slot-name'. This is useful when declaring writers in the UI that should record the object ID instead of the object itself.

MAKE-WEBAPP-PUBLIC-FILE-URI (URI &OPTIONAL (APP (CURRENT-WEBAPP)))

Makes a URI for a public file for a weblocks application (by concatenating the app prefix, the public folder prefix, and the provider URI).

MAKE-WEBAPP-URI (URI &OPTIONAL (APP (CURRENT-WEBAPP)))

Makes a URI for a weblocks application (by concatenating the app prefix and the provided uri).

MAP-VIEW-FIELDS (FN VIEW OBJ &REST ARGS)

Acts like mapcar for view fields. FN should expect a structure of type field-info.

MAPSTORES (FN)

Maps a function over existing stores in the order in which they were defined. Returns NIL.

NEGATE-SORT-DIRECTION (DIR)

Returns a negated direction of a sort (returns :asc for :desc and vica versa).

OBJECT-ID-SLOT-NAME (OBJ)

Returns the slot name of the slot that holds the unique identifier of 'obj'. This information is obtained via calling 'class-id-slot-name'.

OBJECT-STORE (OBJ)

Returns the store for the object by calling 'class-store'.

OBTAIN-VIEW-FIELD-VALUE (FIELD OBJ)

Obtains the view field value of object. See documentation for 'reader' slot of 'field' for more details.

OPEN-STORES

Opens and binds all stores.

PAGINATION-CALL-ON-CHANGE (OBJ)

Calls on-change callback for the pagination widget.

PAGINATION-ON-GO-TO-PAGE (OBJ &KEY PAGE-NUMBER &ALLOW-OTHER-KEYS)

Handles client requests to go to a given page.

PAGINATION-PAGE-COUNT (PAGINATION)

Returns the total number of pages necessary to present the data managed by a given pagination widget.

PAGINATION-PAGE-ITEM-RANGE (OBJ)

Returns a range of items that belong to a currently selected page. This function returns two values, the starting item index (inclusive) and the ending item index (exclusive).

PERSIST-OBJECTS (STORE OBJECTS &REST KEYS)

Persists all objects in 'objects' sequence into 'store'.

PLURALIZE (WORD)

Pluralizes word. Converts 'thing' to 'things'.

POP-TOKEN (TOKENS)

Convenience function -- pop exactly one token to be returned as an atom.

POST-ACTION-REDIRECT (URI)

Legacy wrapper; use REDIRECT with :DEFER set to :POST-ACTION instead.

POST-RENDER-REDIRECT (URI)

Legacy wrapper; use REDIRECT with :DEFER set to :POST-RENDER instead.

PROPER-INDEFINITE-ARTICLE (WORD)

Returns a proper indefinite article for a word. Returns 'an' for 'apple' and 'a' for 'table'.

PROPER-NUMBER-FORM (NUMBER SINGULAR-WORD)

Turns 'singular-word' into proper number form. If 'number' is 1, leaves 'singular-word' as is, otherwise pluralizes it.

PT

Print the current session's widget tree

PUBLIC-FILE-RELATIVE-PATH (TYPE FILENAME)

Infer FILENAME's relative path and extension from TYPE. Example: (public-file-relative-path :stylesheet "navigation") => "stylesheets/navigation.css"

PUBLIC-FILES-RELATIVE-PATHS (&REST ARGS)

A helper function that returns a list of paths for files provided in 'args'. Each argument must be a cons cell where car is either :stylesheet or :script and cdr is a name of the file. Useful when generating a list of dependencies for widgets and/or the application (see the 'dependencies' generic function and *application-dependencies*.) Ex: (get-public-files-paths '(:stylesheet . "navigation") '(:script . "effects")) => (#P"stylesheets/navigation.css" #P"scripts/effects.js")

PURE-REQUEST-P

Detects if the current request is declared as 'pure', i.e. affects no widgets or internal application state, but merely is a request for information. Such requests simply return the result of the function that represents the action and are used by some AJAX operations to retreive information (suggest block, etc). When such requests are satisfied, the actions have access to the session, the widgets, and all other parameters. However, none of the callbacks (see *on-pre-request*) are executed, no widgets are sent to the client, etc.

REDIRECT (URI &KEY (DEFER (AND (BOUNDP '*SESSION*) (BOUNDP '*REQUEST-HOOK*) POST-RENDER)) NEW-WINDOW-P (WINDOW-TITLE URI))

Redirects the client to a new URI. There are several modes of redirecting: Immediate redirect (:DEFER NIL): interrupt request processing at once and send either a `redirect' HTTP response (for normal requests) or an appropriate JSON command (for AJAX requests). Deferred redirect (:DEFER (:POST-ACTION|:POST-RENDER); the default being :POST-RENDER): like immediate redirecting but the execution will be deferred until action processing (POST-ACTION) or rendering (POST-RENDER) is finished. Redirect to new window (NEW-WINDOW=T): opens URI in a new window. The current request continues to be processed in a normal fashion. WINDOW-TITLE is the title of the new window, defaulting to the target URI. DEFER is disregarded in this case. NEW-WINDOW functionality will only work when Javascript is enabled.

REFRESH-REQUEST-P

Determines if a request is a result of the user invoking a browser refresh function. Note that a request will not be considered a refresh if there is an action involved (even if the user hits refresh).

REMOVE-KEYWORD-PARAMETER (PARAMETER-LIST KEYWORD)

Removes a keyword parameter from a parameter-list. (remove-keyword-parameter '(1 2 3 :a 1 :b 2 :c 3) :b) => (1 2 3 :a 1 :c 3)

REMOVE-KEYWORD-PARAMETERS (PARAMETER-LIST &REST KEYWORDS)

Removes all parameters with keys in 'keywords' from 'parameter-list'.

REMOVE-PARAMETER-FROM-URI (URI PARAMETER)

Removes the given parameter from a URI.

REMOVE-SPURIOUS-SLASHES (STR)

Condense multiple consecutively occuring slashes in STR into a single slash. ex: (remove-spurious-slashes "/ab/////c///") => "/ab/c/"

REMOVE-WEBAPP-PERMANENT-ACTION (WEBAPP-NAME ACTION-NAME)

Remove a permanent action from a webapp

RENDER-AUTODROPDOWN (NAME SELECTIONS ACTION &KEY SELECTED-VALUE WELCOME-NAME ID (CLASS autodropdown) DROPDOWN-ID DROPDOWN-CLASS SUBMIT-ID SUBMIT-CLASS (SUBMIT-BUTTON-NAME (HUMANIZE-NAME *SUBMIT-CONTROL-NAME*)) (METHOD-TYPE GET) (USE-AJAX-P T))

Renders a dropdown along with a form. The dropdown automatically submits on selection, or if JS is off, a button is automatically presented to the user.

RENDER-BUTTON (NAME &KEY (VALUE (HUMANIZE-NAME NAME)) ID (CLASS submit))

Renders a button in a form. 'name' - name of the html control. The name is attributized before being rendered. 'value' - a value on html control. Humanized name is default. 'id' - id of the html control. Default is nil. 'class' - a class used for styling. By default, "submit".

RENDER-CHECKBOX (NAME CHECKEDP &KEY ID (CLASS checkbox) ONCLICK)

Renders a checkbox in a form. 'name' - name of the html control. The name is attributized before being rendered. 'checkedp' - if true, renders the box checked. 'id' - id of the html control. Default is nil. 'class' - a class used for styling. By default, "submit".

RENDER-CLOSE-BUTTON (CLOSE-ACTION &OPTIONAL (BUTTON-STRING (Close)))

Renders a close button. If the user clicks on the close button, 'close-action' is called back. If 'button-string' is provided, it used used instead of the default 'Close'.

RENDER-DEFINITION-LIST (DATA &KEY CLASS ID STYLE)

Render the definition list DATA (a flat key/value list). The caller is responsible for escaping all data.

RENDER-DROPDOWN (NAME SELECTIONS &KEY ID CLASS SELECTED-VALUE DISABLED ONCHANGE WELCOME-NAME MULTIPLE AUTOSUBMITP TABINDEX (FROB-WELCOME-NAME T))

Renders a dropdown HTML element (select). 'name' - the name of html control. The name is attributized before being rendered. 'selections' - a list of strings to render as selections. Each element may be a string or a cons cell. If it is a cons cell, the car of each cell will be used as the text for each option and the cdr will be used for the value. 'id' - an id of the element. 'class' - css class of the element. 'selected-value' - a list of strings. Each option will be tested against this list and if an option is a member it will be marked as selected. A single string can also be provided. 'welcome-name' - a string used to specify dropdown welcome option (see *dropdown-welcome-message*). If nil, no welcome message is used. If 'welcome-name' is a cons cell, car will be treated as the welcome name and cdr will be returned as value in case it's selected. 'multiple' - determines whether multiple selections are allowed 'autosubmitp' - determines if the dropdown automatically submits itself on selection. Note, if the parent form uses ajax, the dropdown will submit an ajax request. Otherwise, a regular request will be submitted.

RENDER-FORM-AND-BUTTON (NAME ACTION &KEY (VALUE (HUMANIZE-NAME NAME)) (METHOD GET) BUTTON-ID (BUTTON-CLASS submit) (USE-AJAX-P T) FORM-ID FORM-CLASS)

Renders a button within a form. This function can be used a short cut to quickly render a sumbit button.

RENDER-ISEARCH (INPUT-NAME ISEARCH-FN &KEY VALUE (FORM-ID (GENSYM)) (INPUT-ID (GENSYM)) (SEARCH-ID (GENSYM)) (METHOD GET) (DELAY *ISEARCH-INPUT-DELAY*) (MAX-LENGTH *ISEARCH-MAX-INPUT-LENGTH*) &ALLOW-OTHER-KEYS)

Renders an input bar with 'input-name' that calls back 'isearch-fn' in delayed manner. This is useful for realtime searching capabilities. Note, 'isearch-fn' is expected to be a function, not an action. Render-isearch automatically creates an action that performs certain operations (trims input to 'max-length', etc.) and then passes action's arguments to 'isearch-fn'. When JavaScript is turned off a button is drawn next to the input box. The user may invoke 'isearch-action' by clicking the button. value - an initial value. method - form request method, defaults to GET.

RENDER-LIST (SEQ &KEY RENDER-FN (ORDEREDP NIL) ID CLASS (EMPTY-MESSAGE There are no items in the list.) EMPTY-CAPTION ITEM-PREFIX-FN ITEM-SUFFIX-FN)

Renders a sequence of items 'seq' in an HTML list. If 'render-fn' is provided, calls it with one argument (the item being rendered) in order to render the actual item. Otherwise, renders each item as a widget. By default the list is unordered. To render an ordered list, set orderedp to true. If item-prefix-fn or item-suffix-fn are provided, they're called before and after each item (respectively) with the item as a single argument.

RENDER-MENU (OPTIONS &KEY SELECTED-PANE HEADER (CONTAINER-ID (GEN-ID)) (BASE ) ORDERED-LIST-P (EMPTY-MESSAGE *MENU-EMPTY-MESSAGE*) DISABLED-PANE-NAMES)

Renders a menu snippet based on given options and selected option. An option may be a dotted pair of a label and URL to link to, or a name (which will be converted to a label and a URL via humanize-name and attributize-name, respectively). The selected-pane will be compared to an option's URL via equalp. If the selected option isn't specified, the first option is rendered as selected. If CONTAINER-ID is provided, it is used as the basis of DOM IDs for the menu and each menu item generated with `unattributized-name'. If a given pane name is found in `disabled-pane-names', it's rendered in the navigation as disabled.

RENDER-MESSAGE (MESSAGE &OPTIONAL CAPTION)

Renders a message to the user with standardized markup.

RENDER-OBJECT-VIEW (OBJ VIEW &REST ARGS &KEY WIDGET &ALLOW-OTHER-KEYS)

A helper function that finds the view and calls 'render-object-view-impl'. Additionally, calls 'dependencies' and adds the returned items to *page-dependencies*. This is later used by Weblocks to declare stylesheets and javascript links in the page header.

RENDER-PASSWORD (NAME VALUE &KEY (ID (GEN-ID)) (CLASS password) MAXLENGTH STYLE DEFAULT-VALUE SIZE VISIBILITY-OPTION-P TABINDEX)

Renders a password in a form. 'name' - name of the html control. The name is attributized before being rendered. 'value' - a value on html control. 'id' - id of the html control. Default is nil. maxlength - maximum lentgh of the field 'class' - a class used for styling. By default, "password".

RENDER-RADIO-BUTTONS (NAME SELECTIONS &KEY ID (CLASS radio) (SELECTED-VALUE NIL SELECTED-VALUE-SUPPLIED))

Renders a group of radio buttons. 'name' - name of radio buttons. 'selections' - a list of selections. May be an association list, in which case its car is used to dispaly selection text, and cdr is used for the value. 'id' - id of a label that holds the radio buttons. 'class' - class of the label and of radio buttons. 'selected-value' - selected radio button value.

RENDER-SUGGEST (INPUT-NAME RESULTSET &KEY DEFAULT-VALUE (INPUT-ID (GENSYM)) (CHOICES-ID (GENSYM)) (FORMAT-FN #'FORMAT-SUGGEST-LIST) (MAX-LENGTH *MAX-RAW-INPUT-LENGTH*) WELCOME-NAME)

Renders a block that provides functionality similar to google-suggest. 'input-name' - the 'name' attribute of the input box. If 'resultset' is a list of items, suggestions will be done via local autocompletions cashed on the client. Otherwise, completion will be done via an asynchronious call to the server ('resultset' must be set to a function that accepts a search parameter and returns a list of itmes that match). Note, if JavaScript is turned off local autocompletion will degrade to a simple dropdown. 'default-value' - can be used to set the value of the input box and/or dropdown. If 'default-value' is a list, car of the list will be used to set the default value, and all subsequent elements will be used to test dropdown elements (in case suggest degrades to dropdown). This is useful because occassionally dropdown options have different names than intended default value. 'input-id', 'choices-id' - optional IDs of input control and choice div, respectively. If an ID isn't provided, it will be generated. 'format-fn' - a function used to format the results into html sent to the client. Accepts a list of results. 'welcome-name' - a welcome option in case dropdown is used (see 'render-dropdown').

RENDER-TEXTAREA (NAME VALUE ROWS COLS &KEY ID CLASS)

Renders a textarea in a form. 'name' - name of the html control. The name is attributized before being rendered. 'value' - a value on html control. Humanized name is default. 'id' - id of the html control. Default is nil. 'maxlength' - maximum lentgh of the field 'rows' - number of rows in textarea 'cols' - number of columns in textarea 'class' - a class used for styling. By default, "textarea".

RENDER-TOTAL-ITEMS-MESSAGE (OBJ)

Renders the total items message.

RENDER-VIEW (VIEW &REST ARGS &KEY (CLASS-NAME (GENSYM)) &ALLOW-OTHER-KEYS)

A helper function that inspects the view, creates a fitting object from it only the fly, and calls 'render-object-view'. The function returns the created object.

REQUEST-PARAMETER (NAME)

Get parameter 'name' from the request. If the request was submitted via GET method, the parameter is obtained from the query string. If the request was submitted via POST, the parameter is obtained from the body of the request. Otherwise, an error is signalled.

REQUEST-PARAMETERS

Get parameters alist from the request. If the request was submitted via GET method, the parameters are obtained from the query string. If the request was submitted via POST, the parameters are obtained from the body of the request. Otherwise, an error is signalled.

REQUEST-PARAMETERS-FOR-OBJECT-VIEW (VIEW &REST ARGS)

Returns request parameters taking into account a particular view of an object. This function is necessary because in certain cases web browsers don't send some parameters (e.g. unchecked checkboxes). This function returns an association list of fields and values found in the request. 'view' - view to take account of. 'obj' - object to take account of.

REQUEST-URI-PATH

Returns the path component of the request URI. The path component does not include the domain name, and any query string parameters. Ex (when URI is http://blah.com/foo/bar?x=1&y=2): (request-uri-path) => "/foo/bar"

RESET-WEBAPP-SESSION (&OPTIONAL (APP (CURRENT-WEBAPP)))

Reset sessions on a per-webapp basis

SAFE-APPLY (FN &REST ARGS)

Apply 'fn' if it isn't nil. Otherwise return nil.

SAFE-FUNCALL (FN &REST ARGS)

Funcall 'fn' if it isn't nil. Otherwise return nil.

SAFE-GETF (LIST NAME)

Like GETF but copes with odd argument lists. Extracts the first value whose predecessor matches NAME. Returns NIL as second value if the key wasn't found at all.

SAFE-SUBSEQ (SEQUENCE START &OPTIONAL END)

A safe alternative to subseq that automatically adjust indices.

SEND-SCRIPT (SCRIPT &OPTIONAL (PLACE AFTER-LOAD))

Send JavaScript to the browser. The way of sending depends on whether the current request is via AJAX or not. Script may be either a string or a list; if it is a list it will be compiled through Parenscript first. FIXME: is using PUSH or PUSHLAST correct?

SESSION-NAME-STRING-PAIR

Returns a session name and string suitable for URL rewriting. This pair is passed to JavaScript because web servers don't normally do URL rewriting in JavaScript code.

SINGULARIZE (WORD)

Singularizes word. Converts 'things' to 'thing'.

SLOT-EQUAL (O1 O2 &KEY EXCLUDE (TEST #'EQUAL))

Whether O1 and O2 have identical slot contents, excluding slot names in EXCLUDE. Two slots are considered equal if they are either both unbound or if they are both bound and pass TEST. Signals an error when the slot names of O1 and O2 don't match.

SLOT-VALUE-BY-PATH (OBJ PATH)

Retrieves a value of a slot from a hierarchy of objects. A nil on the path is ignored. ex: (slot-value-by-path employee '(address street)) => "17 Sunvalley St." (slot-value-by-path employee '(address)) => #<ADDRESS {XXX}> (slot-value-by-path employee 'address) => #<ADDRESS {XXX}> (slot-value-by-path address '(street)) => "17 Sunvalley St." (slot-value-by-path address '(nil street)) => "17 Sunvalley St." obj - a CLOS object path - a list of slot names

STABLE-SET-DIFFERENCE (LIST-1 LIST-2 &KEY (TEST #'EQL) (KEY #'IDENTITY))

Returns a list of element of 'list-1' that do not appear in 'list-2'.

START-WEBAPP (CLASS &REST INITARGS &KEY (NAME (ATTRIBUTIZE-NAME CLASS)) &ALLOW-OTHER-KEYS)

Starts the web application

START-WEBLOCKS (&REST KEYS &KEY (DEBUG T) (PORT 8080) (ACCEPTOR-CLASS 'WEBLOCKS-ACCEPTOR) &ALLOW-OTHER-KEYS)

Starts weblocks framework hooked into Hunchentoot server. Set DEBUG to true in order for error messages and stack traces to be shown to the client (note: stack traces are temporarily not available due to changes in Hunchentoot 1.0.0). Set ACCEPTOR-CLASS if you want to use a custom acceptor (it must inherit from WEBLOCKS-ACCEPTOR). All other keywords will be passed as initargs to the acceptor; the initargs :PORT and :SESSION-COOKIE-NAME default to 8080 and `weblocks-GENSYM'. Also opens all stores declared via DEFSTORE and starts webapps declared AUTOSTART.

STOP-WEBAPP (NAME)

Stops the web application

STOP-WEBLOCKS

Stops weblocks. Closes all stores declared via 'defstore'.

STRING-REMOVE-LEFT (STR PREFIX &KEY IGNORE-CASE-P)

If string 'str' starts with 'prefix', remove 'prefix' from the start of 'str'.

STRING-REMOVE-RIGHT (STR SUFFIX &KEY IGNORE-CASE-P)

If string 'str' ends with 'suffix', remove 'suffix' from the end of 'str'.

STRING-WHITESPACE-P (STR)

Returns true if every character in a string is a whitespace character, nil otherwise.

SYMBOL-STATUS (SYMBOL)

Returns a status of 'symbol' in its package (internal, external, etc.)

TEXT-INPUT-PRESENT-P (VALUE)

Returns true if the text input is to be considered non-empty.

UPDATE-WIDGET-SLOTS-WITH-MAP (W SLOT-MAP URI-PARAMS)

A helper function we export to users if they want to define their own method for updating parameters (for example based on a widget name) without relying on the mixin or the MOP

URI-TOKENS-TO-STRING (TOKENS)

Encodes and concatenates uri tokens into a url string. Note that the string will not contain separator slashes at the beginning or end.

VOWELP (CHAR)

Checks if a character is a vowel.

WEBAPP-APPLICATION-DEPENDENCIES (&OPTIONAL (APP (CURRENT-WEBAPP)))

Returns a list of dependencies on scripts and/or stylesheets that will persist throughout the whole application. See documentation for 'widget-application-dependencies' for more details.

WEBAPP-DEBUG (&OPTIONAL (APP (CURRENT-WEBAPP)))

Whether APP is in debug mode.

WEBAPP-DESCRIPTION (&OPTIONAL (APP (CURRENT-WEBAPP)))

Returns the description of the web application. Please note, this description will be used for the composition of the page title displayed to the user. See 'application-page-title' for details.

WEBAPP-NAME (&OPTIONAL (APP (CURRENT-WEBAPP)))

Returns the name of the web application (also see 'defwebapp'). Please note, this name will be used for the composition of the page title displayed to the user. See 'application-page-title' for details.

WEBAPP-PREFIX (&OPTIONAL (APP (CURRENT-WEBAPP)))

Returns the URL prefix of the application.

WEBAPP-SESSION-VALUE (KEY &OPTIONAL (SESSION *SESSION*) (WEBAPP (CURRENT-WEBAPP)))

Get a session value from the currently running webapp. KEY is compared using EQUAL.

SETFWEBAPP-SESSION-VALUE (VALUE KEY &OPTIONAL (SESSION *SESSION*) (WEBAPP (CURRENT-WEBAPP)))

Set a session value for the currently running webapp. KEY is compared using EQUAL.

WIDGET-DIRTY-P (W)

Returns true if the widget 'w' has been marked dirty.

WIDGET-PARENTS (WIDGET)

Return the parent chain of a widget.

WIDGETS-ROOTS (WIDGETS)

Find the common roots of the passed list of WIDGETS that are still part of the list.

Undocumented

DATAEDIT-DELETE-ITEMS-FLOW (&REST ARGS)

DATASEQ-OPERATIONS-ACTION (&REST ARGS)

DO-CHOICE (&REST ARGS)

DO-CONFIRMATION (&REST ARGS)

DO-DIALOG (&REST ARGS)

DO-INFORMATION (&REST ARGS)

DO-LOGIN (&REST ARGS)

DO-MODAL (&REST ARGS)

DO-PAGE (&REST ARGS)

DO-WIDGET (&REST ARGS)

END-COLLAPSIBLE-SECTION

SETFFIELD-INFO-FIELD (NEW-VALUE INSTANCE)

SETFFIELD-INFO-OBJECT (NEW-VALUE INSTANCE)

FIND-VIEW-FIELD (&REST ARGS)

GET-WEBAPPS-FOR-CLASS (NAME)

MAP-MIXIN-FIELDS (FN VIEW OBJ &REST GOVF-ARGS)

NINSERT (LIST THING POS)

PARSE-LOCATION-HASH

RENDER-CHECKBOXES (NAME SELECTIONS &KEY ID (CLASS checkbox) SELECTED-VALUES)

RENDER-FORM-SUBMIT-DEPENDENCIES (DEPENDENCY-LIST)

RENDER-INPUT-FIELD (TYPE NAME VALUE &KEY ID CLASS MAXLENGTH STYLE SIZE ONFOCUS ONBLUR TABINDEX)

RESET-SESSIONS

RESTART-WEBAPP (NAME)

SERVER-TYPE

SERVER-VERSION

SESSIONS

STRING-INVERT-CASE (STR)

WEBAPP-PUBLIC-FILES-PATH (&OPTIONAL (APP (CURRENT-WEBAPP)))

WEBAPP-PUBLIC-FILES-URI-PREFIX (&OPTIONAL (APP (CURRENT-WEBAPP)))

WEBAPP-SESSION-KEY (&OPTIONAL (WEBAPP (CURRENT-WEBAPP)))

WEBAPP-UPDATE-THREAD-STATUS (STATUS &OPTIONAL (APP (IGNORE-ERRORS *CURRENT-WEBAPP*)))

WIDGET-EQUAL (W1 W2)

WIDGET-TREE-EQUAL (TREE1 TREE2)

Private

%DEFSTORE-POSTDEFINE (NAME TYPE)

Helper for `defstore'.

%DEFSTORE-PREDEFINE (NAME TYPE &REST ARGS)

Helper for `defstore'.

%JS (SOURCE &REST ARGS)

Helper function for WITH-JAVASCRIPT macros.

%MAP-OBJECT-VIEW-FIELDS (PROC OBJ VIEW-DESIGNATOR &KEY INCLUDE-INVISIBLE-P (EXPAND-MIXINS T) CUSTOM-FIELDS &ALLOW-OTHER-KEYS)

Implement `get-object-view-fields', except for consing up the result list, instead calling PROC on each resulting `field-info'.

ACTION-TXN-HOOK (HOOKS)

This is a dynamic action hook that wraps POST actions using the weblocks transaction functions over all stores

ACTIVE-SESSIONS

Returns a list of currently active sessions.

ADD-WEBAPP-PERMANENT-ACTION (WEBAPP-NAME ACTION-NAME FUNCTION-OR-NAME)

Remove an action from a webapp. action-name should be a string, or it will be converted to one (to work with the macro). function-or-name is a symbol or a function object (valid object for funcall)

BUNDLE-DEPENDENCY-TYPES* (OBJECT)

This reader will prompt debug parameters first.

CALL-IN-WEBAPP (APP PROC)

Helper for `in-webapp'.

CHECK-WEBAPP (NAME)

Ensure that the we have a valid webapp class

CL-ESCAPE-STRING (MAYBE-STRING)

Force quoting of special characters by cl-who for with-html.

CLOSE-STORES

Closes all stores.

COMPILE-VIEW-FIELDS (VIEW-TYPE FIELDS)

Compiles declarative representation of view fields into CL code.

CONGRUENT-LAMBDA-EXPRESSION (LAMBDA-LIST FUNCTION)

Answer a lambda expression with LAMBDA-LIST that passes all args (assuming the call is allowed by LAMBDA-LIST) to FUNCTION, answering its result.

DATAGRID-DRILLDOWN-STYLE (SLOT-NAME)

Returns a style used in datagrid drilldown cells.

DATALIST-UPDATE-OPERATIONS (OBJ)

Datalist implements drilldown via an item-op. This function first removes the drilldown operation, and then adds it again if necessary.

DEFAULT-EXPIRED-ACTION-HANDLER (&OPTIONAL (APP (CURRENT-WEBAPP)))

Default value of *expired-action-handler*. Redirects to application root and sets a query parameter 'timeout' to true, so that the home page may display a relevant message, if necessary.

DEPENDENCIES-BY-SYMBOL (SYMBOL)

A utility function used to help in gathering dependencies. Determines dependencies for a particular symbol, which could (but doesn't have to) represent a class.

DIALOG-CLOSE (INSTANCE)

@arg[extid]{A @class{extid}} @return[sytemid]{puri:uri or nil} Returns the System ID part of this External ID.

DIALOG-CSS-CLASS (INSTANCE)

@arg[extid]{A @class{extid}} @return[sytemid]{puri:uri or nil} Returns the System ID part of this External ID.

DIALOG-TITLE (INSTANCE)

@arg[extid]{A @class{extid}} @return[sytemid]{puri:uri or nil} Returns the System ID part of this External ID.

DIALOG-WIDGET (INSTANCE)

@arg[extid]{A @class{extid}} @return[sytemid]{puri:uri or nil} Returns the System ID part of this External ID.

ENABLE-WEBAPP (APP)

Make sure the app with the "" prefix is always the last one and that there is only one!

ESCAPE-SCRIPT-TAGS (SOURCE &KEY (DELIMITER *JS-STRING-DELIMITER*))

Escape script blocks inside scripts.

EVAL-ACTION

Evaluates the action that came with the request.

FIELD-INFO-PARENT-INFO (INSTANCE)

@arg[extid]{A @class{extid}} @return[sytemid]{puri:uri or nil} Returns the System ID part of this External ID.

FIND-ALL (SEQUENCE PREDICATE &KEY (KEY #'IDENTITY))

Returns a sequence of all elements found in 'sequence' that match 'predicate'. If 'key' is provides, each it is used to retreive each item before passing it to 'predicate'.

FIND-BUNDLE (FILE-LIST TALLY)

If the same files have already been bundled, return the bundle-name

FIND-OWN-SYMBOL (NAME &OPTIONAL (PACKAGE NIL PACKAGEP))

Like `find-symbol', but reject symbols not really in PACKAGE.

FLASH-MESSAGES-TO-SHOW (FLASH)

Returns a list of messages that need to be shown or nil if there is nothing to show. This functions takes into consideration any stale messages that need to be shown for AJAX effects.

FORMAT-SUGGEST-LIST (RESULTS)

Formats a list of results into HTML that can later be sent to a suggest control on the client.

GENERATE-ACTION-CODE

Generates unique, hard to guess action codes.

GET-BUNDLE-TALLY (&KEY BUNDLE-FOLDER)

Copy the tally file into a bundle-tally object

GET-REQUEST-ACTION

Gets an action from the request. If the request contains *action-string* parameter, the action is looked up in the session and appropriate function is returned. If no action is in the parameter, returns nil. If the action isn't in the session (somehow invalid), raises an assertion.

GET-REQUEST-ACTION-NAME

Gets the name of the action from the request.

GET-REQUIRED-ERROR-MSG (FORM-VIEW-FIELD)

Returns an error message for a missing required field.

GZIP-DEPENDENCY-TYPES* (OBJECT)

This reader will prompt debug parameters first.

GZIP-FILE (INPUT OUTPUT &KEY (IF-EXISTS SUPERSEDE) (IF-DOES-NOT-EXIST CREATE) (MINIMUM-LENGTH 300))

Redefined salsa2:gzip-file with more keywords.

INSERTING-CUSTOM-FIELDS (OBJ PROC CUSTOM-FIELDS)

Wrap PROC, a `map-view-fields' candidate, with a variant that inserts each of CUSTOM-FIELDS as defined by `get-object-view-fields'. Secondary, answer a termination thunk.

LIST->ASSOC (LST &KEY (MAP #'IDENTITY))

Nondestructively convert a list of elements to an association list If an element of a list is a cons cell, it is left as is. Otherwise, it is replaced with a cons cell whose 'car' is the element and whose 'cdr' is a result of 'map' applied to the element. The 'map' is an identity by default. Ex: (list->assoc '(name age (city . location))) => ((name . name) (age . age) (city . location)) (list->assoc '(1 (2 . 2) 3) :map #'1+) => ((1 . 2) (2 . 2) (3 . 4))

MAKE-DIALOG-JS (TITLE WIDGET CSS-CLASS &OPTIONAL CLOSE ESCAPE-SCRIPT-TAGS-P)

Returns a string with JS code that shows a modal pop-up dialog with the widget inside.

MAKE-DRILLDOWN-FIELD (GRID-OBJ)

Makes a custom field for rendering drilldown controls.

MAKE-SELECT-FIELD (GRID-OBJ)

Makes a custom field for rendering select controls.

MAYBE-ADD-TRAILING-SLASH (S)

Supply a trailing slash if needed.

MAYBE-GENERATE-PARAMETER-SLOT-MAP-FN (CLASS SLOT-DEFS)

When a slot contains

PACKAGE-WEBAPP-CLASSES (&OPTIONAL (PACKAGE *PACKAGE*))

Answer a list of webapp classes that were defined (e.g. by `defwebapp') in PACKAGE, by default the current package.

PARSE-SYMBOL-FROM-REQUEST (REQUEST-SLOT-VALUE)

Parser a symbol from request, respecting the value returned by (readtable-case *readtable*). This function returns a string which is later interned by a method of 'parse-view-field-value' specialized on 'symbol' and 'keyword'.

PLACE-IN-CHILDREN-P (CELL CHILDREN)

Simple test that the cell is still part of one of the children lists to validate the place stored in the closure

PRUNE-DEPENDENCIES (DEPENDENCY-LIST)

Remove duplicates from a list of dependencies.

QUOTE-PROPERTY-LIST-ARGUMENTS (PROPLIST)

Quotes the arguments of a property list.

REMOVE-ACTION-FROM-URI (URI)

Removes the action info from a URI.

REMOVE-SESSION-FROM-URI (URI)

Removes the session info from a URI.

RENDER-CHOICES-GET (MSG CHOICES K)

Renders the contents of a choice dialog with choices displayed as links.

RENDER-CHOICES-POST (MSG CHOICES K)

Renders the contents of a choice dialog with choices displayed as form buttons in a POST form.

RENDER-DIRTY-WIDGETS

Renders widgets that have been marked as dirty into a JSON association list. This function is normally called by 'handle-client-request' to service AJAX requests.

RENDER-SELECT-BAR (GRID &REST KEYS)

Renders commands relevant to item selection (select all, none, etc.)

REPORT-MISSING-DEFAULT-STORE (C STREAM)

Describe a `missing-default-store'.

REPORT-MISUNDERSTOOD-ACTION (C STREAM)

Describe a `misunderstood-action'.

REPORT-NON-IDEMPOTENT-RENDERING (C STREAM)

Describe a condition where code appears in rendering that should be in the action handler.

REPORT-WIDGET-NOT-IN-PARENT (C STREAM)

Display human-readably that a widget could not be found in its parent.

RUN-VIEW-VALIDATORS (VALIDATORS FIELDS-VALUES)

Applies all of the functions in the 'validators' list to the 'fields-values' arglist. Returns either t if all functions returned t, or nil and an association list of nils and error messages if any of the functions failed.

SESSION-REQUEST-HOOKS

A request hook object used in the session scope.

SLOT-READER (CLASS SLOT-NAME)

Returns a reader, if one is defined, on the slot.

STORE-BUNDLE-TALLY (TALLY)

Save the bundle-tally object into the tally file

STORE-INFO-ARGS (INSTANCE)

@arg[extid]{A @class{extid}} @return[sytemid]{puri:uri or nil} Returns the System ID part of this External ID.

STORE-INFO-TYPE (INSTANCE)

@arg[extid]{A @class{extid}} @return[sytemid]{puri:uri or nil} Returns the System ID part of this External ID.

STRIP-TRAILING-SLASHES (STR)

Relentlessly strip all trailing slashes from STR. A string solely consisting of slashes is no special case. Returns the number of stripped slashes as second value.

STYLE-WARN (CONDITION &REST WARN-ARGS)

A variant of `warn' that doesn't guarantee evaluation of its arguments.

SUBTYPEP (TYPE1 TYPE2 &OPTIONAL ENVIRONMENT)

Return two values indicating the relationship between type1 and type2. If values are T and T, type1 definitely is a subtype of type2. If values are NIL and T, type1 definitely is not a subtype of type2. If values are NIL and NIL, it couldn't be determined.

TOKENIZE-URI (URI &OPTIONAL (REMOVE-APP-PREFIX T) (APP (WHEN REMOVE-APP-PREFIX (CURRENT-WEBAPP))))

Tokenizes an URI into a list of elements. ex: (tokenize-uri "/hello/world/blah\test\hala/world?hello=5;blah=7" => ("hello" "world" "blah" "test" "hala" "world")

TYPEP (OBJECT TYPE &OPTIONAL ENVIRONMENT)

Is OBJECT of type TYPE?

UNATTRIBUTIZED-NAME (NAME &OPTIONAL (TYPE-MARKER 'UNAME))

Call `attributize-name' with NAME and modify the result to be a variant that is still usable in all cases where `attributize-name' results can be used, but is extremely unlikely to ever be returned by `attributize-name'. TYPE-MARKER is just a label for human discernment of the different users of this function.

UPDATE-DIALOG-ON-REQUEST

This callback function is called by 'handle-client-request'. If a request is a refresh and a dialog was shown, appropriate JS is inserted into the page to redraw the dialog.

UPDATE-VERSIONED-DEPENDENCY-PATH (ORIGINAL-PATH &OPTIONAL OTHER-PATH)

If the file has been modified, it is copied and renamed with the correct version number in the same directory. If the file has never been modified before, its name is kept the same.

US-STATE-P (STR)

Used by the type specifier 'us-state' to determine if a string is a state.

VERSION-DEPENDENCY-TYPES* (OBJECT)

This reader will prompt debug parameters first.

WEBAPP-HOSTNAMES (&OPTIONAL (APP (CURRENT-WEBAPP)))

Returns the hostnames this application will serve requests for.

WEBAPP-INIT-USER-SESSION (&OPTIONAL (APP (CURRENT-WEBAPP)))

Returns the init function for the user session.

WEBAPP-PERMANENT-ACTION (ACTION)

Returns the action function associated with this symbol in the current webapp

WEBAPP-SERVES-HOSTNAME (HOSTNAME &OPTIONAL (APP (CURRENT-WEBAPP)))

Does APP serve requests for HOSTNAME?

WEBLOCKS-DISPATCHER (REQUEST)

Weblocks' Hunchentoot dispatcher. The function serves all started applications and their static files.

WEBLOCKS-WEBAPP-PUBLIC-FILES-CACHE-TIME* (OBJECT)

This reader will prompt debug parameters first.

WEXPORT (SYMBOLS-DESIGNATOR &OPTIONAL (PACKAGE-SPECS T))

Export SYMBOLS-DESIGNATOR from PACKAGE-SPECS. Over `export', PACKAGE-SPECS can be a list of packages, and the name designators therein are interpreted by prepending "WEBLOCKS-". In the latter case, the symbols will be imported first if need be.

Undocumented

ADD-TO-TALLY (BUNDLE-NAME FILE-LIST TALLY)

AS-STRING (OBJ)

BUILD-BUNDLE (FILE-LIST TYPE &KEY MEDIA BUNDLE-FOLDER)

BUNDLE-DEPENDENCIES (DEPENDENCY-LIST &KEY BUNDLE-FOLDER (BUNDLE-TYPES (BUNDLE-DEPENDENCY-TYPES* (CURRENT-WEBAPP))))

BUNDLE-SOME-DEPENDENCIES (DEPENDENCY-LIST DEPENDENCY-TYPE &KEY BUNDLE-FOLDER)

COPY-DIALOG (INSTANCE)

COPY-FIELD-INFO (INSTANCE)

COPY-STORE-INFO (INSTANCE)

CREATE-BUNDLE-FILE (FILE-LIST TYPE TALLY)

CREATE-GZIPED-DEPENDENCY-FILE (ORIGINAL-PATH)

CREATE-VERSIONED-FILE (ORIGINAL-PATH VERSION)

DATALIST-ON-DRILLDOWN (OBJ ITEM-IDS)

DATALIST-RENDER-SORT-DROPDOWN (OBJ)

DATE->UTIME (DAY MONTH YEAR HOUR MINUTE)

DEFAULT-CLASS-FROM-VIEW-NAME (VIEW)

SETFDIALOG-CLOSE (NEW-VALUE INSTANCE)

SETFDIALOG-CSS-CLASS (NEW-VALUE INSTANCE)

DIALOG-P (OBJECT)

SETFDIALOG-TITLE (NEW-VALUE INSTANCE)

SETFDIALOG-WIDGET (NEW-VALUE INSTANCE)

DO-ROOT-WIDGET (&REST ARGS)

DO-WIDGET-AUX (&REST ARGS)

ENSURE-GENERIC-FUNCTION (FUN-NAME &REST ALL-KEYS &KEY ENVIRONMENT DEFINITION-SOURCE &ALLOW-OTHER-KEYS)

EXTRACT-IMPORT-URLS (STRING)

FIELD-INFO-P (OBJECT)

SETFFIELD-INFO-PARENT-INFO (NEW-VALUE INSTANCE)

FILE-MODIFIED-P (MOD-RECORD)

FIND-APP (NAME)

GET-MOD-RECORD (ORIGINAL-PATH &KEY (VERSIONING-P NIL))

GET-PARAMETER-SLOT-MAP (SLOT-DEFS)

HOSTNAME-MATCH-P (PATTERN HOSTNAME)

INIT-USER-SESSION (ROOT)

LOCAL-PATH-FROM-URL (URL &KEY (TYPE STYLESHEET))

MAKE-DIALOG (&KEY ((TITLE DUM0) NIL) ((CLOSE DUM1) NIL) ((WIDGET DUM2) NIL) ((CSS-CLASS DUM3) NIL))

MAKE-FIELD-INFO (&KEY ((FIELD DUM10) NIL) ((OBJECT DUM11) NIL) ((PARENT-INFO DUM12) NIL))

MAKE-RECORD-PATH (ORIGINAL-PATH &KEY (RECORD-FOLDER mod-record/) (EXTENSION .mod))

MAKE-STORE-INFO (&KEY ((TYPE DUM97) NIL) ((ARGS DUM98) NIL))

MAKE-VERSIONED-PATH (PATH VERSION)

MERGE-FILES (FILE-LIST SAVED-PATH &KEY (ELEMENT-TYPE '(UNSIGNED-BYTE 8)) LINKAGE-ELEMENT-FN)

MERGE-FILES-WITH-NEWLINE (FILE-LIST SAVED-PATH)

POST-PARAMETER->LIST (PARAM)

QUERY-STRING->ALIST (QUERY-STRING)

READ-FROM-FILE (PATH)

RELATIVE-PATH (FULL-PATH PREFIX-PATH)

REPORT-TIMING (NAME REAL CPU)

SEND-CACHE-RULES (CACHE-TIME)

SEND-GZIP-RULES (TYPES SCRIPT-NAME REQUEST VIRTUAL-FOLDER PHYSICAL-FOLDER)

SESSION-LOCK

SLURP-FILE (FILEPATH &KEY (ELEMENT-TYPE 'BASE-CHAR))

SORT-DEPENDENCIES-BY-TYPE (DEPENDENCY-LIST)

SORT-WEBAPPS (WEBAPPS)

SETFSTORE-INFO-ARGS (NEW-VALUE INSTANCE)

STORE-INFO-P (OBJECT)

SETFSTORE-INFO-TYPE (NEW-VALUE INSTANCE)

SYMBOL-TO-KEYWORD (SYMBOL)

UPDATE-IMPORT-CSS-CONTENT (IMPORT-PATH &KEY (VERSION-TYPES (VERSION-DEPENDENCY-TYPES* (CURRENT-WEBAPP))) (GZIP-TYPES (GZIP-DEPENDENCY-TYPES* (CURRENT-WEBAPP))))

UPDATE-LOCATION-HASH-DEPENDENTS

UPDATE-MOD-RECORD (MOD-RECORD &KEY (VERSIONING-P NIL))

UPDATE-WIDGET-TREE

URI-PARAMETER-DEF-P (SLOT-DEFS)

WEBAPP-PERMANENT-ACTIONS (WEBAPP)

WEBAPP-SESSION-HASH (&OPTIONAL (SESSION *SESSION*) (WEBAPP (CURRENT-WEBAPP)))

WRITE-IMPORT-CSS (URL STREAM)

WRITE-TO-FILE (OBJECT PATH)

WRITE-TO-MOD-RECORD (MOD-TIME VERSION RECORD-PATH)

MACRO

Public

CURRENT-DIALOG

Expands to code that signifies a place that contains information about the currently active dialog, if any. The place holds a structure of type 'dialog'.

DEFCPSTRANSFORMER (NAME LAMBDA-LIST &BODY BODY)

A macro that allows defining special case CPS transformers.

DEFINE-PERMANENT-ACTION (NAME WEBAPP-CLASS ACTION-PARAMS &BODY BODY)

Adds a permanent action to the class's set of permanent actions

DEFINE-PERMANENT-ACTION/CC (NAME WEBAPP-CLASS ACTION-PARAMS &BODY BODY)

Adds a permanent action to the class's set of permanent actions

DEFSTORE (NAME TYPE &REST STORE-ARGS)

A macro that helps define a store. A global variable 'name' is defined, and 'open-store' is called with appropriate store type and arguments. Note that the last store will also be the default (see *default-store*). All stores defined via 'defstore' will be opened and bound when 'start-weblocks' is called, and closed when 'stop-weblocks' is called. If `store-args' contains a keyword 'load-store-system-p' with a value of NIL following it then the store's ASDF system (`weblocks-STORENAME') will not be loaded afterwards. Turning this off is useful for binary images.

DEFUN/CC (NAME ARGLIST &BODY BODY)

A helper macro to define a function that supports CALL/CC.

DEFVIEW (NAME (&REST ARGS &KEY &ALLOW-OTHER-KEYS) &REST FIELDS)

A macro used to easily define user interface views in a declarative manner. (defview (NAME [:type TYPE] [:inherit-from INHERIT-FROM] [:satisfies SATISFIES] VIEW-KWARGS...) [FIELD-NAME | (FIELD-NAME [:type FIELD-TYPE] [:initform INITFORM] [:present-as PRESENT-AS] [:parse-as PARSE-AS] FIELD-KWARGS...)]...) In the above form, these metasyntactic variables have the following values: NAME When non-nil, an unevaluated unique symbol identifying the view to other parts of the system that require a view, resolving it using `find-view'. TYPE An unevaluated designator for the class of the resulting view (determined by `view-class-name'), and half the designator for the class of this view's fields (determined by `view-field-class-name' applied to `view-default-field-type'). Defaults to `data'. INHERIT-FROM A designator for `view' slot `inherit-from'. Forms like (:scaffold DATA-CLASS) will replace :scaffold with TYPE. See `find-view' for further transformation. SATISFIES A designator for `form-view' slot `satisfies'. VIEW-KWARGS Other arguments passed directly to `make-instance' for the resulting view, quoting subject to `view-argument-quoting-strategy'. INHERIT-FROM and SATISFIES are evaluated. FIELD-NAME An unevaluated designator for `view-field' slot `slot-name'. FIELD-TYPE A designator for the class of the field, in combination with TYPE, as explained above for TYPE. FIELD-KWARGS Other arguments passed directly to `make-instance' for the resulting view field, quoting subject to `view-argument-quoting-strategy'. However, FIELD-KWARGS keywords present in `*custom-view-field-argument-compilers*' are not included in the `make-instance' call; see that variable for how those are transformed. The built-in custom view fields are as follows: INITFORM A form for `mixin-view-field' slot `initform' (which is really an initfunction). PRESENT-AS A designator for `view-field' slot `presentation'. The symbol or CAR is mapped to a class name through `presentation-class-name', and the CDR, a series of keyword arguments, is passed to `make-instance' on said class, subject to `view-argument-quoting-strategy'. PARSE-AS A designator for `form-view-field' slot `parser'. Otherwise similar to PRESENT-AS, but mapping class names using `parser-class-name'.

DEFVIEW-ANON ((&REST ARGS &KEY (TYPE 'DATA) INHERIT-FROM SATISFIES &ALLOW-OTHER-KEYS) &REST FIELDS)

A macro used to easily define anonymous user interface views in a declarative manner.

DEFWEBAPP (NAME &REST INITARGS &KEY SUBCLASSES SLOTS (AUTOSTART T) &ALLOW-OTHER-KEYS)

This macro defines the key parameters for a stand alone web application. It defines both a class with name 'name' and registers an instance of that class. It also instantiates a defvar with an instance of this class. This is intended to be the primary way a web application is defined. :subclasses - if you want to inherit subclass behavior from other webapps, you can. It's not likely to be needed much :slots - webapps are class so slots are a list of definitions just as in defclass, but as slots are likely to be rare on webapps, we make this a keyword argument. All of the following, when present, are passed through as additional initargs: :name - instantiates a username (and the default title for) a webapp. use this name to get and delete this webapp. Multiple instances of a webapp class can co-exist, so long as they have different prefixes :description - A description of the application for the title page :ignore-default-dependencies inhibits appending the default dependencies to the dependencies list. By default 'defwebapp' adds the following resources: Stylesheets: layout.css, main.css Scripts: prototype.js, weblocks.js, scriptaculous.js :dependencies - is a list of dependencies to append to the default dependencies list of the application. :public-files-path - a physical path to the directory which contains public files for the application. The virtual uri for public files will be mapped to this physical path by a Hunchentoot handler. If the static files are server by a different web server, this value may be set to nil. :public-files-uri-prefix - a prefix for the virtual uri of public files (default is 'pub'). Final uri prefix for public files is computed with 'compute-webapp-public-files-uri-prefix'. Note, the uri computed by 'compute-webapp-public-files-uri-prefix' is used to generate dependencies and to set up a Hunchentoot handler to map from the uri to the path specified by public-files-path. :public-files-cache-time - make the client cache public files for N seconds (default 3600). Caching is disabled in debug mode. :init-user-session - A function object that is used to initialize new user sessions. If it is not passed, a function named 'init-user-session' is looked up in the package where the web application name symbol is defined. :autostart - Whether this webapp is started automatically when start-weblocks is called (primarily for backward compatibility

DEFWIDGET (NAME DIRECT-SUPERCLASSES &BODY BODY)

A macro used to define new widget classes. Behaves exactly as defclass, except adds 'widget-class' metaclass specification and inherits from 'widget' if no direct superclasses are provided.

EXTRACT-VIEW-PROPERTY-FROM-TYPE (PROPERTY-NAME PROPERTY-EXTRACTION-FN SCAFFOLD DSD)

Helper macro to obtain view properties from typespecs.

INSERT-AT (NEWELT LIST INDEX)

Destructively inserts 'newelt' into 'list' before 'index'.

LAMBDA/CC (ARGS-LIST &BODY BODY)

A helper macro that wraps LAMBDA definitions with WITH-CALL/CC.

LET/CC (K &BODY BODY)

A shortcut for CALL/CC.

NOSCRIPT (&BODY BODY)

Outputs HTML in a way that it takes effect on the client only if client-side scripting is disabled. This macro behaves identically to :noscript html element, but avoids rendering HTML on AJAX requests in addition.

ON-SIGNIN-HOOKS

A list of callback functions of no arguments to be called when the user signs out.

ON-SIGNOUT-HOOKS

A list of callback functions of no arguments to be called when the user signs out.

REQUEST-HOOK (SCOPE LOCATION)

Allows access to a series of hooks exposed by 'handle-client-request'. scope - the scope of the hook. Can be set to :application, :session, or :request. An :application hook is maintained throughout the lifetime of the entire application. A :session hook is destroyed along with the session. A :request hook is only valid for the request. location - the location of the hook. Can be set to :dynamic-action :pre-action, :post-action, :dynamic-render :pre-render, and :post-render. The macro returns a place that can be used to push a callback function of no arguments.

ROOT-COMPOSITE

Expands to code that can be used as a place to access to the root composite.

ROOT-WIDGET

Expands to code that can be used as a place to access to the root composite.

SCRIPTONLY (&BODY BODY)

Outputs HTML defined in the body in such a way that it takes effect on the client only if client-side scripting is enabled.

WITH-CALL/CC (&BODY BODY &ENVIRONMENT ENV)

Gives access to CALL/CC by transforming BODY to continuation passing style.

WITH-EXTRA-TAGS (&BODY BODY)

A macro used to wrap html into extra tags necessary for hacking CSS formatting. The macro wraps the body with three headers on top and three on the bottom. It uses 'render-extra-tags' function along with 'extra-top-' and 'extra-bottom-' arguments.

WITH-FLOW (WIDGET &BODY BODY)

Eases the burden of creating flows. Instead of using 'do-widget' in the body, one can use 'yield', which will expand into appropriate 'do-widget' code.

WITH-HTML (&BODY BODY)

A wrapper around cl-who with-html-output macro.

WITH-HTML-FORM ((METHOD-TYPE ACTION &KEY ID CLASS ENCTYPE (USE-AJAX-P T) EXTRA-SUBMIT-CODE (SUBMIT-FN initiateFormAction("~A", $(this), "~A"))) &BODY BODY)

Transforms to cl-who (:form) with standard form code (AJAX support, actions, etc.)

WITH-HTML-TO-STRING (&BODY BODY)

A wrapper around cl-who with-html-output-to-string macro.

WITH-JAVASCRIPT (SOURCE &REST ARGS)

Places 'source' between script and CDATA elements. Used to avoid having to worry about special characters in JavaScript code.

WITH-JAVASCRIPT-TO-STRING (SOURCE &REST ARGS)

Places 'source' between script and CDATA elements. Used to avoid having to worry about special characters in JavaScript code.

WITH-WEBAPP (WEBAPP &BODY FORMS)

Bind variables that are both webapp-specific, or applicable to just this app, and webapp-general, or not particular to some request to this app, with regard to WEBAPP.

WITHOUT-CALL/CC (&BODY BODY)

A macro that allows writing macros to produce non-CPS code uniformly within and without with-call/cc.

Undocumented

DEFRENDER (WIDGET-TYPE &BODY BODY)

TIMING (NAME &BODY BODY)

WITH-TABLE (COLNAMES &BODY BODY)

Private

BIND ((&REST BINDINGS) &BODY BODY)

Bind is a replacement for let*, destructuring-bind, multiple-value-bind and more. An example is probably the best way to describe its syntax: (bind ((a 2) ((b &rest args &key (c 2) &allow-other-keys) '(:a :c 5 :d 10 :e 54)) ((:values d e) (truncate 4.5))) (list a b c d e args)) Simple bindings are as in let*. Destructuring is done if the first item in a binding is a list. Multiple value binding is done if the first item in a binding is a list and the first item in the list is ':values'.

EVAL-HOOK (LOCATION)

Evaluates the appropriate hook. See 'request-hook'.

F (ARGS &BODY BODY)

a synonym for LAMBDA

HOOK-BY-SCOPE (SCOPE)

Returns a place which contains the hook object for the specified scope.

MATCH (ARG &BODY CLAUSES)

Matches ARG with CLAUSES. CLAUSES is a list of the form of (PATTERN . BODY) where PATTERN is a pattern specifier and BODY is an implicit progn. If ARG is matched with some PATTERN, then evaluates corresponding BODY and returns the evaluated value. Otherwise, returns NIL. Evaluating a form (FAIL) in the clause body causes the latest pattern matching be failed. For example, (match 1 (x (if (eql x 1) (fail) x)) (_ 'ok)) returns OK, because the form (FAIL) in the first clause is evaluated. If BODY starts with the symbols WHEN or UNLESS, then the next form will be used to introduce (FAIL). That is, (match list ((list x) when (oddp x) x)) (match list ((list x) unless (evenp x) x)) will be translated to (match list ((list x) (if (oddp x) x (fail)))) (match list ((list x) (if (evenp x) (fail) x))) Examples: (match 1 (1 1)) => 1 (match 1 (2 2)) => 2 (match 1 (x x)) => 1 (match (list 1 2 3) (list x y z) (+ x y z)) => 6

WITH-DYNAMIC-HOOKS ((TYPE) &REST BODY)

Performs nested calls of all the hooks of type, the innermost call is a closure over the body expression. Dynamic action hooks take one argument, which is a list of dynamic hooks. In the inner context, they apply the first element of the list to the rest An example of a dynamic hook: (defun transaction-hook (inner-fns) (with-transaction () (unless (null inner-fns) (funcall (first inner-fns) (rest inner-fns)))))

Undocumented

DEF-DEBUG-P-SLOT-READERS (&REST READER-SYMBOLS)

DEFCLASS (&ENVIRONMENT ENV NAME DIRECT-SUPERCLASSES DIRECT-SLOTS &REST OPTIONS)

DEFGENERIC (&WHOLE FORM NAME (&REST ARGS) &BODY OPTIONS)

DEFMETHOD (&WHOLE FORM NAME &BODY BODY &ENVIRONMENT ENV)

WITH-ARRAY (PAT AR &BODY BODY)

WITH-ERROR-PAGE-HTML ((TITLE HEADING &OPTIONAL DESCRIPTION) &BODY BODY)

WITH-FILE-WRITE ((STREAM-NAME PATH &KEY (ELEMENT-TYPE ''BASE-CHAR)) &BODY BODY)

GENERIC-FUNCTION

Public

ATTRIBUTIZE-NAME (NAME)

Convert objects to a format suitable for serialization (in particular for markup languages like HTML). Ex: (attributize-name 'hello-world) => "hello-world"

BEGIN-TRANSACTION (STORE)

Begins a transaction on 'store'. Note, if the given store does not have transaction support, this function should return NIL without signalling errors.

CLASS-ID-SLOT-NAME (CLASS)

Must return the symbol that identifies the slot name which represents the unique ID of the class named 'class'. Default implementation returns 'ID'. Specialize this function if you want to name the slot that holds the class' unique ID differently.

CLASS-STORE (CLASS-NAME)

Returns the store where objects of class name should be persisted. This function should be used by widgets to persist objects. Default implementation returns *default-store*.

CLASS-VISIBLE-SLOTS-IMPL (CLS &KEY READABLEP WRITABLEP)

Returns a list of 'standard-direct-slot-definition' objects for a class and its subclasses. Slots objects for slots that do not have reader accessors are filtered out and not returned. If 'readablep' is true, filters out the slots that don't have a reader (or accessor) defined. If 'writablep' is true, filters out the slots that don't have a writer (or accessor) defined.

CLEAN-STORE (STORE)

Cleans all the data in the store. This function should erase data, but not necessarily any schema information (like tables, etc.)

CLOSE-STORE (STORE)

Closes a connection to the store. If the value of *default-store* is equal to 'store', *default-store* must be set to NIL.

COMMIT-TRANSACTION (STORE)

Commits a transaction started on 'store'. Note, if the given store does not have transaction support, or the store isn't in a transaction, this function should return NIL without signalling errors.

COMPACT-DEPENDENCIES (DEPENDENCY-LIST)

Provides a hook for dependency processing. The default implementation just removes duplicates and sorts dependencies. By adding :before, :after or :around methods one could do more interesting things, such as combining differences.

COMPUTE-WEBAPP-PUBLIC-FILES-PATH (APP)

If 'weblocks-webapp-public-files-path' is nil (default), tries a number of strategies to determine a default location of public files. First, an asdf system with the name of the application ('weblocks-webapp-name') is searched for. If found, a directory 'pub' is searched for in the parent directory of the asdf file. If found, this directory is returned as the physical value. As a last resort the value of *DEFAULT-PUBLIC-FILES-PATH* is used which in turn defaults on the 'pub' folder below the directory containing weblocks.asd.

COMPUTE-WEBAPP-PUBLIC-FILES-URI-PREFIX (APP)

Computes a virtual uri for public files of an app. Default implementation concatenates webapp-prefix with the public-files-uri-prefix of a webapp.

COUNT-PERSISTENT-OBJECTS (STORE CLASS-NAME &KEY &ALLOW-OTHER-KEYS)

Returns the number of persistent objects stored in 'store' of 'class-name', bound by the given keyword parameters. For documentation of keyword parameters, see 'find-persistent-objects'. Other implementation dependent keys may be defined by a given store.

DATAEDIT-CREATE-DRILLDOWN-WIDGET (OBJ ITEM)

Must instantiate and return a widget to be used to present a drilldown of a dataedit item. Specialize this method to provide ways to edit items in the dataedit widget.

DATAEDIT-CREATE-NEW-ITEM-WIDGET (OBJ)

Must instantiate and return a dataform that allows adding a new entry. Note, in order for this functionality to work properly, the object in question needs to have a slot named 'id' (see 'object-id'), with an initform that assigns an ID to the object. Specialize this method to provide different ways to add items to the dataedit.

DATAEDIT-DRILLDOWN-ACTION (OBJ ITEM)

This callback function will be called by the dataedit when the user attempts to drill down on a given item.

DATAFORM-SUBMIT-ACTION (OBJ DATA &REST ARGS)

Called when the user invokes a submit action on a dataform widget. The default implementation updates the data object in the widget via 'update-object-view-from-request'. Override to customize submission behavior.

DATALIST-RENDER-ITEM (OBJ ITEM ARGS)

Renders a given item of a datalist object.

DATASEQ-RENDER-MINING-BAR (OBJ &REST ARGS)

This function renders the data mining bar for widgets deriving from dataseq. The data mining bar might include controls for selection information on total items available, etc. This function is meant to be implemented by deriving widgets.

DATASEQ-RENDER-OPERATIONS (OBJ &REST ARGS &ALLOW-OTHER-KEYS)

This function is responsible for rendering the operations for the widget deriving from dataseq. Specialize this function to provide custom operations rendering. Default implementation is implemented by 'dataseq-render-operations-default' function. Note, this function should take special care to respect dataseq-wrap-body-in-form-p because its return value determines whether the item ops should render their own form or they're already wrapped by a form of the widget.

DATASEQ-RENDER-OPERATIONS-DEFAULT (OBJ &REST ARGS &ALLOW-OTHER-KEYS)

The default implementation of operation rendering. It renders item-ops and common-ops as buttons. Note, it renders item operations if render-item-ops-p argument is set to true (default), and common operations if render-common-ops-p is set to true (default).

DATASEQ-RENDER-PAGINATION-WIDGET (OBJ &REST ARGS)

This function is responsible for rendering the pagination widget for the dataseq.

DATASEQ-RENDER-PAGINATION-WIDGET-DEFAULT (OBJ &REST ARGS)

This function renders the default the pagination widget for the dataseq.

DATASEQ-WRAP-BODY-IN-FORM-P (OBJ)

Determines whether 'render-widget-body- wraps the body in a form. This behavior is occassionally useful (in case of the datagrid), and occassionally harmful (in case of the datalist). It is useful when selection is allowed and selection controls must be in the same form as the item ops. It is harmful when each item of the sequence might be its own form (nested forms are problematic). Default implementation of this method returns true. Specialize this method to return false, if necessary. Note, this is done via a generic function instead of a slot because it's an implementation specific design choice. It cannot be changed at runtime and must not be visible to the user of the widget.

DELETE-PERSISTENT-OBJECT (STORE OBJECT)

Deletes the persistent object from 'store'. After deleting the persistent object, set unique ID of 'object' to NIL (see '(setf object-id)').

DELETE-PERSISTENT-OBJECT-BY-ID (STORE CLASS-NAME OBJECT-ID)

Similar to 'delete-persistent-object', but instead deletes object with the specified 'object-id'.

DEPENDENCIES (OBJ)

Return a list of dependencies for a particular object. Whenever a widget is rendered by weblocks, this function is called to determine which stylesheets, javascript files and javascript code the widget depends on. These dependencies are then processed and included in various places (header, body, AJAX page update) of the containing page. The default implementation for widgets finds some dependencies automatically based on the widget's class name, see 'per-class-dependencies for details. This method uses the append method combination to also return dependencies for the superclasses of 'obj', because it's intuitive to assume that a widget will use the stylesheets of its superclasses.

DEPENDENCIES-EQUALP (D1 D2)

Determine whether two dependencies are equal. We need to be able to compare dependencies in order to 1) remove duplicates from dependencies we gathered from the widget tree and 2) be able to detect when new dependencies appeared in AJAX page updates.

DEPENDENCIES-LESSP (D1 D2)

Used for ordering dependencies, determines which ones will come first in the page header.

DOM-CLASSES (OBJ)

Returns a string that represents all applicable CSS classes for an object (usually a widget). Normally includes the class name and the names of its subclasses. It is safe to assume that all widgets will have a CSS class of 'widget'.

DOM-ID (OBJ)

Provides a consistent interface to identifying widgets by their DOM id. Returns a string or nil if the object is to have no id.

DYNAMIC-TRANSACTION (STORE PROC)

Call PROC, a thunk, while in a transaction of STORE. See `use-dynamic-transaction-p' for details.

EXPIRED-ACTION-HANDLER (APP)

Webapp specific protocol now used in action handler. This method provides backwards compatibility.

FINALIZE-WEBAPP (APP)

Called when the app has been pulled off the running list to perform any webapp specific cleanup

FIND-PERSISTENT-OBJECT-BY-ID (STORE CLASS-NAME OBJECT-ID)

Finds and returns a persistent object of a given class name in a given store by its unique id. If the object isn't found, returns NIL.

FIND-PERSISTENT-OBJECTS (STORE CLASS-NAME &KEY ORDER-BY RANGE &ALLOW-OTHER-KEYS)

Looks up and returns objects of appropriate 'class-name' in the 'store' bound by the given keyword parameters. If 'order-by' is specified, orders the returned objects by the given slot in the given order. If 'order-by' is not NIL, it is expected to be a cons cell with slot name as 'car' and :asc or :desc as 'cdr'. If 'range' is specified, returns only the specified range of objects. The CAR of 'range' is the index of the initial object (inclusive) and CDR is the index past the last object. Note, the range should be applied after the objects have been filtered and ordered if necessary. Other implementation dependent keys may be defined by a given store.

GENERATE-SCAFFOLD-VIEW (SCAFFOLD-TYPE OBJECT-CLASS)

Generates and returns a scaffold view of a given scaffold type for a given object class. Scaffold views should examine the object class and provide a sensible default view for an object.

GENERATE-SCAFFOLD-VIEW-FIELD (SCAFFOLD OBJECT-CLASS DIRECT-SLOT-DEFINITION)

Generates a sensible view field from a direct slot definition. Specialize this function to generate different fields depending on a scaffold view type, object class, or slot definition.

GET-WIDGET-FOR-TOKENS (SELECTOR URI-TOKENS)

Given a list of URI tokens, map them to a widget. All selectors implement this method. There can be multiple strategies for mapping URI tokens to widgets: static maps, dynamically-generated widgets, dynamically-generated widgets with caching. Returns a widget or NIL if not found. Modifies URI-TOKENS. The whole tree update protocol goes like this: 1) HANDLE-NORMAL-REQUEST calls UPDATE-WIDGET-TREE, which walks the tree using WALK-WIDGET-TREE starting at ROOT-WIDGET and calling update-children at every node. 2) The selector's UPDATE-CHILDREN method (valid for all selectors, i.e. widgets that process URI tokens) calls GET-WIDGET-FOR-TOKENS. 3) if a widget corresponding to particular URI tokens is found, UPDATE-CHILDREN calls UPDATE-DEPENDENTS, so that the selector (or its subclass) may update its dependents list and do other housekeeping. The default implementation of UPDATE-DEPENDENTS just calls (SETF WIDGET-CHILDREN) to store the children under the :SELECTOR type. Usually the only thing you'll want to do if you are implementing your own kind of selector is to subclass selector and provide a GET-WIDGET-FOR-TOKENS method for it. See class ON-DEMAND-SELECTOR for an example.

HANDLE-CLIENT-REQUEST (APP)

This method handles each request as it comes in from the server. It is a hunchentoot handler and has access to all hunchentoot dynamic variables. The default implementation executes a user action (if any) and renders the root widget wrapped in HTML provided by 'render-page'. If the request is an AJAX request, only the dirty widgets are rendered into a JSON data structure. It also invokes user supplied 'init-user-session' on the first request that has no session setup. 'handle-client-request' immediately returns '+http-not-found+' if it sees a mime type on the script name (it doesn't handle what could be files because these mess with callback functions and break some widgets that depend on them). Additionally, on the first request a session is created and a client is forced to redirect. At this point if the cookie is sent, session information is removed from the URL, otherwise the URL is left in tact. This is done so that session information appears on the URL for clients that don't support cookies (this way AJAX requests followed by a refresh will work). This function also manages lists of callback functions and calls them at different points before and after request. See 'request-hook'. Override this method (along with :before and :after specifiers) to customize behavior.

HUMANIZE-NAME (NAME)

Convert objects to a human-readable string suitable for presentation. Default implementations beautify strings and symbols. Ex: (humanize-name 'hello-world) => "Hello World" (humanize-name "HELLO-WORLD") => "Hello World"

INITIALIZE-WEBAPP (APP)

A protocol for performing any special initialization on the creation of a webapp object.

MAKE-WIDGET (OBJ)

Create a widget from OBJ.

MAKE-WIDGET-PLACE-WRITER (CONTAINER WIDGET)

Returns a function accepting (&optional ARG) that encapsulates the place where widget is stored, behaving like this: When ARG not given, return the current contained widget. Otherwise, put ARG in the place, set ARG's parent to CONTAINER, and dirty CONTAINER. Signal an error if this place is no longer valid or ARG is null. Any widget that supports flows must implement this function. Part of the contract is that the fn sets the parent slot of the callee to the container. The other part is that the widget is dirty after the write via a direct call to make-dirty, or to a write to a widget slot.

MAP-SUBWIDGETS (FUNCTION WIDGET)

Call FUNCTION once for every direct child of WIDGET. The return value is unspecified. You should define a method for your widget class if it introduces child widgets that should be seen by `walk-widget-tree', but are not included in `widget-children', and are not rendered by `render-widget-children'. You should also define a method on `make-widget-place-writer' in that case.

MARK-DIRTY (W &KEY PROPAGATE PUTP (PROPAGATE T PROPAGATE-SUPPLIED) (PUTP NIL PUTP-SUPPLIED))

Default implementation adds a widget to a list of dirty widgets. Normally used during an AJAX request. If there are any widgets in the 'propagate-dirty' slot of 'w' and 'propagate' is true (the default), these widgets are added to the dirty list as well. Note that this function is automatically called when widget slots are modified, unless slots are marked with affects-dirty-status-p. Returns NIL if the widget is already dirty or T and the results of calling MARK-DIRTY on the list of dependents (propagate-dirty). PUTP is a legacy argument. Do not use it in new code.

OBJECT-CLASS-NAME (OBJ)

Returns an object's class name (i.e. "Employee"). This method is be used to present the name of an entity to the user. Override this method to change the name for particular objects.

OBJECT-ID (OBJ)

Returns a value that uniquely identifies an object in memory or in a backend store. The default implementation looks for an 'id' slot via 'slot-value'. If such slot is not present, signals an error. Specialize this function for various back end stores and other object identification schemes.

SETFOBJECT-ID (ID OBJ)

Sets the value that uniquely identifies an object in memory or in a backend store. The default implementation tries to set an 'id' slot via 'slot-value'. If such slot is not present, signals an error. Specialize this function for various back end stores and other object identification schemes.

OPEN-STORE (STORE-TYPE &REST ARGS)

Opens a connection to a store specified by 'store-type'. This function must return the instance of the connection to the store. Methods can accept any number of custom keyword parameters. Additionally, the function must set *default-store* to the value of newly created store.

PAGE-DESCRIPTION (W)

Generate a page description. See page-title for details on how this description is built.

PAGE-HEADERS (W)

Additional headers for the widget. This is useful for things like RSS. The returned list may contain strings and nullary functions.

PAGE-KEYWORDS (W)

Meta keywords for the widget. See also *accumulate-page-keywords* and application-page-title.

PAGE-NOT-FOUND-HANDLER (APP)

This function is called when the current widget heirarchy fails to parse a URL. The default behavior simply sets the +http-not-found+ return code

PAGE-TITLE (W)

Generate a page title. This method will be called when walking the widget tree before rendering. Widgets that wish to set the page title should have a method defined. If multiple widgets provide a page title, one deepest in the widget tree (most specific) will be chosen.

PAGINATION-RENDER-TOTAL-ITEM-COUNT (OBJ &REST ARGS)

This function is responsible for rendering the total number of items if 'show-total-items' is set to true.

PARSE-VIEW-FIELD-VALUE (PARSER VALUE OBJ VIEW FIELD &REST ARGS)

Parse a string 'value' obtained from a request using a specified 'parser' and save it into an appopriate 'obj' slot obtained from a view 'field'. This function returns three values. The first value is true if 'request-slot-value' has successfully been parsed and false otherwise. If the first value is true, the second value is true if the input is not empty, and false otherwise. If the second value is true, the third value is the actual parsed value. Specialize this function to add custom parsers or to parse given fields differently.

PARSER-CLASS-NAME (PARSER-TYPE)

Given a type of the parser, returns its class name. Default implementation adds '-parser' to the type and returns the symbol.

PEEK-AT-TOKEN (TOKENS)

Return the first remaining token without consuming it.

PER-CLASS-DEPENDENCIES (OBJ)

Return a list of dependencies for an object of a particular class. For widgets, this method is defined by defwidget automatically. If you don't use defwidget or if you want other renderable types to have per-class-dependencies, you need to take care to define this method for your class. The default implementation for widgets uses the following protocol to determine if a widget has dependencies. It looks under *public-files-path*/scripts/[attributized-widget-class-name].js and *public-files-path*/stylesheets/[attributized-widget-class-name].css. If it finds the aforementioned files, it returns them as dependencies. This way the developer can simply place relevant files in the appropriate location and not worry about specializing this function most of the time.

PERSIST-OBJECT (STORE OBJECT &KEY)

Persists 'object' into 'store', answering 'object'. If the object does not have a unique ID (see 'object-id'), persist 'object' into store and set its unique ID via (see '(setf object-id)'). If the object has a unique ID, find relevant entry in the store and update it with 'object'.

POP-TOKENS (TOKENS &OPTIONAL HOW-MANY)

Consume HOW-MANY of the remaining tokens.

PRESENTATION-CHOICES-DEFAULT-LABEL-KEY (VALUE)

Default key for choice labels. See 'presentation-choices-label-key' for more details.

PRESENTATION-CHOICES-DEFAULT-VALUE-KEY (VALUE)

Default key for choice values. See 'presentation-choices-value-key' for more details.

PRESENTATION-CLASS-NAME (PRESENTATION-TYPE)

Given a type of the presentation, returns its class name. Default implementation adds '-presentation' to the type and returns the symbol.

RENDER-DATAFORM (OBJ DATA &REST ARGS)

Renders the dataform widget in its current state. Normally called by 'render-widget-body'. Override to customize rendering for particular types of data. 'obj' - widget object to render. 'data' - data to render. 'args' - keyword arguments passed to functions internally. See 'render-data', 'render-form', etc.

RENDER-DATAFORM-DATA (OBJ DATA VIEW &REST ARGS)

Renders the dataform widget when it's in ':data' state. Normally called by 'render-dataform'. Override to customize data behavior.

RENDER-DATAFORM-DATA-BUTTONS (DATAFORM DATA)

Render the buttons and links appearing with the data view on a dataform.

RENDER-DATAFORM-FORM (OBJ DATA VIEW &REST ARGS)

Renders the dataform widget when it's in ':form' state. Normally called by 'render-dataform'. Override to customize form behavior.

RENDER-DATASEQ-BODY (OBJ &REST ARGS)

Renders the actual data of the dataseq without any controls before or after. Widgets deriving from dataseq should specialize this function to render their elements.

RENDER-FORM-VIEW-BUTTONS (VIEW OBJ WIDGET &REST ARGS &KEY BUTTONS FORM-VIEW-BUTTONS &ALLOW-OTHER-KEYS)

Renders buttons specified view 'buttons' slot of the 'form-view' object. By default, this method renders 'Submit' and 'Cancel' buttons for the form view. Override this method to render form controls differently. 'view' - the view being rendered. 'obj' - the object being rendered. 'buttons' - same as form-view-buttons, can be used to override form-view-buttons for a given view.

RENDER-NAVIGATION-MENU (OBJ &REST ARGS &KEY MENU-ARGS &ALLOW-OTHER-KEYS)

Renders the HTML menu for the navigation widget.

RENDER-OBJECT-VIEW-IMPL (OBJ VIEW WIDGET &REST ARGS &KEY (FIELDS-PREFIX-FN (VIEW-FIELDS-DEFAULT-PREFIX-FN VIEW)) (FIELDS-SUFFIX-FN (VIEW-FIELDS-DEFAULT-SUFFIX-FN VIEW)) &ALLOW-OTHER-KEYS)

Renders 'obj' using 'view'.

RENDER-PAGE (APP)

Takes the widget and application dependency information and wraps the HTML already rendered to *weblocks-output-stream* with boilerplate page HTML (title, stylesheets, etc.). Can be overridden by subclasses

RENDER-PAGE-BODY (APP RENDERED-HTML)

Renders the body of the page (exluding the <body> tag). The default implementation wraps the already rendered HTML in a wrapper div along with extra tags. Specialize :before and :after methods to render extra html prior and post the page wrapper and override the main method to replace the generation of the page wrapper and any contents inside it but outside the rendering of the root widget

RENDER-TABLE-VIEW-BODY-ROW (VIEW OBJ WIDGET &REST ARGS)

Renders the rows in the 'tbody' element of the table. The default implementation uses 'render-table-body-cell' to render particular cells. See 'render-table-header-row' for more details.

RENDER-TABLE-VIEW-HEADER-ROW (VIEW OBJ WIDGET &REST ARGS)

Renders the row in the 'thead' element of the table. The default implementation uses 'render-view-field-header' to render particular cells. Specialize this method to achieve customized header row rendering.

RENDER-VALIDATION-SUMMARY (VIEW OBJ WIDGET ERRORS)

Renders a summary of validation errors on top of the form. This function can be redefined to render validation summary differently.

RENDER-VIEW-FIELD (FIELD VIEW WIDGET PRESENTATION VALUE OBJ &REST ARGS &KEY FIELD-INFO ROW-ACTION VALIDATION-ERRORS &ALLOW-OTHER-KEYS)

Renders a given view field. This function should render appropriate structural markup, and call render-view-field-value to render the actual value of the field. Specialize this function to customize the way individual fields are rendered.

RENDER-VIEW-FIELD-HEADER (FIELD VIEW WIDGET PRESENTATION VALUE OBJ &REST ARGS &KEY FIELD-INFO &ALLOW-OTHER-KEYS)

Renders a table header cell.

RENDER-VIEW-FIELD-HEADER-VALUE (VALUE PRESENTATION FIELD VIEW WIDGET OBJ &REST ARGS)

Renders a table header cell value.

RENDER-VIEW-FIELD-VALUE (VALUE PRESENTATION FIELD VIEW WIDGET OBJ &REST ARGS &KEY HIGHLIGHT FIELD-INFO INTERMEDIATE-VALUES IGNORE-NULLS-P &ALLOW-OTHER-KEYS)

Renders 'value' obtained from 'field' using 'presentation'. If this function requires a textual representation of the value, it should call 'print-view-field-value'. Specialize this function to add ways to present data to users.

RENDER-WIDGET (OBJ &KEY INLINEP &ALLOW-OTHER-KEYS)

Renders a widget ('render-widget-body') wrapped in a header ('with-widget-header'). If 'inlinep' is true, renders the widget without a header. Additionally, calls 'dependencies' and adds the returned items to *page-dependencies*. This is later used by Weblocks to declare stylesheets and javascript links in the page header.

RENDER-WIDGET-BODY (OBJ &REST ARGS &KEY PRE-DATA-MINING-FN POST-DATA-MINING-FN ID CLASS &ALLOW-OTHER-KEYS)

A generic function that renders a widget in its current state. In order to actually render the widget, call 'render-widget' instead. 'obj' - widget object to render.

RENDER-WIDGET-CHILDREN (OBJ &REST ARGS)

Renders the widget's children.

REQUEST-PARAMETER-FOR-PRESENTATION (NAME PRESENTATION)

Answer HTTP request parameter NAME, but preprocessed for PRESENTATION.

ROLLBACK-TRANSACTION (STORE)

Rolls back a transaction started on 'store'. Note, if the given store does not have transaction support, or the store isn't in a transaction, this function should return NIL without signalling errors.

SCAFFOLD-CLASS-NAME (SCAFFOLD)

Given a scaffold 'type', converts it to the class name of the scaffold. Default implementation adds '-scaffold' to the type and returns the symbol.

SCAFFOLD-VIEW-FIELD-TYPE (SCAFFOLD)

Given a scaffold object, returns its view field type. Default implementation removes '-scaffold' from the end of the scaffold's name, adds '-view-field', and returns the resulting symbol.

SCAFFOLD-VIEW-TYPE (SCAFFOLD)

Given a scaffold object, returns its view type. Default implementation removes '-scaffold' from the end of the scaffold's name, adds '-view', and returns the resulting symbol.

STATIC-SELECTOR-GET-PANE (SELECTOR TOKEN)

Get the dotted pair (pane-name . pane-content) associated with TOKEN from the list of panes. This function is called by static-selector's get-widget-for-tokens. The default implementation just returns the pair found by ASSOC.

STATIC-SELECTOR-SELECT-PANE (SELECTOR TOKEN)

Called by GET-WIDGET-FOR-TOKENS when a pane is found and selected. Subclasses may use this method to maintain information about what is currently selected.

TYPESPEC->FORM-VIEW-FIELD-PARSER (SCAFFOLD TYPESPEC ARGS)

Converts a typespec to a parser argument. See 'typespec->view-field-presentation' for more information.

TYPESPEC->VIEW-FIELD-PRESENTATION (SCAFFOLD TYPESPEC ARGS)

Expects a scaffold type, a typespec and the typespec's arguments arguments (obtained via 'inspect-typespec'). Converts the given typespec to a view-field presentation argument. This function may return multiple values. The first value should be true if the typespec was converted to a presentation, nil otherwise. If the first value is true, second value should be the presentation argument.

UPDATE-CHILDREN (WIDGET)

Called during the tree shakedown phase (before rendering) while walking the widget tree. Implement this method for widgets whose children might depend on external factors.

UPDATE-OBJECT-VIEW-FROM-REQUEST (OBJ VIEW &REST ARGS &KEY CLASS-STORE SATISFIES &ALLOW-OTHER-KEYS)

Parses view fields from request into a given object. The 'form-view-field-parser' slot of each field is used to parse a string obtained from the request into an appropriate value. The generic function 'parse-view-field-value' is called to invoke the parser. If this function succeeds updating the object with all fields obtained from the request, it returns true. Otherwise returns nil as the first value, and an association list of fields and errors as the second value. The function uses 'form-view-persist-p' to determine whether the object is to be persisted. If so, it calls 'persist-object'. Specialize this function to parse given objects differently.

UPDATE-PARENT-FOR-CHILDREN (WIDGET)

Called during the tree shakedown phase, when creating the tree (before rendering) and when modifying the list of children for a widget. Updates the parent of WIDGET's children to point to PARENT-WIDGET.

UPDATE-THREAD-STATUS (APP STATUS)

Specialize this function to use some other means to communicate a request's status. The default implementation updates the thread's name (currently only on SBCL).

URI-PARAMETERS-SLOTMAP (W)

Returns an alist of (slotname . param-name)

URI-TOKENS-START-WITH (URI-TOKENS MATCH-TOKENS)

Returns true if URI-TOKENS start with MATCH-TOKENS.

USE-DYNAMIC-TRANSACTION-P (STORE)

Answer whether `action-txn-hook' and equivalents should use GF `dynamic-transaction' for transaction control rather than the `begin-transaction', `commit-transaction', and `rollback-transaction' GFs. Be warned that non-local exit behavior for stores that answer true for this may have unique non-local exit unwind behavior.

VALIDATE-FORM-VIEW-FIELD (SLOT-NAME OBJECT FIELD VIEW PARSED-VALUE)

Called by 'validate-object-form-view' during form deserialization to validate a form view field. Default implementation ensures that the parsed value satisfies any type requirements declared on the slot (unless the field has a custom writer, in which case this condition is waived), and functions declared on the 'satisfies' slot of the form-view-field. If the field is validated, the function returns true. Otherwise, returns nil as the first value and an error message as the second value. Default implementation obtains the error message by calling 'parser-error-message' on the field's parser. 'slot-name' - the name of the slot being validated. 'object' - object being validated. 'field' - form-view-field being validated. 'view' - form-view being validated. 'parsed-value' - the value parsed from the request.

VALIDATE-OBJECT-FORM-VIEW (OBJECT VIEW PARSED-VALUES)

Called by the framework during form deserialization to validate a form view. Default implementation validates each field by calling 'validate-form-view-field', then if individual field validation succeeds, applies view-global validators. If this function succeeds validating the form it returns true. Otherwise returns nil as the first value, and an association list of either fields and errors or nils and errors (for non-field-related validation errors) as the second value. 'object' - the object the form is being deserialized into. 'view' - form view object being deserialized. 'parsed-values' - an association list of field-info structures and parsed values.

VIEW-ARGUMENT-QUOTING-STRATEGY (ARG-NAME)

A quoting strategy for an argument of a given name. Possible values are :quote, in which case the argument is always quoted; :list, in which case argument is quoted but if it is a list, its elements aren't quoted; and :none, in which case argument isn't quoted. Default implementation returns :none.

VIEW-CLASS-NAME (VIEW-TYPE)

Given a view 'type', converts it to the class name of the view. Default implementation adds '-view' to the type and returns the symbol.

VIEW-DEFAULT-FIELD-TYPE (VIEW-TYPE FIELD-TYPE)

Given 'view-type' and 'field-type', returns the type of the fields of the view. Default implementation returns 'field-type' if present, otherwise 'view-type'.

VIEW-FIELD-CLASS-NAME (FIELD-TYPE)

Given a type of the field, returns its class name. Default implementation adds '-view-field' to the type and returns the symbol.

WALK-WIDGET-TREE (OBJ FN &OPTIONAL DEPTH)

Walk the widget tree starting at obj and calling fn at every node. Fn is a function that takes two arguments: a widget being processed and an integer indicating the current depth in the widget tree. TODO: should support an optional kwarg COLLECT to collect the return values of applying FN.

WIDGET-CHILDREN (W &OPTIONAL TYPE)

Return a list of all widgets (all types) who are children of w (e.g. may be rendered when w is rendered).

SETFWIDGET-CHILDREN (WIDGETS OBJ &OPTIONAL TYPE)

Set the list of children of type TYPE for OBJ to be WIDGETS. TYPE is a symbol (usually a keyword) and serves as a handle so that these particular children may later be retrieved. The children alist is copied before modification so the changed list of children does not share structure with the old one. This is especially important for DO-WIDGET and friends.

WIDGET-NAME (OBJ)

An interface to the DOM id of a widget. Provides access to the underlying implementation, can return either a symbol, a string, or nil.

WITH-TABLE-VIEW-BODY-ROW (VIEW OBJ WIDGET &REST ARGS &KEY ALTERNP &ALLOW-OTHER-KEYS)

Used by table view to render body rows. Specialize this function to modify HTML around a given row's cells.

WITH-TABLE-VIEW-HEADER (VIEW OBJ WIDGET HEADER-FN ROWS-FN &REST ARGS &KEY SUMMARY &ALLOW-OTHER-KEYS)

Table specific header responsible for rendering table, thead, and tbody HTML.

WITH-TABLE-VIEW-HEADER-ROW (VIEW OBJ WIDGET &REST ARGS)

Used by table view to render header rows. This functions calls 'render-table-view-header-row' to render the header cells. Specialize this function to modify HTML around a given header row's cells.

WITH-VIEW-HEADER (VIEW OBJ WIDGET BODY-FN &REST ARGS &KEY (FIELDS-SUFFIX-FN (VIEW-FIELDS-DEFAULT-SUFFIX-FN VIEW)) (FIELDS-PREFIX-FN (VIEW-FIELDS-DEFAULT-PREFIX-FN VIEW)) (METHOD (FORM-VIEW-DEFAULT-METHOD VIEW)) (ACTION (FORM-VIEW-DEFAULT-ACTION VIEW)) VALIDATION-ERRORS &ALLOW-OTHER-KEYS)

Renders header and footer around the body of the view. Specialize this function to customize rendering header and footer of a view.

WITH-WIDGET-HEADER (OBJ BODY-FN &REST ARGS &KEY WIDGET-PREFIX-FN WIDGET-SUFFIX-FN &ALLOW-OTHER-KEYS)

Renders a header and footer for the widget and calls 'body-fn' within it. Specialize this function to provide customized headers for different widgets. 'widget-prefix-fn' and 'widget-suffix-fn' allow specifying functions that will be applied before and after the body is rendered.

Undocumented

ALL-TOKENS (TOKENS)

APPLICATION-PAGE-DESCRIPTION (APP)

APPLICATION-PAGE-KEYWORDS (APP)

APPLICATION-PAGE-TITLE (APP)

ATTRIBUTIZE-VIEW-FIELD-NAME (FIELD-INFO)

CLASS-FROM-VIEW (VIEW &OPTIONAL (CLASS-NAME))

COMPOSITE-WIDGETS (COMP)

SETFCOMPOSITE-WIDGETS (VALUE COMP)

CONSUME-TOKENS (TOKENS TOKEN-LIST)

DATAEDIT-ADD-ITEMS-FLOW (OBJ SEL)

DATAEDIT-RESET-STATE (OBJ)

DATAEDIT-UPDATE-OPERATIONS (OBJ &KEY (DELETE-FN #'DATAEDIT-DELETE-ITEMS-FLOW) (ADD-FN #'DATAEDIT-ADD-ITEMS-FLOW))

DATAFORM-DATA-VIEW (OBJECT)

DATAFORM-FORM-VIEW (OBJECT)

DATALIST-ITEM-DATA-VIEW (OBJECT)

DATASEQ-DATA-FORM-CLASS (OBJ)

DATASEQ-VIEW (OBJECT)

DEPENDENCY-URL (OBJECT)

SETFDOM-ID (ID OBJ)

GET-WIDGET-BY-ID (ID &KEY (TEST #'STRING-EQUAL))

GET-WIDGETS-BY-TYPE (TYPE &KEY (INCLUDE-SUBTYPES-P T) (ROOT (ROOT-WIDGET)))

HANDLE-ERROR-CONDITION (APP C)

HANDLE-HTTP-ERROR (APP CODE &OPTIONAL CONDITION)

MIXIN-FORM-VIEW-FIELD-PERSIST-P (OBJECT)

OBTAIN-PRESENTATION-CHOICES (CHOICES-MIXIN OBJ)

RECREATE-TEMPLATE-PRINTER (OBJ)

RENDER-DATAFORM-SUMMARY (WIDGET DATA VIEW &REST ARGS)

RENDER-DEPENDENCY-IN-AJAX-RESPONSE (OBJ)

RENDER-DEPENDENCY-IN-FORM-SUBMIT (OBJ)

RENDER-DEPENDENCY-IN-PAGE-BODY-BOTTOM (OBJ)

RENDER-DEPENDENCY-IN-PAGE-BODY-TOP (OBJ)

RENDER-DEPENDENCY-IN-PAGE-HEAD (OBJ)

RENDER-EXTRA-TAGS (TAG-CLASS COUNT)

RENDER-PAGE-HEADERS (APP)

RENDER-TEMPLATE (OBJ)

TOKENS-FULLY-CONSUMED-P (TOKENS)

UPDATE-STATE-FROM-LOCATION-HASH (WIDGET HASH)

SETFWEBLOCKS-WEBAPP-PUBLIC-FILES-PATH (NEW-VALUE OBJECT)

WIDGET (CONDITION)

SETFWIDGET (NEW-VALUE CONDITION)

SETFWIDGET-NAME (NAME OBJ)

SETFWIDGET-PARENT (NEW-VALUE OBJECT)

WIZARD-CREATE-WIDGET (WIZARD STEP DATA)

WIZARD-CURRENT-DATUM (WIZARD)

WIZARD-FORM-VIEW (WIZARD DATA STEP)

WIZARD-PROCEED (WIZARD)

WIZARD-PROCESSED-DATA (WIZARD)

WIZARD-RECEDE (WIZARD)

WIZARD-REMAINING-DATA (WIZARD)

WIZARD-RENDER-NO-DATA (WIZARD)

WIZARD-RENDER-STATUS (WIZARD TYPE)

WIZARD-RENDER-STEP (WIZARD STEP DATA)

WIZARD-RENDER-SUMMARY-PAGE (WIZARD)

WIZARD-TOTAL-STEPS (WIZARD)

WIZARD-UPDATE-CURRENT-WIDGET (WIZARD)

Private

ENSURE-DOM-ID (OBJ)

Ensure that the object has a 'dom-id' and return it. 'dom-id' is lazily generated on first read, because its creation requires a session to be present. Returns a string, symbol, or nil.

UPDATE-DEPENDENTS (SELECTOR CHILDREN)

Update the dependents for a given selector with children. A selector will usually contain the children, but there might be selectors that have other widgets dependent on them and need to do additional housekeeping. Children is either a list of widgets or a widget. Note that we do not update the widget-parent relations: those are handled by (SETF WIDGET-CHILDREN).

UPDATE-WIDGET-PARAMETERS (WIDGET REQUEST-METHOD URI-PARAMETERS)

Given an alist of parameters, widget updates its state appropriately. The default method for plain widgets does nothing. The default method for uri-parameters-mixin uses a method (parameter-slot-map that is automatically defined by the macro to get the list slots to update and the associated parameter names.

URI-PARAMETER-VALUES (W)

Returns an alist of (param-name . slot-value)

Undocumented

CHANGE-MADE-DURING-RENDERING (CONDITION)

ENSURE-PRINTER-EXISTS (OBJ)

HANDLE-AJAX-REQUEST (APP)

HANDLE-NORMAL-REQUEST (APP)

MISSING-ACTION-HANDLER-PART (CONDITION)

MISUNDERSTOOD-ACTION (CONDITION)

WEBAPP-MISSING-DEFAULT-STORE (CONDITION)

SETFWEBLOCKS-WEBAPP-PREFIX (PREFIX APP)

SETFWEBLOCKS-WEBAPP-PUBLIC-FILES-URI-PREFIX (PREFIX APP)

SLOT-ACCESSOR

Public

BUNDLE-DEPENDENCY-TYPES (OBJECT)

This enables bundling of css, js files. If you only want js files to get bundled, set this to '(script-dependency). Set it to nil disables bundling. When debug is on, bundling is turned off. ATTENTION: If your 'whatever.css' file contains import rules, please take them out, put them in a separate file, and name it 'whatever-import.css'. This way all import rules will get properly placed in the beginning of the bundled css file. ATTENTION: Bundling depends on versioning to detect change in a bundle. TIPS:You can also prevent files from being bundled, for example, '((stylesheet-dependency filepath-1 filepath-2) script-dependency) These two files however, will come after the bundled ones in HTML.

SETFBUNDLE-DEPENDENCY-TYPES (NEW-VALUE OBJECT)

This enables bundling of css, js files. If you only want js files to get bundled, set this to '(script-dependency). Set it to nil disables bundling. When debug is on, bundling is turned off. ATTENTION: If your 'whatever.css' file contains import rules, please take them out, put them in a separate file, and name it 'whatever-import.css'. This way all import rules will get properly placed in the beginning of the bundled css file. ATTENTION: Bundling depends on versioning to detect change in a bundle. TIPS:You can also prevent files from being bundled, for example, '((stylesheet-dependency filepath-1 filepath-2) script-dependency) These two files however, will come after the bundled ones in HTML.

CONSUMED-TOKENS (OBJECT)

A list of tokens that have already been consumed.

SETFCONSUMED-TOKENS (NEW-VALUE OBJECT)

A list of tokens that have already been consumed.

DATA-EDITOR-FORM-BUTTONS (OBJECT)

Same as `form-view-buttons'. If not null, used to override the value of `form-view-buttons' for the view being rendered (by passing :form-view-buttons arg to the view).

SETFDATA-EDITOR-FORM-BUTTONS (NEW-VALUE OBJECT)

Same as `form-view-buttons'. If not null, used to override the value of `form-view-buttons' for the view being rendered (by passing :form-view-buttons arg to the view).

DATAEDIT-ALLOW-ADD-P (OBJECT)

If true, the widget should provide the UI to add entries to the collection.

SETFDATAEDIT-ALLOW-ADD-P (NEW-VALUE OBJECT)

If true, the widget should provide the UI to add entries to the collection.

DATAEDIT-ALLOW-DELETE-P (OBJECT)

If true, the widget should provide the UI to delete entries in the collection.

SETFDATAEDIT-ALLOW-DELETE-P (NEW-VALUE OBJECT)

If true, the widget should provide the UI to delete entries in the collection.

DATAEDIT-CASCADE-DELETE-MIXINS-P (OBJECT)

If set to true, mixin objects will be deleted from the store when the parent object is deleted. By default set to '*default-cascade-delete-mixins-p*'.

SETFDATAEDIT-CASCADE-DELETE-MIXINS-P (NEW-VALUE OBJECT)

If set to true, mixin objects will be deleted from the store when the parent object is deleted. By default set to '*default-cascade-delete-mixins-p*'.

DATAEDIT-ITEM-DATA-VIEW (OBJECT)

An optional custom data view that, if provided, is used to instantiate the 'item-widget'.

SETFDATAEDIT-ITEM-DATA-VIEW (NEW-VALUE OBJECT)

An optional custom data view that, if provided, is used to instantiate the 'item-widget'.

DATAEDIT-ITEM-FORM-VIEW (OBJECT)

An optional custom form view that, if provided, is used to instantiate the 'item-widget'.

SETFDATAEDIT-ITEM-FORM-VIEW (NEW-VALUE OBJECT)

An optional custom form view that, if provided, is used to instantiate the 'item-widget'.

DATAEDIT-ITEM-WIDGET (OBJECT)

A widget used by dataedit to display a form for adding and editing items. This widget will be created and destroyed as necessary.

SETFDATAEDIT-ITEM-WIDGET (NEW-VALUE OBJECT)

A widget used by dataedit to display a form for adding and editing items. This widget will be created and destroyed as necessary.

DATAEDIT-MIXIN-FLASH-MESSAGE-ON-FIRST-ADD-P (OBJECT)

If this field is set to nil (the default), a message about adding an item will not be flashed when the first item is added.

SETFDATAEDIT-MIXIN-FLASH-MESSAGE-ON-FIRST-ADD-P (NEW-VALUE OBJECT)

If this field is set to nil (the default), a message about adding an item will not be flashed when the first item is added.

DATAEDIT-ON-ADD-ITEM (OBJECT)

A function called by the widget when an item is added. The function should accept two arguments (the widget object and a new item), and should take appropriate action.

SETFDATAEDIT-ON-ADD-ITEM (NEW-VALUE OBJECT)

A function called by the widget when an item is added. The function should accept two arguments (the widget object and a new item), and should take appropriate action.

DATAEDIT-ON-ADD-ITEM-COMPLETED (OBJECT)

A function called by the widget when an the add action is complete. The function should accept two arguments (the widget object and a new item).

SETFDATAEDIT-ON-ADD-ITEM-COMPLETED (NEW-VALUE OBJECT)

A function called by the widget when an the add action is complete. The function should accept two arguments (the widget object and a new item).

DATAEDIT-ON-DELETE-ITEMS (OBJECT)

A function called by the widget when one or more items are deleted. The function should accept two arguments (the widget object and a value that has semantics similar to dataseq's 'selection' slot). If the function is missing, the should be deleted via store API.

SETFDATAEDIT-ON-DELETE-ITEMS (NEW-VALUE OBJECT)

A function called by the widget when one or more items are deleted. The function should accept two arguments (the widget object and a value that has semantics similar to dataseq's 'selection' slot). If the function is missing, the should be deleted via store API.

DATAEDIT-ON-DELETE-ITEMS-COMPLETED (OBJECT)

A function called by the widget when the deletion of items has complted. The function should accept two arguments (the widget object and a value that has semantics similar to dataseq's 'selection' slot).

SETFDATAEDIT-ON-DELETE-ITEMS-COMPLETED (NEW-VALUE OBJECT)

A function called by the widget when the deletion of items has complted. The function should accept two arguments (the widget object and a value that has semantics similar to dataseq's 'selection' slot).

DATAEDIT-UI-STATE (OBJECT)

A state of the dataedit control. The values of this slot may differ depending on concrete implementation of dataedit. Generally NIL means normal state, :add means render a widget to add a new item, and :drilldown means drill down on an existing item.

SETFDATAEDIT-UI-STATE (NEW-VALUE OBJECT)

A state of the dataedit control. The values of this slot may differ depending on concrete implementation of dataedit. Generally NIL means normal state, :add means render a widget to add a new item, and :drilldown means drill down on an existing item.

DATAFORM-ALLOW-CLOSE-P (OBJECT)

If set to true (the default), and 'on-close' isn't nil, renders a close button.

SETFDATAFORM-ALLOW-CLOSE-P (NEW-VALUE OBJECT)

If set to true (the default), and 'on-close' isn't nil, renders a close button.

DATAFORM-CLASS-STORE (OBJECT)

A store that will be used for persisting the data object. If this slot isn't specified, the value is obtained by calling class-store on the data class.

SETFDATAFORM-CLASS-STORE (NEW-VALUE OBJECT)

A store that will be used for persisting the data object. If this slot isn't specified, the value is obtained by calling class-store on the data class.

DATAFORM-DATA (OBJECT)

Data object rendered and modified by this widget.

SETFDATAFORM-DATA (NEW-VALUE OBJECT)

Data object rendered and modified by this widget.

SETFDATAFORM-DATA-VIEW (NEW-VALUE OBJECT)

View object used to render 'data' object into information view. If 'data-view' isn't provided, the scaffold view will be used by default.

SETFDATAFORM-FORM-VIEW (NEW-VALUE OBJECT)

View object used to render 'data' object into form view. If 'form-view' isn't provided, the scaffold view will be used by default.

DATAFORM-ON-CANCEL (OBJECT)

An optional callback function with one argument (the dataform widget). Called when the user presses a cancel button.

SETFDATAFORM-ON-CANCEL (NEW-VALUE OBJECT)

An optional callback function with one argument (the dataform widget). Called when the user presses a cancel button.

DATAFORM-ON-CLOSE (OBJECT)

An optional callback function with one argument (the dataform widget). Called when the user clicks on the close button. Note that the close button is only rendered if 'allow-close-p' is true.

SETFDATAFORM-ON-CLOSE (NEW-VALUE OBJECT)

An optional callback function with one argument (the dataform widget). Called when the user clicks on the close button. Note that the close button is only rendered if 'allow-close-p' is true.

DATAFORM-ON-SUCCESS (OBJECT)

An optional callback function with one argument (the dataform widget). Called when the user successfully submitted data that passed through the validation stage.

SETFDATAFORM-ON-SUCCESS (NEW-VALUE OBJECT)

An optional callback function with one argument (the dataform widget). Called when the user successfully submitted data that passed through the validation stage.

DATAFORM-UI-STATE (OBJECT)

Current internal state of the widget. Normally :data when rendering via 'render-data' and :form when rendering via 'render-form'.

SETFDATAFORM-UI-STATE (NEW-VALUE DATA-EDITOR)

The When a dataform or similar, change DATA-EDITOR's state to NEW-VALUE, which should be :data or :form.

SETFDATALIST-ITEM-DATA-VIEW (NEW-VALUE OBJECT)

An item view used by the datalist to render each data item. Note, because datalist renders independent items in a list, it does not use sequence view for rendering. However, sequence view is used to determine sorting preferences, etc. For this reason, datalist uses dataseq-view that it inherits from dataseq, as well as datalist-item-data-view.

DATALIST-ORDERED-P (OBJECT)

Determines if the datalist presents its items as an ordered list (default is true).

SETFDATALIST-ORDERED-P (NEW-VALUE OBJECT)

Determines if the datalist presents its items as an ordered list (default is true).

DATASEQ-ALLOW-DRILLDOWN-P (OBJECT)

If set to true and 'on-drilldown' isn't nil, dataseq provides the UI to drill down into items.

SETFDATASEQ-ALLOW-DRILLDOWN-P (NEW-VALUE OBJECT)

If set to true and 'on-drilldown' isn't nil, dataseq provides the UI to drill down into items.

DATASEQ-ALLOW-OPERATIONS-P (OBJECT)

If true, the widget deriving from dataseq provides a UI to access operations defined in 'item-ops' and 'common-ops'.

SETFDATASEQ-ALLOW-OPERATIONS-P (NEW-VALUE OBJECT)

If true, the widget deriving from dataseq provides a UI to access operations defined in 'item-ops' and 'common-ops'.

DATASEQ-ALLOW-PAGINATION-P (OBJECT)

Set to true to enable pagination (default) or nil to disable it.

SETFDATASEQ-ALLOW-PAGINATION-P (NEW-VALUE OBJECT)

Set to true to enable pagination (default) or nil to disable it.

DATASEQ-ALLOW-SELECT-P (OBJECT)

If true, dataseq provides the UI to select entries in the collection.

SETFDATASEQ-ALLOW-SELECT-P (NEW-VALUE OBJECT)

If true, dataseq provides the UI to select entries in the collection.

DATASEQ-ALLOW-SORTING-P (OBJECT)

Set to true to enable sorting, or nil to disable it.

SETFDATASEQ-ALLOW-SORTING-P (NEW-VALUE OBJECT)

Set to true to enable sorting, or nil to disable it.

DATASEQ-AUTOSET-DRILLED-DOWN-ITEM-P (OBJECT)

If set to true, 'drilled-down-item' will be automatically set to the appropriate item when the user drills down on the widget.

SETFDATASEQ-AUTOSET-DRILLED-DOWN-ITEM-P (NEW-VALUE OBJECT)

If set to true, 'drilled-down-item' will be automatically set to the appropriate item when the user drills down on the widget.

DATASEQ-CLASS-STORE (OBJECT)

The store responsible for maintaining instances of the 'data-class'. By default, the store is obtained by calling 'class-store' at dataseq initialization. Otherwise, the specified store will be used by the dataseq. This functionality is useful for 'scratch' stores - non-persistant repositories of data.

SETFDATASEQ-CLASS-STORE (NEW-VALUE OBJECT)

The store responsible for maintaining instances of the 'data-class'. By default, the store is obtained by calling 'class-store' at dataseq initialization. Otherwise, the specified store will be used by the dataseq. This functionality is useful for 'scratch' stores - non-persistant repositories of data.

DATASEQ-COMMON-OPS (OBJECT)

Similar to 'item-ops', except operations aren't performed on a particular item, but on the widget as a whole (e.g. adding an item, deleting all items, etc). The destinction is made between common-ops and item-ops because different widgets may want to provide different UI for the two.

SETFDATASEQ-COMMON-OPS (NEW-VALUE OBJECT)

Similar to 'item-ops', except operations aren't performed on a particular item, but on the widget as a whole (e.g. adding an item, deleting all items, etc). The destinction is made between common-ops and item-ops because different widgets may want to provide different UI for the two.

DATASEQ-DATA-CLASS (OBJECT)

The class name of the objects rendered by this dataseq. While the class can potentially be obtained from the data directly, it is not always possible. Additionally, specifying the class makes dataseq more efficient. For these reasons it is required to specify this slot at the instantiation time.

SETFDATASEQ-DATA-CLASS (NEW-VALUE OBJECT)

The class name of the objects rendered by this dataseq. While the class can potentially be obtained from the data directly, it is not always possible. Additionally, specifying the class makes dataseq more efficient. For these reasons it is required to specify this slot at the instantiation time.

DATASEQ-DRILLED-DOWN-ITEM (OBJECT)

If 'allow-drilldown-p' is set to true and the user drills down on an item this slot can be set to the item in question. This slot is set to the drilled down item automatically only when 'autoset-drilled-down-item-p' is true. Note, it is always the responsibility of the dataseq's client to reset this slot back to nil.

SETFDATASEQ-DRILLED-DOWN-ITEM (NEW-VALUE OBJECT)

If 'allow-drilldown-p' is set to true and the user drills down on an item this slot can be set to the item in question. This slot is set to the drilled down item automatically only when 'autoset-drilled-down-item-p' is true. Note, it is always the responsibility of the dataseq's client to reset this slot back to nil.

DATASEQ-FLASH (OBJECT)

A flash widget provided by the dataseq to display relevant information to the user (errors, item modification information, etc.)

SETFDATASEQ-FLASH (NEW-VALUE OBJECT)

A flash widget provided by the dataseq to display relevant information to the user (errors, item modification information, etc.)

DATASEQ-ITEM-OPS (OBJECT)

A list of cons cells that define operations on items. A car of each cell should contain a name of the operation, while the cdr of each cell should contain a function that accepts two arguments - the widget object, and the selection cons cell passed to the function for convenience. Any given function is called by the dataseq when the appropriate operation has been invoked by the user.

SETFDATASEQ-ITEM-OPS (NEW-VALUE OBJECT)

A list of cons cells that define operations on items. A car of each cell should contain a name of the operation, while the cdr of each cell should contain a function that accepts two arguments - the widget object, and the selection cons cell passed to the function for convenience. Any given function is called by the dataseq when the appropriate operation has been invoked by the user.

DATASEQ-ON-DRILLDOWN (OBJECT)

A cons cell that represents a drilldown operation. The car of the cell should contain symbol representing the name of the operation (i.e. 'details', 'edit', etc.) and the cdr of the cell should contain a function of two arguments (widget obj and item object). If this slot isn't set to nil and 'allow-drilldown-p' is true, dataseq provides the UI to drill down into items.

SETFDATASEQ-ON-DRILLDOWN (NEW-VALUE OBJECT)

A cons cell that represents a drilldown operation. The car of the cell should contain symbol representing the name of the operation (i.e. 'details', 'edit', etc.) and the cdr of the cell should contain a function of two arguments (widget obj and item object). If this slot isn't set to nil and 'allow-drilldown-p' is true, dataseq provides the UI to drill down into items.

DATASEQ-ON-QUERY (OBJECT)

A function designator that accepts the widget instance, as well as sorting and pagination parameters. The function is expected to return a properly sorted and paged sequence. The function should also accept a :countp keyword argument. If true, the function should return only the number of items with the given parameters, not the actual items themselves. If this slot is NIL (the default), the dataseq will operate on all persistent classes specified in 'data-class'. Alternatively, 'on-query' may be a list of store-dependent keywords that will be passed to the datastore. This may be a SQL 'where' clause, etc.

SETFDATASEQ-ON-QUERY (NEW-VALUE OBJECT)

A function designator that accepts the widget instance, as well as sorting and pagination parameters. The function is expected to return a properly sorted and paged sequence. The function should also accept a :countp keyword argument. If true, the function should return only the number of items with the given parameters, not the actual items themselves. If this slot is NIL (the default), the dataseq will operate on all persistent classes specified in 'data-class'. Alternatively, 'on-query' may be a list of store-dependent keywords that will be passed to the datastore. This may be a SQL 'where' clause, etc.

DATASEQ-PAGINATION-WIDGET (OBJECT)

An instance of a pagination widget used by the dataseq to manage data pagination.

SETFDATASEQ-PAGINATION-WIDGET (NEW-VALUE OBJECT)

An instance of a pagination widget used by the dataseq to manage data pagination.

DATASEQ-SELECTION (OBJECT)

Contains a cons cell that identifies currently selected elements. That 'car' of the cell is either :all or :none. In case of :all, all items except the ones in the cdr list are selected. In case of :none, none of the elements except the ones in the cdr list are selected.

SETFDATASEQ-SELECTION (NEW-VALUE OBJECT)

Contains a cons cell that identifies currently selected elements. That 'car' of the cell is either :all or :none. In case of :all, all items except the ones in the cdr list are selected. In case of :none, none of the elements except the ones in the cdr list are selected.

DATASEQ-SHOW-TOTAL-ITEMS-COUNT-P (OBJECT)

If set to true (the default), the dataseq displays a message specifying how many items are visible.

SETFDATASEQ-SHOW-TOTAL-ITEMS-COUNT-P (NEW-VALUE OBJECT)

If set to true (the default), the dataseq displays a message specifying how many items are visible.

DATASEQ-SORT (OBJECT)

Holds a dotted pair of a path to the sorted column and the direction of the sort (:asc or :desc).

SETFDATASEQ-SORT (NEW-VALUE OBJECT)

Holds a dotted pair of a path to the sorted column and the direction of the sort (:asc or :desc).

SETFDATASEQ-VIEW (NEW-VALUE OBJECT)

A sequence view object used to render the dataseq. If the value of this slot is nil, a scaffold view will be used as determined by the concrete class derived from dataseq.

SETFDEPENDENCY-URL (NEW-VALUE OBJECT)

URL to the object, represented as a string. May be a relative or an absolute URL. Using the reader for this slot always returns an URI object (as defined by the PURI library).

DOM-CLASS (OBJECT)

The DOM class (CSS class) of an object. Set this to a string if you'd like to add an additional CSS class to the ones generated from the class hierarchy by default.

SETFDOM-CLASS (NEW-VALUE OBJECT)

The DOM class (CSS class) of an object. Set this to a string if you'd like to add an additional CSS class to the ones generated from the class hierarchy by default.

SETFDROPDOWN-PRESENTATION-WELCOME-NAME (NEW-VALUE OBJECT)

If bound, uses this value to present a welcome message in the form of [Select Welcome-Name] as the first choice. By default uses the view field label.

EXCERPT-PRESENTATION-CUTOFF-THRESHOLD (OBJECT)

Number of characters before the text is cut off.

SETFEXCERPT-PRESENTATION-CUTOFF-THRESHOLD (NEW-VALUE OBJECT)

Number of characters before the text is cut off.

FILE-UPLOAD-PARSER-FILE-NAME (OBJECT)

Can be :browser, in which case name provided by the browser will be used, :unique, in which case a random hash will be used, or a string that will be used directly.

SETFFILE-UPLOAD-PARSER-FILE-NAME (NEW-VALUE OBJECT)

Can be :browser, in which case name provided by the browser will be used, :unique, in which case a random hash will be used, or a string that will be used directly.

FILE-UPLOAD-PARSER-UPLOAD-DIRECTORY (OBJECT)

The directory where files will be copied on upload.

SETFFILE-UPLOAD-PARSER-UPLOAD-DIRECTORY (NEW-VALUE OBJECT)

The directory where files will be copied on upload.

FLASH-MESSAGES (OBJECT)

A list of messages to be rendered the next time the widget is to be presented. This can be any renderable object (a widget, a function, a string, etc.)

SETFFLASH-MESSAGES (NEW-VALUE OBJECT)

A list of messages to be rendered the next time the widget is to be presented. This can be any renderable object (a widget, a function, a string, etc.)

FLOAT-PARSER-ROUND (OBJECT)

If non-NIL, round the parsed float to ROUND decimals (0 if T is passed).

SETFFLOAT-PARSER-ROUND (NEW-VALUE OBJECT)

If non-NIL, round the parsed float to ROUND decimals (0 if T is passed).

FORM-VIEW-BUTTONS (OBJECT)

Contains a list of keywords that identify buttons to be rendered (by default contains :submit and :cancel). Default form view only recognizes :submit and :cancel keywords. Each item of the list may be a cons pair, in which case CAR of the pair should be a keyword, and CDR of the pair should be a string that will be presented to the user via value of the button.

SETFFORM-VIEW-BUTTONS (NEW-VALUE OBJECT)

Contains a list of keywords that identify buttons to be rendered (by default contains :submit and :cancel). Default form view only recognizes :submit and :cancel keywords. Each item of the list may be a cons pair, in which case CAR of the pair should be a keyword, and CDR of the pair should be a string that will be presented to the user via value of the button.

FORM-VIEW-DEFAULT-ACTION (OBJECT)

A default action that will be called upon submission of the form if :action isn't specified in keyword parameters when rendering the view.

SETFFORM-VIEW-DEFAULT-ACTION (NEW-VALUE OBJECT)

A default action that will be called upon submission of the form if :action isn't specified in keyword parameters when rendering the view.

FORM-VIEW-DEFAULT-ENCTYPE (OBJECT)

An enctype that will be used upon submission of the form.

SETFFORM-VIEW-DEFAULT-ENCTYPE (NEW-VALUE OBJECT)

An enctype that will be used upon submission of the form.

FORM-VIEW-DEFAULT-METHOD (OBJECT)

Default HTML method used for this form if :method isn't specified in keyword parameters when rendering the view. Possible values are :get (default) and :post.

SETFFORM-VIEW-DEFAULT-METHOD (NEW-VALUE OBJECT)

Default HTML method used for this form if :method isn't specified in keyword parameters when rendering the view. Possible values are :get (default) and :post.

FORM-VIEW-ERROR-SUMMARY-THRESHOLD (OBJECT)

When the number of fields in a form is longer than this threshold, an error summary is rendered at top whenever applicable.

SETFFORM-VIEW-ERROR-SUMMARY-THRESHOLD (NEW-VALUE OBJECT)

When the number of fields in a form is longer than this threshold, an error summary is rendered at top whenever applicable.

FORM-VIEW-FIELD-PARSER (OBJECT)

A parser object to be used to parse this field from a form. If not specified, the string parser will be used. In addition, scaffold views will attempt to determine the default parser from the value of the slot type, if one exists.

SETFFORM-VIEW-FIELD-PARSER (NEW-VALUE OBJECT)

A parser object to be used to parse this field from a form. If not specified, the string parser will be used. In addition, scaffold views will attempt to determine the default parser from the value of the slot type, if one exists.

FORM-VIEW-FIELD-REQUIRED-ERROR-MSG (OBJECT)

If this value isn't nil, it is presented to the user when the field is required and missing from the input data. Otherwise, the standard required error message is presented.

SETFFORM-VIEW-FIELD-REQUIRED-ERROR-MSG (NEW-VALUE OBJECT)

If this value isn't nil, it is presented to the user when the field is required and missing from the input data. Otherwise, the standard required error message is presented.

FORM-VIEW-FIELD-REQUIRED-P (OBJECT)

A predicate which determines whether the field is required.

SETFFORM-VIEW-FIELD-REQUIRED-P (NEW-VALUE OBJECT)

A predicate which determines whether the field is required.

FORM-VIEW-FIELD-SATISFIES (OBJECT)

A predicate, or a list of predicates, that set constraints for parsed values during validation. A predicate may return multiple values, in which case the second value is used as the error message instead of the default one supplied by the parser.

SETFFORM-VIEW-FIELD-SATISFIES (NEW-VALUE OBJECT)

A predicate, or a list of predicates, that set constraints for parsed values during validation. A predicate may return multiple values, in which case the second value is used as the error message instead of the default one supplied by the parser.

FORM-VIEW-FIELD-WRITER (OBJECT)

If this slot is bound to a function object, the function will be called with a new slot value and the object being rendered as arguments. If the slot is not bound, '(setf slot-value)' will be used.

SETFFORM-VIEW-FIELD-WRITER (NEW-VALUE OBJECT)

If this slot is bound to a function object, the function will be called with a new slot value and the object being rendered as arguments. If the slot is not bound, '(setf slot-value)' will be used.

FORM-VIEW-FOCUS-P (OBJECT)

If set to true, renders appropriate JavaScript to focus on the first element of the form once the form is loaded. This slot is set to false by default.

SETFFORM-VIEW-FOCUS-P (NEW-VALUE OBJECT)

If set to true, renders appropriate JavaScript to focus on the first element of the form once the form is loaded. This slot is set to false by default.

FORM-VIEW-PERSIST-P (OBJECT)

Specifies whether the object should be persisted via 'persist-object' on successful deserealization of the form.

SETFFORM-VIEW-PERSIST-P (NEW-VALUE OBJECT)

Specifies whether the object should be persisted via 'persist-object' on successful deserealization of the form.

FORM-VIEW-SATISFIES (OBJECT)

A function or a list of functions that perform validation on the entire view (possibly combining multiple fields). The function should expect keyword arguments corresponding to view slot names, each keyword argument corresponds to one of the parsed values. The function should either return t if the form validates properly, or values nil error-message if it does not.

SETFFORM-VIEW-SATISFIES (NEW-VALUE OBJECT)

A function or a list of functions that perform validation on the entire view (possibly combining multiple fields). The function should expect keyword arguments corresponding to view slot names, each keyword argument corresponds to one of the parsed values. The function should either return t if the form validates properly, or values nil error-message if it does not.

FORM-VIEW-USE-AJAX-P (OBJECT)

If set to true (default) uses AJAX on form submission. Otherwise, a full postback is done to submit the form.

SETFFORM-VIEW-USE-AJAX-P (NEW-VALUE OBJECT)

If set to true (default) uses AJAX on form submission. Otherwise, a full postback is done to submit the form.

GRIDEDIT-DRILLDOWN-TYPE (OBJECT)

Type of the drilldown UI to be provided by the gridedit. The default, :edit, provides a form via 'dataform' widget when the user drills down into a given item. If :view is specified the UI will provide a dataform in the view mode. You can also customize 'gridedit-create-drilldown-widget' to provide more fine grained behavior.

SETFGRIDEDIT-DRILLDOWN-TYPE (NEW-VALUE OBJECT)

Type of the drilldown UI to be provided by the gridedit. The default, :edit, provides a form via 'dataform' widget when the user drills down into a given item. If :view is specified the UI will provide a dataform in the view mode. You can also customize 'gridedit-create-drilldown-widget' to provide more fine grained behavior.

IMAGE-PRESENTATION-ALT (OBJECT)

Alternative text to be specified with the image.

SETFIMAGE-PRESENTATION-ALT (NEW-VALUE OBJECT)

Alternative text to be specified with the image.

IMAGE-PRESENTATION-HEIGHT (OBJECT)

A height attribute of the image.

SETFIMAGE-PRESENTATION-HEIGHT (NEW-VALUE OBJECT)

A height attribute of the image.

IMAGE-PRESENTATION-TITLE (OBJECT)

A title to be specified with the image.

SETFIMAGE-PRESENTATION-TITLE (NEW-VALUE OBJECT)

A title to be specified with the image.

IMAGE-PRESENTATION-URL-DEFAULT (OBJECT)

If specified, uses this URL to render a default image, if the value being rendered is null.

SETFIMAGE-PRESENTATION-URL-DEFAULT (NEW-VALUE OBJECT)

If specified, uses this URL to render a default image, if the value being rendered is null.

IMAGE-PRESENTATION-WIDTH (OBJECT)

A width attribute of the image.

SETFIMAGE-PRESENTATION-WIDTH (NEW-VALUE OBJECT)

A width attribute of the image.

INPUT-PRESENTATION-MAX-LENGTH (OBJECT)

Maximum length of an input.

SETFINPUT-PRESENTATION-MAX-LENGTH (NEW-VALUE OBJECT)

Maximum length of an input.

INTEGER-PARSER-RADIX (OBJECT)

Parse the integer in the specified radix.

SETFINTEGER-PARSER-RADIX (NEW-VALUE OBJECT)

Parse the integer in the specified radix.

LOGIN-CLASS-STORE (OBJECT)

Store where user data is being kept.

LOGIN-DATA (OBJECT)

A data object to hold the registration information. Must match the view if provied. If not provided, a CLOS object will be generated holding the values of the input fields in the view in the corresponding slots.

LOGIN-ON-LOGIN (OBJECT)

A function that must accept two parameters (a login widget object, and a CLOS object that contains information obtained from the user), and return an authentication object if login is successful, or nil if login failed. If the function returns a non-nil value, it will be stored in the session under *authentication-key*. If the function returns nil, it may return a string as a second value that will be used as an error message. Otherwise, *default-login-failure-error* will be used. Note, the object passed to the specified function is generated from the view provided in the 'login-view' slot. By default, it has email and password slots. The password is hashed using md5 by the publically accessible hash-password function. This should not be considered particularily secure, as it is not salted. If real security is desired, override the login-view to provide your own password handling, probably by passing it unchanged to the on-login function for serious processing there.

SETFLOGIN-ON-LOGIN (NEW-VALUE OBJECT)

A function that must accept two parameters (a login widget object, and a CLOS object that contains information obtained from the user), and return an authentication object if login is successful, or nil if login failed. If the function returns a non-nil value, it will be stored in the session under *authentication-key*. If the function returns nil, it may return a string as a second value that will be used as an error message. Otherwise, *default-login-failure-error* will be used. Note, the object passed to the specified function is generated from the view provided in the 'login-view' slot. By default, it has email and password slots. The password is hashed using md5 by the publically accessible hash-password function. This should not be considered particularily secure, as it is not salted. If real security is desired, override the login-view to provide your own password handling, probably by passing it unchanged to the on-login function for serious processing there.

LOGIN-QUICKFORM (OBJECT)

A quickform widget used by the login to provide UI.

SETFLOGIN-QUICKFORM (NEW-VALUE OBJECT)

A quickform widget used by the login to provide UI.

LOGIN-VIEW (OBJECT)

A form view containing fields necessary to collect credentials information. By default uses 'default-login-view' which requires an email address and a password. Note that default view automatically hashes the incoming password.

SETFLOGIN-VIEW (NEW-VALUE OBJECT)

A form view containing fields necessary to collect credentials information. By default uses 'default-login-view' which requires an email address and a password. Note that default view automatically hashes the incoming password.

SETFMIXIN-FORM-VIEW-FIELD-PERSIST-P (NEW-VALUE OBJECT)

If this slot is set to true, the mixed in object will be persisted prior to being written to its parent via 'persist-object'. If null, 'persist-object' will not be called. If this slot is unbound (the default), the value will be taken from 'form-view-persist-p' of the mixin view.

MIXIN-VIEW-FIELD-INIT-FORM (OBJECT)

If the object being mixed in is null, the object produced by this form will be used instead.

SETFMIXIN-VIEW-FIELD-INIT-FORM (NEW-VALUE OBJECT)

If the object being mixed in is null, the object produced by this form will be used instead.

MIXIN-VIEW-FIELD-VIEW (OBJECT)

A mixin view to be used to render the field.

SETFMIXIN-VIEW-FIELD-VIEW (NEW-VALUE OBJECT)

A mixin view to be used to render the field.

SETFNAVIGATION-HEADER (NEW-VALUE OBJECT)

A heading that will be rendered in a <h1> tag

SETFNAVIGATION-HIDDEN-PANES (NEW-VALUE OBJECT)

A list of uri-tokens representing a set of panes that should be hidden (not rendered in a menu, but accessible from within this navigation object.)

SETFNAVIGATION-PANE-NAMES (NEW-VALUE OBJECT)

An alist mapping uri-tokens to human-readable pane names (rendered as a menu). Use nil as the key for the default item.

SETFNAVIGATION-RENDER-CONTENT-P (NEW-VALUE OBJECT)

Whether navigation should also render its contents. You want to set this to nil if you use the teleport widget to render the contents elsewhere.

NUMBER-PARSER-MAX (OBJECT)

If not null, the parsed value must be less than or equal to this slot.

SETFNUMBER-PARSER-MAX (NEW-VALUE OBJECT)

If not null, the parsed value must be less than or equal to this slot.

NUMBER-PARSER-MIN (OBJECT)

If not null, the parsed value must be greater than or equal to this slot.

SETFNUMBER-PARSER-MIN (NEW-VALUE OBJECT)

If not null, the parsed value must be greater than or equal to this slot.

OBJECT-ID-PARSER-CLASS-NAME (OBJECT)

A class of the object whose id is being parsed.

SETFOBJECT-ID-PARSER-CLASS-NAME (NEW-VALUE OBJECT)

A class of the object whose id is being parsed.

OBJECT-ID-PARSER-TEST (OBJECT)

A function of one argument that determines whether the parsed object is valid.

SETFOBJECT-ID-PARSER-TEST (NEW-VALUE OBJECT)

A function of one argument that determines whether the parsed object is valid.

ON-DEMAND-LOOKUP-FUNCTION (OBJECT)

The function stored here gets called with two arguments, the selector object and a list of remaining tokens. It must return either NIL (if it cannot create a widget from the passed tokens or) multiple values: the created widget, consumed tokens, remaining tokens and an optional fourth :no-cache value, indicating that the result is not to be cached in this session.

SETFON-DEMAND-LOOKUP-FUNCTION (NEW-VALUE OBJECT)

The function stored here gets called with two arguments, the selector object and a list of remaining tokens. It must return either NIL (if it cannot create a widget from the passed tokens or) multiple values: the created widget, consumed tokens, remaining tokens and an optional fourth :no-cache value, indicating that the result is not to be cached in this session.

PAGINATION-CURRENT-PAGE (OBJECT)

The number of the currently viewed page.

SETFPAGINATION-CURRENT-PAGE (NEW-VALUE OBJECT)

The number of the currently viewed page.

PAGINATION-ITEMS-PER-PAGE (OBJECT)

Number of data items that are displayed on each page. This value defaults to *pagination-items-per-page*.

SETFPAGINATION-ITEMS-PER-PAGE (NEW-VALUE OBJECT)

Number of data items that are displayed on each page. This value defaults to *pagination-items-per-page*.

PAGINATION-ON-CHANGE (OBJECT)

An optional callback function that will be called by the pagination widget when the currently viewed page is changed by the user. The function must accept three arguments: the pagination widget, starting item index (inclusive), and ending item index (exclusive).

SETFPAGINATION-ON-CHANGE (NEW-VALUE OBJECT)

An optional callback function that will be called by the pagination widget when the currently viewed page is changed by the user. The function must accept three arguments: the pagination widget, starting item index (inclusive), and ending item index (exclusive).

PAGINATION-ON-ERROR (OBJECT)

Because the pagination widget allows inputting the page number to go to, there are potential errors that need to be handled (invalid page, etc.) Pagination widget expects 'on-error' to be bound to a flash widget (in which case it will be used to notify the user of an error), or a function of one argument (error message) that can handle the error in a custom manner. If 'on-error' is bound to anything else the client of the widget will not be notified of an error. In all cases, pagination widget will apply 'item-not-validated' class to the input field.

SETFPAGINATION-ON-ERROR (NEW-VALUE OBJECT)

Because the pagination widget allows inputting the page number to go to, there are potential errors that need to be handled (invalid page, etc.) Pagination widget expects 'on-error' to be bound to a flash widget (in which case it will be used to notify the user of an error), or a function of one argument (error message) that can handle the error in a custom manner. If 'on-error' is bound to anything else the client of the widget will not be notified of an error. In all cases, pagination widget will apply 'item-not-validated' class to the input field.

PAGINATION-SHOW-TOTAL-ITEMS-P (OBJECT)

If true (default) allows showing total number of items to the user.

SETFPAGINATION-SHOW-TOTAL-ITEMS-P (NEW-VALUE OBJECT)

If true (default) allows showing total number of items to the user.

PAGINATION-TOTAL-ITEMS (OBJECT)

Total number of data items managed by this pagination widget. Note, if the number of items is zero (the default), the pagination widget will not render pagination UI.

SETFPAGINATION-TOTAL-ITEMS (NEW-VALUE OBJECT)

Total number of data items managed by this pagination widget. Note, if the number of items is zero (the default), the pagination widget will not render pagination UI.

PARSER-ERROR-MESSAGE (OBJECT)

A default error message. If subclasses override 'parser-error-message', it is still recommended that they allow callers to override the error message using the ':error-message' initarg. See the implementation of 'integer-parser' for an example of this.

SETFPARSER-ERROR-MESSAGE (NEW-VALUE OBJECT)

A default error message. If subclasses override 'parser-error-message', it is still recommended that they allow callers to override the error message using the ':error-message' initarg. See the implementation of 'integer-parser' for an example of this.

PREDICATE-PRESENTATION-FALSE-STRING (OBJECT)

A string to be printed when the predicate is false.

SETFPREDICATE-PRESENTATION-FALSE-STRING (NEW-VALUE OBJECT)

A string to be printed when the predicate is false.

PREDICATE-PRESENTATION-TRUE-STRING (OBJECT)

A string to be printed when the predicate is true.

SETFPREDICATE-PRESENTATION-TRUE-STRING (NEW-VALUE OBJECT)

A string to be printed when the predicate is true.

PRESENTATION-CHOICES (OBJECT)

A list of choices a user may select from. This value may be bound either to a list of choices, or a function object that accepts the object being rendered and returns such a list. The list may contain single entries (in which case the label for each choice will be obtained via 'label-key' and value via 'value-key'), or cons pairs, in which case label will be obtained by car, and value via cdr.

SETFPRESENTATION-CHOICES (NEW-VALUE OBJECT)

A list of choices a user may select from. This value may be bound either to a list of choices, or a function object that accepts the object being rendered and returns such a list. The list may contain single entries (in which case the label for each choice will be obtained via 'label-key' and value via 'value-key'), or cons pairs, in which case label will be obtained by car, and value via cdr.

PRESENTATION-CHOICES-LABEL-KEY (OBJECT)

A function used to transform a choice into a label. Default implementation transforms CLOS objects via 'object-class-name', and other lisp objects via 'humanize-name' (see presentation-choices-default-label-key).

SETFPRESENTATION-CHOICES-LABEL-KEY (NEW-VALUE OBJECT)

A function used to transform a choice into a label. Default implementation transforms CLOS objects via 'object-class-name', and other lisp objects via 'humanize-name' (see presentation-choices-default-label-key).

PRESENTATION-CHOICES-VALUE-KEY (OBJECT)

A function used to transform a choice into a value. Default implementation transforms CLOS objects via 'object-id', and other lisp objects via 'attributize-name' (see presentation-choices-default-value-key).

SETFPRESENTATION-CHOICES-VALUE-KEY (NEW-VALUE OBJECT)

A function used to transform a choice into a value. Default implementation transforms CLOS objects via 'object-id', and other lisp objects via 'attributize-name' (see presentation-choices-default-value-key).

QUICKFORM-SATISFIES (OBJECT)

A function that corresponds to the value of 'satisfies' key to 'make-quickform'.

SETFQUICKFORM-SATISFIES (NEW-VALUE OBJECT)

A function that corresponds to the value of 'satisfies' key to 'make-quickform'.

REMAINING-TOKENS (OBJECT)

A list of tokens that haven't been consumed yet.

SETFREMAINING-TOKENS (NEW-VALUE OBJECT)

A list of tokens that haven't been consumed yet.

SELECTOR-BASE-URI (OBJECT)

The base URI for this selector, set during the tree shakedown phase before rendering. Used during rendering to compute URL paths.

SETFSELECTOR-BASE-URI (NEW-VALUE OBJECT)

The base URI for this selector, set during the tree shakedown phase before rendering. Used during rendering to compute URL paths.

SEQUENCE-VIEW-EMPTY-MESSAGE (OBJECT)

See *render-empty-sequence-string*.

SETFSEQUENCE-VIEW-EMPTY-MESSAGE (NEW-VALUE OBJECT)

See *render-empty-sequence-string*.

SEQUENCE-VIEW-ROW-PREFIX-FN (OBJECT)

A function called prior to rendering each sequence item. The function should expect the view object, the object being rendered, and any additional arguments passed to the view.

SETFSEQUENCE-VIEW-ROW-PREFIX-FN (NEW-VALUE OBJECT)

A function called prior to rendering each sequence item. The function should expect the view object, the object being rendered, and any additional arguments passed to the view.

SEQUENCE-VIEW-ROW-SUFFIX-FN (OBJECT)

A function called after rendering each sequence item. The function should expect the view object, the object being rendered, and any additional arguments passed to the view.

SETFSEQUENCE-VIEW-ROW-SUFFIX-FN (NEW-VALUE OBJECT)

A function called after rendering each sequence item. The function should expect the view object, the object being rendered, and any additional arguments passed to the view.

SIMPLEFORM-SUBMIT-LABEL (OBJECT)

Label for the submit button.

SETFSIMPLEFORM-SUBMIT-LABEL (NEW-VALUE OBJECT)

Label for the submit button.

SIMPLEFORM-SUCCESS-WIDGET (OBJECT)

An object that will be rendered on success.

SETFSIMPLEFORM-SUCCESS-WIDGET (NEW-VALUE OBJECT)

An object that will be rendered on success.

STATIC-SELECTOR-CACHED-PANES (OBJECT)

Remember the state of the statically selected pane here.

SETFSTATIC-SELECTOR-CACHED-PANES (NEW-VALUE OBJECT)

Remember the state of the statically selected pane here.

STATIC-SELECTOR-CURRENT-PANE (OBJECT)

The uri-tokens corresponding to the currently selected pane, or an empty string if the default pane is selected.

SETFSTATIC-SELECTOR-CURRENT-PANE (NEW-VALUE OBJECT)

The uri-tokens corresponding to the currently selected pane, or an empty string if the default pane is selected.

STATIC-SELECTOR-PANES (OBJECT)

An alist mapping uri-tokens (strings) to widgets. The default item (widget) should have nil as the key. Not providing a default item will cause a redirect to the first item's URI.

SETFSTATIC-SELECTOR-PANES (NEW-VALUE OBJECT)

An alist mapping uri-tokens (strings) to widgets. The default item (widget) should have nil as the key. Not providing a default item will cause a redirect to the first item's URI.

TABLE-VIEW-DEFAULT-SUMMARY (OBJECT)

A summary string to be used for the table if no :summary keyword is provided.

SETFTABLE-VIEW-DEFAULT-SUMMARY (NEW-VALUE OBJECT)

A summary string to be used for the table if no :summary keyword is provided.

TABLE-VIEW-HEADER-ROW-PREFIX-FN (OBJECT)

A function called prior to rendering the table header row. The function should expect the view object, the object being rendered, and any additional arguments passed to the view.

SETFTABLE-VIEW-HEADER-ROW-PREFIX-FN (NEW-VALUE OBJECT)

A function called prior to rendering the table header row. The function should expect the view object, the object being rendered, and any additional arguments passed to the view.

TABLE-VIEW-HEADER-ROW-SUFFIX-FN (OBJECT)

A function called after rendering the header row. The function should expect the view object, the object being rendered, and any additional arguments passed to the view.

SETFTABLE-VIEW-HEADER-ROW-SUFFIX-FN (NEW-VALUE OBJECT)

A function called after rendering the header row. The function should expect the view object, the object being rendered, and any additional arguments passed to the view.

TELEPORT-KEY (OBJECT)

The function that will be used to access the widget from the source.

SETFTELEPORT-KEY (NEW-VALUE OBJECT)

The function that will be used to access the widget from the source.

TELEPORT-SOURCE (OBJECT)

Source widget that should be teleported and rendered.

SETFTELEPORT-SOURCE (NEW-VALUE OBJECT)

Source widget that should be teleported and rendered.

TEXT-PARSER-MATCHES (OBJECT)

If this slot is a regular expression, the input value will be validated against it.

SETFTEXT-PARSER-MATCHES (NEW-VALUE OBJECT)

If this slot is a regular expression, the input value will be validated against it.

TEXT-PRESENTATION-MIXIN-FORMAT-STRING (OBJECT)

Convenience method, useful e.g. for testing.

SETFTEXT-PRESENTATION-MIXIN-FORMAT-STRING (NEW-VALUE OBJECT)

A format string used to print text value.

TEXTAREA-PRESENTATION-COLS (OBJECT)

Number of columns in the text area.

SETFTEXTAREA-PRESENTATION-COLS (NEW-VALUE OBJECT)

Number of columns in the text area.

TEXTAREA-PRESENTATION-ROWS (OBJECT)

Number of rows in the text area.

SETFTEXTAREA-PRESENTATION-ROWS (NEW-VALUE OBJECT)

Number of rows in the text area.

URL-PRESENTATION-BODY (OBJECT)

Body of the link. This can be a string or a function that accepts same parameters as 'render-view-field-value'. The function is expected to render the body into the usual output stream. Its return value is ignored.

SETFURL-PRESENTATION-BODY (NEW-VALUE OBJECT)

Body of the link. This can be a string or a function that accepts same parameters as 'render-view-field-value'. The function is expected to render the body into the usual output stream. Its return value is ignored.

US-STATE-PRESENTATION-CHOICES-ID (OBJECT)

A choices ID passed to suggest.

SETFUS-STATE-PRESENTATION-CHOICES-ID (NEW-VALUE OBJECT)

A choices ID passed to suggest.

US-STATE-PRESENTATION-INPUT-ID (OBJECT)

An input ID passed to suggest or dropdown.

SETFUS-STATE-PRESENTATION-INPUT-ID (NEW-VALUE OBJECT)

An input ID passed to suggest or dropdown.

US-STATE-PRESENTATION-USE-SUGGEST-P (OBJECT)

If set to true, suggest snippet will be used as a state input control. Otherwise, dropdown will be used.

SETFUS-STATE-PRESENTATION-USE-SUGGEST-P (NEW-VALUE OBJECT)

If set to true, suggest snippet will be used as a state input control. Otherwise, dropdown will be used.

VERSION-DEPENDENCY-TYPES (OBJECT)

This enables versioning of css, js files. The purpose of versioning is to serve modified static files that have been cached permanently, and gziping. Anytime you modified the original (unversioned) css or js file, new versioned (maybe gziped) file will get created. This way, you only need to work on the unversioned file and not keep track of the versioned ones. When debug is t, versioning is turned off.

SETFVERSION-DEPENDENCY-TYPES (NEW-VALUE OBJECT)

This enables versioning of css, js files. The purpose of versioning is to serve modified static files that have been cached permanently, and gziping. Anytime you modified the original (unversioned) css or js file, new versioned (maybe gziped) file will get created. This way, you only need to work on the unversioned file and not keep track of the versioned ones. When debug is t, versioning is turned off.

VIEW-CAPTION (OBJECT)

A caption string to be used for the view. If this field is set to NIL (the default), each view may use a specialized caption.

SETFVIEW-CAPTION (NEW-VALUE OBJECT)

A caption string to be used for the view. If this field is set to NIL (the default), each view may use a specialized caption.

VIEW-FIELD-HIDE-P (OBJECT)

A predicate that determines whether the field is to be hidden from the user. If set to true, the field will not be rendered.

SETFVIEW-FIELD-HIDE-P (NEW-VALUE OBJECT)

A predicate that determines whether the field is to be hidden from the user. If set to true, the field will not be rendered.

VIEW-FIELD-LABEL (OBJECT)

A human readable label that will be used to render the field. By default this value is set to a humanized form of 'slot-name'.

SETFVIEW-FIELD-LABEL (NEW-VALUE OBJECT)

A human readable label that will be used to render the field. By default this value is set to a humanized form of 'slot-name'.

VIEW-FIELD-PREFIX-FN (OBJECT)

A function called prior to rendering the field. The function should expect the view object, the field object, the object being rendered, and any additional arguments passed to the view.

SETFVIEW-FIELD-PREFIX-FN (NEW-VALUE OBJECT)

A function called prior to rendering the field. The function should expect the view object, the field object, the object being rendered, and any additional arguments passed to the view.

VIEW-FIELD-PRESENTATION (OBJECT)

A presentation object to be used to render this field. If not specified, the default presentation for the type of the view will be used. In addition, scaffold views will attempt to determine the default presentation from the value of the slot type, if one exists.

SETFVIEW-FIELD-PRESENTATION (NEW-VALUE OBJECT)

A presentation object to be used to render this field. If not specified, the default presentation for the type of the view will be used. In addition, scaffold views will attempt to determine the default presentation from the value of the slot type, if one exists.

VIEW-FIELD-READER (OBJECT)

If this slot is bound to a function object, the function will be called with the object being rendered as argument, and its return value will be used as the value of the field. If this slot is not bound to a function object but another value, the value will be used to render the value of the field as a convinience. If the slot is not bound, 'slot-value' will be used.

SETFVIEW-FIELD-READER (NEW-VALUE OBJECT)

If this slot is bound to a function object, the function will be called with the object being rendered as argument, and its return value will be used as the value of the field. If this slot is not bound to a function object but another value, the value will be used to render the value of the field as a convinience. If the slot is not bound, 'slot-value' will be used.

VIEW-FIELD-SLOT-NAME (OBJECT)

The name of the slot that this field represents. This value can be null, in which case the field does not correspond to any slot.

SETFVIEW-FIELD-SLOT-NAME (NEW-VALUE OBJECT)

The name of the slot that this field represents. This value can be null, in which case the field does not correspond to any slot.

VIEW-FIELD-SORTING-MIXIN-ALLOW-SORTING-P (OBJECT)

If set to true (default), the field will be allowed to be sorted.

SETFVIEW-FIELD-SORTING-MIXIN-ALLOW-SORTING-P (NEW-VALUE OBJECT)

If set to true (default), the field will be allowed to be sorted.

VIEW-FIELD-SORTING-MIXIN-ORDER-BY (OBJECT)

If set to a symbol or a list of symbols, this slot will be used to build an order-by path that is later passed to the backend store for ordering the entries of the sequence. If this slot is unbound (the default), the 'slot-name' slot of the field will be used instead.

SETFVIEW-FIELD-SORTING-MIXIN-ORDER-BY (NEW-VALUE OBJECT)

If set to a symbol or a list of symbols, this slot will be used to build an order-by path that is later passed to the backend store for ordering the entries of the sequence. If this slot is unbound (the default), the 'slot-name' slot of the field will be used instead.

VIEW-FIELD-SUFFIX-FN (OBJECT)

A function called after rendering the field. The function should expect the view object, the field object, the object being rendered, and any additional arguments passed to the view.

SETFVIEW-FIELD-SUFFIX-FN (NEW-VALUE OBJECT)

A function called after rendering the field. The function should expect the view object, the field object, the object being rendered, and any additional arguments passed to the view.

VIEW-FIELDS (OBJECT)

A list of objects of class 'view-field', used to describe the fields that the view will render.

SETFVIEW-FIELDS (NEW-VALUE OBJECT)

A list of objects of class 'view-field', used to describe the fields that the view will render.

VIEW-FIELDS-DEFAULT-PREFIX-FN (OBJECT)

A function called prior to rendering the fields. The function should expect the view object, the object being rendered, and any additional arguments passed to the view.

SETFVIEW-FIELDS-DEFAULT-PREFIX-FN (NEW-VALUE OBJECT)

A function called prior to rendering the fields. The function should expect the view object, the object being rendered, and any additional arguments passed to the view.

VIEW-FIELDS-DEFAULT-SUFFIX-FN (OBJECT)

A function called after rendering the fields. The function should expect the view object, the object being rendered, and any additional arguments passed to the view.

SETFVIEW-FIELDS-DEFAULT-SUFFIX-FN (NEW-VALUE OBJECT)

A function called after rendering the fields. The function should expect the view object, the object being rendered, and any additional arguments passed to the view.

VIEW-INHERIT-FROM (OBJECT)

A view to inherit from. Possible values include scaffold views (in which case a default scaffolding view will be used), a custom view name, or NIL. Specific views should inherit from an appropriate scaffold view by default.

SETFVIEW-INHERIT-FROM (NEW-VALUE OBJECT)

A view to inherit from. Possible values include scaffold views (in which case a default scaffolding view will be used), a custom view name, or NIL. Specific views should inherit from an appropriate scaffold view by default.

WEBLOCKS-WEBAPP-PUBLIC-FILES-PATH (OBJECT)

The filesystem directory path for public files. The final value is computed with 'compute-webapp-public-files-path'.

WIDGET-CONTINUATION (OBJECT)

Stores the continuation object for widgets that were invoked via one of the do-* functions ('do-page', etc.). When 'answer' is called on a widget, this value is used to resume the computation.

SETFWIDGET-CONTINUATION (NEW-VALUE OBJECT)

Stores the continuation object for widgets that were invoked via one of the do-* functions ('do-page', etc.). When 'answer' is called on a widget, this value is used to resume the computation.

WIDGET-PARENT (OBJECT)

Stores the 'parent' of a widget, i.e. the widget in which this widget is located, if any. This value is automatically set when you set the widget's children slot. Note, a widget can only have one parent at any given time.

WIDGET-PREFIX-FN (OBJECT)

A function called prior to rendering the widget body. The function should expect the widget as well as any additional arguments passed to the widget.

SETFWIDGET-PREFIX-FN (NEW-VALUE OBJECT)

A function called prior to rendering the widget body. The function should expect the widget as well as any additional arguments passed to the widget.

WIDGET-PROPAGATE-DIRTY (OBJECT)

A list of widgets which will be made dirty when this widget is made dirty via a POST request. This slot allows setting up dependencies between widgets that will make multiple widgets update automatically during AJAX requests.

SETFWIDGET-PROPAGATE-DIRTY (NEW-VALUE OBJECT)

A list of widgets which will be made dirty when this widget is made dirty via a POST request. This slot allows setting up dependencies between widgets that will make multiple widgets update automatically during AJAX requests.

WIDGET-SUFFIX-FN (OBJECT)

A function called after rendering the widget body. The function should expect the widget as well as any additional arguments passed to the widget.

SETFWIDGET-SUFFIX-FN (NEW-VALUE OBJECT)

A function called after rendering the widget body. The function should expect the widget as well as any additional arguments passed to the widget.

WIZARD-CURRENT-STEP (OBJECT)

The current wizard step.

SETFWIZARD-CURRENT-STEP (NEW-VALUE OBJECT)

Updates the current widget when the data item changes.

WIZARD-CURRENT-WIDGET (OBJECT)

The widget currently displayed by the wizard.

SETFWIZARD-CURRENT-WIDGET (NEW-VALUE OBJECT)

The widget currently displayed by the wizard.

WIZARD-DATA (OBJECT)

The list of data held by this wizard. By default elements will be presented in an ordered fashion with one element per step.

SETFWIZARD-DATA (NEW-VALUE OBJECT)

The list of data held by this wizard. By default elements will be presented in an ordered fashion with one element per step.

WIZARD-DATA-CURSOR (OBJECT)

Offset of the current position in the data list.

SETFWIZARD-DATA-CURSOR (NEW-VALUE OBJECT)

Updates the current widget when the data item changes.

WIZARD-DATAFORM-WIZARD (OBJECT)

The wizard owning the dataform. You better set this at initialization time so the dataform can decide what buttons to show.

SETFWIZARD-DATAFORM-WIZARD (NEW-VALUE OBJECT)

The wizard owning the dataform. You better set this at initialization time so the dataform can decide what buttons to show.

WIZARD-ON-COMPLETE (OBJECT)

A function designator holding the function that is to be called after the completion of the wizard. The function will be called with one argument, the wizard. Must be provided.

SETFWIZARD-ON-COMPLETE (NEW-VALUE OBJECT)

A function designator holding the function that is to be called after the completion of the wizard. The function will be called with one argument, the wizard. Must be provided.

WIZARD-STATUS-TYPE (OBJECT)

The type of status display rendered before the form. Currently supported are :SIMPLE and :SIMPLE-WITH-TOTAL.

SETFWIZARD-STATUS-TYPE (NEW-VALUE OBJECT)

The type of status display rendered before the form. Currently supported are :SIMPLE and :SIMPLE-WITH-TOTAL.

Undocumented

DATA (OBJECT)

SETFDATA (NEW-VALUE OBJECT)

FUNCALL-WIDGET-FUN-DESIGNATOR (OBJECT)

SETFFUNCALL-WIDGET-FUN-DESIGNATOR (NEW-VALUE OBJECT)

ON-DEMAND-MAKE-IF-MISSING (OBJECT)

SETFON-DEMAND-MAKE-IF-MISSING (NEW-VALUE OBJECT)

ON-DEMAND-MUTATE-CACHE (OBJECT)

SETFON-DEMAND-MUTATE-CACHE (NEW-VALUE OBJECT)

TEMPLATE-BLOCK-SOURCE (OBJECT)

SETFTEMPLATE-BLOCK-SOURCE (NEW-VALUE OBJECT)

TEMPLATE-BLOCK-VARS (OBJECT)

SETFTEMPLATE-BLOCK-VARS (NEW-VALUE OBJECT)

Private

BUNDLE-FOLDER (OBJECT)

Stores the path of the bundle folder for easier access.

SETFBUNDLE-FOLDER (NEW-VALUE OBJECT)

Stores the path of the bundle folder for easier access.

COMPOSITION-LIST (OBJECT)

A list of lists. Each list contains a bundle id and a list of files that the bundle is composed of.

SETFCOMPOSITION-LIST (NEW-VALUE OBJECT)

A list of lists. Each list contains a bundle id and a list of files that the bundle is composed of.

DATAEDIT-SHOW-ADD-FORM-WHEN-EMPTY-P (OBJECT)

If set to true, when the dataseq is empty (has no data), the add form is automatically presented to the user (only if dataedit-allow-add-p is true as well).

SETFDATAEDIT-SHOW-ADD-FORM-WHEN-EMPTY-P (NEW-VALUE OBJECT)

If set to true, when the dataseq is empty (has no data), the add form is automatically presented to the user (only if dataedit-allow-add-p is true as well).

DATASEQ-RENDERED-DATA-SEQUENCE (OBJECT)

A sequence of items currently rendered.

DATE-PRINTING-FORMAT (OBJECT)

`format-date' format string to use. Default is YYYY-MM-DD (ISO 8601 extended format).

SETFDATE-PRINTING-FORMAT (NEW-VALUE OBJECT)

`format-date' format string to use. Default is YYYY-MM-DD (ISO 8601 extended format).

DYNAMIC-ACTION-HOOK (OBJECT)

A set of functions that establish dynamic state around a body function in the action context

SETFDYNAMIC-ACTION-HOOK (NEW-VALUE OBJECT)

A set of functions that establish dynamic state around a body function in the action context

DYNAMIC-RENDER-HOOK (OBJECT)

A set of functions that establish dynamic state around a body function in the render context

SETFDYNAMIC-RENDER-HOOK (NEW-VALUE OBJECT)

A set of functions that establish dynamic state around a body function in the render context

FLASH-OLD-MESSAGES (OBJECT)

A list of messages from the previous request.

SETFFLASH-OLD-MESSAGES (NEW-VALUE OBJECT)

A list of messages from the previous request.

FORM-VIEW-FIELD-REQUIRED-INDICATOR (OBJECT)

A string, t or nil. When this field is required, this value is rendered after the field's label. A value of t will render *default-required-indicator*.

SETFFORM-VIEW-FIELD-REQUIRED-INDICATOR (NEW-VALUE OBJECT)

A string, t or nil. When this field is required, this value is rendered after the field's label. A value of t will render *default-required-indicator*.

FORM-VIEW-FIELD-WRITER-DELAYED-P (OBJECT)

If this slot is set to t, then the writer will get called after the object has been persisted. This is useful for updating relations, where objects need to be assigned ids and stored before relations can be updated.

SETFFORM-VIEW-FIELD-WRITER-DELAYED-P (NEW-VALUE OBJECT)

If this slot is set to t, then the writer will get called after the object has been persisted. This is useful for updating relations, where objects need to be assigned ids and stored before relations can be updated.

FORM-VIEW-INSTRUCTIONS (OBJECT)

Instructions given to the user.

SETFFORM-VIEW-INSTRUCTIONS (NEW-VALUE OBJECT)

Instructions given to the user.

GZIP-DEPENDENCY-TYPES (OBJECT)

This enables gziping of css, js files. When debug is on, gzip is turned off.

SETFGZIP-DEPENDENCY-TYPES (NEW-VALUE OBJECT)

This enables gziping of css, js files. When debug is on, gzip is turned off.

JAVASCRIPT-CODE (OBJECT)

String containing the javascript code.

SETFJAVASCRIPT-CODE (NEW-VALUE OBJECT)

String containing the javascript code.

LAST-BUNDLE-ID (OBJECT)

The id of the last created bundle file.

SETFLAST-BUNDLE-ID (NEW-VALUE OBJECT)

The id of the last created bundle file.

LAST-MOD-TIME (OBJECT)

Last recorded modified time of the file.

SETFLAST-MOD-TIME (NEW-VALUE OBJECT)

Last recorded modified time of the file.

LAST-VERSION (OBJECT)

Last version of the file. (Currently implemented as an integer)

SETFLAST-VERSION (NEW-VALUE OBJECT)

Last version of the file. (Currently implemented as an integer)

LOCAL-PATH (OBJECT)

If the dependency is a local file, this stores its path.

SETFLOCAL-PATH (NEW-VALUE OBJECT)

If the dependency is a local file, this stores its path.

LOGIN-ON-CANCEL (OBJECT)

A function that accepts one parameter a registration widget. It is called when the registration was cancelled.

SETFLOGIN-ON-CANCEL (NEW-VALUE OBJECT)

A function that accepts one parameter a registration widget. It is called when the registration was cancelled.

LOGIN-ON-SUCCESS (OBJECT)

A function that accepts two paramets: a registration widget and a CLOS object that contains information obtained from the user. It is called when the registration was successful.

SETFLOGIN-ON-SUCCESS (NEW-VALUE OBJECT)

A function that accepts two paramets: a registration widget and a CLOS object that contains information obtained from the user. It is called when the registration was successful.

MOD-RECORD-PATH (OBJECT)

Path of the modification record of the file.

SETFMOD-RECORD-PATH (NEW-VALUE OBJECT)

Path of the modification record of the file.

MODIFIED-P (OBJECT)

Indicate if the tally has been modified.

SETFMODIFIED-P (NEW-VALUE OBJECT)

Indicate if the tally has been modified.

ORIGINAL-PATH (OBJECT)

Path of the original unversioned file.

SETFORIGINAL-PATH (NEW-VALUE OBJECT)

Path of the original unversioned file.

POST-ACTION-HOOK (OBJECT)

A list of callback functions of no arguments called after user action is evaluated.

SETFPOST-ACTION-HOOK (NEW-VALUE OBJECT)

A list of callback functions of no arguments called after user action is evaluated.

POST-RENDER-HOOK (OBJECT)

A list of callback functions of no arguments called after widgets are rendered.

SETFPOST-RENDER-HOOK (NEW-VALUE OBJECT)

A list of callback functions of no arguments called after widgets are rendered.

PRE-ACTION-HOOK (OBJECT)

A list of callback functions of no arguments called before user action is evaluated.

SETFPRE-ACTION-HOOK (NEW-VALUE OBJECT)

A list of callback functions of no arguments called before user action is evaluated.

PRE-RENDER-HOOK (OBJECT)

A list of callback functions of no arguments called before widgets are rendered.

SETFPRE-RENDER-HOOK (NEW-VALUE OBJECT)

A list of callback functions of no arguments called before widgets are rendered.

SIMPLEFORM-SUMMARY-VIEW (OBJECT)

View for confirmation step. If null, skip summary step.

SETFSIMPLEFORM-SUMMARY-VIEW (NEW-VALUE OBJECT)

View for confirmation step. If null, skip summary step.

SIZE (ABSTRACT-CONTAINER)

The Returns the number of items currently in the container.

SETFSIZE (NEW-VALUE OBJECT)

Set the Returns the number of items currently in the container.

SSL-REDIRECT-ACCEPTOR-SSL-PORT (OBJECT)

The port used by the SSL acceptor.

STRING-WIDGET-ESCAPE-P (OBJECT)

Whether to escape the output for HTML.

SETFSTRING-WIDGET-ESCAPE-P (NEW-VALUE OBJECT)

Whether to escape the output for HTML.

TALLY-PATH (OBJECT)

Stores the path of the tally file for easier access.

URL-PRESENTATION-ESCAPE (OBJECT)

If true (the default), the URL will be HTML- escaped on output to the page.

SETFURL-PRESENTATION-ESCAPE (NEW-VALUE OBJECT)

If true (the default), the URL will be HTML- escaped on output to the page.

URL-PRESENTATION-NOFOLLOW (OBJECT)

If true, `rel="nofollow" will be emitted to tell search engines that this is a user-entered link that should not be considered in ranking the target.

SETFURL-PRESENTATION-NOFOLLOW (NEW-VALUE OBJECT)

If true, `rel="nofollow" will be emitted to tell search engines that this is a user-entered link that should not be considered in ranking the target.

WEBAPP-CLASS-HOME-PACKAGE (OBJECT)

The current package when I was defined.

SETFWEBAPP-CLASS-HOME-PACKAGE (NEW-VALUE OBJECT)

The current package when I was defined.

WEBAPP-DEFAULT-STORE-NAME (OBJECT)

If non-nil, the name of the `*default-store*' bound during request handlers.

SETFWEBAPP-DEFAULT-STORE-NAME (NEW-VALUE OBJECT)

If non-nil, the name of the `*default-store*' bound during request handlers.

WEBLOCKS-WEBAPP-APPLICATION-DEPENDENCIES (OBJECT)

The public dependencies for all pages rendered by this application. The automatic dependencies system will handle all of the context or request specific dependencies.

SETFWEBLOCKS-WEBAPP-APPLICATION-DEPENDENCIES (NEW-VALUE OBJECT)

The public dependencies for all pages rendered by this application. The automatic dependencies system will handle all of the context or request specific dependencies.

WEBLOCKS-WEBAPP-DESCRIPTION (OBJECT)

The name of the application. This slot will be used by 'application-page-title' to generate the default title for each page.

SETFWEBLOCKS-WEBAPP-DESCRIPTION (NEW-VALUE OBJECT)

The name of the application. This slot will be used by 'application-page-title' to generate the default title for each page.

WEBLOCKS-WEBAPP-HOSTNAMES (OBJECT)

The hostnames (a list of strings) reserved for this webapp. See section 14.32 of RFC 2616. Example: '("foo.com" "www.foo.com" "shoo.bar.org") Wildcard patterns are also allowed. Example: '("foo.*.com") If NIL (the default), don't care about the hostname at all. TODO: support regex matching here.

WEBLOCKS-WEBAPP-HTML-INDENT-P (OBJECT)

Turns on indentation of HTML for easier visual inspection.

SETFWEBLOCKS-WEBAPP-HTML-INDENT-P (NEW-VALUE OBJECT)

Turns on indentation of HTML for easier visual inspection.

WEBLOCKS-WEBAPP-INIT-USER-SESSION (OBJECT)

'init-user-session' must be defined by weblocks client in the same package as 'name'. This function will accept a single parameter - a widget at the root of the application. 'init-user-session' is responsible for adding initial children to this widget.

SETFWEBLOCKS-WEBAPP-INIT-USER-SESSION (NEW-VALUE OBJECT)

'init-user-session' must be defined by weblocks client in the same package as 'name'. This function will accept a single parameter - a widget at the root of the application. 'init-user-session' is responsible for adding initial children to this widget.

WEBLOCKS-WEBAPP-PREFIX (OBJECT)

The subtree of the URI space at this site that belongs to the webapp.

WEBLOCKS-WEBAPP-PUBLIC-FILES-CACHE-TIME (OBJECT)

HTTP cache time for public files in seconds. When debug is on, caching is turned off.

SETFWEBLOCKS-WEBAPP-PUBLIC-FILES-CACHE-TIME (NEW-VALUE OBJECT)

HTTP cache time for public files in seconds. When debug is on, caching is turned off.

WEBLOCKS-WEBAPP-PUBLIC-FILES-URI-PREFIX (OBJECT)

The uri prefix for public files. By default, this slot is initialized to 'pub'. The final uri prefix for application public files is computed by 'compute-webapp-public-files-uri-prefix'.

WIDGET-SLOT-AFFECTS-DIRTY-STATUS-P (OBJECT)

When set to true (the default), the widget will be made dirty when this slot is modified.

SETFWIDGET-SLOT-AFFECTS-DIRTY-STATUS-P (NEW-VALUE OBJECT)

When set to true (the default), the widget will be made dirty when this slot is modified.

WIDGET-SLOT-PARAMETER-NAME (OBJECT)

When supplied, provides a string or symbol which will be used to extract values from a URI GET parameter

SETFWIDGET-SLOT-PARAMETER-NAME (NEW-VALUE OBJECT)

When supplied, provides a string or symbol which will be used to extract values from a URI GET parameter

Undocumented

INPUT-PRESENTATION-SIZE (OBJECT)

SETFINPUT-PRESENTATION-SIZE (NEW-VALUE OBJECT)

ON-DEMAND-SELECTOR-CACHE (OBJECT)

SETFON-DEMAND-SELECTOR-CACHE (NEW-VALUE OBJECT)

STRING-WIDGET-CONTENT (OBJECT)

SETFSTRING-WIDGET-CONTENT (NEW-VALUE OBJECT)

STYLESHEET-MEDIA (OBJECT)

SETFSTYLESHEET-MEDIA (NEW-VALUE OBJECT)

SYMBOL-PARSER-TARGET-PACKAGE (OBJECT)

SETFSYMBOL-PARSER-TARGET-PACKAGE (NEW-VALUE OBJECT)

TEMPLATE-PRINTER-OF (OBJECT)

SETFTEMPLATE-PRINTER-OF (NEW-VALUE OBJECT)

WEBLOCKS-WEBAPP-DEBUG (OBJECT)

SETFWEBLOCKS-WEBAPP-DEBUG (NEW-VALUE OBJECT)

WEBLOCKS-WEBAPP-NAME (OBJECT)

SETFWEBLOCKS-WEBAPP-NAME (NEW-VALUE OBJECT)

WEBLOCKS-WEBAPP-SESSION-KEY (OBJECT)

SETFWEBLOCKS-WEBAPP-SESSION-KEY (NEW-VALUE OBJECT)

VARIABLE

Public

*ACCUMULATE-PAGE-KEYWORDS*

Whether to accumulate widgets' keywords for the keywords meta tag or use the most specific keywords only.

*AUTHENTICATION-KEY*

A key used to store the authentication object in the session.

*CANCEL-CONTROL-NAME*

The name of the control responsible for cancellation of form submission.

*CATCH-ERRORS-P*

Whether Hunchentoot should catch and log errors (or rather invoke the debugger).

*CURRENT-WIDGET*

The widget being rendered right now.

*CUSTOM-VIEW-FIELD-ARGUMENT-COMPILERS*

A hash map of keywords, each mapped to a compilation function. When a keyword is encountered in a field definition during compilation, the corresponding compilation function is called and the emitted code is used for field initialization. The function must accept slot name symbol and initialization declaration.

*DEFAULT-CASCADE-DELETE-MIXINS-P*

Default value for 'dataedit-cascade-delete-mixins-p'. See its documentation for more details.

*DEFAULT-LOGIN-FAILURE-ERROR*

Default message in case of login failure.

*DEFAULT-LOGIN-TITLE*

Default title to be used in 'do-login'.

*DEFAULT-REQUIRED-INDICATOR*

Default string to render after a field's label if the field is required.

*DEFAULT-STORE*

The default store to which objects are persisted. Bound while a webapp is handling a request to the value of its `webapp-default-store-name'. By using `defstore' after the relevant `defwebapp' in the same package, barring an explicit setting, the webapp will be set to use the defined store automatically.

*DROPDOWN-WELCOME-MESSAGE*

A welcome message used by dropdowns as the first entry.

*EXPIRED-ACTION-HANDLER*

Must be bound to a designator of a function with a single optional argument - the application. The function gets called when the user tries to invoke an expired action (due to a session timeout). The function should determine the behavior in this situation (e.g. redirect, signal an error, etc.) Default function redirects to the root of the application.

*FORM-DEFAULT-ERROR-SUMMARY-THRESHOLD*

When the number of fields in a form is longer than this threshold, an error summary is rendered at top whenever applicable. This is a default value used to initialize 'error-summary-threshold' slot of 'form-view' objects.

*FORM-SUBMIT-DEPENDENCIES*

Dynamic javascript dependencies -- code that form elements need to run before form submission, and that therefore needs to be placed in the onsubmit handler of the entire form.

*ISEARCH-INPUT-DELAY*

Delay in seconds after keystrokes a client should wait before it sends an isearch request.

*ISEARCH-MAX-INPUT-LENGTH*

Maximum input length allowed in an isearch.

*JSON-CONTENT-TYPE*

A content type sent to the client to identify json data.

*LAST-SESSION*

Bound to a session object associated with the last handled request. Note, this variable is only updated in debug mode.

*MAX-PASSWORD-LENGTH*

Default maximum for the length of the password field

*MAX-RAW-INPUT-LENGTH*

Default maximum allowed input length for input fields.

*MAX-TEXTAREA-INPUT-LENGTH*

Maximum number of characters that can be entered before the server complains.

*MENU-EMPTY-MESSAGE*

A default message shown by 'render-menu' if no entries are available.

*PAGINATION-ITEMS-PER-PAGE*

Default number of items visible on a page.

*PRESENTATION-DOM-ID*

DOM id of the currently rendered presentation object. If bound during rendering (for example, in an :around method for render-object-view, will be used by the various functions that render form elements..

*REGISTERED-WEBAPPS*

A list of applications that the system knows about

*RENDER-EMPTY-SEQUENCE-STRING*

The default string used by the sequence view to signify that there is no information available.

*REQUEST-TIMEOUT*

Seconds until we abort a request because it took too long. This prevents threads from hogging the CPU indefinitely. You can set this to NIL to disable timeouts (not recommended).

*REQUIRED-FIELD-MESSAGE*

This message will be passed to 'format' along with the humanized name of the field to inform users that the field is required.

*STYLE-WARN-ON-CIRCULAR-DIRTYING*

Whether to emit a style-warning when widgets are marked dirty after the rendering phase.

*STYLE-WARN-ON-LATE-PROPAGATION*

Whether to emit a style-warning when widgets are marked dirty in the rendering phase.

*SUBMIT-CONTROL-NAME*

The name of the control responsible for form submission.

*TEXT-DATA-CUTOFF-THRESHOLD*

In the excerpt mode, the number of characters to be rendered before the text is cut off and an ellipsis is inserted.

*TEXTAREA-COLS*

Default number of columns rendered in textarea

*TEXTAREA-ROWS*

Default number of rows rendered in textarea

*US-STATES*

A alist of us state names and their abbreviations.

*USE-SUGGEST-FOR-US-STATES*

If true, suggest snippet will be used to render us-state types in forms. A simple dropdown will be used otherwise.

*WEBLOCKS-OUTPUT-STREAM*

Output stream for Weblocks framework created for each request and available to code executed within a request as a special variable. All html should be rendered to this stream.

*WEBLOCKS-SERVER*

If the server is started, bound to hunchentoot server object. Otherwise, nil.

Undocumented

*ALWAYS-RECREATE-TEMPLATE-PRINTER*

*APPROVED-RETURN-CODES*

*BACKTRACE-ON-SESSION-INIT-ERROR*

*CURRENT-PAGE-DESCRIPTION*

*DEFAULT-PUBLIC-FILES-PATH*

*ENABLE-TIMINGS*

*IGNORE-MISSING-ACTIONS*

*INITIAL-BUNDLE-ID*

*TEXT-PRESENTATION-MIXIN-DEFAULT-FORMAT-STRING*

*TIMING-REPORT-FN*

*WEBLOCKS-GLOBAL-DEBUG*

Private

*ACTION-STRING*

A string used to pass actions from a client to the server. See 'get-request-action'.

*ACTIVE-WEBAPPS*

A list of running applications. Applications are only available after they have been started.

*APPLICATION-REQUEST-HOOKS*

A request hook object used in the application scope.

*AUTOSTARTING-WEBAPPS*

A list of webapps to start when start-weblocks is called

*DATALIST-SELECTION-ATTEMPT-ERROR-MESSAGE*

This message will be presented to the programmer if there is an attempt to set 'allow-select-p' on a datalist to true. See documentation for 'allow-select-p' on the datalist for more details.

*DIRTY-WIDGETS*

Contains a list of dirty widgets at the current point in rendering cycle. This is a special variable modified by the actions that change state of widgets.

*MAINTAIN-LAST-SESSION*

Determines whether *last-session* variable will be maintained at each request. Note, this variable is automatically set to a hunchentoot lock in debug mode and nil in release mode by 'start-weblocks'.

*SESSION-LOCKS*

Per-session locks to avoid having unrelated threads waiting.

*STORE-NAMES*

A list of store names in the order in which they were defined.

*STORES*

A hashmap of stores, where each item has store name as key, and structure of type 'store-info' as value.

*TREE-UPDATE-PENDING*

T if we're currently updating the widget tree. Used as recursion guard in (SETF WIDGET-CHILDREN).

*US-STATES-ABREVIATION->NAME*

An alist of us state abbreviations mapped to state names.

*VIEWS*

A hashtable that stores view instances keyed by their name.

Undocumented

*ASDF-SYSTEM-CACHE*

*BUNDLE-DEPENDENCIES-LOCK*

*GZIP-DEPENDENCY-LOCK*

*SESSION-LOCK-TABLE-LOCK*

*TIMING-LEVEL*

*VERSION-DEPENDENCIES-LOCK*

*WEBAPP-PERMANENT-ACTIONS*

CLASS

Public

CHECKBOX-PRESENTATION

Treats values as predicates and presents them as a checkbox.

CHECKBOXES-PARSER

A parser for checkboxes

DATA-EDITOR

The details of stateful handling of forms manipulating objects. Mix this in to drop-in your own replacement for `dataform', when the view DSL isn't expressive enough and you need widgets instead.

DATA-VIEW

A view designed to present data to the user.

DATA-VIEW-FIELD

A field class of the data view.

DATAEDIT-MIXIN

A mixin class for dataseq widgets that impelement editing functionality.

DATAFORM

A class that represents a dataform widget. By default this widget renders the data object with a data view along with a 'modify' link. If the user clicks on the link, the widget's state is updated and it renders into a form via a form view. If a user then submits the form, the data object is updated from the form (see dataform-submit-action).

DATAGRID

Represents a sortable, pagable table. This widget is inspired by ASP.NET's datagrid control.

DATAGRID-DRILLDOWN-FIELD

A field used to render drilldown control.

DATALIST

Represents a sortable, pagable list. This widget is similar to the datagrid widget, except items are presented in a list instead of a grid.

DATASEQ

A base class for widgets that are designed to present a sequence of data items. This class provides functionality for data binding; sorting, selecting, and drilling down on items; performing operations on items; pagination of the dataset; and displaying information back to the user.

DATE-ENTRY-PRESENTATION

Simple date entry

DATE-PARSER

DATE-PRESENTATION

Simple date display

DATE-PRINTING-MIXIN

Show a universal time in a friendly `format-date'-generated form.

DEPENDENCY

Models a dependency of a particular renderable item (widget, view, presentation) on a resource defined elsewhere within the page (CSS, external JavaScript, JavaScript code).

DOM-OBJECT-MIXIN

Represents attributes and functionality common to all DOM-renderable objects.

EXCERPT-PRESENTATION

Presents a large amount of text as an HTML paragraph.

FIELD-INFO

A structure that holds information about a given field. Information includes the field instance, the object whose slot the field represents, and the path to the slot the field represents from the root object being evaluated, and the field-info of the field's parent if it was mixed into the view.

FILE-UPLOAD-PARSER

A parser designed to handle file uploads.

FILE-UPLOAD-PRESENTATION

Present a field for uploading a file.

FLASH

A widget that allows displaying a message that disappears on the following request. It is useful for one time messages (welcome, etc.)

FLOAT-PARSER

A parser designed to parse strings into floats.

FORM-PRESENTATION

A base class for all presentations that output form constructs. All form presentations should derive from this class in order to allow the framework to treat them correctly when deserializing the request.

FORM-SCAFFOLD

Form scaffold.

FORM-VIEW

A view designed to interact with the user via input forms.

FORM-VIEW-FIELD

A field class of the form view.

FORM-VIEW-FIELD-WRITER-MIXIN

A writer slot mixin

GRIDEDIT

A widget based on the 'datagrid' that enhances it with user interface to add, remove, and modify data entries.

HIDDEN-PRESENTATION

A presentation that outputs no HTML

HTML-PRESENTATION

A presentation that simply renders its value as-is, without any escaping, allowing for HTML inclusion.

IMAGE-PRESENTATION

Presents a url as an image.

INLINE-VIEW-FIELD

Inline fields are fields that are rendered as part of the view.

INPUT-PRESENTATION

A default presentation for forms renders an input field.

INTEGER-PARSER

A parser designed to parse strings into integers.

JAVASCRIPT-CODE-DEPENDENCY

JavaScript code that is to be placed within the page being rendered or sent as part of an AJAX update.

KEYWORD-PARSER

A parser designed to parse strings into keywords.

LAZY-NAVIGATION

Lazy navigation does not create the entire widget tree immediately. Instead, parts of the widget tree are created as they are needed.

LISTEDIT

A widget based on the 'datalist' that enhances it with user interface to add, remove, and modify data entries.

LOGIN

A widget that provides basic login functionality. Based on a view to be rendered (or a default of email and password), and an authentication function, provides the UI for login, and stores login information the session on success.

MIXIN-FORM-VIEW-FIELD

A field class of the form view.

MIXIN-SEQUENCE-VIEW-FIELD

An abstract view field class representing a mixin item in a sequence of items. This class should be subclassed by mixin view fields for views that represent sequences of data.

MIXIN-VIEW-FIELD

Mixin fields render a field with another view.

NUMBER-PARSER

An abstract class that should serve as a base for numeric parsers.

OBJECT-ID-PARSER

A parser designed to convert an object id into an object instance.

ON-DEMAND-SELECTOR

This selector implements the dynamic wiki-style content creation. When provided with a lookup-function, creates and caches content based on url-tokens. Lookup function should return multiple values: the created widget, consumed tokens, remaining tokens and an optional fourth :no-cache value, indicating that the result is not to be cached.

PAGINATION

The pagination widget can be used to provide UI to break up large amount of data into pages.

PARAGRAPH-PRESENTATION

Presents a large amount of text as an HTML paragraph.

PASSWORD-PRESENTATION

A presentation for passwords.

PREDICATE-PARSER

A parser designed to parse strings into predicates.

PREDICATE-PRESENTATION

A default presentation that renders values as predicates, where nil is treated as false, and any other value is treated as true.

PRESENTATION

Base class for all presentations. Exists in order to help manage CSS and JavaScript dependencies for presentations.

QUICKFORM

A widget based on dataform designed to quickly present forms. Use 'make-quickform' for easy configuration.

SCAFFOLD

Base class to be used for scaffolds.

SCRIPT-DEPENDENCY

A JavaScript file dependency

SELECTOR

A selector is a widget within the tree that has a relation with URIs.

SEQUENCE-VIEW

An abstract class that should be subclassed by views designed to present sequences of object in a sequence to the user.

SEQUENCE-VIEW-FIELD

An abstract view field class representing a slot of an item in a sequence of items. This class should be subclassed by view fields for views that represent sequences of data.

SIMPLEFORM

A form widget to handle very simple forms without frills. It sports a plain style and displays a custom widget when validation passes.

SSL-REDIRECT-ACCEPTOR

A very simple acceptor for handling non-SSL requests and redirecting them to the SSL port.

STATIC-SELECTOR

A static-selector implements a static mapping from a single uri-token to a list of widgets, where only one widget can be selected at any given time. This forms the base for most static navigation systems.

STYLESHEET-DEPENDENCY

A CSS stylesheet dependency

SYMBOL-PARSER

A parser designed to parse strings into symbols.

TABLE-VIEW

A view designed to present sequences of object in a table to the user.

TABLE-VIEW-FIELD

A field class representing a column in the table view.

TELEPORT

A widget that will render ('teleport') another widget to a particular place. It is your responsibility to make sure the teleported widget isn't rendered in its source location. A good use for this is navigation with detached content -- you often want to have the menu for your navigation rendered in one place, and its navigated content elsewhere. The teleport widget lets you do that.

TEMPLATE-BLOCK

A block of HTML taken from 'source', which is processed by HTML-TEMPLATE using 'vars'.

TEXT-PARSER

A default parser for forms. Simply returns strings obtained from the request.

TEXT-PRESENTATION

A default presentation that renders values as text.

TEXT-PRESENTATION-MIXIN

A mixin for presentations that format strings.

TEXTAREA-PRESENTATION

Present values in a text area HTML control.

URI-TOKENS

An object representing an URI split into tokens (path components). Maintains state of the URI as it is being consumed by the widgets to update a widget tree. Use the :TOKENS special initarg to initialize the initial list of tokens. Use the function ALL-TOKENS to access the whole list of tokens.

URL-DEPENDENCY-MIXIN

Any dependency which can be represented by an external URL.

URL-PRESENTATION

Presents text as a URL. The link body is normally HTML- escaped; you can turn this off, if needed, by using `:escape nil', or circumvent it with a body function. The 'href' attribute is not escaped; be careful to validate it in advance.

US-STATE-PARSER

A parser designed to parse strings into a US state.

VIEW

A meta description of the user interface.

VIEW-FIELD

Contains a meta description of a given field in the view.

VIEW-FIELD-SORTING-MIXIN

This is a class that can be mixed into field definitions in order to provide functionality necessary to support dataseq widgets.

WEBAPP-CLASS

The class of all webapp classes.

WEBLOCKS-WEBAPP

A class that encapsulates a unique web application and all relevant rnesources. A webapp is a unique set of dependencies and information that can be enabled or disabled independently of others. Multiple webapps can be active concurrently and incoming connections are dispatched to the root of the webapp according to a prefix parameter that defines the URLs parsed by that webapp. The webapp does not see the prefix parameter in URLs that are provided to it. You can, for instance, have different sites (e.g. mobile vs. desktop) with vastly different layout and dependencies running on the same server.

WIDGET (CONDITION)

Base class for all widget objects.

WIDGET-CLASS

A metaclass used for all widget classes. A custom metaclass is necessary to specialize 'slot-value-using-class'.

WIZARD

A widget that displays a series of data objects in separate steps. The default implementation renders a dataform for each step. Specialize WIZARD-FORM-VIEW to specify views for the data.

WIZARD-DATAFORM

A dataform slightly customized for the wizard's purposes.

Undocumented

CHECKBOXES-PRESENTATION

CHOICES-PRESENTATION-MIXIN

COMPOSITE

DATA-SCAFFOLD

FUNCALL-WIDGET

LOCATION-HASH-DEPENDENT

PARSER

RADIO-PRESENTATION

SEQUENCE

SIMPLEFORM-SUCCESS-WIDGET (OBJECT)

STRING-WIDGET

TABLE-SCAFFOLD

URI-PARAMETERS-MIXIN

US-STATE-PRESENTATION

WEBLOCKS-ACCEPTOR

WEBLOCKS-SSL-ACCEPTOR

Private

BUNDLE-TALLY

A record of the locations and composition files of all bundled files.

DATAGRID-SELECT-FIELD

A field used to render select control.

DIALOG

A structure that stores information about a currently displayed dialog.

MOD-RECORD

Holds the modification record of a file.

PROTOTYPE

A PROTOTYPE contains metadata for an object's class in a format easily serializable to JSON: either the name of the class as a string or (if it is anonymous) the names of the superclasses as a list of strings; and the name of the Lisp package into which the names of the class's slots and the name of the class / superclasses are to be interned.

REQUEST-HOOKS

A data structure that maintains appropriate callback functions used to hook into request evaluation.

STORE-INFO

Information about a store.

WIDGET-DIRECT-SLOT-DEFINITION

Allows specifying custom widget properties.

WIDGET-EFFECTIVE-SLOT-DEFINITION

Allows specifying custom widget properties.

WIDGET-SLOT-DEFINITION-MIXIN

A mixin class used in 'widget-direct-slot-definition' and 'widget-effective-slot-definition' to allow specifying custom widget properties.

Undocumented

SEQUENCE-SCAFFOLD

STANDARD-CLASS

STANDARD-GENERIC-FUNCTION

STANDARD-METHOD

WEBAPP-CONTROL

WEBLOCKS-DEFAULT

CONDITION

Public

WIDGET-NOT-IN-PARENT

This style warning serves as a makeshift until we find a proper way to have an idempotent DO-WIDGET.

Undocumented

HTTP-NOT-FOUND

Private

MISSING-DEFAULT-STORE

Signalled when a webapp lacking a `*default-store*' is started.

MISUNDERSTOOD-ACTION (CONDITION)

Signalled when a user invoked an action, and some part of the handler for which the app writer is responsible doesn't seem to be implemented correctly.

NON-IDEMPOTENT-RENDERING

Signalled in common cases where code that alters the webapp state appears in a rendering process.

WEBAPP-STYLE-WARNING

Signalled by Weblocks when detecting unwise behavior on the part of webapps.