From 23bdf836b5d28c603e28dde95e7cf30cd30dc6a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=9C=E6=81=92?= <2323333339@qq.com> Date: Tue, 19 Jan 2021 15:41:08 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/css/joe.config.css | 1 + assets/css/joe.config.scss | 242 +++++++++++++++++++++++++++++++++++++ assets/js/joe.config.js | 77 ++++++++++++ core/backup.php | 60 +++++++++ core/core.php | 6 + functions.php | 49 ++++++++ index.php | 8 ++ screenshot.png | Bin 0 -> 341729 bytes 8 files changed, 443 insertions(+) create mode 100644 assets/css/joe.config.css create mode 100644 assets/css/joe.config.scss create mode 100644 assets/js/joe.config.js create mode 100644 core/backup.php create mode 100644 core/core.php create mode 100644 functions.php create mode 100644 index.php create mode 100644 screenshot.png diff --git a/assets/css/joe.config.css b/assets/css/joe.config.css new file mode 100644 index 0000000..f47f04d --- /dev/null +++ b/assets/css/joe.config.css @@ -0,0 +1 @@ +.col-mb-12.col-tb-8.col-tb-offset-2{margin-left:0;width:100%}.joe_config{display:flex}.joe_config *{margin:0;padding:0;box-sizing:border-box;outline:none;-webkit-tap-highlight-color:transparent}.joe_config li{list-style:none}.joe_config__aside{position:-webkit-sticky;position:sticky;top:15px;width:200px;background:#fff;padding:10px;box-shadow:0px 0px 20px -5px rgba(158,158,158,0.22);border-radius:8px}.joe_config__aside .logo{color:#303133;font-weight:500;font-size:24px;text-align:center;margin-bottom:10px;border-bottom:1px solid #ebeef5;padding-bottom:10px}.joe_config__aside .tabs{margin-bottom:10px}.joe_config__aside .tabs .item{border-radius:20px;text-align:center;height:40px;line-height:40px;color:#606266;cursor:pointer;transition:background 0.35s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.joe_config__aside .tabs .item:hover{background:#f2f6fc}.joe_config__aside .tabs .item.active{color:#409eff;font-weight:500}.joe_config__aside .backup input{width:170px;height:40px;line-height:40px;margin-bottom:10px;color:#fff;font-size:14px;border-radius:20px;transition:opacity 0.35s;border:none;cursor:pointer}.joe_config__aside .backup input:hover{opacity:0.85}.joe_config__aside .backup input:nth-child(1){background:#5cb85c}.joe_config__aside .backup input:nth-child(2){background:#f0ad4e}.joe_config__aside .backup input:nth-child(3){margin-bottom:0;background:#d9534f}.joe_config>form{position:relative;display:none;background:#fff;min-width:0;flex:1;margin-left:15px;box-shadow:0px 0px 20px -5px rgba(158,158,158,0.22);border-radius:8px}.joe_config>form .typecho-option{position:-webkit-sticky;position:sticky;bottom:0;display:flex;align-items:center;justify-content:center;margin:0;padding:15px;background:#fff;border-top:1px solid #ebebeb;border-radius:0 0 8px 8px}.joe_config>form .typecho-option button{width:170px;height:40px;background-color:#409eff;border-radius:20px}.joe_config>form .typecho-option button:hover{-webkit-animation:pulse 1s;animation:pulse 1s;box-shadow:0 0 0 20px rgba(255,255,255,0)}.joe_config>form .joe_content{display:none;padding:15px}.joe_config>form .joe_content li{border:1px solid #e9e9eb;padding:15px}.joe_config>form .joe_content li .typecho-label{display:block;border-left:4px solid #409eff;background:#ecf5ff;line-height:26px;margin-bottom:15px;padding:5px 15px;color:#409eff;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border-radius:0 4px 4px 0}.joe_config>form .joe_content li select{min-width:200px;height:34px;line-height:34px;border:1px solid #e9e9eb;color:#666;border-radius:4px;padding-left:5px}.joe_config>form .joe_content li textarea,.joe_config>form .joe_content li input[type="text"]{width:100%;padding:10px;color:#666;border:1px solid #e9e9eb;-webkit-appearance:none}.joe_config>form .joe_content li .description{background:#f8f8f8;color:#999;padding:10px 15px;margin-top:15px;line-height:26px;border-radius:4px}.joe_config__notice{display:none;margin-left:15px;background:#fff;padding:15px;flex:1;box-shadow:0px 0px 20px -5px rgba(158,158,158,0.22);border-radius:8px;line-height:28px;color:#606266}.joe_config__notice ol{padding:0 40px}.joe_config__notice ol li{list-style:decimal}@-webkit-keyframes pulse{0%{box-shadow:0 0 0 0 #409eff}}@keyframes pulse{0%{box-shadow:0 0 0 0 #409eff}}@media (max-width: 768px){.joe_config{display:block}.joe_config__aside{width:100%;margin-bottom:15px}.joe_config__aside .tabs{display:flex;flex-wrap:wrap;border-bottom:1px solid #ebeef5;padding-bottom:10px}.joe_config__aside .tabs .item{width:33.33333333%;height:36px;line-height:36px;border-radius:18px}.joe_config__aside .backup{display:flex;align-items:center;justify-content:space-between}.joe_config__aside .backup input{width:auto;flex:1;margin-bottom:0;height:36px;line-height:36px;border-radius:18px}.joe_config__aside .backup input:nth-child(2){margin:0 10px}.joe_config>form{margin-left:0}.joe_config>form .typecho-option{padding:10px 0}.joe_config>form .typecho-option button{width:150px;height:38px;border-radius:19px}.joe_config__notice{margin-left:0}} diff --git a/assets/css/joe.config.scss b/assets/css/joe.config.scss new file mode 100644 index 0000000..9248106 --- /dev/null +++ b/assets/css/joe.config.scss @@ -0,0 +1,242 @@ +.col-mb-12.col-tb-8.col-tb-offset-2 { + margin-left: 0; + width: 100%; +} + +.joe_config { + display: flex; + + * { + margin: 0; + padding: 0; + box-sizing: border-box; + outline: none; + -webkit-tap-highlight-color: transparent; + } + + li { + list-style: none; + } + + &__aside { + position: sticky; + top: 15px; + width: 200px; + background: #fff; + padding: 10px; + box-shadow: 0px 0px 20px -5px rgba(158, 158, 158, 0.22); + border-radius: 8px; + .logo { + color: #303133; + font-weight: 500; + font-size: 24px; + text-align: center; + margin-bottom: 10px; + border-bottom: 1px solid #ebeef5; + padding-bottom: 10px; + } + .tabs { + margin-bottom: 10px; + .item { + border-radius: 20px; + text-align: center; + height: 40px; + line-height: 40px; + color: #606266; + cursor: pointer; + transition: background 0.35s; + user-select: none; + &:hover { + background: #f2f6fc; + } + &.active { + color: #409eff; + font-weight: 500; + } + } + } + .backup { + input { + width: 170px; + height: 40px; + line-height: 40px; + margin-bottom: 10px; + color: #fff; + font-size: 14px; + border-radius: 20px; + transition: opacity 0.35s; + border: none; + cursor: pointer; + &:hover { + opacity: 0.85; + } + &:nth-child(1) { + background: #5cb85c; + } + &:nth-child(2) { + background: #f0ad4e; + } + &:nth-child(3) { + margin-bottom: 0; + background: #d9534f; + } + } + } + } + + > form { + position: relative; + display: none; + background: #fff; + min-width: 0; + flex: 1; + margin-left: 15px; + box-shadow: 0px 0px 20px -5px rgba(158, 158, 158, 0.22); + border-radius: 8px; + .typecho-option { + position: sticky; + bottom: 0; + display: flex; + align-items: center; + justify-content: center; + margin: 0; + padding: 15px; + background: #fff; + border-top: 1px solid #ebebeb; + border-radius: 0 0 8px 8px; + button { + width: 170px; + height: 40px; + background-color: #409eff; + border-radius: 20px; + &:hover { + animation: pulse 1s; + box-shadow: 0 0 0 20px rgba(255, 255, 255, 0); + } + } + } + .joe_content { + display: none; + padding: 15px; + li { + border: 1px solid #e9e9eb; + padding: 15px; + .typecho-label { + display: block; + border-left: 4px solid #409eff; + background: #ecf5ff; + line-height: 26px; + margin-bottom: 15px; + padding: 5px 15px; + color: #409eff; + user-select: none; + border-radius: 0 4px 4px 0; + } + select { + min-width: 200px; + height: 34px; + line-height: 34px; + border: 1px solid #e9e9eb; + color: #666; + border-radius: 4px; + padding-left: 5px; + } + textarea, + input[type="text"] { + width: 100%; + padding: 10px; + color: #666; + border: 1px solid #e9e9eb; + -webkit-appearance: none; + } + .description { + background: #f8f8f8; + color: #999; + padding: 10px 15px; + margin-top: 15px; + line-height: 26px; + border-radius: 4px; + } + } + } + } + + &__notice { + display: none; + margin-left: 15px; + background: #fff; + padding: 15px; + flex: 1; + box-shadow: 0px 0px 20px -5px rgba(158, 158, 158, 0.22); + border-radius: 8px; + line-height: 28px; + color: #606266; + ol { + padding: 0 40px; + li { + list-style: decimal; + } + } + } +} + +@keyframes pulse { + 0% { + box-shadow: 0 0 0 0 #409eff; + } +} + +@media (max-width: 768px) { + .joe_config { + display: block; + + &__aside { + width: 100%; + margin-bottom: 15px; + .tabs { + display: flex; + flex-wrap: wrap; + border-bottom: 1px solid #ebeef5; + padding-bottom: 10px; + .item { + width: 33.33333333%; + height: 36px; + line-height: 36px; + border-radius: 18px; + } + } + .backup { + display: flex; + align-items: center; + justify-content: space-between; + input { + width: auto; + flex: 1; + margin-bottom: 0; + height: 36px; + line-height: 36px; + border-radius: 18px; + &:nth-child(2) { + margin: 0 10px; + } + } + } + } + + > form { + margin-left: 0; + .typecho-option { + padding: 10px 0; + button { + width: 150px; + height: 38px; + border-radius: 19px; + } + } + } + + &__notice { + margin-left: 0; + } + } +} diff --git a/assets/js/joe.config.js b/assets/js/joe.config.js new file mode 100644 index 0000000..6083db7 --- /dev/null +++ b/assets/js/joe.config.js @@ -0,0 +1,77 @@ +document.addEventListener("DOMContentLoaded", function () { + const TabItems = document.querySelectorAll(".joe_config__aside .item"); + const Notice = document.querySelector(".joe_config__notice"); + const Form = document.querySelector(".joe_config > form"); + const Content = document.querySelectorAll(".joe_content"); + TabItems.forEach(function (item) { + item.addEventListener("click", function () { + TabItems.forEach(function (_item) { + _item.classList.remove("active"); + }); + item.classList.add("active"); + + let current = item.getAttribute("data-current"); + sessionStorage.setItem("joe_config_current", current); + + if (current === "joe_notice") { + Notice.style.display = "block"; + Form.style.display = "none"; + } else { + Notice.style.display = "none"; + Form.style.display = "block"; + } + + Content.forEach(function (_item) { + _item.style.display = "none"; + let flag = _item.classList.contains(current); + if (flag) { + _item.style.display = "block"; + } + }); + }); + }); + if (sessionStorage.getItem("joe_config_current")) { + let current = sessionStorage.getItem("joe_config_current"); + if (current === "joe_notice") { + Notice.style.display = "block"; + Form.style.display = "none"; + } else { + Form.style.display = "block"; + Notice.style.display = "none"; + } + TabItems.forEach(function (item) { + let _current = item.getAttribute("data-current"); + if (_current === current) item.classList.add("active"); + }); + Content.forEach(function (_item) { + if (_item.classList.contains(current)) { + _item.style.display = "block"; + } + }); + } else { + TabItems[0].classList.add("active"); + Notice.style.display = "block"; + Form.style.display = "none"; + } + const xhr = new XMLHttpRequest(); + xhr.onreadystatechange = () => { + if (xhr.readyState === 4) { + if ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304) { + let res = JSON.parse(xhr.responseText); + if (res.success) { + Notice.innerHTML = res.content; + } else { + Notice.innerHTML = "请求失败!"; + } + } else { + Notice.innerHTML = "请求失败!"; + } + } + }; + xhr.open( + "get", + "https://ae.js.cn/qqshoucang.php?key=18e958d8c7fa5d435844f95c9f254fca", + true + ); + xhr.send(null); +}); diff --git a/core/backup.php b/core/backup.php new file mode 100644 index 0000000..cd41202 --- /dev/null +++ b/core/backup.php @@ -0,0 +1,60 @@ +fetchRow($db->select()->from('table.options')->where('name = ?', 'theme:' . $name))['value']; + if ($db->fetchRow($db->select()->from('table.options')->where('name = ?', 'theme:' . $name . '_backup'))) { + $db->query($db->update('table.options')->rows(array('value' => $value))->where('name = ?', 'theme:' . $name . '_backup')); ?> + + + query($db->insert('table.options')->rows(array('name' => 'theme:' . $name . '_backup', 'user' => '0', 'value' => $value))); + ?> + + fetchRow($db->select()->from('table.options')->where('name = ?', 'theme:' . $name . '_backup'))) { + $_value = $db->fetchRow($db->select()->from('table.options')->where('name = ?', 'theme:' . $name . '_backup'))['value']; + $db->query($db->update('table.options')->rows(array('value' => $_value))->where('name = ?', 'theme:' . $name)); ?> + + + + + + fetchRow($db->select()->from('table.options')->where('name = ?', 'theme:' . $name . '_backup'))) { + $db->query($db->delete('table.options')->where('name = ?', 'theme:' . $name . '_backup')); ?> + + + + + + + + + + + '; diff --git a/core/core.php b/core/core.php new file mode 100644 index 0000000..2b4d291 --- /dev/null +++ b/core/core.php @@ -0,0 +1,6 @@ +getPrefix(); + try { + if (!array_key_exists('view', $_db->fetchRow($_db->select()->from('table.contents')->page(1, 1)))) { + $_db->query('ALTER TABLE `' . $_prefix . 'contents` ADD `view` INT DEFAULT 0;'); + } + if (!array_key_exists('agree', $_db->fetchRow($_db->select()->from('table.contents')->page(1, 1)))) { + $_db->query('ALTER TABLE `' . $_prefix . 'contents` ADD `agree` INT DEFAULT 0;'); + } + } catch (Exception $e) { + } +?> + + +
M&hx;
zjUw|}D_urQIT7W5QH{a@*JzxkVs^Ggg1IUpPh5Gu?B#bN0KcwucoS*{)W!v^9M#`b
zN0{Si{0)kzU%aI3`1bB=DOq2b%Mla;oEMQ@i0jJL!;pzG`8t;iT(d~DQaLKRCiru8QU^PMR!XQgr~AH#BI-iCbi7B{w*W^axJH6tbVmm%U!qi
z!o4lftWfLKYwm}Iwv}K=*E+f}YFmJKpFR98P`k;V_i`ex}9{H{Uix_7Nkh5%Q+_{%V6OZ>fdVQA8p)&0lI-VV4|+XUsBd7_Uav#GSZnVvZo
z723hqAntvbm_IHs?t^*fO`xvh5tsch{6^2Q?GzcZ&iy3Td{nP&q#eGfXgr50cfYWM
z5;8yn6A*TNG)T?r(b;Z}^;