diff --git a/docs/_images/cp-channel-categories-tab.png b/docs/_images/cp-channel-categories-tab.png
new file mode 100644
index 000000000..8743a2fd8
Binary files /dev/null and b/docs/_images/cp-channel-categories-tab.png differ
diff --git a/docs/_images/cp-entry-categories-tab.png b/docs/_images/cp-entry-categories-tab.png
new file mode 100644
index 000000000..daee52bce
Binary files /dev/null and b/docs/_images/cp-entry-categories-tab.png differ
diff --git a/docs/_images/cp-members.png b/docs/_images/cp-members.png
index 197381423..3d4a07684 100644
Binary files a/docs/_images/cp-members.png and b/docs/_images/cp-members.png differ
diff --git a/docs/_images/cp_collapase_arrow.png b/docs/_images/cp_collapse_arrow.png
similarity index 100%
rename from docs/_images/cp_collapase_arrow.png
rename to docs/_images/cp_collapse_arrow.png
diff --git a/docs/_images/field_file.png b/docs/_images/field_file.png
index 176dcf6d3..b56def094 100644
Binary files a/docs/_images/field_file.png and b/docs/_images/field_file.png differ
diff --git a/docs/_images/field_file_file.png b/docs/_images/field_file_file.png
new file mode 100644
index 000000000..d605958d1
Binary files /dev/null and b/docs/_images/field_file_file.png differ
diff --git a/docs/_images/field_members.png b/docs/_images/field_members.png
new file mode 100644
index 000000000..ef0933aba
Binary files /dev/null and b/docs/_images/field_members.png differ
diff --git a/docs/_images/field_short_name.png b/docs/_images/field_short_name.png
new file mode 100644
index 000000000..b050d0d10
Binary files /dev/null and b/docs/_images/field_short_name.png differ
diff --git a/docs/_images/icon_edit.png b/docs/_images/icon_edit.png
new file mode 100644
index 000000000..ec421f13f
Binary files /dev/null and b/docs/_images/icon_edit.png differ
diff --git a/docs/_images/icon_edit_meta.png b/docs/_images/icon_edit_meta.png
new file mode 100644
index 000000000..7dd68aa4a
Binary files /dev/null and b/docs/_images/icon_edit_meta.png differ
diff --git a/docs/_images/icon_remove.png b/docs/_images/icon_remove.png
new file mode 100644
index 000000000..be400d33e
Binary files /dev/null and b/docs/_images/icon_remove.png differ
diff --git a/docs/_images/rte-buttons.png b/docs/_images/rte-buttons.png
new file mode 100644
index 000000000..c75b79a9d
Binary files /dev/null and b/docs/_images/rte-buttons.png differ
diff --git a/docs/_tips/form-attributes.md b/docs/_tips/form-attributes.md
new file mode 100644
index 000000000..c71543ebb
--- /dev/null
+++ b/docs/_tips/form-attributes.md
@@ -0,0 +1 @@
+TIP: Valid HTML Form attributes (as listed in the [config file](config/config-files.md#html-form-attributes)), `data-` and `aria-` attributes passed through ExpressionEngine tag parameters in the template will be included into generated opening form tag.
\ No newline at end of file
diff --git a/docs/add-ons/consent.md b/docs/add-ons/consent.md
index 1f46cd009..73cbe52c4 100755
--- a/docs/add-ons/consent.md
+++ b/docs/add-ons/consent.md
@@ -40,6 +40,8 @@ Consent Forms allow the visitor to grant or withdraw consent to one or more Cons
[TOC=3]
+{{embed:_tips/form-attributes.md}}
+
#### `consent=`
consent='ee:cookies_functionality'
@@ -179,7 +181,7 @@ If this tag would not output any consent requests due to your filters, the conte
No Consent Requests Available
{/if}
-### Conesnt Form Examples
+### Consent Form Examples
#### Simple Bulk Consent Form
@@ -466,7 +468,7 @@ If you need to exclude one or several types from display, use `not ` before the
provider='ee'
-Limits display of cookies by cookie provider.
+Limits display of cookies by cookie provider.
If the cookie is provided by an add-on, the provider matches the add-ons short name, e.g. `comment` or `forum`
The core ExpressionEngine cookies are identified by `ee` as provider.
If cookie is only being used in Control Panel, the provider is set to `cp`.
diff --git a/docs/add-ons/email.md b/docs/add-ons/email.md
index 16e8b1c11..3afec336c 100755
--- a/docs/add-ons/email.md
+++ b/docs/add-ons/email.md
@@ -56,6 +56,8 @@ The contact form is created similar to a standard web form, only you **do not**
[TOC=3]
+{{embed:_tips/form-attributes.md}}
+
### `charset=`
charset="utf-8"
diff --git a/docs/add-ons/pro-search/filters.md b/docs/add-ons/pro-search/filters.md
index 4fe1ab03e..a0dca61a9 100644
--- a/docs/add-ons/pro-search/filters.md
+++ b/docs/add-ons/pro-search/filters.md
@@ -168,7 +168,7 @@ You can use the native `search:field_name` parameter to target specific fields.
### Parameters
#### `search:field_name`
- Like the [channel search:field_name= parameter](/channel/channel_entries.html#search-field-name).
+ Like the [channel search:field_name= parameter](/channel/channel_entries.md#search-field-name).
#### `search:field_name:column_name`
Works just like the `search:field_name` parameter, but targets a specific column in a Grid/Matrix field.
#### `search:title`
@@ -178,7 +178,7 @@ You can use the native `search:field_name` parameter to target specific fields.
#### `search:status`
Works just like the `search:field_name` parameter, but targets statuses.
#### `contains_words`
- Accepts parameter names. Force the given parameter values to match the full term, to ensure that the values are [not contained within other words](/channel/channel_entries.html#contains-matching). Also possible by using `search:field_name="value\W"`.
+ Accepts parameter names. Force the given parameter values to match the full term, to ensure that the values are [not contained within other words](/channel/channel_entries.md#contains-matching). Also possible by using `search:field_name="value\W"`.
#### `ends_with`
Accepts parameter names. Force the given parameter values to match the end of the target field. Also possible by using `search:field_name="value$"`.
#### `exact`
diff --git a/docs/add-ons/pro-search/parameters.md b/docs/add-ons/pro-search/parameters.md
index 459a3597e..386c9e6b5 100644
--- a/docs/add-ons/pro-search/parameters.md
+++ b/docs/add-ons/pro-search/parameters.md
@@ -117,7 +117,7 @@ This is equal to:
### SQL parameters
-Pro Search supports SQL parameters. This means you can use a SQL query in any pararameter. SQL queries are limited to SELECTs only and should always end with a semi-colon (;). Pro Search will take the first item in the SELECT statement and creates a pipe-separated list from it. If the SQL query produces no results, it sets the parameter value to what comes after the semi-colon. You can optionally prefix the SQL query for better matching. Schematically, such a query looks like this:
+Pro Search supports SQL parameters. This means you can use a SQL query in any parameter. SQL queries are limited to SELECTs only and should always end with a semi-colon (;). Pro Search will take the first item in the SELECT statement and creates a pipe-separated list from it. If the SQL query produces no results, it sets the parameter value to what comes after the semi-colon. You can optionally prefix the SQL query for better matching. Schematically, such a query looks like this:
`param="prefix SELECT field FROM table WHERE lorem = 'ipsum';no results"`
diff --git a/docs/add-ons/pro-search/settings.md b/docs/add-ons/pro-search/settings.md
index c9e783cc5..035a4337f 100644
--- a/docs/add-ons/pro-search/settings.md
+++ b/docs/add-ons/pro-search/settings.md
@@ -40,7 +40,7 @@ The same query with GET variables would look like this:
`domain.com/search/results?keywords=hello+world`
-Using GET variables is not possible if the `uri_protocol` config setting is set to QUERY_STRING. It can also cause unexpected behaviour if you’re using the second exception (the question mark) in your `.htaccess` file when hiding `index.php`. If you can, use the encoded query instead as this will always work.
+Using GET variables is not possible if the `uri_protocol` config setting is set to QUERY_STRING. It can also cause unexpected behavior if you’re using the second exception (the question mark) in your `.htaccess` file when hiding `index.php`. If you can, use the encoded query instead as this will always work.
NOTE:**Note:** When using GET variables, make sure Dynamic Channel Query Caching is turned off.
@@ -54,7 +54,7 @@ Choose a tag which is used to highlight keywords in the search excerpt. Options
### Minimum word length
-The ft_min_word_len setting of your MySQL installation determines the minimum length of words indexed by the Full Text index. Setting that value here will trigger an alternative search algorithm when the search term is smaller than this size. Defaults to 4. Do not alter unless you have customised your MySQL installation.
+The ft_min_word_len setting of your MySQL installation determines the minimum length of words indexed by the Full Text index. Setting that value here will trigger an alternative search algorithm when the search term is smaller than this size. Defaults to 4. Do not alter unless you have customized your MySQL installation.
### Stop words
diff --git a/docs/add-ons/pro-variables/manage.md b/docs/add-ons/pro-variables/manage.md
index 772f3bbcc..04a93fc3a 100644
--- a/docs/add-ons/pro-variables/manage.md
+++ b/docs/add-ons/pro-variables/manage.md
@@ -51,7 +51,7 @@ When using the suffix option, you can use `{suffix}` in both the variable name a
## Variable groups
-You can create any number of groups to organise your variables. These groups will appear in the Group drop down for each variable, so you can assign a group to it. On the module home page, variable managers can sort the groups using drag and drop. Variable managers can also edit and delete the groups from here, by clicking on the edit or delete icon next to the group name. You can alter the variable order in a group by editing the group’s properties.
+You can create any number of groups to organize your variables. These groups will appear in the Group drop down for each variable, so you can assign a group to it. On the module home page, variable managers can sort the groups using drag and drop. Variable managers can also edit and delete the groups from here, by clicking on the edit or delete icon next to the group name. You can alter the variable order in a group by editing the group’s properties.
### Group label
diff --git a/docs/add-ons/pro-variables/type.md b/docs/add-ons/pro-variables/type.md
index 1d1eea1ed..5b90c3af4 100644
--- a/docs/add-ons/pro-variables/type.md
+++ b/docs/add-ons/pro-variables/type.md
@@ -60,7 +60,7 @@ Allows applying modifiers, which, among other, are used to apply [on-the-fly ima
## Grid
-Uses the native [Grid field](/fieldtypes/grid.md). All native types are available, _except for Relationships_. To output the variable, use the `{exp:pro_variables:pair}` or `{exp:pro_variables:single}` tag where appropriate. You can use any of Grid’s [parameters](/fieldtypes/grid.md#parameters) and [variables](/fieldtypes/grid.ms#variables) using these tags. Additionally, one more parameter is available:
+Uses the native [Grid field](/fieldtypes/grid.md). All native types are available, _except for Relationships and Members_. To output the variable, use the `{exp:pro_variables:pair}` or `{exp:pro_variables:single}` tag where appropriate. You can use any of Grid’s [parameters](/fieldtypes/grid.md#parameters) and [variables](/fieldtypes/grid.ms#variables) using these tags. Additionally, one more parameter is available:
### Parameters
diff --git a/docs/add-ons/rte.md b/docs/add-ons/rte.md
index 7300af469..dd010a1a7 100755
--- a/docs/add-ons/rte.md
+++ b/docs/add-ons/rte.md
@@ -11,7 +11,9 @@
[TOC]
-ExpressionEngine's built-in Rich Text Editor (RTE) is a fieldtype that can be used for entry editing in the Control Panel as well as frontend Channel Forms. It is offering [CKEditor 5](https://ckeditor.com/ckeditor-5/) and [Redactor](https://imperavi.com/redactor/) as editing engine.
+ExpressionEngine's built-in Rich Text Editor (RTE) is a fieldtype that can be used for entry editing in the Control Panel as well as frontend Channel Forms. It is offering [CKEditor 5](https://ckeditor.com/ckeditor-5/) and [RedactorX](https://imperavi.com/redactorx/) as editing engine.
+
+Additionally, [Redactor 3](https://imperavi.com/redactor/) is available as a legacy option, but it is not recommended for new projects.
NOTE: **Note:** If you're looking for how to use RTE fields in your channel entries loops, you should look at [the RTE field variable usage documentation](fieldtypes/rte.md) in the channel fields documentation.
@@ -24,14 +26,14 @@ Tool Sets are essentially pre-created configurations that can be used by particu
Initially RTE installs 4 tool sets:
- **CKEditor Basic:** is based on CKEditor and has buttons for bold, italic, underline, link, and ordered/unordered lists
- **CKEditor Full:** offers full set of CKEditor features
-- **Redactor Basic:** is based on Redactor and has buttons for bold, italic, underline, link, and ordered/unordered lists
-- **Redactor Full:** offers full set of Redactor features
+- **RedactorX Basic:** is based on RedactorX and has buttons for bold, italic, underline, link, and ordered/unordered lists
+- **RedactorX Full:** offers full set of RedactorX features
### Creating a Tool Set
- Click the **Create New** button and the tool set creation form will appear.
- Enter a tool set name.
-- Select tool set type (CKEditor or Redactor)
+- Select tool set type (CKEditor, RedactorX or Redactor)
- Select the toolbar buttons and plugins you wish to have in your new tool set (or use the [Advanced Configuration option](#advanced-configuration)).
- Click **Save Tool Set** to save your changes.
@@ -49,7 +51,7 @@ Initially RTE installs 4 tool sets:
#### Editor Type
-Rich Text Editor comes with [CKEditor](https://ckeditor.com/) v5 and [Redactor](https://imperavi.com/redactor/) v3 support. Both are great, pick the one that fits your needs best.
+Rich Text Editor comes with [CKEditor](https://ckeditor.com/) v5 and [RedactorX](https://imperavi.com/redactorx/). Both are great, pick the one that fits your needs best. [Redactor 3](https://imperavi.com/redactor/) has been deprecated, but is also available.
#### Upload Directory
@@ -59,43 +61,15 @@ The file management features in RTE field can be allowed to access all upload di
Choose between "Left to right" and "Right to left"
-#### Tool Set Buttons
-
-The following are the buttons that can be enabled in tool set to manipulate the data within an RTE field.
-
-
-
HTML (Redactor only)
-
Bold
-
Italic
-
Strikethrough / Deleted
-
Underline
-
Subscript
-
Superscript
-
Block quote
-
Code
-
Heading / Format
-
Remove formatting (CKEditor only)
-
Style (Redactor only)
-
Properties (Redactor only)
-
Undo
-
Redo
-
Numbered list
-
Bulleted list
-
Decrease indent
-
Increase indent
-
Link
-
Image / File Browser
-
Table
-
Media / Video
-
Embed HTML / Widget
-
Align (left / right / center)
-
Justify
-
Horizontal line
-
Special characters
-
"Read More" separator
-
Font color / background
-
Fullscreen (Redactor only)
-
+#### Customize the Toolbar
+
+
+
+The exact set of buttons that are available is specific to the editor type selected. CKEditor and Redactor have a single toolbar, while RedactorX has multiple toolbars, each configured separately.
+
+The buttons / plugins that are enabled are displayed in the order they will appear in the toolbar. You can drag and drop the buttons to change their order.
+
+The disabled buttons / plugins are displayed in grey.
#### Custom Stylesheet
CSS template with styles to be applied to fields using this tool set. All styles will be automatically prefixed with toolset class, which means that the template should hold rather generic styles for the elements.
@@ -106,7 +80,7 @@ The minimal height for the field in pixels
#### Maximal height
-The maximum height for the field in pixels (Redactor only).
+The maximum height for the field in pixels (RedactorX / Redactor only).
#### Limit characters
@@ -126,7 +100,7 @@ WARN: **Advanced users only.** Please be careful with using this feature and che
Initially the field is loaded with the saved configuration of tool set being edited.
-Consult [Redactor Docs](https://imperavi.com/redactor/docs/settings/) or [CKEDitor Docs](https://ckeditor.com/docs/ckeditor5/latest/installation/getting-started/configuration.html) for the list of properties. Note that not all features are supported by the ExpressionEngine implementation.
+Consult [RedactorX Docs](https://imperavi.com/redactorx/docs/settings/), [Redactor Docs](https://imperavi.com/redactor/docs/settings/) or [CKEDitor Docs](https://ckeditor.com/docs/ckeditor5/latest/installation/getting-started/configuration.html) for the list of properties. Note that not all features are supported by the ExpressionEngine implementation.
#### Extra JavaScript
JavaScript template to be included with fields using this tool set. Typically used to include extra plugins when using advanced configuration with Redactor.
@@ -148,14 +122,15 @@ To delete a tool set, check the tool set's checkbox in the tool set table listin
- **Default RTE tool set** - select the tool set that will be selected by default when creating a field.
- **File Browser** - select file browser that will be used when browsing for images and files from RTE fields. ExpressionEngine's FilePicker is used by default, third-party add-ons can provide their own filepickers
+- **Use custom CKEditor build** - Allows using custom CKEditor build with extra plugins. If enabled, RTE instances running CKEditor will be built using the script in `themes/user/rte/javascript/` folder.
NOTE: **Note:** If using the [Multiple Site Manager](msm/overview.md), this preference is per-site.
## Custom plugins
-### Redactor
+### RedactorX
-When using Redactor, the javascript for the plugin can be placed in the template, which then needs to be selected in "Extra JavaScript" field for the tool set.
+When using RedactorX or Redactor, the javascript for the plugin can be placed in the template, which then needs to be selected in "Extra JavaScript" field for the tool set.
Then enable extended configuration, add the plugin name to list of plugins and provide plugin config if necessary.
If the plugin needs extra styling, it can be placed in CSS Templates selected in "Custom Stylesheet" field for the tool set. If the CSS is targeting buttons, the selectors need to be prefixed with `.redactor-toolbar`.
@@ -170,7 +145,9 @@ NOTE: **Warning** Doing this requires advanced development skills.
In order to create custom CKEditor build:
- Clone [GitHub repo](https://github.com/ExpressionEngine/ExpressionEngine/)
- Install NPM packages by running `npm install`
- - Follow the installation instructions for the plugin itself
- - Make your changes to `js-src\ckeditor5-build-classic\src\ckeditor.js` and other files as necessary.
+ - Follow the installation instructions for the extra CKEditor plugins that you need
+ - Make your changes to `js-src/ckeditor5-build-classic/src/ckeditor.js` and other files as necessary.
- Run the command `npm run build:ckeditor`
- - Copy the files from `themes/ee/asset/javascript/src/fields/rte/ckeditor` to same folder on your EE installation
+ - Copy the files from `themes/ee/asset/javascript/src/fields/rte/ckeditor` to `themes/user/rte/javascript/` folder on your EE installation
+
+TIP: Buttons provided by extra plugins might be not availble with visual toolbar builder. You will need to use Advanced Configuration JSON file to add those.
\ No newline at end of file
diff --git a/docs/add-ons/search/advanced.md b/docs/add-ons/search/advanced.md
index 652ee127d..76207ca6d 100755
--- a/docs/add-ons/search/advanced.md
+++ b/docs/add-ons/search/advanced.md
@@ -143,6 +143,8 @@ The search results are displayed on the page you specify as the [result_page=](#
[TOC=3]
+{{embed:_tips/form-attributes.md}}
+
### `category=`
category="1"
diff --git a/docs/add-ons/search/simple.md b/docs/add-ons/search/simple.md
index fc79b8712..664183b6d 100755
--- a/docs/add-ons/search/simple.md
+++ b/docs/add-ons/search/simple.md
@@ -73,6 +73,8 @@ Besides specifying whether future entries are included in the search using the [
## Parameters
+{{embed:_tips/form-attributes.md}}
+
### `name=`
name="search_form"
diff --git a/docs/add-ons/spam.md b/docs/add-ons/spam.md
index 9596d156f..53d8af3c7 100755
--- a/docs/add-ons/spam.md
+++ b/docs/add-ons/spam.md
@@ -25,7 +25,7 @@ The Spam Module has three important configuration settings:
### Sensitivity
-The Spam Module works by calculating the probability that a piece of content is spam based on all the examples it's seen before. The sensitivity is the cutoff for what we consider spam. This defaults to 70 which means there has to be at least a 70% probability something is spam for it to get flagged. If this is higher you will have fewere false positives but more spam will slip through.
+The Spam Module works by calculating the probability that a piece of content is spam based on all the examples it's seen before. The sensitivity is the cutoff for what we consider spam. This defaults to 70 which means there has to be at least a 70% probability something is spam for it to get flagged. If this is higher you will have fewer false positives but more spam will slip through.
### Word Limit
diff --git a/docs/advanced-usage/front-end/dock.md b/docs/advanced-usage/front-end/dock.md
index f681188dd..97d108ee7 100644
--- a/docs/advanced-usage/front-end/dock.md
+++ b/docs/advanced-usage/front-end/dock.md
@@ -12,7 +12,7 @@
[TOC]
## Overview
-The Dock is a central component of ExpressionEngine's front-end functionality.
+The Dock is a central component of ExpressionEngine's front-end functionality.

@@ -47,7 +47,7 @@ The Control Panel button on the Dock will open the site's Control Panel in a new
Prolets are add-on components that reveal some of add-on's functionality for the Control Panel to the front-end, making it possible to edit data directly on the page where it belongs.
### Built-in Prolets
-ExpressionEngine is shipped with the Entries and Publish prolets.
+ExpressionEngine is shipped with the Entries and Publish prolets.
Clicking on the Entries prolet opens a prolet window with all entries currently listed. Allowing you to quickly find and edit other entries in your site.
@@ -61,6 +61,6 @@ Developers may create third-party prolets that can be installed with add-ons. Re

## Disabling
-The Dock can be disabled by either the setting in the [Control Panel](control-panel/settings/front-end-editing.md#general-settings) or [config override](general/system-configuration-overrides.md#enable_dock).
+The Dock can be disabled by either the setting in the [Control Panel](control-panel/settings/front-end-editing.md#enable-dock) or [config override](general/system-configuration-overrides.md#enable_dock).
-WARN **Warning**: If the Dock is disabled, all of ExpressionEngine's [Front-End Content Management](advanced-usage/front-end/overview.md) is turned off for the front-end.
\ No newline at end of file
+WARN **Warning**: If the Dock is disabled, all of ExpressionEngine's [Front-End Content Management](advanced-usage/front-end/overview.md) is turned off for the front-end.
\ No newline at end of file
diff --git a/docs/advanced-usage/front-end/frontend.md b/docs/advanced-usage/front-end/frontend.md
index c791e2b13..a57fc85f8 100644
--- a/docs/advanced-usage/front-end/frontend.md
+++ b/docs/advanced-usage/front-end/frontend.md
@@ -58,7 +58,7 @@ This special conditional allows you to display content if front-end editing is e
## Enable/Disable The Front Edit Link
There are several ways to disable front-end editing links:
- - Globally with [configuration overrides](/general/system-configuration-overrides.html#enable_frontedit_links) or in [General Settings](/control-panel/settings/front-end-editing.md#enable-automatic-front-end-editing-links)
+ - Globally with [configuration overrides](/general/system-configuration-overrides.md#enable_frontedit_links) or in [General Settings](/control-panel/settings/front-end-editing.md#enable-automatic-front-end-editing-links)
- Per field in the [field settings](control-panel/field-manager/field-manager-settings.md)
- Via the Dock on the front-end by toggling Edit Mode on/off.
- In the template by using [ExpressionEngine template comments](#expressionengine-comment), [HTML comments](#html-comment), or [field parameter](#field-tag-parameter)
diff --git a/docs/channels/channel-form/overview.md b/docs/channels/channel-form/overview.md
index 8e7826f29..4a866b93d 100755
--- a/docs/channels/channel-form/overview.md
+++ b/docs/channels/channel-form/overview.md
@@ -61,6 +61,8 @@ By default, validation errors will be displayed using the User Message Template.
[TOC=3 hide]
+{{embed:_tips/form-attributes.md}}
+
The Following parameters are available for the `{exp:channel:form}`:
### `allow_comments=`
diff --git a/docs/channels/channel-form/status.md b/docs/channels/channel-form/status.md
index e0b3b91ac..3978df4aa 100644
--- a/docs/channels/channel-form/status.md
+++ b/docs/channels/channel-form/status.md
@@ -28,6 +28,6 @@ Or use the alternative syntax:
{/statuses}
-To manually set an entry's status upon sutmitting the Channel Form, you can use a Hidden field:
+To manually set an entry's status upon submitting the Channel Form, you can use a Hidden field:
diff --git a/docs/channels/entries.md b/docs/channels/entries.md
index 13cade934..55db4c3bd 100755
--- a/docs/channels/entries.md
+++ b/docs/channels/entries.md
@@ -118,7 +118,7 @@ And, you can use an inclusive stack to only get entries with _all_ of the catego
category="3&7&8"
-Or you can negate the inclusive stack and get entries that do not of _all_ of those categories
+Or you can negate the inclusive stack and get entries that do not match _all_ of those categories
category="not 3&5"
@@ -274,7 +274,7 @@ When used in an RSS/Atom feed, this parameter allows ExpressionEngine to dynamic
You can hard code the channel tag to show a specific channel entry. You may also specify multiple entries by separating them with the pipe character:
entry_id="13|42|147"
-
+
Or use "not" to exclude entries::
entry_id="not 45|534|807"
@@ -309,13 +309,15 @@ NOTE: **Note:** Using this parameter will automatically constrain the entries ta
### `group_id=`
+NOTE: We recommend using [primary_role_id=](#primary_role_id) parameter instead, which works the same but more clearly conveys that the filtering is happening on primary role ID.
+
group_id="4"
You can decide from which Member Role (by specifying the role ID) you wish entries to be shown. If you choose "4", then only entries created by members of the Primary Role with the ID of 4 will be shown. You can choose multiple Roles using a pipe:
group_id="2|3|4"
-Or exclude groups using "not"
+Or exclude role using "not"
group_id="not 2|3|4"
@@ -422,7 +424,7 @@ This parameter is for use with entry [pagination](templates/pagination.md) and d
If no parameter is specified, the navigation block will default to the "bottom" behavior.
-If the pagination tag pair is not included, the entries returned will not respond to a page indicator in the URL. In othat case you would need to set the parameter to _hidden_ to allow the entries to reflect the pagination in the URL.
+If the pagination tag pair is not included, the entries returned will not respond to a page indicator in the URL. In that case you would need to set the parameter to _hidden_ to allow the entries to reflect the pagination in the URL.
### `paginate_base=`
@@ -436,6 +438,18 @@ This tells ExpressionEngine to override the normal [pagination](templates/pagina
This tells ExpressionEngine to function in "pagination" mode for your channel entry fields so that you can automatically have an entry span multiple pages. See the [Spanning a Channel Entry Across Multiple Pages](channels/entry-spanning.md) page.
+### `primary_role_id=`
+
+ primary_role_id="4"
+
+You can decide from which Member Role (by specifying the role ID) you wish entries to be shown. If you choose "4", then only entries created by members of the Primary Role with the ID of 4 will be shown. You can choose multiple Roles using a pipe:
+
+ primary_role_id="2|3|4"
+
+Or exclude roles using "not"
+
+ primary_role_id="not 2|3|4"
+
### `related_categories_mode=`
related_categories_mode="no" related_categories_mode="yes"
diff --git a/docs/channels/entry-spanning.md b/docs/channels/entry-spanning.md
index 8f8f4db6f..402350cc4 100755
--- a/docs/channels/entry-spanning.md
+++ b/docs/channels/entry-spanning.md
@@ -84,7 +84,7 @@ The {multi_field=} variable is the core of the ability to span a channel entry a
{multi_field="page1|page2|page3"}
-3. When you initially visit your comment page for an entry, where you xhave the {multi_field} tag in your Template, you will see the content of your "page1" field, just as if you had used the regular {page1} variable.
+3. When you initially visit your comment page for an entry, where you have the {multi_field} tag in your Template, you will see the content of your "page1" field, just as if you had used the regular {page1} variable.
4. If your entry has content in the "page2" field then you will see a "next page" link.
5. When you click that link, you'll see your entry again, but instead of {page1} being displayed, in its place would be {page2}.
6. This would continue with as many variables/pages as needed.
diff --git a/docs/cli/built-in-commands/make-addon.md b/docs/cli/built-in-commands/make-addon.md
new file mode 100644
index 000000000..e18cb1ef0
--- /dev/null
+++ b/docs/cli/built-in-commands/make-addon.md
@@ -0,0 +1,46 @@
+# `make:addon`
+
+Generates required add-on files in the `system/user/addons` directory.
+
+TIP: Read the [Add-on Development Overview](development/addon-development-overview.md) to learn more about creating an add-on.
+
+## Options list:
+
+The first (unnamed) parameter is the add-on name.
+
+Other options are:
+```
+ --version=
+ -v
+ Version of the add-on
+
+ --description=
+ -d
+ Description of the add-on
+
+ --author=
+ -a
+ Author of the add-on
+
+ --author-url=
+ -u
+ Author url of the add-on
+```
+## Examples:
+
+### Interactive example
+```
+ $ php system/ee/eecli.php make:addon
+ Let's build your add-on!
+ What is the name of your add-on? Amazing Add-On
+ Add-on description? [Amazing Add-on description] This add-on does amazing things!
+ Add-on version? [1.0.0]1.0.0
+ Add-on author? ExpressionEngine Developer
+ Add-on author URL? www.expressionengine.com
+ Let's build!
+ Your add-on has been created successfully!
+```
+
+### One-line example
+
+`php ../../system/ee/eecli.php make:addon "My Example Addon" -v 0.1.0 -d "Some good description" -a "ExpressionEngine" -u https://expressionengine.com`
\ No newline at end of file
diff --git a/docs/cli/built-in-commands/sync-conditional-fields.md b/docs/cli/built-in-commands/sync-conditional-fields.md
index acec810f3..cf1edc369 100644
--- a/docs/cli/built-in-commands/sync-conditional-fields.md
+++ b/docs/cli/built-in-commands/sync-conditional-fields.md
@@ -1,6 +1,6 @@
# sync:conditional-fields
-Sync Conditional Field Logic -- Checks each channel entry to see if its connditional logic is correct. If it is not, it updates the conditional logic and saves the entry.
+Sync Conditional Field Logic -- Checks each channel entry to see if its conditional logic is correct. If it is not, it updates the conditional logic and saves the entry.
## Options list:
diff --git a/docs/cli/built-in-commands/sync-reindex.md b/docs/cli/built-in-commands/sync-reindex.md
new file mode 100644
index 000000000..2ba67fa25
--- /dev/null
+++ b/docs/cli/built-in-commands/sync-reindex.md
@@ -0,0 +1,22 @@
+# `sync:reindex`
+
+The searchable content in your site may become stale after changing properties of some fields. Running the `sync:reindex` command will ensure fresh data is used by complex fields in the Entry Manager and search contexts.
+
+## Options list:
+
+```
+ --site_id=
+ -s
+ Site ID. Skip this parameter to re-index content on all sites
+```
+
+## Examples:
+
+### Re-index content for all sites
+
+`php eecli.php sync:reindex`
+
+### Re-index content for Site ID 1 only
+
+`php eecli.php sync:reindex --site_id=1`
+`php eecli.php sync:reindex -s 1`
\ No newline at end of file
diff --git a/docs/cli/built-in-commands/sync-upload-directory.md b/docs/cli/built-in-commands/sync-upload-directory.md
new file mode 100644
index 000000000..9649a3c3e
--- /dev/null
+++ b/docs/cli/built-in-commands/sync-upload-directory.md
@@ -0,0 +1,19 @@
+# `sync:upload-directory`
+
+This command synchronizes the file records in the database with the files stored in a given upload directory. This functionality is also available through the [File Manager](control-panel/file-manager/synchronizing.md).
+
+## Options list:
+
+```
+ --upload-id=
+ -u
+ Upload Directory ID. If not provided, list of Upload Directories with corresponding IDs will be shown to choose from
+
+ --manipulations=
+ -m
+ Image manipulations to regenerate. Comma separated list of manipulation IDs. Use 'all' to regenerate all manipulations. If not provided, a list of available manipulations with corresponding IDs will be shown to choose from
+```
+
+## Example:
+
+`php eecli.php sync:upload-directory --upload-id=6 --manipulations=all`
\ No newline at end of file
diff --git a/docs/cli/intro.md b/docs/cli/intro.md
index 0360580a1..0634c2ae4 100644
--- a/docs/cli/intro.md
+++ b/docs/cli/intro.md
@@ -2,7 +2,7 @@
The Command Line Interface (CLI) allows a user to run system and user-generated commands in the terminal. The CLI has access to all of the ExpressionEngine resources, and can be used to update the system, clear caches, and much more.
-By default the CLI is located `system/ee/eecli.php` .
+By default the CLI is located `system/ee/eecli.php` .

@@ -12,7 +12,7 @@ By default the CLI is located `system/ee/eecli.php` .
- [List](cli/built-in-commands/list.md)
- Make
- [make:action - Creates a new action for an add-on](cli/built-in-commands/make-action.md)
- - [make:addon - Creates a new add-on](development/addon-development-overview.md)
+ - [make:addon - Creates a new add-on](cli/built-in-commands/make-addon.md)
- [make:command - Creates a new CLI command for an add-on](cli/built-in-commands/make-command.md)
- [make:extension-hook - Implements an EE extension hook in an add-on](cli/built-in-commands/make-extension-hook.md)
- [make:migration - Creates a new migration](cli/built-in-commands/make-migration.md)
@@ -29,6 +29,8 @@ By default the CLI is located `system/ee/eecli.php` .
- [migrate:rollback - Rolls back most recent migration group](cli/built-in-commands/migrate.md)
- Sync
- [sync:conditional-fields - Sync channel entry conditional logic](cli/built-in-commands/sync-conditional-fields.md)
+ - [sync:reindex - Sync content used in search indexes](cli/built-in-commands/sync-reindex.md)
+ - [sync:upload-directory - Sync files in an upload directory](cli/built-in-commands/sync-upload-directory.md)
- [Update ExpressionEngine](cli/built-in-commands/update.md)
- [Creating a Command](cli/creating-a-command.md)
- [Defining Input](cli/defining-input.md)
diff --git a/docs/comment/form.md b/docs/comment/form.md
index e3c0650df..5fe92dd40 100755
--- a/docs/comment/form.md
+++ b/docs/comment/form.md
@@ -52,6 +52,8 @@ TIP: **Tip:** Notice the variables in the "value" form fields? These allow us to
[TOC=4]
+{{embed:_tips/form-attributes.md}}
+
#### `entry_id=`
entry_id="24"
diff --git a/docs/config/config-files.md b/docs/config/config-files.md
index f2454ca98..0bbc83e6a 100644
--- a/docs/config/config-files.md
+++ b/docs/config/config-files.md
@@ -29,13 +29,27 @@ The list of the words that are being used to generate [CAPTCHA](security/captcha
This file contains an array of foreign characters for transliteration conversion used by the Text helper (example would be generating URL Titles for entries).
+#### HTML Form Attributes
+
+`valid_form_attributes.php`
+
+A list of HTML attributes that are allowed to be passed via EE template tag parameters to the `form` tag when creating forms with `ee()->functions->form_declaration()`. Additionally, attributes prefixed with `data-` and `aria-` can be used.
+
#### Allowed Mime Types
`mimes.php`
These are the mime types that are allowed to be uploaded using the upload class. For security reasons the list is kept as small as possible. If you need to upload types that are not in the list you can add them.
-The mime types are grouped by file type. You can add the allowed mime types directly or you can add new file types containing miltiple mimes.
+The mime types are grouped by file type. You can add the allowed mime types directly or you can add new file types containing multiple mimes.
+
+#### Reverse Proxy IP addresses
+
+`proxy.php`
+
+If the server is behind a reverse proxy or load balancer the system will need special configuration to discover a user's real IP address. If the IP address passed along by the server matches a value or range specificed in this configuration file the system will look at the request headers to determine the real IP address.
+
+Please consult with the provider of your reverse proxy or load balancing solutions for the IP addresses or ranges to use. Some providers will let you know the exact IP address of the load balancer, while others will give you a range. Here are the links with information for some common providers: [CloudFlare](https://www.cloudflare.com/ips/), [Google Cloud](https://cloud.google.com/load-balancing/docs/https/#firewall_rules), [AWS Elastic](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/network-load-balancers.html)
#### 'Remember me' expiration
diff --git a/docs/config/config.md b/docs/config/config.md
new file mode 100644
index 000000000..444483ab8
--- /dev/null
+++ b/docs/config/config.md
@@ -0,0 +1,86 @@
+
+
+# Main Configuration File
+
+The main configuration settings are stored in the form of a PHP array in the `system/user/config/config.php` file.
+
+This file is populated automatically during the installation process and contains the most important settings that are used by ExpressionEngine.
+
+Settings from this file are loaded every time the system is run. This means that [config overrides](general/system-configuration-overrides.md) set in `config.php` always affect the system’s configuration.
+
+At a minimum, this configuration file contains the following settings:
+
+#### `app_version`
+
+The installation's ExpressionEngine version. This value is set automatically and normally should not be modified.
+
+However if you need to run an update script again, you can modify this value to a lower version number so the system would "see" the update(s) available.
+
+ $config['app_version'] = '7.4.0';
+
+#### `encryption_key`
+
+This is the secret key used by the [Encrypt service](development/services/encrypt.md) to protect sensitive data in the database. It is set automatically during the installation process. If you need to use your own key please refer to [Troubleshooting guide](troubleshooting/error-messages.md#generating-new-encryption-keys) on how to generate a new one.
+
+ $config['encryption_key'] = '26791dcd5c7cc9e569cc05b16b96235985cc9f03';
+
+#### `session_crypt_key`
+
+Similar to the `encryption_key`, but used to protected session data.
+
+ $config['session_crypt_key'] = 'd9e776dc9a5de0cd83e7c76a76756daa64ff4b8b';
+
+#### `database`
+
+The database connection details are one of the most important settings in the configuration file. The array is required to have an element with a key of `expressionengine`, which in turn needs to be an array with the following keys:
+
+ - `hostname` - The hostname or IP address of your database server
+ - `database` - The name of the database to connect to
+ - `username` - The username used to connect to the database
+ - `password` - The password used to connect to the database
+ - `dbprefix` - The prefix used for all database tables (default is `exp_`)
+ - `char_set` - The character set used in communicating with the database (default is `utf8mb4`)
+ - `dbcollat` - The character collation used in communicating with the database (default is `utf8mb4_unicode_ci`)
+ - `port` - The port used to connect to the database (default is `3306`)
+
+ ```php
+ $config['database'] = array(
+ 'expressionengine' => array(
+ 'hostname' => 'localhost',
+ 'database' => 'ee740',
+ 'username' => 'root',
+ 'password' => '',
+ 'dbprefix' => 'exp_',
+ 'char_set' => 'utf8mb4',
+ 'dbcollat' => 'utf8mb4_unicode_ci',
+ 'port' => ''
+ ),
+ );
+ ```
+
+In addition, you can use following keys inside `expressionengine`:
+
+ - `pconnect` - Whether to use persistent connections (default is `true`)
+
+The following keys can be specified and will be converted to [PDO constants](https://www.php.net/manual/en/ref.pdo-mysql.php#pdo-mysql.constants) when passed to the database driver:
+
+ - `MYSQL_ATTR_LOCAL_INFILE`
+ - `MYSQL_ATTR_LOCAL_INFILE_DIRECTORY`
+ - `MYSQL_ATTR_READ_DEFAULT_FILE`
+ - `MYSQL_ATTR_READ_DEFAULT_GROUP`
+ - `MYSQL_ATTR_MAX_BUFFER_SIZE`
+ - `MYSQL_ATTR_INIT_COMMAND`
+ - `MYSQL_ATTR_COMPRESS`
+ - `MYSQL_ATTR_SSL_CA`
+ - `MYSQL_ATTR_SSL_CAPATH`
+ - `MYSQL_ATTR_SSL_CERT`
+ - `MYSQL_ATTR_SSL_CIPHER`
+ - `MYSQL_ATTR_SSL_KEY`
+ - `MYSQL_ATTR_SSL_VERIFY_SERVER_CERT`
diff --git a/docs/control-panel/access.md b/docs/control-panel/access.md
index a1ae2d9b9..971336e62 100644
--- a/docs/control-panel/access.md
+++ b/docs/control-panel/access.md
@@ -14,22 +14,22 @@
Access to the control panel is determined on a per member role level. Super admins automatically have full access to the control panel. For all other member roles, access is specified in the [Member Role Settings](control-panel/member-manager.md). Access settings determine not just the ability to login to the control panel, but which sections and actions can be taken by the member role. The navigation will automatically reflect the access permissions a user has.
**Control Panel Access Location**
-
-By default, the control panel may be accessed via the admin.php file and, if below root, the system/index.php file. As per the post-install security recommendations, the system folder may have been renamed or be inaccessable via browser. The admin.php file may also have been renamed.
-
+
+By default, the control panel may be accessed via the admin.php file and, if below root, the system/index.php file. As per the post-install security recommendations, the system folder may have been renamed or be inaccessible via browser. The admin.php file may also have been renamed.
+
**Adminstrator Sessions**
How long a user stays logged into the control panel is determined by two factors, the session length and the idle check. Any activity such as clicking a link or submitting a form restarts the countdown for both times. If an admin closes the browser or leaves the site and returns before the session expires, they will not need to log back in. If the site sits open in the browser for longer than allowed by the idle check but before the session expires, they will be required to confirm their password before accessing the open browser pages.
***Session Length***
-Session Time to Logout (TTL) refers to how long a user stays logged into the control panel after logging in. By default, after 1 hour of inactivity, administrators will be logged out of the control panel and required to log back in with their username and password. The default TTL length can be overriden by the [cp_session_length](general/system-configuration-overrides.md#cp_session_length) setting.
+Session Time to Logout (TTL) refers to how long a user stays logged into the control panel after logging in. By default, after 1 hour of inactivity, administrators will be logged out of the control panel and required to log back in with their username and password. The default TTL length can be overriden by the [cp_session_length](general/system-configuration-overrides.md#cp_session_length) setting.
-If control panel sessions are set to use cookies only, the 'Remember me' login option will allow the session cookie to persist for 2 weeks. This may be overriden using the [remember.php configuration file](config/config-files.md#remember_me).
+If control panel sessions are set to use cookies only, the 'Remember me' login option will allow the session cookie to persist for 2 weeks. This may be overriden using the [remember.php configuration file](config/config-files.md#remember-me-expiration).
***Adminstrator Idle Check***
-For added security, ExpressionEngine triggers a modal when an administrator is logged into the control panel but idle beyond a set length of time. The modal triggers afer 30 minutes if the control panel is in focus and idle, or 45 minutes if idle and out of focus. Unlike a fresh login, if the user logs back in via the modal before the TTL is exceeded, they remain on the same page(s) with no alteration of unsaved data. The idle check is not a factor if the site is no longer loaded in the browser.
+For added security, ExpressionEngine triggers a modal when an administrator is logged into the control panel but idle beyond a set length of time. The modal triggers after 30 minutes if the control panel is in focus and idle, or 45 minutes if idle and out of focus. Unlike a fresh login, if the user logs back in via the modal before the TTL is exceeded, they remain on the same page(s) with no alteration of unsaved data. The idle check is not a factor if the site is no longer loaded in the browser.

@@ -38,7 +38,7 @@ For added security, ExpressionEngine triggers a modal when an administrator is l
Sessions are stored in cookies, session ID (URL) or both, see [Security and Privacy Settings](control-panel/settings/security-privacy.md#settings). The control panel and the frontend may have different session types. If the frontend uses cookies only for storage and the control panel uses cookies and sessions, logging into the frontend will not result in being logged into the control panel. However, logging into the control panel will result in being logged into the frontend. Logging into an area that sets a session cookie will apply to any area that requires session cookies only.
So if you're logged into the control panel but the website acts like you're a guest? You probably don't have session data stored in a cookie per the control panel session settings.
-
+
diff --git a/docs/control-panel/categories.md b/docs/control-panel/categories.md
index f290b35f1..9f7977445 100644
--- a/docs/control-panel/categories.md
+++ b/docs/control-panel/categories.md
@@ -39,10 +39,14 @@ Extra saving options are also available from the dropdown menu under "Save":
- "Save & Close" - redirects to categories list after saving
- "Clone to New Category" - saves the changes into a new category. The current category is used as a "template" and remains unchanged.
+Note that only members with appropriate permissions are able to perform actions on categories. The permissions are being set per Role globally as well as per each Category Group.
+
## Create/Edit Category Groups
**Control Panel Location: `Content > Categories > New/Edit Category Group`**
+Access to this sections requires "Can edit category groups" permission to be set for the users member Role.
+
The category group form is broken out into 3 tabs:
### Details tab
diff --git a/docs/control-panel/channels.md b/docs/control-panel/channels.md
index a7115806f..7c1187aad 100755
--- a/docs/control-panel/channels.md
+++ b/docs/control-panel/channels.md
@@ -61,6 +61,15 @@ A channel can have any combination of fields and field groups assigned to it. Yo
This tab allows you to create and assign category groups to your channel. A channel may have multiple category groups assigned, and groups can be created on the fly on this tab.
+
+
+For each category group assigned to a channel, the following per-group settings are available:
+
+| Setting | Default | Description |
+| --------------- | ------- | ------------------------------------------------------------------------------------------- |
+| Allow multiple? | Yes | When turned on, multiple categories from the group can be selected for an entry |
+| Required? | No | When turned on, selecting at least one category from the group is required to save an entry |
+
---
### Statuses tab
diff --git a/docs/control-panel/create.md b/docs/control-panel/create.md
index ddfbddbf5..ff7c01ba9 100755
--- a/docs/control-panel/create.md
+++ b/docs/control-panel/create.md
@@ -51,6 +51,9 @@ This can be done in two ways:
- assign custom field to a [Field Group](/control-panel/field-manager/field-manager-settings.md#createedit-field-group) which is associated to the Channel
- assign field directly to channel by editing [Channel preferences](control-panel/channels.md#fields-tab)
+When working with [templates](templates/overview.md) you will be referencing the field by its short name. For convenience the short name can be displayed next to the field's name in the publish form () and will be copied to the clipboard when clicked. Displaying the short name can be toggled on or off in the [Role](control-panel/member-manager.md) settings.
+
+Note that some fields can be displayed with just single tags while others would require a tag pair with extra variables. More information can be found in the documentation for the field's specific [field type](fieldtypes/overview.md).
## Date Tab
@@ -68,9 +71,13 @@ You may _optionally_ specify a date on which comments for this entry will no lon
## Categories Tab
-You may assign your entries to one ore more categories. To select more than one category you will typically hold down the CTRL (or CMD) key while choosing the individual category names.
+You may assign one or multiple (depending on [channel preference](control-panel/channels.md#categories-tab)) categories to your entry from the [category groups](control-panel/categories.md) associated with the channel.
+
+Each associated category group will be rendered as a separate set of checkboxes. If multiple selections are not allowed they will render as a set of radio buttons. Selecting a category from a group can also be set as required for the channel.
+
+Additionally, a "Manage Categories" toggle is provided which allows the user to add, edit or reorder categories within the group.
-Clicking the Edit Categories link will permit you to add, edit, or delete categories that appear in the list.
+
## Options Tab
diff --git a/docs/control-panel/file-manager/file-manager.md b/docs/control-panel/file-manager/file-manager.md
index d2a7be2b6..1aba085bc 100644
--- a/docs/control-panel/file-manager/file-manager.md
+++ b/docs/control-panel/file-manager/file-manager.md
@@ -29,11 +29,11 @@ The File Manager is composed of several sections to help easily manage your file
### Sidebar
-The sidebar gives you access to creating, viewing, and managing [Upload Directories](control-panel/file-manager/upload-directories.md); [Watermarks](control-panel/file-manager/watermarks.md); and Exporting All Files.
+The sidebar gives you access to creating, viewing, and managing [Upload Directories](control-panel/file-manager/upload-directories.md); [Watermarks](control-panel/file-manager/watermarks.md); and Exporting All Files.

-The sidebar can also be collapsed using the arrow icon ( ) that is displayed to the side of the sidebar when hovering over the sidebar.
+The sidebar can also be collapsed using the arrow icon ( ) that is displayed to the side of the sidebar when hovering over the sidebar.
### Filters
@@ -45,7 +45,7 @@ Filters allow you to quickly filter the files listed to find exactly what you ne
The following selectable filters are available:
* Type - Filter by the file type. Available types are Image, Document, Archive, Audio, Video (only file types of currently uploaded files are displayed)
-* Category - Filter by categories available to files.
+* Category - Filter by categories available to files.
* Date Added - Filter by date added. Available options are Custom Date (enter in a specific date), Last 24 Hours, Last 7 Days, Last 30 Days, Last 180 Days, Last 365 Days
* Added By - Filter by the member who uploaded files
@@ -55,7 +55,7 @@ Files can also be filtered using the keyword search option.
### File Listing
-The bulk of the File Manager screen is composed of the file list.
+The bulk of the File Manager screen is composed of the file list.

@@ -75,7 +75,7 @@ The List View also exposes a Utility Action menu which quickly allows for action

-The columns displayed in the List View can also be adjusted to display file information relevant to your needs.
+The columns displayed in the List View can also be adjusted to display file information relevant to your needs.
These columns include:
* Title
diff --git a/docs/control-panel/file-manager/synchronizing.md b/docs/control-panel/file-manager/synchronizing.md
index 5eb7f005f..3ee4ca578 100644
--- a/docs/control-panel/file-manager/synchronizing.md
+++ b/docs/control-panel/file-manager/synchronizing.md
@@ -22,4 +22,6 @@ When submitted, all allowed file types in the directory will be checked against
If an image manipulation is missing, it will be generated automatically. However, if you want to regenerate and replace all given manipulations, you can do so by checking the checkbox next to the manipulation name.
-Lastly, any records in the database that do not have a corresponding file in the main directory will be highlighted as not found.
\ No newline at end of file
+Lastly, any records in the database that do not have a corresponding file in the main directory will be highlighted as not found.
+
+NOTE: This functionality is also available as a [CLI command](cli/built-in-commands/sync-upload-directory.md)
diff --git a/docs/control-panel/file-manager/upload-directories.md b/docs/control-panel/file-manager/upload-directories.md
index fe2d968fd..3d18ee93c 100644
--- a/docs/control-panel/file-manager/upload-directories.md
+++ b/docs/control-panel/file-manager/upload-directories.md
@@ -49,7 +49,7 @@ The directory can be restricted to accept one or several following file types: I
By default, only images are allowed.
-Only file types that are specified in ExpressionEngine's Mime Type file are allowed to be uploaded. The Mime Type file can be found in [`mimes.php`](config/config-files.md#allowed-mime-types). If you are uploading something uncommon and run into problems, you may need to add the mime type for your file to the allow list.
+Only file types that are specified in ExpressionEngine's Mime Type file are allowed to be uploaded. The Mime Type file can be found in [`mimes.php`](config/config-files.md#allowed-mime-types). If you are uploading something uncommon and run into problems, you may need to add the mime type for your file to the allow list.
See also [MIME allow list](general/system-configuration-overrides.md#mime_whitelist_additions) and [Mime member exception allow list](general/system-configuration-overrides.md#mime_whitelist_member_exception) for more info.
##### Share Upload Directory on all sites?
@@ -86,7 +86,7 @@ Optionally set the maximum allowed height in pixels for uploaded images. Images
##### Constrain or Crop
-Specify one or more alternate versions of an image that automatically get created when the original image is uploaded. A manipulation can include a resized version, a [watermark](control-panel/file-manager/file-manager.md#watermarks), or both. You can refer to a particular Image Manipulation in your templates via a File Field's [single variable tag](fieldtypes/file.md#single-variable-usage) or its [variable pair tag](fieldtypes/file.md#url). The resize type will determine whether the image is constrained (resized) or cropped to the specified dimensions. If only height or width is specified, the thumbnails will be created using that as the master dimension. For example, setting the height to 200 and leaving the width blank will result in an image that is no higher than 200 pixels, with the width resized proportionately. Setting both the height and the width to 200 would result in an image that is no higher or wider than 200 pixels.
+Specify one or more alternate versions of an image that automatically get created when the original image is uploaded. A manipulation can include a resized version, a [watermark](control-panel/file-manager/watermarks.md), or both. You can refer to a particular Image Manipulation in your templates via a File Field's [single variable tag](fieldtypes/file.md#single-variable-usage) or its [variable pair tag](fieldtypes/file.md#url). The resize type will determine whether the image is constrained (resized) or cropped to the specified dimensions. If only height or width is specified, the thumbnails will be created using that as the master dimension. For example, setting the height to 200 and leaving the width blank will result in an image that is no higher than 200 pixels, with the width resized proportionately. Setting both the height and the width to 200 would result in an image that is no higher or wider than 200 pixels.
##### Allowed member roles
diff --git a/docs/control-panel/member-manager.md b/docs/control-panel/member-manager.md
index 695fe5cf9..1f563ed24 100755
--- a/docs/control-panel/member-manager.md
+++ b/docs/control-panel/member-manager.md
@@ -9,19 +9,25 @@
# Member Manager
-**Control Panel Location: `Members`**
+[TOC=2-3]
-This page is used both to search and to browse through active members within your ExpressionEngine installation. Also, you can filter the members by member role and search members.
+## Members Listing
-This page also allows you to do the following:
+**Control Panel Location: `Members`**
-[TOC=2-3]
+This page is used both to search and to browse through members within your ExpressionEngine installation.

+Filters and search input can be used to narrow down the list of members displayed.
+
+The set of columns displayed can be customized using the "Columns" dropdown. By default, the following columns are shown: Member ID, Name (which is composed of avatar, username and screen name), Email, Roles, Join Date, Last Visit Date. Also each member row has "Actions" buttons that contains links to some common actions and a checkbox that allows performing bulk actions on selected members. When "Pending" is selected in the "Role" filter, the bulk action options are "Approve" and "Decline", otherwise "Remove" is the only option.
+
+All roles assigned to a member are shown in the Roles column. When multiple roles are assigned, the primary role will have an indicator. If the member is pending the column does not say "Pending" but instead shows the role to which the member will be assigned once approved (with pending indicator) and a button to approve.
+
## Member Roles
-**Control Panel Location: `Members > Member Roles`**
+**Control Panel Location: `Members > Roles`**
The _Member Roles_ area of the Control Panel permits you to manage your Member Roles. The member roles can be sorted by ID, Role Name, and Status.
@@ -31,7 +37,7 @@ You can assign multiple roles to a member.
### Create/Edit All Member Roles
-**Control Panel Location: `Members > Member Roles > Create/Edit`**
+**Control Panel Location: `Members > Roles > Create/Edit`**
This sections allows you to set the various permissions and settings for the selected Member Role.
@@ -44,23 +50,47 @@ ExpressionEngine comes with 5 built-in Roles:
These roles should never be deleted.
-If you need a custom set of permissions for the role, we suggest creating a new role for each case. You can do that by clicking "New Role" button, or you can create a new role based on an exsting one by picking "Clone to New Role" from the role's "Save" dropdown.
+If you need a custom set of permissions for the role, we suggest creating a new role for each case. You can do that by clicking "New Role" button, or you can create a new role based on an existing one by picking "Clone to New Role" from the role's "Save" dropdown.
Edit the role by clicking its name in the list.
## Custom Member Fields
-**Control Panel Location: `Members > Member Fields`**
+**Control Panel Location: `Settings > Members > Member Fields`**
+
+The link to this section is also found on top of the Member Listing page.
The _Member Fields_ feature permits you to add fields to the member registration form and/or member profile and My Account areas.
### Create/Edit
-**Control Panel Location: `Members > Member Fields > New/Edit`**
+**Control Panel Location: `Settings > Members > Member Fields > New/Edit`**
This section allows you to create or edit Member Fields.
-The following fields are available:
+The following field types are compatible and can be used for custom member fields:
+
+- Checkboxes
+- Color Picker
+- Date
+- Duration
+- Email Address
+- File
+- Number Input
+- Multi Select
+- Radio Buttons
+- Range Slider
+- Rich Text Editor
+- Select Dropdown
+- Selectable Buttons
+- Text Input
+- Textarea
+- URL
+- Value Slider
+
+Additionally, third-party field types that specify support for the `MemberField` model can be selected.
+
+The following fields are available when creating a custom field:
- **Type** -- You may choose what type of field this is. There are three choices: 1. **Text Input**: This is a single input line for text. It is the type of field you might use for a title, name, or other short information. 2. **Textarea**: This is a standard text entry box with multiple lines. This is what you would use for larger amount of text. 3. **Drop-down List**: This creates a standard HTML `