Skip to content

Commit 6f8194d

Browse files
committed
Revert "Fix outdated documentation for MultipleSelectionFormField"
This commit introduced quite a few erroneous changes, due to a broken autoformatter. This reverts commit 9aed575.
1 parent 9aed575 commit 6f8194d

File tree

1 file changed

+65
-12
lines changed

1 file changed

+65
-12
lines changed

docs/php/api/form_builder/form_fields.md

Lines changed: 65 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,14 @@
22

33
## Abstract Form Fields
44

5-
The following form field classes cannot be instantiated directly because they are abstract, but they can/must be used when creating own form field classes.
5+
The following form field classes cannot be instantiated directly because they are abstract, but they can/must be used when creating own form field classes.
6+
67

78
### `AbstractFormField`
89

910
`AbstractFormField` is the abstract default implementation of the `IFormField` interface and it is expected that every implementation of `IFormField` implements the interface by extending this class.
1011

12+
1113
### `AbstractNumericFormField`
1214

1315
`AbstractNumericFormField` is the abstract implementation of a form field handling a single numeric value.
@@ -29,19 +31,22 @@ If the implementation of a more specific interface is required then the remainin
2931

3032
The following form fields are general reusable fields without any underlying context.
3133

34+
3235
### `BooleanFormField`
3336

3437
`BooleanFormField` is used for boolean (`0` or `1`, `yes` or `no`) values.
3538
Objects of this class require a label.
3639
The return value of `getSaveValue()` is the integer representation of the boolean value, i.e. `0` or `1`.
3740
The class implements `IAttributeFormField`, `IAutoFocusFormField`, `ICssClassFormField`, and `IImmutableFormField`.
3841

42+
3943
### `CheckboxFormField`
4044

4145
!!! info "Only available since version 5.3.2."
4246

4347
`CheckboxFormField` extends `BooleanFormField` and offers a simple HTML checkbox.
4448

49+
4550
### `ClassNameFormField`
4651

4752
`ClassNameFormField` is a [text form field](#textformfield) that supports additional settings, specific to entering a PHP class name:
@@ -57,6 +62,7 @@ The class implements `IAttributeFormField`, `IAutoFocusFormField`, `ICssClassFor
5762

5863
Additionally, the default id of a `ClassNameFormField` object is `className`, the default label is `wcf.form.field.className`, and if either an interface or a parent class is required, a default description is set if no description has already been set (`wcf.form.field.className.description.interface` and `wcf.form.field.className.description.parentClass`, respectively).
5964

65+
6066
### `DateFormField`
6167

6268
`DateFormField` is a form field to enter a date (and optionally a time).
@@ -72,37 +78,45 @@ The following methods are specific to this form field class:
7278
- `supportTime($supportsTime = true)` and `supportsTime()` can be used to toggle whether, in addition to a date, a time can also be specified.
7379
By default, specifying a time is disabled.
7480

81+
7582
### `DescriptionFormField`
7683

7784
`DescriptionFormField` is a [multi-line text form field](#multilinetextformfield) with `description` as the default id and `wcf.global.description` as the default label.
7885

86+
7987
### `EmailFormField`
8088

8189
`EmailFormField` is a form field to enter an email address which is internally validated using `UserUtil::isValidEmail()`.
8290
The class implements `IAttributeFormField`, `IAutoCompleteFormField`, `IAutoFocusFormField`, `ICssClassFormField`, `II18nFormField`, `IImmutableFormField`, `IInputModeFormField`, `IPatternFormField`, and `IPlaceholderFormField`.
8391

92+
8493
### `FloatFormField`
8594

8695
`FloatFormField` is an implementation of [AbstractNumericFormField](#abstractnumericformfield) for floating point numbers.
8796

97+
8898
### `HiddenFormField`
8999

90100
`HiddenFormField` is a form field without any user-visible UI.
91101
Even though the form field is invisible to the user, the value can still be modified by the user, e.g. by leveraging the web browsers developer tools.
92-
The `HiddenFormField` _must not_ be used to transfer sensitive information or information that the user should not be able to modify.
102+
The `HiddenFormField` *must not* be used to transfer sensitive information or information that the user should not be able to modify.
103+
93104

94105
### `IconFormField`
95106

96107
`IconFormField` is a form field to select a FontAwesome icon.
97108

109+
98110
### `IntegerFormField`
99111

100112
`IntegerFormField` is an implementation of [AbstractNumericFormField](#abstractnumericformfield) for integers.
101113

114+
102115
### `IsDisabledFormField`
103116

104117
`IsDisabledFormField` is a [boolean form field](#booleanformfield) with `isDisabled` as the default id.
105118

119+
106120
### `ItemListFormField`
107121

108122
`ItemListFormField` is a form field in which multiple values can be entered and returned in different formats as save value.
@@ -119,23 +133,28 @@ By default, `ItemListFormField::SAVE_VALUE_TYPE_CSV` is used.
119133

120134
If `ItemListFormField::SAVE_VALUE_TYPE_ARRAY` is used as save value type, `ItemListFormField` objects register a [custom form field data processor](validation_data.md#customformfielddataprocessor) to add the relevant array into the `$parameters` array directly using the object property as the array key.
121135

136+
122137
### `MultilineTextFormField`
123138

124139
`MultilineTextFormField` is a [text form field](#textformfield) that supports multiple rows of text.
125140
The methods `rows($rows)` and `getRows()` can be used to set and get the number of rows of the `textarea` elements.
126141
The default number of rows is `10`.
127142
These methods do **not**, however, restrict the number of text rows that can be entered.
128143

144+
129145
### `MultipleSelectionFormField`
130146

131147
`MultipleSelectionFormField` is a form fields that allows the selection of multiple options out of a predefined list of available options.
132-
The class implements `IAttributeFormField`, `ICssClassFormField`, `IFilterableSelectionFormField`, `IImmutableFormField`.
148+
The class implements `IAttributeFormField`, `ICssClassFormField`, `IFilterableSelectionFormField`, `IImmutableFormField`, and `INullableFormField`.
149+
If the field is nullable and no option is selected, `null` is returned as the save value.
150+
133151

134152
### `RadioButtonFormField`
135153

136154
`RadioButtonFormField` is a form fields that allows the selection of a single option out of a predefined list of available options using radiobuttons.
137155
The class implements `IAttributeFormField`, `ICssClassFormField`, `IImmutableFormField`, and `ISelectionFormField`.
138156

157+
139158
### `RatingFormField`
140159

141160
`RatingFormField` is a form field to set a rating for an object.
@@ -144,7 +163,8 @@ Form fields of this class have `rating` as their default id, `wcf.form.field.rat
144163
For this field, the minimum and maximum refer to the minimum and maximum rating an object can get.
145164
When the field is shown, there will be `maximum() - minimum() + 1` icons be shown with additional CSS classes that can be set and gotten via `defaultCssClasses(array $cssClasses)` and `getDefaultCssClasses()`.
146165
If a rating values is set, the first `getValue()` icons will instead use the classes that can be set and gotten via `activeCssClasses(array $cssClasses)` and `getActiveCssClasses()`.
147-
By default, the only default class is `fa-star-o` and the active classes are `fa-star` and `orange`.
166+
By default, the only default class is `fa-star-o` and the active classes are `fa-star` and `orange`.
167+
148168

149169
### `ShowOrderFormField`
150170

@@ -155,33 +175,41 @@ The default id of instances of this class is `showOrder` and their default label
155175

156176
!!! info "It is important that the relevant object property is always kept updated. Whenever a new object is added or an existing object is edited or delete, the values of the other objects have to be adjusted to ensure consecutive numbering."
157177

178+
158179
### `SingleSelectionFormField`
159180

160181
`SingleSelectionFormField` is a form fields that allows the selection of a single option out of a predefined list of available options.
161182
The class implements `ICssClassFormField`, `IFilterableSelectionFormField`, `IImmutableFormField`, and `INullableFormField`.
162183
If the field is nullable and the current form field value is considered `empty` by PHP, `null` is returned as the save value.
163184

185+
164186
### `SortOrderFormField`
165187

166188
`SingleSelectionFormField` is a [single selection form field](#singleselectionformfield) with default id `sortOrder`, default label `wcf.global.showOrder` and default options `ASC: wcf.global.sortOrder.ascending` and `DESC: wcf.global.sortOrder.descending`.
167189

190+
168191
### `TextFormField`
169192

170193
`TextFormField` is a form field that allows entering a single line of text.
171194
The class implements `IAttributeFormField`, `IAutoCompleteFormField`, `ICssClassFormField`, `IImmutableFormField`, `II18nFormField`, `IInputModeFormField`, `IMaximumLengthFormField`, `IMinimumLengthFormField`, `IPatternFormField`, and `IPlaceholderFormField`.
172195

196+
173197
### `TitleFormField`
174198

175199
`TitleFormField` is a [text form field](#textformfield) with `title` as the default id and `wcf.global.title` as the default label.
176200

201+
177202
### `UrlFormField`
178203

179204
`UrlFormField` is a [text form field](#textformfield) whose values are checked via `Url::is()`.
180205

206+
207+
181208
## Specific Fields
182209

183210
The following form fields are reusable fields that generally are bound to a certain API or `DatabaseObject` implementation.
184211

212+
185213
### `AclFormField`
186214

187215
`AclFormField` is used for setting up acl values for specific objects.
@@ -194,34 +222,39 @@ A category name of `null` signals that no category filter is used.
194222
`AclFormField` objects register a [custom form field data processor](validation_data.md#customformfielddataprocessor) to add the relevant ACL object type id into the `$parameters` array directly using `{$objectProperty}_aclObjectTypeID` as the array key.
195223
The relevant database object action method is expected, based on the given ACL object type id, to save the ACL option values appropriately.
196224

225+
197226
### `ButtonFormField`
198227

199228
!!! info "Only available since version 5.4."
200229

201230
`ButtonFormField` shows a submit button as part of the form.
202231
The class implements `IAttributeFormField` and `ICssClassFormField`.
203232

204-
Specifically for this form field, there is the `IsNotClickedFormFieldDependency` dependency with which certain parts of the form will only be processed if the relevent button has not clicked.
233+
Specifically for this form field, there is the `IsNotClickedFormFieldDependency` dependency with which certain parts of the form will only be processed if the relevent button has not clicked.
234+
205235

206236
### `CaptchaFormField`
207237

208238
`CaptchaFormField` is used to add captcha protection to the form.
209239

210240
You must specify a captcha object type (`com.woltlab.wcf.captcha`) using the `objectType()` method.
211241

242+
212243
### `ColorFormField`
213244

214245
!!! info "Only available since version 5.5."
215246

216247
`ColorFormField` is used to specify RGBA colors using the `rgba(r, g, b, a)` format.
217248
The class implements `IImmutableFormField`.
218249

250+
219251
### `ContentLanguageFormField`
220252

221253
`ContentLanguageFormField` is used to select the content language of an object.
222-
Fields of this class are only available if multilingualism is enabled and if there are content languages.
254+
Fields of this class are only available if multilingualism is enabled and if there are content languages.
223255
The class implements `IImmutableFormField`.
224256

257+
225258
### `LabelFormField`
226259

227260
`LabelFormField` is used to select a label from a specific label group.
@@ -231,12 +264,14 @@ The `labelGroup(ViewableLabelGroup $labelGroup)` and `getLabelGroup()` methods a
231264
Additionally, there is the static method `createFields($objectType, array $labelGroups, $objectProperty = 'labelIDs)` that can be used to create all relevant label form fields for a given list of label groups.
232265
In most cases, `LabelFormField::createFields()` should be used.
233266

267+
234268
### `OptionFormField`
235269

236270
`OptionFormField` is an [item list form field](#itemlistformfield) to set a list of options.
237271
The class implements `IPackagesFormField` and only options of the set packages are considered available.
238272
The default label of instances of this class is `wcf.form.field.option` and their default id is `options`.
239273

274+
240275
### `SimpleAclFormField`
241276

242277
`SimpleAclFormField` is used for setting up simple acl values (one `yes`/`no` option per user and user group) for specific objects.
@@ -257,6 +292,7 @@ The following methods are specific to this form field class:
257292
- `imageOnly($imageOnly = true)` and `isImageOnly()` can be used to set and check if only images may be selected.
258293
- `getMedia()` returns the media file based on the current field value if a field is set.
259294

295+
260296
### `TagFormField`
261297

262298
`TagFormField` is a form field to enter tags.
@@ -266,51 +302,57 @@ The default label of instances of this class is `wcf.tagging.tags` and their def
266302

267303
`TagFormField` objects register a [custom form field data processor](validation_data.md#customformfielddataprocessor) to add the array with entered tag names into the `$parameters` array directly using the object property as the array key.
268304

305+
269306
### `UploadFormField`
270307

271308
`UploadFormField` is a form field that allows uploading files by the user.
272309

273-
`UploadFormField` objects register a [custom form field data processor](validation_data.md#customformfielddataprocessor) to add the array of `wcf\system\file\upload\UploadFile\UploadFile` into the `$parameters` array directly using the object property as the array key. Also it registers the removed files as an array of `wcf\system\file\upload\UploadFile\UploadFile` into the `$parameters` array directly using the object property with the suffix `_removedFiles` as the array key.
274-
275-
The field supports additional settings:
310+
`UploadFormField` objects register a [custom form field data processor](validation_data.md#customformfielddataprocessor) to add the array of `wcf\system\file\upload\UploadFile\UploadFile` into the `$parameters` array directly using the object property as the array key. Also it registers the removed files as an array of `wcf\system\file\upload\UploadFile\UploadFile` into the `$parameters` array directly using the object property with the suffix `_removedFiles` as the array key.
276311

312+
The field supports additional settings:
277313
- `imageOnly($imageOnly = true)` and `isImageOnly()` can be used to ensure that the uploaded files are only images.
278314
- `allowSvgImage($allowSvgImages = true)` and `svgImageAllowed()` can be used to allow SVG images, if the image only mode is enabled (otherwise, the method will throw an exception). By default, SVG images are not allowed.
279315

280-
#### Provide value from database object
316+
#### Provide value from database object
281317

282318
To provide values from a database object, you should implement the method `get{$objectProperty}UploadFileLocations()` to your database object class. This method must return an array of strings with the locations of the files.
283319

284-
#### Process files
320+
#### Process files
285321

286322
To process files in the database object action class, you must [`rename`](https://secure.php.net/manual/en/function.rename.php) the file to the final destination. You get the temporary location, by calling the method `getLocation()` on the given `UploadFile` objects. After that, you call `setProcessed($location)` with `$location` contains the new file location. This method sets the `isProcessed` flag to true and saves the new location. For updating files, it is relevant, whether a given file is already processed or not. For this case, the `UploadFile` object has an method `isProcessed()` which indicates, whether a file is already processed or new uploaded.
287323

324+
288325
### `UserFormField`
289326

290327
`UserFormField` is a form field to enter existing users.
291328
The class implements `IAutoCompleteFormField`, `IAutoFocusFormField`, `IImmutableFormField`, `IMultipleFormField`, and `INullableFormField`.
292329
While the user is presented the names of the specified users in the user interface, the field returns the ids of the users as data.
293330
The relevant `UserProfile` objects can be accessed via the `getUsers()` method.
294331

332+
295333
### `UserPasswordField`
296334

297335
!!! info "Only available since version 5.4."
298336

299337
`UserPasswordField` is a form field for users' to enter their current password.
300338
The class implements `IAttributeFormField`, `IAttributeFormField`, `IAutoCompleteFormField`, `IAutoFocusFormField`, and `IPlaceholderFormField`
301339

340+
302341
### `UserGroupOptionFormField`
303342

304343
`UserGroupOptionFormField` is an [item list form field](#itemlistformfield) to set a list of user group options/permissions.
305344
The class implements `IPackagesFormField` and only user group options of the set packages are considered available.
306345
The default label of instances of this class is `wcf.form.field.userGroupOption` and their default id is `permissions`.
307346

347+
308348
### `UsernameFormField`
309349

310350
`UsernameFormField` is used for entering one non-existing username.
311351
The class implements `IAttributeFormField`, `IImmutableFormField`, `IMaximumLengthFormField`, `IMinimumLengthFormField`, `INullableFormField`, and `IPlaceholderFormField`.
312352
As usernames have a system-wide restriction of a minimum length of 3 and a maximum length of 100 characters, these values are also used as the default value for the field’s minimum and maximum length.
313353

354+
355+
314356
## Wysiwyg form container
315357

316358
To integrate a wysiwyg editor into a form, you have to create a `WysiwygFormContainer` object.
@@ -393,6 +435,7 @@ WysiwygFormContainer::create('message')
393435
->supportQuotes()
394436
```
395437

438+
396439
### `WysiwygFormField`
397440

398441
`WysiwygFormField` is used for wysiwyg editor form fields.
@@ -406,17 +449,20 @@ The following methods are specific to this form field class:
406449
`0` signals that no last edit time has been set.
407450
- `supportAttachments($supportAttachments)` and `supportsAttachments()` can be used to set and check if the form field supports attachments.
408451

409-
!!! warning "It is not sufficient to simply signal attachment support via these methods for attachments to work. These methods are relevant internally to signal the Javascript code that the editor supports attachments. Actual attachment support is provided by `WysiwygAttachmentFormField`."
452+
!!! warning "It is not sufficient to simply signal attachment support via these methods for attachments to work. These methods are relevant internally to signal the Javascript code that the editor supports attachments. Actual attachment support is provided by `WysiwygAttachmentFormField`."
410453

411454
- `supportMentions($supportMentions)` and `supportsMentions()` can be used to set and check if the form field supports mentions of other users.
412455

413456
`WysiwygFormField` objects register a [custom form field data processor](validation_data.md#customformfielddataprocessor) to add the relevant simple ACL data array into the `$parameters` array directly using the object property as the array key.
414457

458+
415459
### `TWysiwygFormNode`
416460

417461
All form nodes that need to know the id of the `WysiwygFormField` field should use `TWysiwygFormNode`.
418462
This trait provides `getWysiwygId()` and `wysiwygId($wysiwygId)` to get and set the relevant wysiwyg editor id.
419463

464+
465+
420466
## Application-Specific Form Fields
421467

422468
### WoltLab Suite Forum
@@ -439,26 +485,33 @@ The field supports additional settings:
439485
By default, external links are shown.
440486
Like in the example given before, in cases where only actual boards, in which threads can be posted, are relevant, this option allows to exclude external links.
441487

488+
489+
442490
## Single-Use Form Fields
443491

444492
The following form fields are specific for certain forms and hardly reusable in other contexts.
445493

494+
446495
### `BBCodeAttributesFormField`
447496

448497
`DevtoolsProjectExcludedPackagesFormField` is a form field for setting the attributes of a BBCode.
449498

499+
450500
### `DevtoolsProjectExcludedPackagesFormField`
451501

452502
`DevtoolsProjectExcludedPackagesFormField` is a form field for setting the excluded packages of a devtools project.
453503

504+
454505
### `DevtoolsProjectInstructionsFormField`
455506

456507
`DevtoolsProjectExcludedPackagesFormField` is a form field for setting the installation and update instructions of a devtools project.
457508

509+
458510
### `DevtoolsProjectOptionalPackagesFormField`
459511

460512
`DevtoolsProjectExcludedPackagesFormField` is a form field for setting the optional packages of a devtools project.
461513

514+
462515
### `DevtoolsProjectRequiredPackagesFormField`
463516

464517
`DevtoolsProjectExcludedPackagesFormField` is a form field for setting the required packages of a devtools project.

0 commit comments

Comments
 (0)