Przeglądaj źródła

帮助中心文章发布图片格式

yangc 7 lat temu
rodzic
commit
828e4c508a

+ 3 - 0
src/main/webapp/WEB-INF/views/normal/admin.html

@@ -19,6 +19,7 @@
 <link rel="stylesheet" href="static/lib/jquery/themes/summernote/css/summernote.css" />
 <link rel="stylesheet" href="static/css/common.css" />
 <link rel="stylesheet" href="static/css/admin.css" />
+<link rel="stylesheet" href="static/lib/quill/quill.snow.css" />
 </head>
 <body>
 	<!-- main content begin -->
@@ -67,6 +68,8 @@
 	</div>
 	<!-- Loading End -->
 </body>
+<script src="static/lib/quill/quill.core.js"></script>
+<script src="static/lib/quill/quill.min.js"></script>
 <script language="javascript" type="text/javascript" src="static/lib/datePicker/WdatePicker.js"></script>
 <script type="text/javascript" src="static/lib/require.js"
 	data-main="static/js/admin/main.js"></script>

+ 53 - 13
src/main/webapp/resources/js/admin/controllers/help/HelpDetailCtrl.js

@@ -3,7 +3,7 @@
  */
 define(['app/app'], function(app) {
     'use strict';
-    app.register.controller('HelpDetailCtrl', ['$scope', '$modal', 'HelpIssue', 'toaster', '$stateParams', 'HelpAPI', '$state', function ($scope, $modal, HelpIssue, toaster, $stateParams, HelpAPI, $state) {
+    app.register.controller('HelpDetailCtrl', ['$scope', '$modal', 'HelpIssue', 'toaster', '$stateParams', 'HelpAPI', '$state', '$http', 'BaseService', 'HelpUpload', '$q', function ($scope, $modal, HelpIssue, toaster, $stateParams, HelpAPI, $state, $http, BaseService, HelpUpload, $q) {
 
         HelpIssue.get({id : $stateParams.id}, function (data) {
             $scope.issue = data;
@@ -31,6 +31,26 @@ define(['app/app'], function(app) {
             }
         });
 
+        $scope.rootPath = BaseService.getRootPath();
+        function switchBase64ToImg(el) {
+            var deferred = $q.defer();
+            var data = el.src;
+            var arr = data.split(','), mime = arr[0].match(/:(.*?);/)[1],
+                bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
+            while(n--){
+                u8arr[n] = bstr.charCodeAt(n);
+            }
+            var obj = new Blob([u8arr], {type:mime});
+            var fd = new FormData();
+            fd.append("upfile", obj, "image.png");
+            return HelpUpload.upload(fd, function (data) {
+                el.src = data[0].path;
+                // console.log(el);
+            }, function (err) {
+                toaster.pop('error', '上传失败');
+            })
+        }
+
         // 选择导航
         $scope.chooseNav = function() {
             var modalInstance = $modal.open({
@@ -52,12 +72,22 @@ define(['app/app'], function(app) {
         $scope.save = function () {
             $scope.issue.article = quill.container.innerHTML.replace('\<input type="text" data-formula="e=mc^2" data-link="https://quilljs.com" data-video="Embed URL">','').replace('contenteditable="true"', 'contenteditable="false"');
             $scope.issue.content = angular.toJson(quill.getContents());
-            HelpIssue.update({}, $scope.issue, function (data) {
-                toaster.pop('success', '保存成功');
-                $state.go('helpPublish');
-                window.location.href ='admin_n#/help/publish';// quilljs锁定了跳转 必须这样跳两次才有效
-            }, function(response) {
-                toaster.pop('error', response.data);
+            var els = $($scope.issue.article);
+            var imgs = els.find('img');
+            var promises = [];
+            angular.forEach(imgs, function (img) {
+                promises.push(switchBase64ToImg(img).$promise);
+            })
+            $q.all(promises).then(function () {
+                // console.log(els.html());
+                $scope.issue.article = els.html()
+                HelpIssue.update({}, $scope.issue, function (data) {
+                    toaster.pop('success', '保存成功');
+                    $state.go('helpPublish');
+                    window.location.href ='admin_n#/help/publish';// quilljs锁定了跳转 必须这样跳两次才有效
+                }, function(response) {
+                    toaster.pop('error', response.data);
+                });
             });
         };
 
@@ -65,12 +95,22 @@ define(['app/app'], function(app) {
         $scope.publish = function () {
             $scope.issue.article = quill.container.innerHTML.replace('\<input type="text" data-formula="e=mc^2" data-link="https://quilljs.com" data-video="Embed URL">','').replace('contenteditable="true"', 'contenteditable="false"');
             $scope.issue.content = angular.toJson(quill.getContents());
-            HelpIssue.publish({}, $scope.issue, function (data) {
-                toaster.pop('success', '发布成功');
-                $state.go('helpPublish');
-                window.location.href = 'admin_n#/help/publish';
-            }, function(response) {
-                toaster.pop('error', response.data);
+            var els = $($scope.issue.article);
+            var imgs = els.find('img');
+            var promises = [];
+            angular.forEach(imgs, function (img) {
+                promises.push(switchBase64ToImg(img).$promise);
+            })
+            $q.all(promises).then(function () {
+                // console.log(els.html());
+                $scope.issue.article = els.html()
+                HelpIssue.publish({}, $scope.issue, function (data) {
+                    toaster.pop('success', '发布成功');
+                    $state.go('helpPublish');
+                    window.location.href = 'admin_n#/help/publish';
+                }, function(response) {
+                    toaster.pop('error', response.data);
+                });
             });
         };
         

+ 37 - 7
src/main/webapp/resources/js/admin/controllers/help/HelpEditCtrl.js

@@ -1,6 +1,6 @@
 define(['app/app'], function(app) {
     'use strict';
-    app.register.controller('HelpEditCtrl', ['$scope', '$modal', 'HelpIssue', 'toaster', '$state', function ($scope, $modal, HelpIssue, toaster, $state) {
+    app.register.controller('HelpEditCtrl', ['$scope', '$modal', 'HelpIssue', 'toaster', '$state', '$http', 'BaseService', 'HelpUpload', '$q', function ($scope, $modal, HelpIssue, toaster, $state, $http, BaseService, HelpUpload, $q) {
 
         $scope.issue = {};
 
@@ -31,16 +31,46 @@ define(['app/app'], function(app) {
             });
         };
 
+        $scope.rootPath = BaseService.getRootPath();
+        function switchBase64ToImg(el) {
+            var deferred = $q.defer();
+            var data = el.src;
+            var arr = data.split(','), mime = arr[0].match(/:(.*?);/)[1],
+                bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
+            while(n--){
+                u8arr[n] = bstr.charCodeAt(n);
+            }
+            var obj = new Blob([u8arr], {type:mime});
+            var fd = new FormData();
+            fd.append("upfile", obj, "image.png");
+            return HelpUpload.upload(fd, function (data) {
+                el.src = data[0].path;
+                // console.log(el);
+            }, function (err) {
+                toaster.pop('error', '上传失败');
+            })
+        }
+        
         // 保存
         $scope.save = function () {
             $scope.issue.article = quill.container.innerHTML.replace('\<input type="text" data-formula="e=mc^2" data-link="https://quilljs.com" data-video="Embed URL">','').replace('contenteditable="true"', 'contenteditable="false"');
             $scope.issue.content = angular.toJson(quill.getContents());
-            HelpIssue.save({}, $scope.issue, function (data) {
-                toaster.pop('success', '保存成功');
-                $state.go('helpDetail',{id : data.id});
-                window.location.href = '#/help/issue/' + data.id;// quilljs锁定了跳转 必须这样跳两次才有效
-            }, function(response) {
-                toaster.pop('error', response.data);
+            var els = $($scope.issue.article);
+            var imgs = els.find('img');
+            var promises = [];
+            angular.forEach(imgs, function (img) {
+                promises.push(switchBase64ToImg(img).$promise);
+            })
+            $q.all(promises).then(function () {
+                // console.log(els.html());
+                $scope.issue.article = els.html()
+                HelpIssue.save({}, $scope.issue, function (data) {
+                    toaster.pop('success', '保存成功');
+                    $state.go('helpDetail',{id : data.id});
+                    window.location.href = '#/help/issue/' + data.id;// quilljs锁定了跳转 必须这样跳两次才有效
+                }, function(response) {
+                    toaster.pop('error', response.data);
+                });
             });
         };
 

+ 10 - 0
src/main/webapp/resources/js/common/query/help.js

@@ -115,5 +115,15 @@ define([ 'ngResource' ], function() {
                 method: 'GET'
             }
         })
+    }]).factory('HelpUpload', ['$resource', 'BaseService', function ($resource) {
+        //文章编辑图片处理
+        return $resource('file', {}, {
+            upload: {
+                url: 'file',
+                method: 'POST',
+                headers : {'Content-Type' : undefined},
+                isArray: true
+            }
+        })
     }]);
 });