diff --git a/extension/Documentation/Manual.rst b/extension/Documentation/Manual.rst index 6677a6a913c6aa21d8ff8c24739797434256d412..2a58424ceda64a5332285c1c2151455e4b62b916 100644 --- a/extension/Documentation/Manual.rst +++ b/extension/Documentation/Manual.rst @@ -163,7 +163,7 @@ Thumbnail Thumbnails will be rendered via GraphicsMagick (http://www.graphicsmagick.org/) 'convert' and 'inkscape' (https://inkscape.org). 'inkscape' is only used for '.svg' files. -The Typo3 grafic eco-system is not used at all by QFQ. +The Typo3 graphic eco-system is not used at all by QFQ. Usage: `column-thumbnail`_. @@ -582,7 +582,7 @@ The specified DB User needs privileges to the database of at least: SELECT / INS To apply automatically QFQ-'DB UPDATE' the following rights are mandatory too: CREATE / ALTER -To get access to the Typo3 installation, 'dbuser' should also have acces to the Typo3 Database with at least SELECT / INSERT / UPDATE / DELETE. +To get access to the Typo3 installation, 'dbuser' should also have access to the Typo3 Database with at least SELECT / INSERT / UPDATE / DELETE. @@ -840,7 +840,7 @@ Different QFQ versions, shared database ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ When using different QFQ versions and a shared 'QFQ data'-database, there is some risk of conflicting -'QFQ system' tables. Best is to always use the same QFQ version on all instances ot use a Multi Database setup. +'QFQ system' tables. Best is to always use the same QFQ version on all instances to use a Multi Database setup. .. _debug: @@ -1240,7 +1240,7 @@ Honeypot Every QFQ Form contains 'honeypot'-HTML input elements (HTML: hidden & readonly). Which of them to use is configured in `configuration`_ (default: 'username', 'password' and 'email'). On every start of QFQ (form, report, save, ...), -these variables are tested if they are non-empty. In such a case a probably malicous bot has send the request and the +these variables are tested if they are non-empty. In such a case a probably malicious bot has send the request and the request will not be processed. If any of the default configured variable names are needed (which will never be the case for QFQ), an explicit variable name @@ -1377,7 +1377,7 @@ Store: *FORM* - F * Represents the values in the form, typically before saving them. * Used for: - * *FormElements* who will be rerendered, after a parent *FormElement* has been changed by the user. + * *FormElements* which will be rerendered, after a parent *FormElement* has been changed by the user. * *FormElement* actions, before saving the form. * Values will be sanitized by the class configured in corresponding the *FormElement*. By default, the sanitize class is `alnumx`. @@ -1409,7 +1409,7 @@ Store: *SIP* - S +-------------------------+-----------------------------------------------------------+ | table | current table name | +-------------------------+-----------------------------------------------------------+ - | urlparam | all non Typo3 paramter in one string | + | urlparam | all non Typo3 parameter in one string | +-------------------------+-----------------------------------------------------------+ | <user defined> | additional user defined link parameter | +-------------------------+-----------------------------------------------------------+ @@ -1473,7 +1473,7 @@ Store: *CLIENT* - C +-------------------------+------------------------------------------------------------------------------------------------------------------------------------------+ | REMOTE_ADDR | Client IP address | +-------------------------+------------------------------------------------------------------------------------------------------------------------------------------+ - | '$_SERVER[*]' | All other variables accessable by *$_SERVER[]*. Only the often used have a pre-defined sanitize class. | + | '$_SERVER[*]' | All other variables accessible by *$_SERVER[]*. Only the often used have a pre-defined sanitize class. | +-------------------------+------------------------------------------------------------------------------------------------------------------------------------------+ | form | Unique name of current form | +-------------------------+------------------------------------------------------------------------------------------------------------------------------------------+ @@ -1621,17 +1621,17 @@ To decide which Parameter should be placed on *Form.parameter* and which on *For +-----------------------------+----------------------------------+---------------------------------------------------------------+------+-------------+----------+ | ldapAttributes | cn, email | List of attributes to save in STORE_LDAP | x | x | FSL | +-----------------------------+----------------------------------+---------------------------------------------------------------+------+-------------+----------+ -| ldapSearch | (mail=john.doe@example.com) | Regular LDAP search expresssion | x | x | FSL | +| ldapSearch | (mail=john.doe@example.com) | Regular LDAP search expression | x | x | FSL | +-----------------------------+----------------------------------+---------------------------------------------------------------+------+-------------+----------+ | ldapTimeLimit | 3 (default) | Maximum time to wait for an answer of the LDAP Server | x | x | TA, FSL | +-----------------------------+----------------------------------+---------------------------------------------------------------+------+-------------+----------+ -| ldapUseBindCredentials | ldapUseBindCredentials=1 | Use LDAP_1_* crendentials from config-qfq-php_ for ldap_bind()| x | x | TA, FSL | +| ldapUseBindCredentials | ldapUseBindCredentials=1 | Use LDAP_1_* credentials from config-qfq-php_ for ldap_bind()| x | x | TA, FSL | +-----------------------------+----------------------------------+---------------------------------------------------------------+------+-------------+----------+ | typeAheadLdap | - | Enable LDAP as 'Typeahead' data source | | x | TA | +-----------------------------+----------------------------------+---------------------------------------------------------------+------+-------------+----------+ -| typeAheadLdapSearch | `(|(cn=*?*)(mail=*?*))` | Regular LDAP search expresssion, returns upto typeAheadLimit | x | x | TA | +| typeAheadLdapSearch | `(|(cn=*?*)(mail=*?*))` | Regular LDAP search expression, returns upto typeAheadLimit | x | x | TA | +-----------------------------+----------------------------------+---------------------------------------------------------------+------+-------------+----------+ -| typeAheadLdapSearchPrefetch | `(mail=?)` | Regular LDAP search expresssion, typically return one record | x | x | TA | +| typeAheadLdapSearchPrefetch | `(mail=?)` | Regular LDAP search expression, typically return one record | x | x | TA | +-----------------------------+----------------------------------+---------------------------------------------------------------+------+-------------+----------+ | typeAheadLdapSearchPerToken | - | Split search value in token and OR-combine every search with | x | x | TA | | | | the individual tokens | | | | @@ -1684,8 +1684,8 @@ To examine all possible values of an LDAP server, use the commandline tool `ldap ldapsearch -x -h directory.example.com -L -b ou=Addressbook,dc=example,dc=com "(mail=john.doe@example.com)" -All occurences of a '?' in *ldapSearch* will be replaced by the user data typed in via the text-*FormElement*. -The typed data will be escaped to fullfill LDAP search limitations. +All occurrences of a '?' in *ldapSearch* will be replaced by the user data typed in via the text-*FormElement*. +The typed data will be escaped to fulfill LDAP search limitations. Regular *Form* variables might be used on all parameter and will be evaluated during form load (!) - *not* at the time when the user types something. @@ -1707,7 +1707,7 @@ To identify the exact *id*, an additional search filter is necessary: `typeAhead Prefetch ^^^^^^^^ -After 'form load' with an existing record, the user epects to see the previous saved data. In case there is an *id* to +After 'form load' with an existing record, the user expects to see the previous saved data. In case there is an *id* to *value* translation, the *value* does not exist in the database, instead it has to be fetched again dynamically. A precise LDAP or SQL query has to be defined to force this: @@ -1724,7 +1724,7 @@ PerToken Sometimes a LDAP server only provides attributes like 'sn' and 'givenName', but not 'displayName' or another practial combination of multiple attributes - than it is difficult to search for 'firstname' *and* (=human AND) 'lastname'. E.g. 'John Doe', results to search like `(|(sn=*John Doe*)(givenName=*John Doe*))` which will be probably always be empty. -Instead, the user input has to be splitted in token and the search string has to repeated for every token. +Instead, the user input has to be split in token and the search string has to repeated for every token. * *Form.parameter* or *FormElement.parameter*: @@ -1769,7 +1769,7 @@ Important: LDAP access might slow down the *Form* processing on load, update or to be multiplied by the number of accesses. E.g. a broken LDAP connection and 3 *FormElements* with *FSL* results to 9 seconds delay on save. Also be prepared not to receive the expected data. -* *FormElement.parameter.fillStoreLdap* - activate the mode *Fill S* - no value is needed, the existence is suffucient. +* *FormElement.parameter.fillStoreLdap* - activate the mode *Fill S* - no value is needed, the existence is sufficient. * *Form.parameter* or *FormElement.parameter*: * *ldapServer* = `directory.example.com` @@ -1802,7 +1802,7 @@ General * Fields of the primary table acts like a *simple* form, all other fields have to be specified with *action/afterSave* records. - * *Multi* form: the form acts simultanously on more than one record. All records use the same *FormElements*. + * *Multi* form: the form acts simultaneously on more than one record. All records use the same *FormElements*. * The *FormElements* are defined as a regular *simple* / or *advanced* form, plus a SQL Query, which selects and iterates over all records. Those records will be loaded at the same time. @@ -1862,7 +1862,7 @@ If a `Form` acts on further records (e.g. via FE action), those records are not If a user tries to delete a record and another user already owns a lock on that record, the delete action is denied. -If there are different locking modes in mulitiple forms, the most restricting mode applies for the current lock. +If there are different locking modes in multiple forms, the most restricting mode applies for the current lock. Exclusive ^^^^^^^^^ @@ -1972,7 +1972,7 @@ Depending on `r`, the following access permission will be taken: * is *always* the preferred way. With 'sip' it's not necessary to differ between logged in or not, cause the SIP only exist and is only valid, if it's created via QFQ/report earlier. This means 'creating' the SIP implies 'access granted'. The grant will be revoked when the QFQ session is destroyed - this happens when a user loggs out or - the webbrowser is closed. + the web browser is closed. * `logged_in` / `logged_out`: for forms which might be displayed without a SIP, but maybe on a protected or even unprotected page. *The option is probably not often used.* @@ -1983,7 +1983,7 @@ Depending on `r`, the following access permission will be taken: the form. * `permitEdit=always`: Public accessible forms will allow users to update existing data. This - is dangerous, cause the URL paramater (recordId) 'r' might be changed by the user (URL manipulating) and therefore + is dangerous, cause the URL parameter (recordId) 'r' might be changed by the user (URL manipulating) and therefore the user might see and/or change data from other users. *The option is probably not often used.* * `never`: such a form is not allowed to be loaded. @@ -2241,7 +2241,7 @@ classPill * Typical use: adjust the background color of the `pill title` area. * Predefined background colors: `qfq-color-white`, `qfq-color-grey-1` (dark), `qfq-color-grey-2` (light), `qfq-color-blue-1` (dark), `qfq-color-blue-2`. (light) -* `classPill` is only visible on forms with container elemants of type 'Pill'. +* `classPill` is only visible on forms with container elements of type 'Pill'. classBody ''''''''' @@ -2422,7 +2422,7 @@ Column: primary record '''''''''''''''''''''' If the columns `<name>%d` are real columns on the primary table, saving and delete (=empty string) are done automatically. -E.g. if there are upto five elements `grade1, ..., grade5` and the user inputs only the first three, the remaining will be set +E.g. if there are up to five elements `grade1, ..., grade5` and the user inputs only the first three, the remaining will be set to an empty string. Column: non primary record @@ -2506,7 +2506,7 @@ Fields: +---------------------+-----------------------------+-----------------------------------------------------------------------------------------------------+ |tabindex | string |HTML tabindex attribute _`field-tabindex` | +---------------------+-----------------------------+-----------------------------------------------------------------------------------------------------+ -|Size | string |Visible length of input element. Might be ommited, depending on the choosen form layout. | +|Size | string |Visible length of input element. Might be omitted, depending on the chosen form layout. | | | |Format: <width>,<height> (in characters) _`field-size` | +---------------------+-----------------------------+-----------------------------------------------------------------------------------------------------+ |BS Label Columns | string | Number of bootstrap grid columns for label. By default empty, value inherits from the form. | @@ -3438,7 +3438,7 @@ Only column(name)s which contains `pathFileName` as part of their name, are chec If there are other records, which references the same file, such files are not deleted. It's a very basic check: just the current column of the current table is compared. In general it's not a good idea to -have mutliple references to a single file. Therefore this check is just a fallback. +have multiple references to a single file. Therefore this check is just a fallback. .. _Upload simple mode: @@ -3653,7 +3653,7 @@ Situation 1: master.xId=slave.id (1:1) * {{slaveId}} == 0 ? 'sqlInsert' will be fired. * {{slaveId}} != 0 ? 'sqlUpdate' will be fired. - * In case of fireing 'sqlInsert', the 'slave.id' of the new created record are copied to master.xId (the database will + * In case of firing 'sqlInsert', the 'slave.id' of the new created record are copied to master.xId (the database will be updated automatically). * If the automatic update of the master record is not suitable, the action element should have no name or a name @@ -3758,7 +3758,7 @@ See also `copy-form`_. * Pay attention to '!'. * For every row, a new record is created in `recordDestinationTable`. * Column 'id' is not copied. - * The `recordSourceTable` together with columne `id` will identify the source record. + * The `recordSourceTable` together with column `id` will identify the source record. * Columns not specified, will be copied 1:1 from source to destination. * Columns specified, will overwrite the source value. @@ -3838,21 +3838,21 @@ Example Assuming the Typo3 page has the * default language, L=0 -* english, L=1 -* spain, L=2 +* English, L=1 +* Spanish, L=2 Configuration in configuration_: :: formLanguageAId = 1 - formLanguageALabel = english + formLanguageALabel = English formLanguageBId = 2 - formLanguageBLabel = spain + formLanguageBLabel = Spanish The default language is not covered in configuration_. -The *Form editor* now shows on the pill 'Basic' (Form und FormEditor) for both languages each an additional parameter -input field. Any input field in the *Form editor* can be redeclared in the correspondig language parameter field. Any +The *Form editor* now shows on the pill 'Basic' (Form and FormEditor) for both languages each an additional parameter +input field. Any input field in the *Form editor* can be redeclared in the corresponding language parameter field. Any missing definition means 'take the default'. E.g.: * Form: 'person' @@ -4008,7 +4008,7 @@ the following (switch off all non named): Copy Form --------- -Records (=master) and child records can be duplicated (=copied) by a regular `Form`, extended by `FormElemens` of type 'paste'. +Records (=master) and child records can be duplicated (=copied) by a regular `Form`, extended by `FormElements` of type 'paste'. A 'copy form' works either in: * 'copy and paste now' mode: the 'select' and 'paste' `Form` is merged in one form, only one master record is possible, @@ -4092,7 +4092,7 @@ form with the following parameter Table self referencing records ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Records might contain references to other recrods in the same table. E.g. native FormElements might assigned to a fieldSet, +Records might contain references to other records in the same table. E.g. native FormElements might assigned to a fieldSet, templateGroup or pill, a fieldSet might assigned to other fieldsets or pills and so on. When duplicating a `Form` and the corresponding `FormElements` all internal references needs to be updated as well. @@ -4147,7 +4147,7 @@ Support for record locking is given with mode: * Including a timeout (default 15 mins dirtyRecordTimeoutSeconds in configuration_) for maximum lock time. * *advisory*: user is only warned, but allowed to overwrite. -* *none*: no bookeeping about locks. +* *none*: no bookkeeping about locks. For 'new' records (r=0) there is no locking at all. @@ -4369,7 +4369,7 @@ Relation: `Person.id = Address.personId` Icons Template Group ^^^^^^^^^^^^^^^^^^^^ -This example will display grafics instead of text 'add' and 'remove'. Also there is a distance between the templateGroups. +This example will display graphics instead of text 'add' and 'remove'. Also there is a distance between the templateGroups. * FormElement.parameter:: @@ -4389,7 +4389,7 @@ Chart * in the specific tt_content record (shown below in the example) or * system wide via Typo3 Template record. -* By splitting HTML and JavaScript code over several lines, take care not accidently to create a 'nesting'-end token. +* By splitting HTML and JavaScript code over several lines, take care not accidentally to create a 'nesting'-end token. Check the line after `10.tail =`. It's '}' alone on one line. This is a valid 'nesting'-end token!. There are two options to circumvent this: @@ -6122,7 +6122,7 @@ Parameter and (element) sources get generic filenames inside the archive. * If not specified, the **default** 'Mode' depends on the number of specified element sources (=file or web page): - * If only one `file` is specifed, the default is `file`. + * If only one `file` is specified, the default is `file`. * If there is a) a page defined or b) multiple elements, the default is `pdf`. * *element sources* - for `M:pdf` or `M:zip`, all of the following three element sources might be specified multiple times. @@ -6363,7 +6363,7 @@ Setup [global] * Use the regular QFQ Report syntax to create some output. - * The newline character ist CHAR(10). + * The newline character is CHAR(10). * One option per line. * Empty will be skipped. * Lines starting with '#' will be skipped (comments) @@ -6380,11 +6380,11 @@ Setup +-------------+----------------+---------------------------------------------------------------------------------------------------+ | 'newline' | newline | Start a new row. The column will be the one of the last 'position' statement. | +-------------+----------------+---------------------------------------------------------------------------------------------------+ -| 'str', 's' | s=hello world | Set the given string on the given position. The current position will be shiftet one to the right | +| 'str', 's' | s=hello world | Set the given string on the given position. The current position will be shifted one to the right | +-------------+----------------+---------------------------------------------------------------------------------------------------+ -| 'f' | f==SUM(A5:C6) | Set a formular on the given position. The current position will be shiftet one to the right | +| 'f' | f==SUM(A5:C6) | Set a form on the given position. The current position will be shifted one to the right | +-------------+----------------+---------------------------------------------------------------------------------------------------+ -| 'n' | n=123 | Set number on the given position. The current position will be shiftet one to the right | +| 'n' | n=123 | Set number on the given position. The current position will be shifted one to the right | +-------------+----------------+---------------------------------------------------------------------------------------------------+ Create a output like this: :: @@ -6729,7 +6729,7 @@ Two columns :: - # Add the formatting information as a coloum + # Add the formatting information as a column 10.sql = SELECT p.firstName, " " , p.lastName, "<br>" FROM exp_person AS p .. @@ -6987,7 +6987,7 @@ do some manipulation on the database or any other task. A job with `nextRun`=0 or `inProgress`!=0 won't never be started. -Due to checking `inProgress`, jobs will never run in parallel, even if a job needs more than 1 minute (intervall system +Due to checking `inProgress`, jobs will never run in parallel, even if a job needs more than 1 minute (interval system cron). Job: repeating