diff --git a/app/Http/Controllers/Api/FileController.php b/app/Http/Controllers/Api/FileController.php
index 88666a1d4..37cfa50b2 100755
--- a/app/Http/Controllers/Api/FileController.php
+++ b/app/Http/Controllers/Api/FileController.php
@@ -758,14 +758,19 @@ class FileController extends AbstractController
$file->saveBeforePids();
//
$data = Base::uploadMove($data, "uploads/file/" . $file->type . "/" . date("Ym") . "/" . $file->id . "/");
+ $content = [
+ 'from' => '',
+ 'type' => $type,
+ 'ext' => $data['ext'],
+ 'url' => $data['path'],
+ ];
+ if (isset($data['width'])) {
+ $content['width'] = $data['width'];
+ $content['height'] = $data['height'];
+ }
$content = FileContent::createInstance([
'fid' => $file->id,
- 'content' => [
- 'from' => '',
- 'type' => $type,
- 'ext' => $data['ext'],
- 'url' => $data['path']
- ],
+ 'content' => $content,
'text' => '',
'size' => $file->size,
'userid' => $user->userid,
diff --git a/app/Models/File.php b/app/Models/File.php
index b38d755f1..af294bcf9 100644
--- a/app/Models/File.php
+++ b/app/Models/File.php
@@ -341,6 +341,8 @@ class File extends AbstractModel
$content = Base::json2array(FileContent::whereFid($item['id'])->orderByDesc('id')->value('content'));
if ($content) {
$item['image_url'] = Base::fillUrl($content['url']);
+ $item['image_width'] = intval($content['width']);
+ $item['image_height'] = intval($content['height']);
}
}
return $item;
diff --git a/package.json b/package.json
index b5eddd8bc..79b6c3dae 100644
--- a/package.json
+++ b/package.json
@@ -35,6 +35,7 @@
"moment": "^2.29.1",
"node-sass": "^6.0.1",
"notification-koro1": "^1.1.1",
+ "photoswipe": "^5.2.7",
"postcss": "^8.4.5",
"quill": "^1.3.7",
"quill-mention-hi": "^3.1.0-1",
diff --git a/resources/assets/js/components/PreviewImage/components/swipe.vue b/resources/assets/js/components/PreviewImage/components/swipe.vue
new file mode 100644
index 000000000..8f524b147
--- /dev/null
+++ b/resources/assets/js/components/PreviewImage/components/swipe.vue
@@ -0,0 +1,82 @@
+
+
+
+
+
diff --git a/resources/assets/js/components/PreviewImage/view.vue b/resources/assets/js/components/PreviewImage/components/view.vue
similarity index 97%
rename from resources/assets/js/components/PreviewImage/view.vue
rename to resources/assets/js/components/PreviewImage/components/view.vue
index d32e312f8..074037cf3 100644
--- a/resources/assets/js/components/PreviewImage/view.vue
+++ b/resources/assets/js/components/PreviewImage/components/view.vue
@@ -72,6 +72,10 @@
z-index: 2;
transform: translateY(-50%);
+ @media (max-width: 640px) {
+ display: none;
+ }
+
&.is-disabled {
cursor: no-drop;
@@ -208,7 +212,11 @@ export default {
return this.index === this.urlList.length - 1;
},
currentImg() {
- return $A.rightDelete(this.urlList[this.index], "_thumb.jpg");
+ let item = this.urlList[this.index];
+ if ($A.isJson(item)) {
+ item = item.src;
+ }
+ return $A.rightDelete(item, "_thumb.jpg");
},
imgStyle() {
const {scale, deg, offsetX, offsetY, enableTransition} = this.transform;
diff --git a/resources/assets/js/components/PreviewImage/index.vue b/resources/assets/js/components/PreviewImage/index.vue
index 4b0eed0ef..d86de293c 100644
--- a/resources/assets/js/components/PreviewImage/index.vue
+++ b/resources/assets/js/components/PreviewImage/index.vue
@@ -5,16 +5,19 @@
:mask-closable="false"
:footer-hide="true"
:transition-names="['', '']"
- fullscreen
- class-name="common-preview-image">
-
+ :class-name="mode === 'desktop' ? 'common-preview-image-view' : 'common-preview-image-swipe'"
+ fullscreen>
+
+
+
+