Merge pull request #2412 from kijin/pr/extra-vars

확장변수 기능 강화 (파일 업로드 지원 등)
This commit is contained in:
Kijin Sung 2024-10-09 17:00:05 +09:00 committed by GitHub
commit 206521a352
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
28 changed files with 600 additions and 80 deletions

View file

@ -215,7 +215,12 @@
var action_parts = action.split('.');
var request_info;
if (action === 'raw') {
request_info = 'RAW FORM SUBMISSION';
if (params instanceof FormData) {
request_info = params.get('module') + '.' + params.get('act');
} else {
request_info = 'RAW FORM SUBMISSION';
}
console.log(request_info);
} else {
params = params ? ($.isArray(params) ? arr2obj(params) : params) : {};
//if (action_parts.length != 2) return;
@ -342,7 +347,7 @@
// Send the AJAX request.
try {
$.ajax({
var args = {
type: "POST",
dataType: "json",
url: url,
@ -351,7 +356,11 @@
headers : headers,
success : successHandler,
error : errorHandler
});
};
if (params instanceof FormData) {
args.contentType = false;
}
$.ajax(args);
} catch(e) {
alert(e);
return;

View file

@ -415,6 +415,7 @@ function legacy_filter(filter_name, form, module, act, callback, responses, conf
args[0] = filter_name;
args[1] = function(f) {
var hasFile = false;
var params = {}, res = [], elms = f.elements, data = $(f).serializeArray();
$.each(data, function(i, field) {
var v = $.trim(field.value), n = field.name;
@ -435,11 +436,20 @@ function legacy_filter(filter_name, form, module, act, callback, responses, conf
}
});
$(f).find('input[type=file][name^=extra_vars]').each(function() {
if (this.files && this.files[0]) {
params[this.name] = this.files[0];
hasFile = true;
}
});
if (confirm_msg && !confirm(confirm_msg)) return false;
//exec_xml(module, act, params, callback, responses, params, form);
params['module'] = module;
params['act'] = act;
params['_rx_ajax_compat'] = 'XMLRPC';
exec_json(module + '.' + act, params, function(result) {
var callback_wrapper = function(result) {
if (!result) {
result = {};
}
@ -454,7 +464,17 @@ function legacy_filter(filter_name, form, module, act, callback, responses, conf
});
callback(filtered_result, responses, params, form);
}
});
};
if (!hasFile) {
exec_json(module + '.' + act, params, callback_wrapper);
} else {
var fd = new FormData();
for (let key in params) {
fd.append(key, params[key]);
}
exec_json('raw', fd, callback_wrapper);
}
};
v.cast('ADD_CALLBACK', args);

View file

@ -328,6 +328,8 @@ $lang->column_type_list['language'] = 'Language';
$lang->column_type_list['date'] = 'Date';
$lang->column_type_list['time'] = 'Time';
$lang->column_type_list['timezone'] = 'Time zone';
$lang->column_type_list['number'] = 'Number';
$lang->column_type_list['file'] = 'File upload';
$lang->column_name = 'Column Name';
$lang->column_title = 'Column Title';
$lang->default_value = 'Default Value';

View file

@ -330,6 +330,8 @@ $lang->column_type_list['language'] = '언어';
$lang->column_type_list['date'] = '날짜';
$lang->column_type_list['time'] = '시간';
$lang->column_type_list['timezone'] = '표준 시간대';
$lang->column_type_list['number'] = '숫자';
$lang->column_type_list['file'] = '파일 업로드';
$lang->column_name = '입력항목 이름';
$lang->column_title = '입력항목 제목';
$lang->default_value = '기본값';