123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- <?php
- namespace App\Distributor\Controllers;
- use App\Distributor\Metrics\DistMessage;
- use App\Distributor\Repositories\DistAdminDistributor;
- use App\Distributor\Repositories\DistAppearancePublishList;
- use App\Distributor\Repositories\DistAppearanceTemplate;
- use App\Distributor\Repositories\SiteMenu;
- use App\Http\Controllers\Controller;
- use App\Libraries\CommonHelper;
- use Dcat\Admin\Layout\Column;
- use Dcat\Admin\Layout\Content;
- use Dcat\Admin\Layout\Row;
- use Dcat\Admin\Traits\HasUploadedFile;
- class VisualEditorController extends Controller
- {
- use HasUploadedFile;
- /*
- * 可视化编辑器
- */
- public function index()
- {
- $mid = isset($_GET['mid'])? intval($_GET['mid']) : 0;
- $uri = isset($_GET['uri'])? $_GET['uri'] : '';
- //网站html内容
- $url = getSiteDomain();
- $html = $this->getURlHTML($url,$uri);
- //菜单
- $siteMenu = SiteMenu::showAllSelectOptions();
- foreach ($siteMenu as $key => $value) {
- if ($value['url'] == '/' && $mid == 0) {
- $mid =$value['id'];
- break;
- }
- }
- //
- $publish = admin_trans_label('publish');
- $visualEdit = admin_trans_label('visual_edit');
- return view('distributor.pages-custom.visual-editor',[
- 'html'=>$html,
- 'siteMenu'=>json_encode($siteMenu),
- 'mid'=>$mid,
- 'publish' => $publish,
- 'visualEdit' => $visualEdit,
- ]);
- }
- /*
- * 保存预览修改
- */
- public function previewSave()
- {
- $html = isset($_POST['html'])? $_POST['html'] : '';
- if (empty($html) == false) {
- DistAppearanceTemplate::previewSave($html);
- }
- return response()->json(['status' => 1]);
- }
- /*
- * 发布
- */
- public function publish()
- {
- $info = DistAdminDistributor::getInfo();
- $distId = $info->id;
- $appearanceId = $info->appearance_id;
- //发布
- DistAppearancePublishList::publish($appearanceId, $distId);
- //清除缓存
- DistAdminDistributor::clearCache();
- return ['status'=>1,'message'=>admin_trans('admin.update_succeeded')];
- }
- /*
- * 上传图片
- */
- public function upload()
- {
- $disk = $this->disk('oss');
- // 判断是否是删除文件请求
- if ($this->isDeleteRequest()) {
- // 删除文件并响应
- //return $this->deleteFileAndResponse($disk);
- return $this->responseDeleted();
- }
- // 获取上传的文件
- $file = $this->file();
- // 获取上传的字段名称
- // $column = $this->uploader()->upload_column;
- $column = uniqueCode("img");
- $dir = config("distributor.upload.gjs_directory.image").'/'.date('Ymd');
- $newName = $column.'.'.$file->getClientOriginalExtension();
- $result = $disk->putFileAs($dir, $file, $newName);
- $result = CommonHelper::ossUrl($result);
- $response = [
- 'data'=>[[
- 'src' => $result,
- 'type'=>'image',
- ]]
- ];
- return json_encode($response);
- }
- private function getURlHTML($url,$uri)
- {
- $siteUrl = $url . $uri;
- // 检查URL中是否已经包含?
- if (strpos($siteUrl, '?') !== false) {
- // 如果包含?则添加&mtb-preview=1
- $siteUrl .= "&mtb-preview=1";
- } else {
- // 如果不包含?则添加?mtb-preview=1
- $siteUrl .= "?mtb-preview=1";
- }
- $ch = curl_init($siteUrl);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 返回原生的(Raw)输出
- curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查(在生产环境中,应将其设置为true并指定CA证书路径)
- curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // 跳过证书主机名验证
- $html = curl_exec($ch);
- if (curl_errno($ch)) {
- echo 'cURL error: ' . curl_error($ch);exit;
- }
- curl_close($ch);
- $pattern = '/<(link|script|img)[^>]*\s+(href|src)=["\'](\/[^"\']+)["\'][^>]*>/i';
- $replacement = function($matches) use ($url) {
- // $matches[3] 是匹配到的以 / 开头的路径
- return str_replace($matches[3], $url . $matches[3], $matches[0]);
- };
- $html = preg_replace_callback($pattern, $replacement, $html);
- //把form去掉
- $pattern = '/<form[^>]*>(.*?)<\/form>/is';
- $html = preg_replace($pattern, '$1', $html);
- return $html;
- }
- }
|