diff --git a/lib/form/form.class.php b/lib/form/form.class.php index 8fbe73e100..f6eae21281 100644 --- a/lib/form/form.class.php +++ b/lib/form/form.class.php @@ -177,6 +177,7 @@ class form extends fixer $rowData->$field = isset($this->rawdata->$field) ? zget($this->rawdata->$field, $rowIndex, $defaultValue) : $defaultValue; $rowData->$field = helper::convertType($rowData->$field, $config['type']); + if(isset($config['filter'])) $rowData->$field = $this->filter($rowData->$field, $config['filter']); /* 检查必填字段。Check required fields. */ if(isset($config['required']) && $config['required'] && empty($rowData->$field)) diff --git a/module/story/config/form.php b/module/story/config/form.php index 705448ac53..7b12ce0a0d 100644 --- a/module/story/config/form.php +++ b/module/story/config/form.php @@ -55,7 +55,7 @@ $config->story->form->batchCreate['reviewer'] = array('label' => $lang->story- $config->story->form->batchCreate['URS'] = array('label' => $lang->story->URS, 'ditto' => false, 'type' => 'array', 'control' => 'select', 'required' => false, 'default' => '', 'multiple' => true); $config->story->form->batchCreate['parent'] = array('label' => $lang->story->parent, 'ditto' => false, 'type' => 'int', 'control' => 'select', 'required' => false, 'default' => ''); $config->story->form->batchCreate['keywords'] = array('label' => $lang->story->keywords, 'ditto' => false, 'type' => 'string', 'control' => 'text', 'required' => false, 'default' => ''); -$config->story->form->batchCreate['mailto'] = array('label' => $lang->story->mailto, 'ditto' => false, 'type' => 'array', 'control' => 'select', 'required' => false, 'default' => '', 'multiple' => true, 'options' => 'users'); +$config->story->form->batchCreate['mailto'] = array('label' => $lang->story->mailto, 'ditto' => false, 'type' => 'array', 'control' => 'select', 'required' => false, 'default' => '', 'multiple' => true, 'options' => 'users', 'filter' => 'join'); $config->story->form->batchEdit = array(); $config->story->form->batchEdit['branch'] = array('type' => 'int', 'width' => '200px', 'control' => 'select', 'required' => false, 'default' => 0, 'options' => array()); diff --git a/module/story/js/batchcreate.ui.js b/module/story/js/batchcreate.ui.js index a2799c1815..6baeb26726 100644 --- a/module/story/js/batchcreate.ui.js +++ b/module/story/js/batchcreate.ui.js @@ -6,43 +6,3 @@ window.renderRowData = function($row) if($select.prop('multiple')){$select.attr('name', $select.attr('name') + '[]');} }); }; - -/** - * 点击批量新建表单底部按钮响应事件。 - * The event that click on the submit buttons of the batch creation form. - * - * Attach 'clicked' class to mark the clicked button. - * - * @param Event e - * @access public - * @return void - */ -window.onClickActionBtn = function(e) -{ - const parent = e.target.closest('div'); - parent.querySelectorAll('button').forEach(function(btn){ - $(btn).removeClass('clicked'); - }); - - $(e.target.closest('button')).addClass('clicked'); -}; - -/** - * 生成表单提交数据的回调函数。 - * Callback function to change the form data before submit. - * - * @param FormData formData - * @access public - * @return FormData - */ -window.beforeSubmitBatchCreateForm = function(formData) -{ - const actionBtn = document.querySelector('div.toolbar.form-actions button.clicked'); - - if(actionBtn && actionBtn.id === 'saveDraft') - { - formData.append('status', 'draft'); - } - - return formData; -}; diff --git a/module/story/js/common.ui.js b/module/story/js/common.ui.js index 19b4cdc14a..f4dd3e7c3a 100644 --- a/module/story/js/common.ui.js +++ b/module/story/js/common.ui.js @@ -6,10 +6,12 @@ window.customSubmit = function(e) $saveButton.attr('disabled', 'disabled'); $saveDraftButton.attr('disabled', 'disabled'); - var $this = $(e.target); + var $dataform = $('#dataform'); + var $this = $(e.target); if($this.prop('tagName') != 'BUTTON') $this = $this.closest('button'); - var storyStatus = !$('#reviewer').val().join(',') || $('#needNotReview').prop('checked') ? 'active' : 'reviewing'; + var storyStatus = 'active'; + if(!$dataform.hasClass('form-batch')) storyStatus = !$('#reviewer').val().join(',') || $('#needNotReview').prop('checked') ? 'active' : 'reviewing'; if($this.attr('id') == 'saveDraftButton') { storyStatus = 'draft'; @@ -19,7 +21,6 @@ window.customSubmit = function(e) if($('#dataform #status').length == 0) $('').attr('type', 'hidden').attr('name', 'status').attr('id', 'status').attr('value', storyStatus).appendTo('#dataform .form-actions'); $('#dataform #status').val(storyStatus); - $dataform = $('#dataform'); $.ajaxSubmit( { data: new FormData($dataform[0]), diff --git a/module/story/ui/batchcreate.html.php b/module/story/ui/batchcreate.html.php index 83d5d4806c..e1703713c3 100644 --- a/module/story/ui/batchcreate.html.php +++ b/module/story/ui/batchcreate.html.php @@ -41,18 +41,20 @@ $fnGenerateCustomizedFields = function() use ($showFields, $customFields) formBatchPanel ( + on::click('#saveButton', 'customSubmit'), + on::click('#saveDraftButton', 'customSubmit'), + set::id('dataform'), set::title($storID ? $storyTitle . ' - ' . $this->lang->story->subdivide : $this->lang->story->batchCreate), set::uploadParams('module=story¶ms=' . helper::safe64Encode("productID=$productID&branch=$branch&moduleID=$moduleID&storyID=$storyID&executionID=$executionID&plan=&type=$type")), set::pasteField('title'), - set::ajax(array('beforeSend' => jsRaw('window.beforeSubmitBatchCreateForm'))), set::customFields(array('items' => $fnGenerateCustomizedFields())), set::items($fnGenerateFields()), set::onRenderRow(jsRaw('renderRowData')), set::actions(array ( - array('text' => $lang->save, 'onclick' => 'window.onClickActionBtn(event)', 'id' => 'save', 'btnType' => 'submit', 'class' => 'primary'), - array('text' => $lang->story->saveDraft,'onclick' => 'window.onClickActionBtn(event)', 'id' => 'saveDraft', 'btnType' => 'submit', 'class' => 'secondary'), - array('text' => $lang->goback) + array('text' => $lang->save, 'id' => 'saveButton', 'class' => 'primary'), + array('text' => $lang->story->saveDraft, 'id' => 'saveDraftButton', 'class' => 'secondary'), + array('text' => $lang->goback, 'data-back' => 'APP', 'class' => 'open-url'), )) ); diff --git a/module/story/ui/create.html.php b/module/story/ui/create.html.php index f2abbb4593..db35c6bdb0 100644 --- a/module/story/ui/create.html.php +++ b/module/story/ui/create.html.php @@ -36,7 +36,12 @@ formPanel on::click('#saveDraftButton', 'customSubmit'), set::id('dataform'), set::title($lang->story->create), - set::actions(false), + set::actions(array + ( + array('text' => $lang->save, 'id' => 'saveButton', 'class' => 'primary'), + array('text' => $lang->story->saveDraft, 'id' => 'saveDraftButton', 'class' => 'secondary'), + array('text' => $lang->goback, 'data-back' => 'APP', 'class' => 'open-url'), + )), set::customFields(array('items' => $fnGenerateCustomizedFields(), 'urlParams' => 'module=story§ion=custom&key=createFields')), to::headingActions ( @@ -371,13 +376,6 @@ formPanel set::values($fields['keywords']['default']), ), formHidden('type', $type), - formRow - ( - setClass('form-actions form-group no-label'), - btn(setClass('primary'), set::id('saveButton'), $lang->save), - btn(setClass('secondary'), set::id('saveDraftButton'), $lang->story->saveDraft), - backBtn($lang->goback), - ), ); isset($fields['branches']) && $type == 'story' ? formRow