🏠 Home 

NXU储存库

用于储存“更好用的NXU”所需要的HTML、CSS等信息

สคริปต์นี้ไม่ควรถูกติดตั้งโดยตรง มันเป็นคลังสำหรับสคริปต์อื่น ๆ เพื่อบรรจุด้วยคำสั่งเมทา // @require https://update.greasyfork.org/scripts/469717/1215934/NXU%E5%82%A8%E5%AD%98%E5%BA%93.js

const css_content = `
:root {
--dark: #34495e;
--light: #fff;
--success: #0abf30;
--error: #e24d4c;
--warning: #e9bd0c;
--info: #3498db
}
#plugin-settings-main {
display: flex;
flex-direction: column;
justify-content: center
}
#plugin-settings-main>div {
border: 1px solid #e7e9eb;
border-radius: 4px;
width: 100%;
display: flex;
flex-direction: column;
padding: 1em 2em;
margin-bottom: 0.5em
}
#plugin-settings-main>div>div {
width: 100%;
display: flex;
align-items: center
}
#plugin-settings-main .hr {
width: 100%;
background-color: #69c0ff;
height: 2px
}
#plugin-settings-main .hr- {
width: 100%;
background-color: #e7e9eb;
height: 1px
}
#plugin-settings-main h2 {
font-size: 18px
}
#plugin-settings-main p {
margin: 0;
font-size: 16px
}
#plugin-settings-main input {
margin: 0.5em 0.5em;
padding: 0.5em 0.5em;
border-radius: 4px;
border: 1px solid black;
background-color: none
}
#plugin-settings-main input:-webkit-autofill,
textarea:-webkit-autofill,
select:-webkit-autofill {
-webkit-box-shadow: 0 0 0px 1000px transparent inset !important;
background-color: transparent;
background-image: none;
transition: background-color 50000s ease-in-out 0s
}
#plugin-settings-main button {
padding: 0.3em 1em;
border: 2px solid #2881ff;
background-color: #3a97fe;
color: white;
border-radius: 5px;
width: max-content
}
#plugin-settings-main button:disabled {
border: 2px solid #c5c7c8;
background-color: #e7e9eb;
color: black
}
#plugin-settings-main .button {
justify-content: end
}
#plugin-settings-main .switch {
display: flex
}
#plugin-settings-main .switch>p {
flex-grow: 1
}
#plugin-settings-main .note {
font-size: 14px;
color: #8f8f8f;
margin: 0
}
#plugin-settings-main .warning {
font-size: 14px;
color: red
}
#plugin-settings-main .flex-c {
display: flex;
flex-direction: column
}
#plugin-settings-main .flex {
display: flex
}
#plugin-settings-main .flex-1 {
flex-grow: 1
}
#plugin-settings-main div.switch {
padding: 0.5em 0
}
#plugin-settings-main .switch {
--button-width: 2.625em;
--button-height: 1.5em;
--toggle-diameter: 1.2em;
--button-toggle-offset: calc((var(--button-height) - var(--toggle-diameter)) / 2);
--toggle-shadow-offset: 10px;
--toggle-wider: 2.4em;
--color-grey: #cccccc;
--color-green: #3a97fe
}
#plugin-settings-main .slider {
display: inline-block;
width: var(--button-width);
height: var(--button-height);
background-color: var(--color-grey);
border-radius: calc(var(--button-height) / 2);
position: relative;
transition: 0.3s all ease-in-out
}
#plugin-settings-main .slider::after {
content: "";
display: inline-block;
width: var(--toggle-diameter);
height: var(--toggle-diameter);
background-color: #fff;
border-radius: calc(var(--toggle-diameter) / 2);
position: absolute;
top: var(--button-toggle-offset);
transform: translateX(var(--button-toggle-offset));
box-shadow: var(--toggle-shadow-offset) 0 calc(var(--toggle-shadow-offset) * 4) rgba(0, 0, 0, 0.1);
transition: 0.3s all ease-in-out
}
#plugin-settings-main .switch input[type="checkbox"]:checked+.slider {
background-color: var(--color-green)
}
#plugin-settings-main .switch input[type="checkbox"]:checked+.slider::after {
transform: translateX(calc(var(--button-width) - var(--toggle-diameter) - var(--button-toggle-offset)));
box-shadow: calc(var(--toggle-shadow-offset) * -1) 0 calc(var(--toggle-shadow-offset) * 4) rgba(0, 0, 0, 0.1)
}
#plugin-settings-main .switch input[type="checkbox"] {
display: none
}
#plugin-settings-main .switch input[type="checkbox"]:active+.slider::after {
width: var(--toggle-wider)
}
#plugin-settings-main .switch input[type="checkbox"]:checked:active+.slider::after {
transform: translateX(calc(var(--button-width) - var(--toggle-wider) - var(--button-toggle-offset)))
}
.notifications:where(.toast, .column) {
display: flex;
align-items: center
}
.notifications .column {
display: flex;
align-items: center
}
.notifications {
position: fixed;
top: 30px;
right: 20px;
z-index: 9999
}
.notifications .toast {
width: 350px;
list-style: none;
display: flex;
align-items: center;
position: relative;
overflow: hidden;
border-radius: 8px;
border: 1px solid rgb(220, 218, 215);
padding: 16px 17px;
margin-bottom: 10px;
background-color: var(--light);
justify-content: space-between;
animation: show_toast 0.3s forwards
}
@keyframes show_toast {
0% {
transform: translateX(100%)
}
40% {
transform: translateX(-5%)
}
80% {
transform: translateX(0)
}
100% {
transform: translateX(-10px)
}
}
.toast .column i {
font-size: 1.75rem
}
.toast.hide {
animation: hide_toast 0.3s forwards
}
@keyframes hide_toast {
0% {
transform: translateX(-10%)
}
40% {
transform: translateX(0%)
}
80% {
transform: translateX(-5%)
}
100% {
transform: translateX(calc(100% + 20px))
}
}
.toast .column span {
font-size: 1.07rem;
margin-left: 12px
}
.toast i:last-child {
color: #aeb0d7;
cursor: pointer
}
.toast i:last-child:hover {
color: var(--dark)
}
.toast::after {
content: attr(time time)''
}
.toast::before {
content: '';
position: absolute;
left: 0;
bottom: 0;
width: 100%;
height: 3px;
animation: progress 5s linear forwards
}
@keyframes progress {
100% {
width: 0
}
}
.toast.success::before,
.btn#success {
background-color: var(--success)
}
.toast.error::before,
.btn#error {
background-color: var(--error)
}
.toast.warning::before,
.btn#warning {
background-color: var(--warning)
}
.toast.info::before,
.btn#info {
background-color: var(--info)
}
.toast.success .column i {
color: var(--success)
}
.toast.error .column i {
color: var(--error)
}
.toast.warning .column i {
color: var(--warning)
}
.toast.info .column i {
color: var(--info)
}
@media screen and (max-width:530px) {
.notifications {
width: 95%
}
.notifications .toast {
width: 100%;
font-size: 1rem;
margin-left: 20px
}
.buttons .btn {
margin: 0 1px;
font-size: 1.1rem;
padding: 8px 15px
}
}
`;
const jwgl_error = `
<h2 style="color:white;margin: 0;display: block;font-size: 1.5em;font-weight: bold;">似乎来到了错误的网站.^.</h2>
<p style="color:white;margin: 0.5em 0;text-align: center;">愿意现在跳转至教务系统登录网站吗?<br>(jwgl.nxu.edu.cn)</p>
<div id="control-button" style="display: flex;">
<button onclick="this.parentNode.parentNode.remove()" style="height: auto;margin: 0.5em 1em;padding: 0.5em 1em;border: 1px white solid;border-radius: 4px;font-weight: bold;color: white;background:#2193b0;background: -webkit-linear-gradient(to right bottom, #6dd5ed, #2193b0);background: linear-gradient(to right bottom, #6dd5ed, #2193b0);">不用了<br>我再看看</button>
<button onclick="window.close()" style="height: auto;margin: 0.5em 1em;padding: 0.5em 1em;border: 1px white solid;border-radius: 4px;font-weight: bold;color: white;background:#2193b0;background: -webkit-linear-gradient(to right bottom, #6dd5ed, #2193b0);background: linear-gradient(to right bottom, #6dd5ed, #2193b0);">不用了<br>关闭当前窗口</button>
</div>
`;
const settings_div = `
<div data-id="plugin-settings" class="block-group">
<h1 class="block-group__title">插件设置</h1>
<div id="plugin-settings-main">
<div class="block-group__item">
<h2>账号设置</h2>
<div class="hr"></div>
<div>
<p>学号:</p>
<input type="text" id="username" />
</div>
<p class="warning" id="username-empty" style="display: none;">学号不能为空!</p>
<p class="warning" id="username-error" style="display: none;">学号格式错误!</p>
<div>
<p>密码:</p>
<input type="password" id="password" />
</div>
<p class="warning" id="password-empty" style="display: none;">密码不能为空!</p>
<div class="button">
<button id="reflash-user-info">提交</button>
</div>
<p class="note">注:用于系统自动登录,可留空。<span style="color:orange">请确保学号密码输入正确!</span></p>
</div>
<div class="block-group__item">
<h2>功能设置</h2>
<div class="hr"></div>
<div class="switch">
<p>自动登录</p>
<label class="switch">
<input type="checkbox" id="auto-login">
<span class="slider"></span>
</label>
</div>
<div class="hr-"></div>
<div class="switch">
<div class="flex-c flex-1">
<p>自动关闭错误网站</p>
<p class="note">(包括404、服务器错误等)</p>
</div>
<label class="switch">
<input type="checkbox" id="auto-close">
<span class="slider"></span>
</label>
</div>
</div>
<div class="block-group__item">
<h2>功能预览</h2>
<div class="hr"></div>
<div class="block-group__content" style="margin-top: 1em;">
<div class="block-group__item__wrap" style="width: 33%;">
<a href="javascript:void(0)" class="block-group__item">
<div class="block-group__item__logo__wrap">
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAgtJREFUWEftVz1PG0EQfbO2QVaaNCmgcpUCIus+Fmr7R1AgISUIQRwpTX5BQEqVBqEUkWmgoqOlxY0b69Z2A5Go6CKlQqK+nWgdnxXguF3HJ2JLrHSN9+3Mm7fPox2Cw/I8r1IoFM4BtJRSm1lHpJRftda1YrG40el0rmzhyQYw+1LKGjMnBOpZZ8IwNLgaEdWjKGrZ4k8HAd/3Xwkh1gCYL229BOABuAHQt1RlcAZvcAaftg7iOG71+/2bgQJSyo/M/M0mV577zLzX7XZ3BwSSe2PmTSHEdUoij5n3TVVE9CmLyBDnDXFpai0w8wmAC6XUm4QAm6BKqVRP5G3CMAxH+WaDQLVafVEqlRpE9COKojNLH1jXWs+Xy+XTdrt9m4YdW4E8zTf03MMrYB78tpd3srR4RPQ58dzAA0EQMJFTT8qVnzH9yIT/VYG/TZFriY8Em04TZjWivFWZHQW871wpApV/VSAm/Oo16PL+eWcFwuaf5jDJIo169IHuPEycCQRN3oHG4gQErstzOG1v0Z2W7ExggsSZR2eHQHjIR7CZUOMShC/qPf10VcxZgaDJHQJWbIFZQHa3Sdlwyb4zgdVDfq3jbBM+9lfLIuNMwLWicXHPBKZXAa31cq/Xe9C7x73jLLzv+0tCiIv7T7Ld5J2WZzJLrGMzaSejmZl+3wJ49xQEzFgmhGiZ6fk37NF2MC4ilNUAAAAASUVORK5CYII=">
</div>
<div class="block-group__item__content">
<h2 title="智慧#建" class="block-group__item__name">智慧#建</h2>
<div title="zhdj.nxu.edu.cn" class="block-group__item__desc">zhdj.nxu.edu.cn</div>
<svg aria-hidden="true" title="收藏" class="wrd###-icon">
<use xlink:href="#wrd###-collect"></use>
</svg>
</div>
</a>
</div>
<div class="block-group__item__wrap" style="width: 33%;">
<a href="javascript:void(0)" class="block-group__item">
<div class="block-group__item__logo__wrap">
<div class="block-group__item__logo" style="background-color: rgb(71, 179, 71);">智</div>
</div>
<div class="block-group__item__content">
<h2 title="智慧#建" class="block-group__item__name">智慧#建</h2>
<div title="zhdj.nxu.edu.cn" class="block-group__item__desc">zhdj.nxu.edu.cn</div>
<svg aria-hidden="true" title="收藏" class="wrd###-icon">
<use xlink:href="#wrd###-collect"></use>
</svg>
</div>
</a>
</div>
<div class="block-group__item__wrap" style="width: 33%;">
<a href="javascript:void(0)" class="block-group__item">
<div class="block-group__item__logo__wrap">
<div class="block-group__item__logo" style="background-color: rgb(71, 179, 71);">智</div>
</div>
<div class="block-group__item__content">
<h2 title="智慧#建" class="block-group__item__name">智慧#建</h2>
<div title="zhdj.nxu.edu.cn" class="block-group__item__desc">zhdj.nxu.edu.cn</div>
<svg aria-hidden="true" title="收藏" class="wrd###-icon">
<use xlink:href="#wrd###-collect"></use>
</svg>
</div>
</a>
</div>
</div>
</div>
</div>
</div>
`;
const jwgl_table_title = (message, id1, id2 = "") => {
return `
<table id="${id1}" border="0" cellspacing="0" cellpadding="0" style="display: block;">
<tr>
<td>
<a href="javascript:0;" style="display:block;width:24px;height:22px">
<img src="static/images/tree/minus.gif" width="24" height="22" border="0">
</a>
<a class="MenuTocItemFolderLinkStyle" href="javascript:0;" target="">
<img src="static/images/tree/entityfolder.gif" width="0" height="0" border="0">
</a>
</td>
<td valign="middle" nowrap="">
<a ${(id2!="") ? (`id="${id2}"`) : ("")} class="MenuTocItemFolderLinkStyle" href="javascript:0;" target="">${message}</a>
</td>
</tr>
</table>
`
};
const jwgl_table_content = (message, id) => {
return `
<table border="0" cellspacing="0" cellpadding="0" style="display: block;">
<tbody>
<tr>
<td valign="top" nowrap="">
<img src="static/images/tree/line.gif" width="24" height="22">
</td>
<td valign="middle" nowrap="">
<img src="static/images/tree/sanjiao.gif" border="0">
<a id="${id}" class="MenuTocItemLinkStyle" target="main">${message}</a>
</td>
</tr>
</tbody>
</table>
`;
};
const jwgl_class = (content_array, mode = -1) => {
if (mode == 0) {
return `
<div class="class_main" style="display:flex;flex-direction:column;align-items:center;margin-bottom:1em">
<style>
.class_main > div {
width: 100%;
display: flex;
flex-direction: column;
align-items: center;
margin: 0;
}
.teacher {
font-size: 10px;
padding: 0;
}
.classroom {
font-size: 10px;
padding: 0;
/* color: #eff0ea; */
}
.subject {
font-size: 16px;
font-weight: bold;
padding: 0.5em 0;
}
</style>
<div class="classroom">${content_array[3]}</div>
<div class="subject">${content_array[1]}</div>
<div class="teacher">${content_array[2]}<br>${content_array[0]}</div>
</div>
`;} else if (mode > 0) {
return `
<div class="class_main" style="display:flex;flex-direction:column;align-items:center;margin-bottom:1em">
<style>
.class_main > div {
width: 100%;
display: flex;
flex-direction: column;
align-items: center;
margin: 0;
}
.teacher {
font-size: 10px;
padding: 0;
}
.classroom {
font-size: 10px;
padding: 0;
/* color: #eff0ea; */
}
.subject {
font-size: 16px;
font-weight: bold;
padding: 0.5em 0;
}
</style>
<div class="teacher">${content_array[2]}<br>${content_array[0]}</div>
</div>
`;} else {
return `
<div class="class_main" style="display:flex;flex-direction:column;align-items:center;margin-bottom:1em">
<style>
.class_main > div {
width: 100%;
display: flex;
flex-direction: column;
align-items: center;
margin: 0;
}
.teacher {
font-size: 10px;
padding: 0;
}
.classroom {
font-size: 10px;
padding: 0;
/* color: #eff0ea; */
}
.subject {
font-size: 16px;
font-weight: bold;
padding: 0.5em 0;
}
</style>
<div class="classroom">${content_array[3]}</div>
<div class="subject">${content_array[0]}</div>
<div class="teacher">${content_array[2]}<br>${content_array[1]}</div>
</div>
`;}
};