* @package story * @link https://www.zentao.net */ namespace zin; data('activeMenuID', $type); data('storyType', $type); jsVar('storyType', $type); jsVar('productID', $productID); !isAjaxRequest() && dropmenu(); foreach(explode(',', $this->config->story->create->requiredFields) as $requiredField) { if(isset($customFields[$requiredField]) and strpos(",{$showFields},", ",{$requiredField},") === false) $showFields .= ',' . $requiredField; } /* Generate fields for the batch create form. */ $fnGenerateFields = function() use ($lang, $fields, $stories, $customFields, $showFields) { global $config; /* Generate fields with the appropriate properties. */ $items = array(); $items[] = array('name' => 'id', 'label' => $lang->idAB, 'control' => 'index', 'width' => '32px'); if($stories) $items[] = array('name' => 'uploadImage', 'label' => '', 'control' => 'hidden', 'hidden' => true); unset($fields['color']); $cols = array_merge($items, array_map(function($name, $field) { if($name == 'title') $field['control'] = 'colorInput'; $field['name'] = $name; if(!empty($field['options'])) $field['items'] = $field['options']; if(!empty($field['default'])) $field['value'] = $field['default']; if($field['control'] == 'select') $field['control'] = 'picker'; if($field['control'] == 'picker' and !isset($field['items'])) $field['items'] = array(); unset($field['options']); return $field; }, array_keys($fields), array_values($fields))); /* Hide columns that are not displayed. */ foreach($cols as $index => $col) { $colName = $col['name']; if(str_contains(",{$config->story->create->requiredFields},", ",{$colName},")) $cols[$index]['required'] = true; if(isset($customFields[$colName]) && strpos(",$showFields,", ",$colName,") === false) $cols[$index]['hidden'] = true; if($colName == 'sourceNote' && strpos(",$showFields,", ",source,") === false) $cols[$index]['hidden'] = true; if($colName == 'spec') unset($cols[$index]['control']); } return $cols; }; formBatchPanel ( setID('dataform'), on::change('[data-name="branch"]', 'setModuleAndPlanByBranch'), $stories ? set::data($stories) : null, set::ajax(array('beforeSubmit' => jsRaw('clickSubmit'))), set::title($storyID ? $storyTitle . $lang->colon . $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::customFields(array('list' => $customFields, 'show' => explode(',', $showFields), 'key' => 'batchCreateFields')), set::items($fnGenerateFields()), set::actions(array ( array('text' => $lang->save, 'data-status' => 'active', 'class' => 'primary', 'btnType' => 'submit'), array('text' => $lang->story->saveDraft, 'data-status' => 'draft', 'class' => 'secondary', 'btnType' => 'submit'), array('text' => $lang->goback, 'data-back' => 'APP', 'class' => 'open-url') )), formHidden('type', $type), formHidden('status') ); render();