From 9f5205c3841e4d93d031417fd8783ae638a5d5bc Mon Sep 17 00:00:00 2001
From: tianya <yanghuxiao@vip.qq.com>
Date: Tue, 29 Nov 2022 21:45:05 +0800
Subject: [PATCH] =?UTF-8?q?=E9=87=87=E7=94=A8DedeConfirm=E6=94=B9=E5=86=99?=
 =?UTF-8?q?window.confirm?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/admin/js/key.js                     | 41 +++--------------------
 src/admin/js/main.js                    | 39 ++++++++++++++++++++++
 src/admin/templets/diy_edit.htm         |  4 ---
 src/admin/templets/feedback_main.htm    | 44 ++++++++++++++++++++-----
 src/admin/templets/freelist_main.htm    | 41 ++++++++++++-----------
 src/admin/templets/mychannel_edit.htm   |  7 ++--
 src/admin/templets/stepselect_main.htm  | 23 ++++++++-----
 src/admin/templets/templets_default.htm |  9 +++--
 src/static/web/js/style.js              | 40 ++++++++++++++++++++++
 src/user/templets/content_list.htm      |  6 +++-
 src/user/templets/content_sg_list.htm   |  6 +++-
 src/user/templets/mypay.htm             | 11 +++++--
 src/user/templets/operation.htm         |  6 ++--
 src/user/templets/pm-main.htm           | 14 ++++++--
 14 files changed, 200 insertions(+), 91 deletions(-)

diff --git a/src/admin/js/key.js b/src/admin/js/key.js
index fd72d27f..576c7cab 100644
--- a/src/admin/js/key.js
+++ b/src/admin/js/key.js
@@ -15,46 +15,13 @@ function noselAll()
 		}
 	}
 }
-function delkey()
-{
-	if (window.confirm("您确定要删除选定的关键字吗")) {
-		document.form3.dopost.value = 'del';
-		document.form3.submit();
-	}
-}
-function diskey()
-{
-	if (window.confirm("您确定要禁用选定的关键字吗")) {
-		document.form3.dopost.value = 'dis';
-		document.form3.submit();
-	}
-}
-function enakey()
-{
-	if (window.confirm("您确定要启用选定的关键字吗")) {
-		document.form3.dopost.value = 'ena';
-		document.form3.submit();
-	}
-}
-function urlkey()
-{
-	if (window.confirm("您确定要更新选定的关键字的网址吗")) {
-		document.form3.dopost.value = 'url';
-		document.form3.submit();
-	}
-}
-function rankey()
-{
-	if (window.confirm("您确定要改变选定的关键字的频率吗")) {
-		document.form3.dopost.value = 'ran';
-		document.form3.submit();
-	}
-}
 //批量删除搜多关键字
 function delall()
 {
-	if (window.confirm("您确定要删除选定的关键字吗")) {
+	DedeConfirm("您确定要删除选定的关键字吗?").then((v)=>{
 		document.form3.dopost.value = 'delall';
 		document.form3.submit();
-	}
+	}).catch((e)=>{
+		console.log(e)
+	});
 }
\ No newline at end of file
diff --git a/src/admin/js/main.js b/src/admin/js/main.js
index 33ae09f6..38e16f9c 100644
--- a/src/admin/js/main.js
+++ b/src/admin/js/main.js
@@ -511,6 +511,45 @@ function guid() {
 	}
 	return (S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4());
 }
+var _DedeConfirmFuncs = {};
+var _DedeConfirmFuncsClose = {};
+function __DedeConfirmRun(modalID) {
+    _DedeConfirmFuncs[modalID]();
+}
+function __DedeConfirmRunClose(modalID) {
+    _DedeConfirmFuncsClose[modalID]();
+}
+function DedeConfirm(content="",title="确认提示") {
+    let modalID = guid();
+    return new Promise((resolve, reject) => {
+        _DedeConfirmFuncs[modalID] = ()=>{
+            resolve("success");
+            CloseModal(`DedeModal${modalID}`);
+        }
+        _DedeConfirmFuncsClose[modalID] = ()=>{
+            reject("cancel");
+            CloseModal(`DedeModal${modalID}`);
+        }
+
+        let footer = `<button type="button" class="btn btn-outline-success btn-sm" onClick="__DedeConfirmRunClose(\'${modalID}\')">取消</button> <button type="button" class="btn btn-success btn-sm" onClick="__DedeConfirmRun(\'${modalID}\')">确定</button>`;
+        let modal = `<div id="DedeModal${modalID}" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="DedeModalLabel${modalID}">
+    <div class="modal-dialog modal-dialog-centered" role="document">
+    <div class="modal-content"><div class="modal-header">
+    <h6 class="modal-title" id="DedeModalLabel${modalID}">${title}</h6>`;
+        modal += `<button type="button" class="close" data-dismiss="modal" aria-label="Close">
+    <span>&times;</span>
+    </button>`;
+        modal += `</div><div class="modal-body">${content}</div><div class="modal-footer">${footer}</div></div></div></div>`;
+        $("body").append(modal)
+        $("#DedeModal" + modalID).modal({
+            backdrop: 'static',
+            show: true
+        });
+        $("#DedeModal" + modalID).on('hidden.bs.modal', function (e) {
+            $("#DedeModal" + modalID).remove();
+        })
+    })
+}
 //函数会返回一个modalID,通过这个id可自已定义一些方法,这里用到了一个展开语法https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Spread_syntax
 function ShowMsg(content, ...args) {
 	title = "系统提示";
diff --git a/src/admin/templets/diy_edit.htm b/src/admin/templets/diy_edit.htm
index 56418192..ff5b3e50 100644
--- a/src/admin/templets/diy_edit.htm
+++ b/src/admin/templets/diy_edit.htm
@@ -18,10 +18,6 @@
 		    	}
 		    	return true;
 		    }
-		    function DelNote(gourl) {
-		    	if (!window.confirm("您确认要删除这条记录吗")) { return false; }
-		    	location.href = gourl;
-		    }
 		</script>
 	</head>
 	<body>
diff --git a/src/admin/templets/feedback_main.htm b/src/admin/templets/feedback_main.htm
index a659543a..0b2ce504 100644
--- a/src/admin/templets/feedback_main.htm
+++ b/src/admin/templets/feedback_main.htm
@@ -45,23 +45,51 @@
 			}
 			function delFeedback() {
 				var qstr = getCheckboxItem();
-				if (qstr == "") ShowMsg("您没选中任何文档");
-				else if (window.confirm('您确定要删除这些评论吗')) location.href = "feedback_main.php?job=del&fid=" + qstr;
+				if (qstr == "") {
+					ShowMsg("您没选中任何文档");
+					return
+				};
+				DedeConfirm("您确定要删除这些评论吗?").then((v)=>{
+					location.href = "feedback_main.php?job=del&fid=" + qstr
+				}).catch((e)=>{
+					console.log(e)
+				});
 			}
 			function delFeedbackIP() {
 				var qstr = getCheckboxItem();
-				if (qstr == "") ShowMsg("您没选中任何文档");
-				else if (window.confirm('您确定要删除这些评论吗')) location.href = "feedback_main.php?job=delall&fid=" + qstr;
+				if (qstr == "") {
+					ShowMsg("您没选中任何文档");
+					return;
+				};
+				DedeConfirm("您确定要删除这些评论吗?").then((v)=>{
+					location.href = "feedback_main.php?job=delall&fid=" + qstr;
+				}).catch((e)=>{
+					console.log(e)
+				});
 			}
 			function checkFeedback() {
 				var qstr = getCheckboxItem();
-				if (qstr == "") ShowMsg("您没选中任何文档");
-				else location.href = "feedback_main.php?job=check&fid=" + qstr;
+				if (qstr == "") {
+					ShowMsg("您没选中任何文档");
+					return;
+				};
+				DedeConfirm("您确定要删除这些评论吗?").then((v)=>{
+					location.href = "feedback_main.php?job=check&fid=" + qstr;
+				}).catch((e)=>{
+					console.log(e)
+				});
 			}
 			function editFeedback() {
 				var qstr = getCheckboxItem();
-				if (qstr == "") ShowMsg("您没选中任何文档");
-				else location.href = "feedback_edit.php?job=edit&fid=" + qstr;
+				if (qstr == "") {
+					ShowMsg("您没选中任何文档");
+					return;
+				}
+				DedeConfirm("您确定要删除这些评论吗?").then((v)=>{
+					location.href = "feedback_edit.php?job=edit&fid=" + qstr;
+				}).catch((e)=>{
+					console.log(e)
+				});
 			}
 		</script>
 	</head>
diff --git a/src/admin/templets/freelist_main.htm b/src/admin/templets/freelist_main.htm
index ce0b69e3..c0c3d09c 100644
--- a/src/admin/templets/freelist_main.htm
+++ b/src/admin/templets/freelist_main.htm
@@ -12,8 +12,8 @@
 		<script src="js/main.js"></script>
 		<script>
 			var pageno = 1;
-			var totalrow = <?php echo $totalRow;?>;
-			var pagesize = <?php echo $pagesize;?>;
+			var totalrow = parseInt('<?php echo $totalRow;?>');
+			var pagesize = parseInt('<?php echo $pagesize;?>');
 			var orderby = '<?php echo $orderby?>';
 			var addget = "<?php echo $addget?>";
 			//加载列表
@@ -43,24 +43,27 @@
 			}
 			//删除
 			function DelNote(nid) {
-				if (!window.confirm("您确认要删除这条记录吗")) { return false; }
-				var listArea = $Obj('rslist');
-				totalrow = totalrow - 1;
-				var pagenum = Math.ceil(totalrow / pagesize);
-				if (pagenum <= pageno) pageno = pagenum;
-				var errMsg = "网络通信出错<br>[<a href=\"javascript:LoadPage('" + pageno + "')\">点击此重新加载列表</a>]";
-				fetch("freelist_main.php?dopost=del&aid=" + nid + "&pageno=" + pageno).then(resp=>{
-					if (resp.ok) {
-						return resp.text()
-					}
-					throw new Error(errMsg);
-				}).then((d)=>{
-					listArea.innerHTML = d;
-				}).catch((error) => {
-					listArea.innerHTML = errMsg;
-				});
+				DedeConfirm("您确认要删除这条记录吗?").then((v)=>{
+					var listArea = $Obj('rslist');
+					totalrow = totalrow - 1;
+					var pagenum = Math.ceil(totalrow / pagesize);
+					if (pagenum <= pageno) pageno = pagenum;
+					var errMsg = "网络通信出错<br>[<a href=\"javascript:LoadPage('" + pageno + "')\">点击此重新加载列表</a>]";
+					fetch("freelist_main.php?dopost=del&aid=" + nid + "&pageno=" + pageno).then(resp=>{
+						if (resp.ok) {
+							return resp.text()
+						}
+						throw new Error(errMsg);
+					}).then((d)=>{
+						listArea.innerHTML = d;
+					}).catch((error) => {
+						listArea.innerHTML = errMsg;
+					});
 
-				ReloadPageNum(pageno);
+					ReloadPageNum(pageno);
+				}).catch((e)=>{
+					console.log(e)
+				});
 			}
 			//重新加载分页列表
 			function ReloadPageNum(startnum) {
diff --git a/src/admin/templets/mychannel_edit.htm b/src/admin/templets/mychannel_edit.htm
index 3cd36f90..af358535 100644
--- a/src/admin/templets/mychannel_edit.htm
+++ b/src/admin/templets/mychannel_edit.htm
@@ -300,8 +300,11 @@
 			}
 			//删除
 			function DelNote(gourl) {
-				if (!window.confirm("您确认要删除这个字段吗")) { return false; }
-				location.href = gourl;
+				DedeConfirm("您确认要删除这个字段吗?").then((v)=>{
+					location.href = gourl;
+				}).catch((e)=>{
+					console.log(e)
+				});
 			}
 			function ShowObj(objname) {
 				var obj = document.getElementById(objname);
diff --git a/src/admin/templets/stepselect_main.htm b/src/admin/templets/stepselect_main.htm
index 14cbac6d..3a7bd2d9 100644
--- a/src/admin/templets/stepselect_main.htm
+++ b/src/admin/templets/stepselect_main.htm
@@ -94,13 +94,16 @@
             });
         }
         function DelType() {
-            if (window.confirm("您确实要删除这个分类吗") == false) return false;
-            var id = GetSelType();
-            if (id == 0) {
-                ShowMsg("必须选择一个类别");
-                return false;
-            }
-            location.href = 'stepselect_main.php?action=del&id=' + id;
+            DedeConfirm("您确实要删除这个分类吗?").then((v)=>{
+                var id = GetSelType();
+                if (id == 0) {
+                    ShowMsg("必须选择一个类别");
+                    return false;
+                }
+                location.href = 'stepselect_main.php?action=del&id=' + id;
+            }).catch((e)=>{
+                console.log(e)
+            });
         }
         function CloseTWin() {
             $DE('edsta').innerHTML = loadhtml;
@@ -123,7 +126,11 @@
             }
         }
         function DelSel() {
-            if (window.confirm("您确实要删除这些分类吗")) document.form1.submit();
+            DedeConfirm("您确实要删除这些分类吗?").then((v)=>{
+                document.form1.submit();
+            }).catch((e)=>{
+                console.log(e)
+            });
         }
         function ChangePage2(sobj) {
             var nv = sobj.options[sobj.selectedIndex].value;
diff --git a/src/admin/templets/templets_default.htm b/src/admin/templets/templets_default.htm
index c0d523e7..c5aa6d84 100644
--- a/src/admin/templets/templets_default.htm
+++ b/src/admin/templets/templets_default.htm
@@ -9,9 +9,12 @@
 		<link rel="stylesheet" href="../static/web/css/admin.css">
 		<script>
 			function DelTpl(filename) {
-				if (window.confirm('您确定要删除这篇文档吗')) location = 'tpl.php?action=del&acdir=<?php echo $acdir;?>&filename=' +
-					filename;
-				else return false;
+				DedeConfirm("您确实要删除这个模板吗?").then((v)=>{
+					location = 'tpl.php?action=del&acdir=<?php echo $acdir;?>&filename=' +
+						filename;
+				}).catch((e)=>{
+					console.log(e)
+				});
 			}
 		</script>
 	</head>
diff --git a/src/static/web/js/style.js b/src/static/web/js/style.js
index 546a49cb..6815cf20 100644
--- a/src/static/web/js/style.js
+++ b/src/static/web/js/style.js
@@ -29,6 +29,46 @@ function guid() {
     }
     return (S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4());
 }
+
+var _DedeConfirmFuncs = {};
+var _DedeConfirmFuncsClose = {};
+function __DedeConfirmRun(modalID) {
+    _DedeConfirmFuncs[modalID]();
+}
+function __DedeConfirmRunClose(modalID) {
+    _DedeConfirmFuncsClose[modalID]();
+}
+function DedeConfirm(content="",title="确认提示") {
+    let modalID = guid();
+    return new Promise((resolve, reject) => {
+        _DedeConfirmFuncs[modalID] = ()=>{
+            resolve("success");
+            CloseModal(`DedeModal${modalID}`);
+        }
+        _DedeConfirmFuncsClose[modalID] = ()=>{
+            reject("cancel");
+            CloseModal(`DedeModal${modalID}`);
+        }
+
+        let footer = `<button type="button" class="btn btn-outline-success btn-sm" onClick="__DedeConfirmRunClose(\'${modalID}\')">取消</button> <button type="button" class="btn btn-success btn-sm" onClick="__DedeConfirmRun(\'${modalID}\')">确定</button>`;
+        let modal = `<div id="DedeModal${modalID}" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="DedeModalLabel${modalID}">
+    <div class="modal-dialog modal-dialog-centered" role="document">
+    <div class="modal-content"><div class="modal-header">
+    <h6 class="modal-title" id="DedeModalLabel${modalID}">${title}</h6>`;
+        modal += `<button type="button" class="close" data-dismiss="modal" aria-label="Close">
+    <span>&times;</span>
+    </button>`;
+        modal += `</div><div class="modal-body">${content}</div><div class="modal-footer">${footer}</div></div></div></div>`;
+        $("body").append(modal)
+        $("#DedeModal" + modalID).modal({
+            backdrop: 'static',
+            show: true
+        });
+        $("#DedeModal" + modalID).on('hidden.bs.modal', function (e) {
+            $("#DedeModal" + modalID).remove();
+        })
+    })
+}
 //函数会返回一个modalID,通过这个id可自已定义一些方法,这里用到了一个展开语法:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Spread_syntax
 function ShowMsg(content, ...args) {
     title = "系统提示";
diff --git a/src/user/templets/content_list.htm b/src/user/templets/content_list.htm
index f088d5ab..e0707920 100755
--- a/src/user/templets/content_list.htm
+++ b/src/user/templets/content_list.htm
@@ -17,7 +17,11 @@
 				location = "archives_do.php?dopost=edit&channelid=" + channelid + "&aid=" + aid;
 			}
 			function delArc(aid) {
-				if (window.confirm('您确定要删除这篇文档吗')) location = "archives_do.php?aid=" + aid + "&dopost=delArc";
+				DedeConfirm("您确定要删除这篇文档吗?").then((v)=>{
+					location = "archives_do.php?aid=" + aid + "&dopost=delArc";
+				}).catch((e)=>{
+					console.log(e)
+				});
 			}
 		</script>
 	</head>
diff --git a/src/user/templets/content_sg_list.htm b/src/user/templets/content_sg_list.htm
index eb1b74cb..74ffe1ae 100755
--- a/src/user/templets/content_sg_list.htm
+++ b/src/user/templets/content_sg_list.htm
@@ -17,7 +17,11 @@
 				location = "archives_do.php?dopost=edit&channelid=" + channelid + "&aid=" + aid;
 			}
 			function delArc(aid) {
-				if (window.confirm('您确定要删除这篇文档吗')) location = "archives_do.php?aid=" + aid + "&dopost=delArc";
+				DedeConfirm("您确定要删除这篇文档吗?").then((v)=>{
+					location = "archives_do.php?aid=" + aid + "&dopost=delArc";
+				}).catch((e)=>{
+					console.log(e)
+				});
 			}
 		</script>
 	</head>
diff --git a/src/user/templets/mypay.htm b/src/user/templets/mypay.htm
index c0d59b30..e24a3101 100755
--- a/src/user/templets/mypay.htm
+++ b/src/user/templets/mypay.htm
@@ -68,6 +68,9 @@
 			//获得选中文件的文件名
 			function GetCheckfolderItem() {
 				var allSel = '';
+				if (typeof document.form1.deleteid == "undefined") {
+					return '';
+				}
 				if (document.form1.deleteid.value) return document.form1.deleteid.value;
 				for (i = 0; i < document.form1.deleteid.length; i++) {
 					if (document.form1.deleteid[i].checked) {
@@ -82,12 +85,14 @@
 			function DoSubmit() {
 				var selid = GetCheckfolderItem();
 				if (selid == '') {
-					alert("您没选中任何信息");
+					ShowMsg("您没选中任何信息");
 					return false;
 				}
-				if (window.confirm("您确定要删除这些消息吗")) {
+				DedeConfirm("您确定要删除这些消息吗?").then((v)=>{
 					location = "mypay.php?dopost=del&ids=" + selid;
-				}
+				}).catch((e)=>{
+					console.log(e)
+				});
 			}
 		</script>
 	</body>
diff --git a/src/user/templets/operation.htm b/src/user/templets/operation.htm
index e6dbec93..81dc3ac5 100755
--- a/src/user/templets/operation.htm
+++ b/src/user/templets/operation.htm
@@ -82,9 +82,11 @@
 					ShowMsg("您没选中任何信息");
 					return false;
 				}
-				if (window.confirm("您确定要删除这些消息吗")) {
+				DedeConfirm("您确定要删除这些消息吗?").then((v)=>{
 					location = "operation.php?dopost=del&ids=" + selid;
-				}
+				}).catch((e)=>{
+					console.log(e)
+				});
 			}
 		</script>
 	</body>
diff --git a/src/user/templets/pm-main.htm b/src/user/templets/pm-main.htm
index 6e12d87b..1017e2ca 100755
--- a/src/user/templets/pm-main.htm
+++ b/src/user/templets/pm-main.htm
@@ -44,15 +44,23 @@
 				}
 				return allSel;
 			}
+			//删除操作
 			function DoSubmit(myfolder) {
 				var selid = GetCheckfolderItem();
 				if (selid == '') {
 					ShowMsg("您没选中任何信息");
 					return false;
 				}
-				if (window.confirm("您确定要删除这些消息吗")) {
-					location = "pm.php?dopost=del&ids=" + selid + "&folder=" + myfolder;
-				}
+				DedeConfirm("您确定要删除这些消息吗?").then((v)=>{
+					$.get("pm.php?dopost=remove&ids=" + selid + "&folder=" + myfolder,function (data) {
+						let result = JSON.parse(data);
+						if (result.code === 200) {
+							location.reload();
+						}
+					})
+				}).catch((e)=>{
+					console.log(e)
+				});
 			}
 		</script>
 	</head>