feat(submit): add user media library

This commit is contained in:
2026-09-04 22:53:33 +08:00
parent 44e165d34e
commit f3fcfe45da
23 changed files with 1321 additions and 945 deletions
+50 -16
View File
@@ -53,41 +53,53 @@ if (file_exists($css)) {
);
}
$js = get_template_directory() . '/assets/js/front-submit.js';
if (file_exists($js)) {
$pay_download_js = get_template_directory() . '/assets/js/front-submit-pay-download.js';
$editor_js = get_template_directory() . '/assets/js/front-submit-editor.js';
if (file_exists($editor_js)) {
wp_enqueue_script(
'aksrt-front-submit-editor',
get_template_directory_uri() . '/assets/js/front-submit-editor.js',
['editor'],
(string) filemtime($editor_js),
true
);
}
$pay_download_js = get_template_directory() . '/assets/js/front-submit-pay-download.js';
if (file_exists($pay_download_js)) {
wp_enqueue_script(
'aksrt-front-submit-pay-download',
get_template_directory_uri() . '/assets/js/front-submit-pay-download.js',
[],
['aksrt-front-submit-editor'],
(string) filemtime($pay_download_js),
true
);
}
if (file_exists($js)) {
wp_enqueue_script(
'aksrt-front-submit',
get_template_directory_uri() . '/assets/js/front-submit.js',
['loader_js', 'aksrt-front-submit-pay-download'],
['loader_js', 'aksrt-front-submit-editor', 'aksrt-front-submit-pay-download'],
(string) filemtime($js),
true
);
$mini = get_template_directory() . '/assets/js/mini-upload.js';
if (file_exists($mini)) {
wp_enqueue_script(
'aksrt-mini-upload',
get_template_directory_uri() . '/assets/js/mini-upload.js',
[],
(string) filemtime($mini),
true
);
}
$submit_image_max_size = \AKSRT\Core\FrontSubmit::upload_limit_bytes('image');
$submit_video_max_size = \AKSRT\Core\FrontSubmit::upload_limit_bytes('video');
$resource_max_size = \AKSRT\Core\FrontSubmit::upload_limit_bytes('resource');
wp_localize_script('aksrt-front-submit', 'aksrtSubmitData', [
wp_localize_script('aksrt-front-submit-editor', 'aksrtSubmitData', [
'ajaxUrl' => admin_url('admin-ajax.php'),
'nonce' => wp_create_nonce('aksrt_submit'),
'restUrl' => esc_url_raw(rest_url('aksrt/v1')),
'restNonce' => wp_create_nonce('wp_rest'),
'restNonce' => wp_create_nonce('wp_rest'),
'postId' => (int) ($ctx['edit_id'] ?? 0),
'mediaUrl' => esc_url_raw(rest_url('aksrt/v1/front-submit/media')),
'media' => [
'image' => ['url' => esc_url_raw(rest_url('aksrt/v1/front-submit/media/image'))],
'video' => ['url' => esc_url_raw(rest_url('aksrt/v1/front-submit/media/video'))],
'file' => ['url' => esc_url_raw(rest_url('aksrt/v1/front-submit/media/file'))],
],
'leaveWarning' => !empty($ctx['settings']['leave_warning']),
'ai' => [
'available' => !empty($ctx['ai_available']),
@@ -167,7 +179,29 @@ if (file_exists($js)) {
'invalidVideoUrl' => __('请填写有效的视频嵌入地址', 'aksrt'),
'invalidFile' => __('请选择有效文件', 'aksrt'),
'uploadUnavailable' => __('当前账号不能上传此类文件', 'aksrt'),
'mine' => __('我的媒体', 'aksrt'),
'mineImage' => __('我的图片', 'aksrt'),
'mineVideo' => __('我的视频', 'aksrt'),
'mineFile' => __('我的文件', 'aksrt'),
'search' => __('搜索', 'aksrt'),
'searchMedia' => __('搜索媒体(至少 2 个字符)', 'aksrt'),
'searchMin' => __('请输入至少 2 个字符进行搜索', 'aksrt'),
'clear' => __('清除', 'aksrt'),
'loadMore' => __('加载更多', 'aksrt'),
'loading' => __('加载中…', 'aksrt'),
'empty' => __('暂无媒体文件', 'aksrt'),
'emptyMedia' => __('暂无媒体文件', 'aksrt'),
'mediaError' => __('媒体加载失败', 'aksrt'),
'mediaUnavailable' => __('媒体库暂不可用', 'aksrt'),
'confirmSelected' => __('确认选择(%d)', 'aksrt'),
'maxItems' => __('最多选择 %d 个文件', 'aksrt'),
'maxMediaItems' => __('最多选择 %d 个文件', 'aksrt'),
'uploadingClose' => __('上传中,请稍候再关闭', 'aksrt'),
'mediaPickerUnavailable' => __('媒体选择器加载失败,请刷新页面后重试', 'aksrt'),
'pickVideoResource' => __('选择视频资源', 'aksrt'),
'pickVideoCover' => __('选择视频封面(可选)', 'aksrt'),
'download' => __('下载', 'aksrt'),
'quote' => __('引言', 'aksrt'),
'quoteGray' => __('灰色引言', 'aksrt'),
'quoteRed' => __('红色引言', 'aksrt'),
+6 -4
View File
@@ -60,10 +60,12 @@ $featured_args = ['type' => '', 'data' => new stdClass(), 'options' => [
if ($edit_post) {
if (!empty($post_meta['featured_video'])) {
$featured_args['type'] = 'video';
$featured_args['data'] = [
'url' => (string) $post_meta['featured_video'],
'pic' => (string) ($post_meta['thumbnail_url'] ?? ''),
];
$featured_args['data'] = [
'url' => (string) $post_meta['featured_video'],
'pic' => (string) ($post_meta['thumbnail_url'] ?? ''),
'id' => absint($post_meta['featured_video_attachment_id'] ?? 0),
];
} elseif (!empty($post_meta['featured_slide'])) {
$slides = array_filter(array_map('trim', explode(',', (string) $post_meta['featured_slide'])));
$slide_data = [];
+2 -1
View File
@@ -70,7 +70,8 @@ if (!function_exists('aksrt_submit_pay_line')) {
<button type="button" class="flex1 name-link pay-dawnload-add-edit" data-pay-download-edit><?php echo esc_html((string) ($row['url'] ?? '')); ?></button>
<button type="button" class="pay-dawnload-add-delete em12 ml10 hollow but cir c-red" data-pay-download-remove aria-label="<?php esc_attr_e('删除资源', 'aksrt'); ?>"><i class="fa far fa-trash-alt" aria-hidden="true"></i></button>
<div class="hidden-input">
<?php foreach (['url', 'extract_code', 'copy_key', 'copy_val', 'label', 'class'] as $field) : ?>
<?php foreach (['url', 'attachment_id', 'extract_code', 'copy_key', 'copy_val', 'label', 'class'] as $field) : ?>
<input type="hidden" name="aksrt_pay[downloads][<?php echo (int) $index; ?>][<?php echo esc_attr($field); ?>]" data-pay-download-field="<?php echo esc_attr($field); ?>" value="<?php echo esc_attr((string) ($row[$field] ?? '')); ?>">
<?php endforeach; ?>
</div>