getVideoCategories();
// var_dump($videoCategories);
// exit;
return $content
->header('发报帖子')
->body($this->form());
}
protected function form()
{
return Form::make(new SmmPost(), function (Form $form) {
$form->title('本地素材发布');
$form->action('ssm-post');
$form->disableListButton();
$form->multipleSteps()
->remember()
->width('950px')
->add('选择本地媒体', function ($step) {
$step->radio('send_type',admin_trans_label('send_type'))
->when([1], function ($step) {
$step->datetime('send_time', '* '.admin_trans_label('send_time'))->placeholder(' ');
})
->options([ 0=>admin_trans_label('immediate'), 1=>admin_trans_label('timing')])->default(0);
$step->radio('post_type',admin_trans_label('media_type'))
->when([0], function ($step) {
$step->textarea('image_message', '* '.admin_trans_label('post_message'))->rows(3)->placeholder(' ');
$step->multipleImage('image_url', '* '.admin_trans_label('images'))
->retainable()//禁止删OSS图
->sortable() // 可拖动排序
->removable() // 可移除图片
->autoUpload() // 自动上传
->uniqueName()
->limit(4)
->accept(config('admin.upload.oss_image.accept'))
->maxSize(config('admin.upload.oss_image.max_size'));
})
->when([1], function ($step) {
$step->textarea('video_message', '* '.admin_trans_label('post_message'))->rows(3)->placeholder(' ');
$step->file('video_url','* '.admin_trans_label('video'))
->uniqueName()
->autoUpload()
->accept(config('admin.upload.oss_video.accept'))
->maxSize(config('admin.upload.oss_video.max_size'))
->chunkSize(1024);
})
->options([ 0=>admin_trans_label('images'), 1=>admin_trans_label('videos')])->default(0);
$this->stepLeaving($step,0);
})
->add('选择传单社媒平台', function ($step) {
$rootAccounts = SmmUserAccount::getUserAccounts();
$listBoxOptions = [];
foreach ($rootAccounts as $account) {
$listBoxOptions[$account->id] = $account->name . ' ('.$account->getParent->name.')';
}
$step->listbox('account_ids', '* '.admin_trans_label('accountsSelect'))
->options($listBoxOptions);
$step->select('youtube_category')->setView('distributor.form_custom.select_hide')->options(SmmUserAccount::getYoutubeCategory())->default(22)->required();
$this->stepLeaving($step,1);
});
$this->addJs();
});
}
/*
* 保存数据
*/
public function store() {
$post = $_POST;
if (isset($post['upload_column']) && ($post['upload_column'] == 'image_url' || $post['upload_column'] == 'video_url')) {
// 上传图片或视频
return $this->upload();
}
if (isset($post['ALL_STEPS']) && $post['ALL_STEPS'] == '1') {
$post_type = $post['post_type'];
if ($post_type == 0) {
$image_video_url = $post['image_url'];
$post['message'] = $post['image_message'];
} else {
$image_video_url = $post['video_url'];
$post['message'] = $post['video_message'];
}
if ($this->checkStoragePath($image_video_url) === false) {
return '发送失败,请检查上传文件是否存在';
}
if ($post['send_type'] == 0) {
$send_time = Carbon::now();
} else {
//转换时间格式
$send_time = Carbon::createFromFormat('Y-m-d H:i:s', $post['send_time']);
}
//dd($post);
//保存数据
SmmPost::create($post,$send_time,$image_video_url);
//最后一步
$data = [
'title' => '操作成功',
'description' => '系统已生成发送队列,详情请查看日志。',
];
return view('distributor.form_custom.completion-page', $data);
}
}
/**
* 上传图片到本地
*/
public function upload() {
$disk = $this->disk('oss');
// 获取上传的文件
$file = $this->file();
$dir = 'ssm/'.getDistributorId();
$newName = md5(uniqid() . mt_rand()) .'.'.$file->getClientOriginalExtension();
$result = $disk->putFileAs($dir, $file, $newName);
return $result
? $this->responseUploaded($result, $disk->url($result))
: $this->responseErrorMessage(admin_trans_label('upload_failed'));
}
/*
* 判断路径是否正确
*/
public function checkStoragePath ($filePath) {
$storagePath = 'ssm/'.getDistributorId();
if (strpos($filePath, $storagePath) === 0) {
return true;
}
return false;
}
private function stepLeaving($step,$index=0)
{
$lang = config('app.locale');//当前语言
//JS 验证参数不能为空
if ($index == 0) {
$step->leaving(<<
item.name === 'post_type' && item.type === 'radio'
)?.value;
// 仅获取radio类型的send_type值
let sendType = formArray.find(item =>
item.name === 'send_type' && item.type === 'radio'
)?.value;
// 验证post_type相关规则
if (postType === '0') {
const imageMessage = formArray.find(item => item.name === 'image_message')?.value;
const imageUrl = formArray.find(item => item.name === 'image_url')?.value;
if (!imageMessage || !imageUrl) {
if (lang === 'en') {
return 'Post message and images cannot be empty';
} else {
return '帖子留言和图片不能为空';
}
}
} else if (postType === '1') {
const videoMessage = formArray.find(item => item.name === 'video_message')?.value;
const videoUrl = formArray.find(item => item.name === 'video_url')?.value;
if (!videoMessage || !videoUrl) {
if (lang === 'en') {
return 'Post message and video cannot be empty';
} else {
return '帖子留言和视频不能为空';
}
}
}
// 验证send_type规则(仅处理radio类型的send_type)
if (sendType === '1') {
const sendTime = formArray.find(item => item.name === 'send_time')?.value;
if (!sendTime) {
if (lang === 'en') {
return 'Send time cannot be empty';
} else {
return '定时发送时间不能为空';
}
}
}
return "";
}
var formArray = args.formArray;
rs = validateForm(formArray);
if (rs != "") {
Dcat.error(rs);
return false;
}
JS);
} else {
$step->leaving(<< item.name === 'account_ids[]')?.value;
if (!accountIds || accountIds.length === 0) {
if (lang === 'en') {
Dcat.error('Please select accounts');
} else {
Dcat.error('请选择社媒帐号');
}
return false;
}
JS);
}
}
public function addJs()
{
Admin::script(
<< 0;
// 切换目标元素的显示状态
$('#select_hide_youtube_category').toggle(hasYouTube);
}
var select = $('select[name="account_ids\\[\\]_helper2"]');
var select_lenght = select.children().length;
let intervalId = setInterval(() => {
var select = $('select[name="account_ids\\[\\]_helper2"]');
// 处理变化的逻辑
if (select_lenght != select.children().length) {
checkYouTubeOption(select);
}
}, 300);
JS
);
}
}