diff --git a/extension/Documentation/Manual.rst b/extension/Documentation/Manual.rst index de8e512064e91573af6a1519b3ba7c895fe9c8a3..58f8a2fd638fff6b7ab0cb26407ea404236a4931 100644 --- a/extension/Documentation/Manual.rst +++ b/extension/Documentation/Manual.rst @@ -1314,6 +1314,16 @@ Store: *VARS* - V | filenameExt | Only the extension of 'filename' (if there is one) | +-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+ +The directive `fillStoreVar` will fill the this store with custom values. Existing values will remain or are overwritten, +depending of if they exist in the given statement. E.g.: :: + + fillStoreVar = {{!SELECT p.name, p.email FROM Person AS p WHERE p.id={{pId:S}} }} + +* After filling the store, the values can be retrieved via `{{name:v}}` and `{{email:V}}`. +* Be carefull by specifying general purpose variables like `id`, `r`, `pageId` and so on. This might conflict with existing variables. +* `fillStoreVar` can be used in `form-parameter`_ and `fe-parameter-attributes`_ + + .. _STORE_LDAP: Store: *LDAP* - L @@ -1979,6 +1989,8 @@ Parameter +-----------------------------+--------+----------------------------------------------------------------------------------------------------------+ | extraButtonInfoClass | string | Overwrite default from config.qfq.ini: EXTRA_BUTTON_INFO_CLASS | +-----------------------------+--------+----------------------------------------------------------------------------------------------------------+ +| fillStoreVar | string | Fill the STORE_VAR with custom values. See `STORE_VARS`_. | ++-----------------------------+--------+----------------------------------------------------------------------------------------------------------+ * Example: @@ -2419,6 +2431,8 @@ See also at specific *FormElement* definitions. +------------------------+--------+----------------------------------------------------------------------------------------------------------+ | fileButtonText | string | Overwrite default 'Choose File' | +------------------------+--------+----------------------------------------------------------------------------------------------------------+ +| fillStoreVar | string | Fill the STORE_VAR with custom values. See `STORE_VARS`_. | ++------------------------+--------+----------------------------------------------------------------------------------------------------------+ Effect matrix @@ -3065,9 +3079,6 @@ and will be processed after saving the primary record and before any action Form * *fileReplace=always*: If `fileDestination` exist - replace it by the new one. - * *fileSplit=svg*: Only valid for filetype=PDF. Will split the PDF in SVG files, one SVG per page. - * *fileDestinationSplit*: Like `fileDestination`, but for the SVG. See `upload-split-pdf`_ - Immediately after the upload finished (before the user press save), the file will be checked on the server for it's content or file extension (see 'accept'). @@ -3075,23 +3086,6 @@ The maximum size is defined by the minimum of `upload_max_filesize`, `post_max_s In case of broken uploads, please also check `max_input_time` in php.ini. -.. _`upload-split-pdf`: - -Upload a PDF and split to single pages -'''''''''''''''''''''''''''''''''''''' - -Only implemented for PDF to SVG. - -An uploaded PDF file will be split into single SVG pages. Additionally for every page SVG file, a reference record is created -in table `Split`. The table `Split` contains the following columns: `id`, `tableName`, `xId`, `pathFileName`. The `tableName` -is the table of the current form or, if explicit defined, the parameter `splitTableName`. The columns `tableName` and -`xId` together defines the reference to the source PDF file/ record. Example: :: - - fileSplitTableName=Note - fileSplit=svg - fileDestinationSplit=fileadmin/split/{{id:R}}/{{filenameBase:V}}.%02d.svg - -The conversion tool is `pdf2svg`, which accepts a 'printf'-style notation for the numbering like '%02d'. Deleting a record and the referenced file ''''''''''''''''''''''''''''''''''''''''' diff --git a/extension/qfq/qfq/QuickFormQuery.php b/extension/qfq/qfq/QuickFormQuery.php index c0fd95a7bb87ba96fb2612b06265abc1d66c3c28..d5a52f9eb5955d71e11bc37e9a9aa43ecf7910aa 100644 --- a/extension/qfq/qfq/QuickFormQuery.php +++ b/extension/qfq/qfq/QuickFormQuery.php @@ -286,6 +286,8 @@ class QuickFormQuery { $sipFound = true; $this->formSpec[F_NAME] = ''; $this->formSpec[F_TABLE_NAME] = $table; + $this->formSpec[F_RECORD_LOCK_TIMEOUT_SECONDS] = 1; // just indicate a timeout, the exact timeout is stored in the dirty record. + $this->formSpec[F_DIRTY_MODE] = DIRTY_MODE_EXCLUSIVE; // just set a mode,, the exact mode is stored in the dirty record. } // For 'new' record always create a new Browser TAB-uniq (for this current form, nowhere else used) SIP. diff --git a/extension/qfq/qfq/form/Dirty.php b/extension/qfq/qfq/form/Dirty.php index 30e3116bca1dd9bf490b9aa2173ab7fa27362129..d8b66118a6e10e6da4f48e4b801ef4adfb09c71f 100644 --- a/extension/qfq/qfq/form/Dirty.php +++ b/extension/qfq/qfq/form/Dirty.php @@ -357,7 +357,7 @@ class Dirty { if ($formMode == FORM_DELETE) { - // Check if the record is timed out + // Check if the lock is timed out if ($lockTimeout > 0 && $rcRecordDirty[DIRTY_EXPIRE] < date('Y-m-d H:i:s')) { $this->deleteDirtyRecord($rcRecordDirty[COLUMN_ID]);