diff --git a/Build/Sources/TypeScript/lowlevel/Resources/Public/TypeScript/QueryGenerator.ts b/Build/Sources/TypeScript/lowlevel/Resources/Public/TypeScript/QueryGenerator.ts index f37ffe7b61fe276648cb12ed829c24fb59825a32..946149c035c0c28ee759dd46e2b4c9900c221e94 100644 --- a/Build/Sources/TypeScript/lowlevel/Resources/Public/TypeScript/QueryGenerator.ts +++ b/Build/Sources/TypeScript/lowlevel/Resources/Public/TypeScript/QueryGenerator.ts @@ -50,6 +50,15 @@ class QueryGenerator { const $field = $(e.currentTarget); this.addValueToField($field.data('field'), $field.val()); }); + this.form.on('change', '[data-assign-store-control-title]', (evt: JQueryEventObject): void => { + const $currentTarget = $(evt.currentTarget); + const $titleField = this.form.find('[name="storeControl\[title\]"]'); + if ($currentTarget.val() !== '0') { + $titleField.val($currentTarget.find('option:selected').text()); + } else { + $titleField.val(''); + } + }); (<NodeListOf<HTMLInputElement>>document.querySelectorAll('form[name="queryform"] .t3js-clearable')).forEach( (clearableField: HTMLInputElement) => clearableField.clearable({ onClear: (): void => { diff --git a/typo3/sysext/core/Classes/Database/QueryView.php b/typo3/sysext/core/Classes/Database/QueryView.php index 8c1ccd0dda47d0a17d2bf58c111f680629b5a39c..07f8594a9822c6a52386e3aafa7a7d48ac17ef4b 100644 --- a/typo3/sysext/core/Classes/Database/QueryView.php +++ b/typo3/sysext/core/Classes/Database/QueryView.php @@ -45,16 +45,6 @@ class QueryView */ public $storeList = 'search_query_smallparts,search_result_labels,labels_noprefix,show_deleted,queryConfig,queryTable,queryFields,queryLimit,queryOrder,queryOrderDesc,queryOrder2,queryOrder2Desc,queryGroup,search_query_makeQuery'; - /** - * @var string - */ - public $downloadScript = 'index.php'; - - /** - * @var int - */ - public $formW = 48; - /** * @var int */ @@ -173,9 +163,7 @@ class QueryView $markup[] = '<div class="load-queries">'; $markup[] = ' <div class="form-inline">'; $markup[] = ' <div class="form-group">'; - $markup[] = ' <select class="form-control" name="storeControl[STORE]" onChange="document.forms[0]' - . '[\'storeControl[title]\'].value= this.options[this.selectedIndex].value!=0 ' - . '? this.options[this.selectedIndex].text : \'\';">' . implode(LF, $opt) . '</select>'; + $markup[] = ' <select class="form-control" name="storeControl[STORE]" data-assign-store-control-title>' . implode(LF, $opt) . '</select>'; $markup[] = ' <input class="form-control" name="storeControl[title]" value="" type="text" max="80">'; $markup[] = ' <input class="btn btn-default" type="submit" name="storeControl[LOAD]" value="Load">'; $markup[] = ' <input class="btn btn-default" type="submit" name="storeControl[SAVE]" value="Save">'; @@ -546,8 +534,7 @@ class QueryView . '</textarea>'; if (!$this->noDownloadB) { $out .= '<br><input class="btn btn-default" type="submit" name="download_file" ' - . 'value="Click to download file" onClick="window.location.href=' . htmlspecialchars(GeneralUtility::quoteJSvalue($this->downloadScript)) - . ';">'; + . 'value="Click to download file">'; } // Downloads file: // @todo: args. routing anyone? diff --git a/typo3/sysext/lowlevel/Resources/Public/JavaScript/QueryGenerator.js b/typo3/sysext/lowlevel/Resources/Public/JavaScript/QueryGenerator.js index ec9717891181f01a987aabf26ea162e2b9759dc0..240ad496af761338f27873806042f2bf235bb0d0 100644 --- a/typo3/sysext/lowlevel/Resources/Public/JavaScript/QueryGenerator.js +++ b/typo3/sysext/lowlevel/Resources/Public/JavaScript/QueryGenerator.js @@ -10,4 +10,4 @@ * * The TYPO3 project - inspiring people to share! */ -define(["require","exports","jquery","TYPO3/CMS/Backend/Input/Clearable"],(function(t,i,e){"use strict";return new class{constructor(){this.form=null,this.limitField=null,this.initialize()}initialize(){this.form=e('form[name="queryform"]'),this.limitField=e("#queryLimit"),this.form.on("click",".t3js-submit-click",t=>{t.preventDefault(),this.doSubmit()}),this.form.on("change",".t3js-submit-change",t=>{t.preventDefault(),this.doSubmit()}),this.form.on("click",'.t3js-limit-submit input[type="button"]',t=>{t.preventDefault(),this.setLimit(e(t.currentTarget).data("value")),this.doSubmit()}),this.form.on("click",".t3js-addfield",t=>{t.preventDefault();const i=e(t.currentTarget);this.addValueToField(i.data("field"),i.val())}),document.querySelectorAll('form[name="queryform"] .t3js-clearable').forEach(t=>t.clearable({onClear:()=>{this.doSubmit()}}))}doSubmit(){this.form.submit()}setLimit(t){this.limitField.val(t)}addValueToField(t,i){const e=this.form.find('[name="'+t+'"]'),l=e.val();e.val(l+","+i)}}})); \ No newline at end of file +define(["require","exports","jquery","TYPO3/CMS/Backend/Input/Clearable"],(function(t,i,e){"use strict";return new class{constructor(){this.form=null,this.limitField=null,this.initialize()}initialize(){this.form=e('form[name="queryform"]'),this.limitField=e("#queryLimit"),this.form.on("click",".t3js-submit-click",t=>{t.preventDefault(),this.doSubmit()}),this.form.on("change",".t3js-submit-change",t=>{t.preventDefault(),this.doSubmit()}),this.form.on("click",'.t3js-limit-submit input[type="button"]',t=>{t.preventDefault(),this.setLimit(e(t.currentTarget).data("value")),this.doSubmit()}),this.form.on("click",".t3js-addfield",t=>{t.preventDefault();const i=e(t.currentTarget);this.addValueToField(i.data("field"),i.val())}),this.form.on("change","[data-assign-store-control-title]",t=>{const i=e(t.currentTarget),l=this.form.find('[name="storeControl[title]"]');"0"!==i.val()?l.val(i.find("option:selected").text()):l.val("")}),document.querySelectorAll('form[name="queryform"] .t3js-clearable').forEach(t=>t.clearable({onClear:()=>{this.doSubmit()}}))}doSubmit(){this.form.submit()}setLimit(t){this.limitField.val(t)}addValueToField(t,i){const e=this.form.find('[name="'+t+'"]'),l=e.val();e.val(l+","+i)}}})); \ No newline at end of file