123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267 |
- <?php
- // app/Libraries/CommonHelper.php
- namespace App\Libraries;
- use Dcat\Admin\Admin;
- class CommonHelper
- {
- /*
- * $images 格式:['image.jpg','image2.jpg']
- * $ossSource 1:本地 2:相册
- * 返回显示的HTML显示图片
- */
- public static function displayImage($images,$boxSize=60,$imgSize=1024,$ossSource=1)
- {
- if (empty($images) || empty($images[0])) {
- $html = "";
- } else {
- // 默认显示 100x100 的图片
- $thumbnailImages = array_map(function ($imageUrl) use ($boxSize,$ossSource) {
- if ($ossSource == 1) {
- $imageUrl= CommonHelper::ossUrl($imageUrl);
- } else {
- $imageUrl= CommonHelper::albumUrl($imageUrl);
- }
- $extension = pathinfo($imageUrl, PATHINFO_EXTENSION);
- if ($extension == 'svg') {
- return $imageUrl;
- } else {
- return $imageUrl . "?x-oss-process=image/resize,m_pad,h_{$boxSize},w_{$boxSize},color_ffffff";
- }
- }, $images);
- // 生成点击查看大图的链接
- $largeImages = array_map(function ($imageUrl) use ($imgSize,$ossSource) {
- if ($ossSource == 1) {
- $imageUrl= CommonHelper::ossUrl($imageUrl);
- } else {
- $imageUrl= CommonHelper::albumUrl($imageUrl);
- }
- $extension = pathinfo($imageUrl, PATHINFO_EXTENSION);
- if ($extension == 'svg') {
- return $imageUrl;
- } else {
- return $imageUrl . "?x-oss-process=image/resize,m_lfit,w_{$imgSize},h_{$imgSize}";
- }
- }, $images);
- // 显示缩略图,并添加点击查看大图的功能
- $html = '';
- foreach ($thumbnailImages as $index => $thumbnailUrl) {
- $largeUrl = $largeImages[$index];
- $html .= "<a href='$largeUrl' target='_blank'><img src='$thumbnailUrl' style='height:{$boxSize}px; margin-right:5px; border: 1px solid #ececf1;'></a>";
- }
- return $html;
- }
- return $html;
- }
- /*
- * 返回oss的url
- */
- public static function ossUrl($imageUrl)
- {
- if (strpos($imageUrl, 'http:') === 0 || strpos($imageUrl, 'https:') === 0) {
- return $imageUrl;
- }
- if (env('OSS_DOMAIN')) {
- return "http://".env('OSS_DOMAIN').'/'.$imageUrl;
- }
- return "http://".env('OSS_BUCKET').'.'.env('OSS_ENDPOINT').'/'.$imageUrl;
- }
- /*
- * 图库图片URL
- */
- public static function albumUrl($imageUrl)
- {
- if (strpos($imageUrl, 'http:') === 0 || strpos($imageUrl, 'https:') === 0) {
- return $imageUrl;
- }
- return env('ALBUM_OSS_URL').'/'.$imageUrl;
- }
- /*
- * 显示视频
- */
- public static function displayVideo($items,$videoCover,$videoSrc,$boxSize=150,$ossSource=1)
- {
- $html = '';
- if (is_array($items)) {
- foreach ($items as $item) {
- $item = (array) $item;
- $cover = $item[$videoCover];
- $src = $item[$videoSrc];
- if ($ossSource == 1) {
- $videoUrl = CommonHelper::ossUrl($src);
- } else {
- $videoUrl = CommonHelper::albumUrl($src);
- }
- if ($ossSource == 1) {
- $thumbnailUrl = CommonHelper::ossUrl($cover) . "?x-oss-process=image/resize,m_pad,h_{$boxSize},w_{$boxSize},color_ffffff";
- } else {
- $thumbnailUrl = CommonHelper::albumUrl($cover) . "?x-oss-process=image/resize,m_pad,h_{$boxSize},w_{$boxSize},color_ffffff";
- }
- $html .= '<div class="video-container"><a href="#" class="playVideo" videoUrl="'.$videoUrl.'")"><img src="'.$thumbnailUrl.'" alt="Video Thumbnail"><div class="play-button"></div></a></div>';
- }
- $html .= '<div class="video-popup" id="videoPopup"><span class="close-btn">×</span> <iframe src="" frameborder="0" allowfullscreen></iframe></div>';
- }
- //视频播放CSS
- Admin::style("
- .video-container {
- position: relative;
- display: inline-block;
- }
- .video-container img {
- height: 200px;
- margin-right: 5px;
- border: 1px solid #ececf1;
- }
- .play-button {
- position: absolute;
- top: 50%;
- left: 50%;
- transform: translate(-50%, -50%);
- width: 50px;
- height: 50px;
- background-color: rgba(0, 0, 0, 0.7);
- border-radius: 50%;
- cursor: pointer;
- }
- .play-button::after {
- content: '▶';
- font-size: 30px;
- color: white;
- position: absolute;
- top: 50%;
- left: 50%;
- transform: translate(-50%, -50%);
- }
- .video-popup {
- display: none;
- position: fixed;
- top: 50%;
- left: 50%;
- transform: translate(-50%, -50%);
- background-color: white;
- padding: 25px;
- box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);
- z-index: 1000;
- }
- .video-popup iframe {
- width: 800px;
- height: 450px;
- }
- .close-btn {
- position: absolute;
- top: 0px;
- right: 5px;
- font-size: 24px;
- color: #000;
- cursor: pointer;
- }
- .close-btn:hover {
- color: #f00;
- }
- ");
- Admin::script("
- $('.playVideo').on('click', function(e) {
- e.preventDefault(); // 阻止默认跳转行为
- var videoUrl = $(this).attr('videoUrl'); // 获取 videoUrl 属性
- $('#videoPopup').css('display', 'block');
- $('#videoPopup iframe').attr('src', videoUrl); // 设置 iframe 的 src
- });
- // 点击关闭按钮关闭视频
- $('.close-btn').on('click', function() {
- $('#videoPopup').css('display', 'none');
- $('#videoPopup iframe').attr('src', ''); // 停止播放视频
- });
- ");
- return $html; // 当没有数组数据时
- }
- /*
- * 替换新增与编辑的url,在后边加上指定的参数 (适用于弹出框的新增与编辑)
- * $addButton = '.tree-quick-create';
- * $editButton = '.tree-quick-edit';
- * $paramsUrl = 'location=0';
- */
- public static function replaceAddEditerUrl($addButton,$editButton,$paramsUrl) {
- Admin::script(
- <<<JS
- var button = $('{$addButton}');
- var currentUrl = button.attr('data-url');
- if (currentUrl.indexOf('?') === -1) {
- button.attr('data-url', currentUrl + '?{$paramsUrl}');
- } else {
- button.attr('data-url', currentUrl + '&{$paramsUrl}');
- }
- $('{$editButton}').each(function() {
- var currentUrl = $(this).attr('data-url');
- if (currentUrl.indexOf('?') === -1) {
- $(this).attr('data-url', currentUrl + '?{$paramsUrl}');
- } else {
- // 如果已经有查询参数,添加 &id=123
- $(this).attr('data-url', currentUrl + '&{$paramsUrl}');
- }
- });
- JS
- );
- }
- public static function seoReplace($titleName = 'title',$modelName = 'pages')
- {
- if ($titleName) {
- Admin::script(
- <<<JS
- $('input[name="{$titleName}"]').on('input', function() {
- // 将 title 的值赋给 seo_title
- $('input[name="seo_title"]').val($(this).val());
- });
- JS
- );
- }
- //ajax 生成slug
- if ($modelName) {
- Admin::script(
- <<<JS
- $('input[name="{$titleName}"]').on('blur', function() {
- //通过ajax请求修改slug
- title = $(this).val();
- $.ajax({
- url: '/dist/api/generate-slug',
- type: 'GET',
- data: {
- model:'{$modelName}',
- title: title,
- },
- success: function(response) {
- $('input[name="slug"]').val(response.slug);
- }
- });
- });
- JS
- );
- }
- }
- }
|