Class ComplexTableField
Provides a tabuar list in your form with view, edit and add links to edit records with a "has-one"-relationship. Detail-views are shown in a greybox-iframe. Features pagination in the overview as well as the detail-views.
CAUTION: You need to make sure that the original form-call to the main controller (e.g. EditForm()) returns a form which includes this field even if no data is loaded, to provide a "starting point" for action_callfieldmethod and ReferencedField.
All URL data sent to and from ComplexTableField is encapsulated in $_REQUEST['ctf'] to avoid side-effects with the main controller.
Example-URL for a "DetailForm"-call explained: "/admin/family/?executeForm=EditForm&action_callfieldmethod&fieldName=Individual&childID=7&methodName=edit" - executeForm Name of the form on the main rendering page (e.g. "FamilyAdmin") - action_callfieldmethod Trigger to call a method of a single field in "EditForm" instead of rendering the whole thing - fieldName Name of the targeted formField - methodName Method on the formfield (e.g. "ComplexTableField") - childID Identifier of the database-record (the targeted table is determined by the $sourceClass parameter)
- Object
-
ViewableData
implements
IteratorAggregate
-
RequestHandler
-
FormField
-
TableListField
-
ComplexTableField
Direct known subclasses
AssetTableField,
CommentTableField,
DataObjectManager,
HasManyComplexTableField,
MemberTableField
Indirect known subclasses
AssetManager,
DocumentPageFiles_Manager,
ImageDataObjectManager,
ManyManyComplexTableField,
ManyManyDataObjectManager,
ManyManyFileDataObjectManager,
Mediaweb3DPageFiles_Manager,
MediawebPageFiles_Manager,
MediawebPagePhoto_Manager,
MediawebPageTexture_Manager,
PhotoAlbumManager,
VideoManager,
FileComplexTableField,
FileDataObjectManager,
HasManyDataObjectManager,
HasManyFileDataObjectManager,
HasOneComplexTableField,
HasOneDataObjectManager,
HasOneFileDataObjectManager,
ImageAssetManager
Methods summary
public
|
|
public
|
|
public
|
|
public
|
|
public
|
|
public
|
#
__construct(
See class comments |
public
|
#
sourceFilter( )
Return the record filter for this table. It will automatically add a relation filter if relationAutoSetting is true, and it can determine an appropriate filter. |
public
|
#
isComposite( )
Returns true if this field is a composite field. To create composite field
types, you should subclass |
public
String
|
|
public
|
|
public
|
|
public
|
#
setPopupCaption( mixed $caption )
Sets the popup-title by javascript. Make sure to use FormResponse in ajax-requests, otherwise the title-change will only take effect on items existing during page-load. |
public
|
|
public
|
|
public
|
|
public
|
|
public
|
|
public
|
|
public
|
|
public
|
|
public
|
|
public
String
|
#
getParentClass( )
Determines on which relation-class the DetailForm is saved by looking at the surrounding form-record. |
public
|
|
public
|
#
setParentClass( mixed $className )
(Optional) Setter for a correct parent-relation-class. Defaults to the record loaded into the surrounding form as a fallback. Caution: Please use the classname, not the actual column-name in the database. |
public
|
#
getParentIdName( mixed $parentClass, mixed $childClass )
Returns the db-fieldname of the currently used has_one-relationship. |
public
|
|
public
|
#
getParentIdNameRelation( mixed $parentClass, mixed $childClass, mixed $relation )
Returns the db-fieldname of the currently used relationship. Note: constructed resolve ambiguous cases in the same manner as DataObject::getComponentJoinField() |
public
|
|
public
|
#
getCustomFieldsFor( mixed $childData )
Return the object-specific fields for the given record, to be shown in the detail pop-up |
public
|
|
public
|
|
public
|
|
public
|
|
public
|
#
setRelationAutoSetting( boolean $value )
By default, a ComplexTableField will assume that the field name is the name of a has-many relation on the object being edited. It will identify the foreign key in the object being listed, and filter on that column, as well as auto-setting that column for newly created records. |
public
|
#
saveComplexTableField( mixed $data, mixed $form, mixed $params )
Use the URL-Parameter "action_saveComplexTableField" to provide a clue to the main controller if the main form has to be rendered, even if there is no action relevant for the main controller (to provide the instance of ComplexTableField which in turn saves the record. |
Methods inherited from TableListField
Actions(),
BaseLink(),
Can(),
CurrentLink(),
ExportLink(),
FieldList(),
FirstItem(),
FirstLink(),
GroupedItems(),
HasGroupedItems(),
HasSummary(),
Headings(),
LastItem(),
LastLink(),
ListStart(),
Name(),
NamePlural(),
NameSingular(),
NextLink(),
PageSize(),
PrevLink(),
PrintLink(),
ShowPagination(),
SummaryFields(),
SummaryTitle(),
TotalCount(),
Utility(),
addSummary(),
ajax_refresh(),
colFunction_avg(),
colFunction_sum(),
delete(),
disableSorting(),
export(),
filterString(),
generateExportFileData(),
getCastedValue(),
getCsvQuery(),
getCsvSeparator(),
getExtraLinkParams(),
getPermissions(),
getQuery(),
index(),
isFieldSortable(),
performReadonlyTransformation(),
permissions_for_object(),
printall(),
removeCsvHeader(),
removeSummary(),
setCSVFieldFormatting(),
setClick_AjaxLoad(),
setClick_PopupLoad(),
setCsvSeparator(),
setCustomCsvQuery(),
setCustomQuery(),
setCustomSourceItems(),
setExtraLinkParams(),
setFieldCasting(),
setFieldFormatting(),
setFieldList(),
setFieldListCsv(),
setHighlightConditions(),
setPageSize(),
setPermissions(),
setShowPagination(),
setTemplate(),
sourceItems()
Methods inherited from FormField
Field(),
LeftTitle(),
Link(),
Message(),
MessageType(),
Required(),
RightTitle(),
SmallFieldHolder(),
Type(),
Value(),
addExtraAttribute(),
addExtraClass(),
allowHTML5(),
allow_html5(),
attrName(),
attrTitle(),
attrValue(),
createTag(),
dataValue(),
debug(),
describe(),
extraClass(),
forTemplate(),
getCustomValidationMessage(),
getForm(),
getTabIndex(),
getTabIndexHTML(),
hasClass(),
hasData(),
id(),
isDisabled(),
isReadonly(),
jsValidation(),
name_to_label(),
performDisabledTransformation(),
removeExtraAttribute(),
removeExtraClass(),
rootFieldSet(),
saveInto(),
securityTokenEnabled(),
setAutocomplete(),
setContainerFieldSet(),
setCustomValidationMessage(),
setDisabled(),
setError(),
setForm(),
setHTML5Attribute(),
setLeftTitle(),
setName(),
setReadonly(),
setRightTitle(),
setTabIndex(),
setTitle(),
setValue(),
transform(),
useHTML5(),
use_html5(),
validate()
Methods inherited from RequestHandler
allowedActions(),
checkAccessAction(),
getRequest(),
handleRequest(),
hasAction(),
httpError()
Methods inherited from ViewableData
ATT_val(),
BaseHref(),
CSSClasses(),
ColumnBreak(),
ColumnCalc(),
ColumnNumber(),
ColumnPad(),
ColumnPos(),
CurrentMember(),
CurrentPage(),
Debug(),
Even(),
EvenOdd(),
First(),
FirstLast(),
HasPerm(),
IsAjax(),
JS_val(),
Last(),
Me(),
Middle(),
MiddleString(),
Modulus(),
MultipleOf(),
Odd(),
Pos(),
RAW_val(),
SQL_val(),
ThemeDir(),
ThemeName(),
Top(),
TotalItems(),
XML_val(),
__get(),
__isset(),
__set(),
buildCastingCache(),
cachedCall(),
castingClass(),
castingHelper(),
castingHelperPair(),
castingObjectCreator(),
castingObjectCreatorPair(),
customise(),
defineMethods(),
escapeTypeForField(),
getField(),
getIterator(),
getSecurityID(),
getXMLValues(),
hasField(),
hasValue(),
i18nLocale(),
iteratorProperties(),
obj(),
renderWith(),
setCustomisedObj(),
setField()
Methods inherited from Object
__call(),
__toString(),
__wakeup(),
addMethodsFrom(),
addStaticVars(),
addWrapperMethod(),
add_extension(),
add_static_var(),
allMethodNames(),
cacheToFile(),
cacheToFileWithArgs(),
clearCache(),
combined_static(),
create(),
createMethod(),
create_from_string(),
exists(),
extInstance(),
extend(),
getCustomClass(),
getExtensionInstance(),
getExtensionInstances(),
get_extensions(),
get_static(),
hasExtension(),
hasMethod(),
has_extension(),
invokeWithExtensions(),
is_a(),
loadCache(),
parentClass(),
parse_class_spec(),
remove_extension(),
sanitiseCachename(),
saveCache(),
set_stat(),
set_static(),
set_uninherited(),
stat(),
strong_create(),
uninherited(),
uninherited_static(),
useCustomClass()
Magic methods summary
Properties summary
protected
mixed
|
$addTitle |
#
Determines the fields of the detail pop-up form. It can take many forms: |
protected
mixed
|
$detailFormFields | |
protected
mixed
|
$viewAction | |
protected
mixed
|
$sourceJoin | |
protected
mixed
|
$sourceItems | |
protected
|
$controller | |
public
string
|
$parentClass |
#
Classname of the parent-relation to correctly link new records. |
protected
string
|
$parentIdName |
#
Database column name for the used relation (e.g. FamilyID if one Family has_many Individuals). |
protected
array
|
$permissions |
#
Influence output without having to subclass the template. |
protected
string
|
$template |
#
Template for main rendering |
public
string
|
$templatePopup |
#
Template for popup (form rendering) |
public
string
|
$itemClass |
#
Classname for each row/item |
public
string
|
$popupClass |
#
Classname for the popup form |
protected
boolean
|
$showPagination |
#
Trigger pagination (defaults to true for ComplexTableField) |
protected
string
|
$popupCaption |
#
Caption the popup will show (defaults to the selected action). This is set by javascript and used by greybox. |
public
callable
|
$requirementsForPopupCallback |
#
A function callback invoked after initializing the popup and its base calls
to the |
protected
mixed
|
$detailFormValidator |
#
Validator |
protected
boolean
|
$relationAutoSetting |
#
Automatically detect a has-one relationship in the popup (=child-class) and save the relation ID. |
protected
integer
|
$popupWidth |
#
Default size for the popup box |
protected
integer
|
$popupHeight | |
public
string
|
$defaultAction |
#
String Action being executed when clicking on table-row (defaults to "show"). Mostly needed in ComplexTableField-subclass. |
public
array
|
$actions |
#
array Action that can be performed on a single row-entry. Has to correspond
to a method in a TableListField-class (or subclass). Actions can be disabled
through $permissions. Format (key is used for the methodname and CSS-class):
array( |
public static
array
|
$url_handlers |
#
The default URL handling rules. This specifies that the next component of the URL corresponds to a method to be called on this RequestHandlingData object. |
Properties inherited from TableListField
$IsReadOnly,
$Markable,
$MarkableTitle,
$__cachedQuery,
$cachedSourceItems,
$clickAction,
$csvFieldEscape,
$csvFieldFormatting,
$csvHasHeader,
$csvSeparator,
$customCsvQuery,
$customQuery,
$customSourceItems,
$disableSorting,
$exportButtonLabel,
$extraLinkParams,
$fieldCasting,
$fieldFormatting,
$fieldList,
$fieldListCsv,
$groupByField,
$highlightConditions,
$methodName,
$pageSize,
$paginationBaseLink,
$readOnly,
$sourceClass,
$sourceFilter,
$sourceSort,
$summaryFieldList,
$summaryTitle,
$totalCount
Properties inherited from FormField
$autocomplete,
$containerFieldSet,
$customValidationMessage,
$description,
$disabled,
$dontEscape,
$extraAttributes,
$extraClass,
$extraClasses,
$fieldHTML5,
$form,
$html5Attributes,
$leftTitle,
$message,
$messageType,
$name,
$possible_autocomplete_values,
$readonly,
$rightTitle,
$tabIndex,
$title,
$use_html5,
$value
Properties inherited from RequestHandler
$allowed_actions,
$brokenOnConstruct,
$request
Properties inherited from ViewableData
$casting,
$customisedObject,
$default_cast,
$failover,
$iteratorPos,
$iteratorTotalItems