public static function editToWiki($data) { $nudata = array(); $len = 0; foreach ($data['data'] as $field) { if ($field['title'] === '') { continue; } $s = syntax_plugin_data_entry::_normalize($field['title']); if (trim($field['type']) !== '' || substr($s, -1, 1) === 's' && $field['multi'] === '') { $s .= '_' . syntax_plugin_data_entry::_normalize($field['type']); } if ($field['multi'] === '1') { $s .= 's'; } if (is_array($field['value'])) { $field['value'] = join(', ', $field['value']); } $nudata[] = array($s, syntax_plugin_data_entry::_normalize($field['value']), isset($field['comment']) ? trim($field['comment']) : ''); $len = max($len, utf8_strlen($nudata[count($nudata) - 1][0])); } $ret = '---- dataentry ' . trim($data['classes']) . ' ----' . DOKU_LF; foreach ($nudata as $field) { $ret .= $field[0] . str_repeat(' ', $len + 1 - utf8_strlen($field[0])) . ': ' . $field[1]; if ($field[2] !== '') { $ret .= ' #' . $field[2]; } $ret .= DOKU_LF; } $ret .= '----'; return $ret; }
/** * Handles the data posted from the editor to recreate the entry syntax * * @param array $data data given via POST * @return string */ public static function editToWiki($data) { $nudata = array(); $len = 0; // we check the maximum lenght for nice alignment later foreach ($data['data'] as $field) { if (is_array($field['value'])) { $field['value'] = join(', ', $field['value']); } $field = array_map('trim', $field); if ($field['title'] === '') { continue; } $name = syntax_plugin_data_entry::_normalize($field['title']); if ($field['type'] !== '') { $name .= '_' . syntax_plugin_data_entry::_normalize($field['type']); } elseif (substr($name, -1, 1) === 's') { $name .= '_'; // when the field name ends in 's' we need to secure it against being assumed as multi } if ($field['multi'] === '1') { $name .= 's'; } // 's' is added to either type or name for multi $nudata[] = array($name, syntax_plugin_data_entry::_normalize($field['value']), $field['comment']); $len = max($len, utf8_strlen($nudata[count($nudata) - 1][0])); } $ret = '---- dataentry ' . trim($data['classes']) . ' ----' . DOKU_LF; foreach ($nudata as $field) { $ret .= $field[0] . str_repeat(' ', $len + 1 - utf8_strlen($field[0])) . ': ' . $field[1]; if ($field[2] !== '') { $ret .= ' # ' . $field[2]; } $ret .= DOKU_LF; } $ret .= "----\n"; return $ret; }